privacy.websites
================

The `privacy.websites` property contains privacy-related settings controlling the way to browser interacts with websites. Each property is a `types.BrowserSetting` object.

Default values for these properties tend to vary across browsers.

Properties
----------

`cookieConfig`

A `types.BrowserSetting` object whose underlying value is an object.

The object has two properties:

* `behavior`: a string which may take any of the following values:
    + "allow\_all": accept all cookies
    + "reject\_all": reject all cookies
    + "reject\_third\_party": reject all third-party cookies
    + "allow\_visited": accept a third-party cookie only if the cookie's top-level domain already has at least one cookie.
    + "reject\_trackers": reject tracking cookies
    + "reject\_trackers\_and\_partition\_foreign": reject trackers and partition third-party cookies.
* `nonPersistentCookies` 
Deprecated
: a boolean. If true, all cookies will be treated as session cookies.

`firstPartyIsolate`

A `types.BrowserSetting` object whose underlying value is a boolean.

If `true`, the `firstPartyIsolate` preference makes the browser associate all data (including cookies, HSTS data, cached images, and more) for any third party domains with the domain in the address bar. This prevents third party trackers from using directly stored information to identify the user across different websites, but may break websites where the user logs in with a third party account (such as a Facebook or Google account).

Defaults to `false`.

`hyperlinkAuditingEnabled`

A `types.BrowserSetting` object whose underlying value is a boolean. If `true`, the browser sends auditing pings when a website uses the `ping` attribute to request them.

`protectedContentEnabled`

A `types.BrowserSetting` object whose underlying value is a boolean. Available on Windows only. If `true`, the browser provides a unique ID to plugins in order to run protected content.

`referrersEnabled`

A `types.BrowserSetting` object whose underlying value is a boolean. If enabled, the browser sends referer headers with your requests.

`resistFingerprinting`

A `types.BrowserSetting` object whose underlying value is a boolean.

Browser fingerprinting is the practice by which websites use Web APIs to collect status or configuration data associated with the browser or the device it's running on. By doing this, they can build up a digital fingerprint that they can use to identify and track a particular user.

If `true`, the `resistFingerprinting` preference makes the browser report generic spoofed information for data that's commonly used for fingerprinting. Such data includes the number of CPU cores, precision of JavaScript timers, and the local timezone. It will also disable features that are used in fingerprinting, such as GamePad support, and the WebSpeech and Navigator APIs.

Defaults to `false`.

`thirdPartyCookiesAllowed`

A `types.BrowserSetting` object whose underlying value is a boolean. If `false`, the browser blocks third-party cookies.

`trackingProtectionMode`

"Tracking protection" is a browser feature that blocks requests made to domains that are known to engage in cross-site tracking of users. Sites that track users are most commonly third-party advertising and analytics sites. This setting is a `types.BrowserSetting` object that determines whether the browser should enable tracking protection. Its underlying value is a string that may take one of three values:

* `"always"`: tracking protection is on.
* `"never"`: tracking protection is off.
* `"private_browsing"`: tracking protection is on in private browsing windows only.

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Examples
--------

Set the `hyperlinkAuditingEnabled` property.


```js
function onSet(result) {
  if (result) {
    console.log("success");
  } else {
    console.log("failure");
  }
}

browser.browserAction.onClicked.addListener(() => {
  let getting = browser.privacy.websites.hyperlinkAuditingEnabled.get({});
  getting.then((got) => {
    console.log(got.value);
    if (
      got.levelOfControl === "controlled\_by\_this\_extension" ||
      got.levelOfControl === "controllable\_by\_this\_extension"
    ) {
      let setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({
        value: true,
      });
      setting.then(onSet);
    } else {
      console.log("Not able to set hyperlinkAuditingEnabled");
    }
  });
});
```


**Note:** This API is based on Chromium's `chrome.privacy` API. This documentation is derived from `privacy.json` in the Chromium code.