commit e5c3cd25ed459765a91d1b364151c46afaca36c0 Author: Arthur Edelstein arthuredelstein@gmail.com Date: Thu Oct 6 21:09:43 2016 +0000
Bug 20244.2: Add "privacy.thirdparty.isolate" checkbox --- .../components/preferences/in-content/privacy.js | 33 ++++++++++++++++++++++ .../components/preferences/in-content/privacy.xul | 13 +++++++++ .../en-US/chrome/browser/preferences/privacy.dtd | 2 ++ 3 files changed, 48 insertions(+)
diff --git a/browser/components/preferences/in-content/privacy.js b/browser/components/preferences/in-content/privacy.js index 3ec0afe..69f9156 100644 --- a/browser/components/preferences/in-content/privacy.js +++ b/browser/components/preferences/in-content/privacy.js @@ -299,6 +299,39 @@ var gPrivacyPane = { } },
+ // THIRD PARTY ISOLATION + + /** + * Converts from privacy.thirdparty.isolate pref to boolean checkbox. + * Note that during uplift, Mozilla changed the name to + * privacy.firstparty.isolate, and also changed it to a boolean, + * so this function is likely not needed after uplifting. + */ + readThirdPartyIsolate: function () + { + var pref = document.getElementById("privacy.thirdparty.isolate"); + switch (pref.value) + { + case 0: // Off + return false; + case 1: // PBM only + return true; + case 2: // Always + return true; + default: + return undefined; + } + }, + + /** + * Convert from checkbox to private.thirdparty.isolate pref. + */ + writeThirdPartyIsolate: function () + { + var checkbox = document.getElementById("thirdpartyIsolateCB"); + return checkbox.checked ? 2 : 0; + }, + // PRIVATE BROWSING
/** diff --git a/browser/components/preferences/in-content/privacy.xul b/browser/components/preferences/in-content/privacy.xul index bdadcc5..d180ee2 100644 --- a/browser/components/preferences/in-content/privacy.xul +++ b/browser/components/preferences/in-content/privacy.xul @@ -19,6 +19,9 @@ <preference id="privacy.trackingprotection.pbmode.enabled" name="privacy.trackingprotection.pbmode.enabled" type="bool"/> + <preference id="privacy.thirdparty.isolate" + name="privacy.thirdparty.isolate" + type="int"/> <preference id="privacy.resistFingerprinting" name="privacy.resistFingerprinting" type="bool"/> @@ -130,6 +133,16 @@ preference="pref.privacy.disable_button.change_blocklist"/> </hbox> </vbox> + <vbox id="thirdpartyIsolate"> + <hbox align="center"> + <checkbox id="thirdpartyIsolateCB" + preference="privacy.thirdparty.isolate" + accesskey="&thirdpartyIsolate.accesskey;" + label="&thirdpartyIsolate.label;" + onsyncfrompreference="return gPrivacyPane.readThirdPartyIsolate();" + onsynctopreference="return gPrivacyPane.writeThirdPartyIsolate();"/> + </hbox> + </vbox> <vbox id="resistFingerprinting"> <hbox align="center"> <checkbox id="resistFingerprintingCB" diff --git a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd index ce3330e..614200e 100644 --- a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd +++ b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd @@ -13,6 +13,8 @@ <!ENTITY trackingProtectionPBM5.label "Use Tracking Protection in Private Windows"> <!ENTITY trackingProtectionPBM5.accesskey "v"> <!ENTITY trackingProtectionPBMLearnMore.label "Learn more"> +<!ENTITY thirdpartyIsolate.label "Restrict third party cookies and other tracking data"> +<!ENTITY thirdpartyIsolate.accesskey "R"> <!ENTITY resistFingerprinting.label "Change details that distinguish you from other Tor Browser users"> <!ENTITY resistFingerprinting.accesskey "F"> <!ENTITY changeBlockList.label "Change Block List">