From ab8d3a5d34bb46c0448296fa1fe06e4c06567cba Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Tue, 21 Oct 2014 23:11:11 -0700 Subject: [PATCH] Back out 3 changesets (bug 1042135) for robocop bustage CLOSED TREE Backed out changeset dffed5d2a799 (bug 1042135) Backed out changeset b80a02b929cc (bug 1042135) Backed out changeset 093ea94a1697 (bug 1042135) --- browser/app/profile/firefox.js | 1 + browser/components/nsBrowserGlue.js | 16 +----- .../preferences/in-content/privacy.js | 37 ++++++++++++ .../preferences/in-content/privacy.xul | 32 ++++++----- browser/components/preferences/privacy.js | 36 ++++++++++++ browser/components/preferences/privacy.xul | 30 +++++----- .../chrome/browser/preferences/privacy.dtd | 4 ++ browser/modules/DirectoryLinksProvider.jsm | 3 +- .../xpcshell/test_DirectoryLinksProvider.js | 7 ++- dom/base/Navigator.cpp | 10 +++- .../mochitest/general/test_donottrack.html | 31 ++++++++++ .../base/locales/en-US/android_strings.dtd | 6 +- .../android/base/resources/values/arrays.xml | 10 ++++ .../resources/xml/preferences_privacy.xml | 10 ++-- mobile/android/base/strings.xml.in | 6 +- mobile/android/chrome/content/browser.js | 56 ++++++++++++++----- modules/libpref/init/all.js | 5 +- netwerk/protocol/http/nsHttpHandler.cpp | 19 ++++++- netwerk/protocol/http/nsHttpHandler.h | 1 + 19 files changed, 248 insertions(+), 72 deletions(-) diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index aa8cd14691b3..72148374585b 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -1277,6 +1277,7 @@ pref("services.sync.prefs.sync.privacy.clearOnShutdown.passwords", true); pref("services.sync.prefs.sync.privacy.clearOnShutdown.sessions", true); pref("services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings", true); pref("services.sync.prefs.sync.privacy.donottrackheader.enabled", true); +pref("services.sync.prefs.sync.privacy.donottrackheader.value", true); pref("services.sync.prefs.sync.privacy.sanitize.sanitizeOnShutdown", true); pref("services.sync.prefs.sync.privacy.trackingprotection.enabled", true); pref("services.sync.prefs.sync.security.OCSP.enabled", true); diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index 71b12430bafe..d54260737b8b 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -1369,7 +1369,7 @@ BrowserGlue.prototype = { }, _migrateUI: function BG__migrateUI() { - const UI_VERSION = 25; + const UI_VERSION = 24; const BROWSER_DOCURL = "chrome://browser/content/browser.xul"; let currentUIVersion = 0; try { @@ -1617,20 +1617,6 @@ BrowserGlue.prototype = { } } - if (currentUIVersion < 25) { - // Make sure the doNotTrack value conforms to the conversion from - // three-state to two-state. (This reverts a setting of "please track me" - // to the default "don't say anything"). - try { - if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled") && - Services.prefs.getIntPref("privacy.donottrackheader.value") != 1) { - Services.prefs.clearUserPref("privacy.donottrackheader.enabled"); - Services.prefs.clearUserPref("privacy.donottrackheader.value"); - } - } - catch (ex) {} - } - // Update the migration version. Services.prefs.setIntPref("browser.migration.version", UI_VERSION); }, diff --git a/browser/components/preferences/in-content/privacy.js b/browser/components/preferences/in-content/privacy.js index 9048d9760e64..da6cbcc09c59 100644 --- a/browser/components/preferences/in-content/privacy.js +++ b/browser/components/preferences/in-content/privacy.js @@ -162,6 +162,43 @@ var gPrivacyPane = { document.getElementById("historyPane").selectedIndex = selectedIndex; }, + /** + * Update the Tracking preferences based on controls. + */ + setTrackingPrefs: function PPP_setTrackingPrefs() + { + let dntRadioGroup = document.getElementById("doNotTrackSelection"), + dntValuePref = document.getElementById("privacy.donottrackheader.value"), + dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled"); + + // if the selected radio button says "no preference", set on/off pref to + // false and don't change the value pref. + if (dntRadioGroup.selectedItem.value == -1) { + dntEnabledPref.value = false; + return dntValuePref.value; + } + + dntEnabledPref.value = true; + return dntRadioGroup.selectedItem.value; + }, + + /** + * Obtain the tracking preference value and reflect it in the UI. + */ + getTrackingPrefs: function PPP_getTrackingPrefs() + { + // XXX avoid using bindings that might not be attached, see bug 859982 + let dntValue = Services.prefs.getIntPref("privacy.donottrackheader.value"), + dntEnabled = Services.prefs.getBoolPref("privacy.donottrackheader.enabled"); + + // if DNT is enbaled, select the value from the selected radio + // button, otherwise choose the "no preference" radio button + if (dntEnabled) + return dntValue; + + return document.getElementById("dntnopref").value; + }, + /** * Update the private browsing auto-start pref and the history mode * micro-management prefs based on the history mode menulist diff --git a/browser/components/preferences/in-content/privacy.xul b/browser/components/preferences/in-content/privacy.xul index 973aeacac75f..dc27b2bd3cc5 100644 --- a/browser/components/preferences/in-content/privacy.xul +++ b/browser/components/preferences/in-content/privacy.xul @@ -13,6 +13,9 @@ + diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js index e933bf95123b..d6b2f0192a55 100644 --- a/browser/components/preferences/privacy.js +++ b/browser/components/preferences/privacy.js @@ -124,6 +124,42 @@ var gPrivacyPane = { document.getElementById("historyPane").selectedIndex = selectedIndex; }, + /** + * Update the Tracking preferences based on controls. + */ + setTrackingPrefs: function PPP_setTrackingPrefs() + { + let dntRadioGroup = document.getElementById("doNotTrackSelection"), + dntValuePref = document.getElementById("privacy.donottrackheader.value"), + dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled"); + + // if the selected radio button says "no preference", set on/off pref to + // false and don't change the value pref. + if (dntRadioGroup.selectedItem.value == -1) { + dntEnabledPref.value = false; + return dntValuePref.value; + } + + dntEnabledPref.value = true; + return dntRadioGroup.selectedItem.value; + }, + + /** + * Obtain the tracking preference value and reflect it in the UI. + */ + getTrackingPrefs: function PPP_getTrackingPrefs() + { + let dntValuePref = document.getElementById("privacy.donottrackheader.value"), + dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled"); + + // if DNT is enbaled, select the value from the selected radio + // button, otherwise choose the "no preference" radio button + if (dntEnabledPref.value) + return dntValuePref.value; + + return document.getElementById("dntnopref").value; + }, + /** * Update the private browsing auto-start pref and the history mode * micro-management prefs based on the history mode menulist diff --git a/browser/components/preferences/privacy.xul b/browser/components/preferences/privacy.xul index c8ee35d0c69b..d85523d1d964 100644 --- a/browser/components/preferences/privacy.xul +++ b/browser/components/preferences/privacy.xul @@ -26,6 +26,9 @@ + - - - - - - - + + + + + + diff --git a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd index 08360e6ad5d3..c7d2e517bced 100644 --- a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd +++ b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd @@ -4,8 +4,12 @@ + + + + diff --git a/browser/modules/DirectoryLinksProvider.jsm b/browser/modules/DirectoryLinksProvider.jsm index 47e8a6ab9a66..6dc43c9d0efd 100644 --- a/browser/modules/DirectoryLinksProvider.jsm +++ b/browser/modules/DirectoryLinksProvider.jsm @@ -137,7 +137,8 @@ let DirectoryLinksProvider = { let enhanced = true; try { // Default to not enhanced if DNT is set to tell websites to not track - if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled")) { + if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled") && + Services.prefs.getIntPref("privacy.donottrackheader.value") == 1) { enhanced = false; } } diff --git a/browser/modules/test/xpcshell/test_DirectoryLinksProvider.js b/browser/modules/test/xpcshell/test_DirectoryLinksProvider.js index 52e68628271b..ad42c0758f16 100644 --- a/browser/modules/test/xpcshell/test_DirectoryLinksProvider.js +++ b/browser/modules/test/xpcshell/test_DirectoryLinksProvider.js @@ -614,14 +614,19 @@ add_task(function test_DirectoryLinksProvider_setDefaultEnhanced() { do_check_eq(Services.prefs.getBoolPref(kNewtabEnhancedPref), expected); } - // Use the default donottrack prefs (enabled = false) + // Use the default donottrack prefs (enabled = false, value = 1) Services.prefs.clearUserPref("privacy.donottrackheader.enabled"); + Services.prefs.clearUserPref("privacy.donottrackheader.value"); checkDefault(true); // Turn on DNT - no track Services.prefs.setBoolPref("privacy.donottrackheader.enabled", true); checkDefault(false); + // Set DNT - do track + Services.prefs.setIntPref("privacy.donottrackheader.value", 0); + checkDefault(true); + // Turn off DNT header Services.prefs.clearUserPref("privacy.donottrackheader.enabled"); checkDefault(true); diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp index cbabefe445f5..3ef0cc9dc98b 100644 --- a/dom/base/Navigator.cpp +++ b/dom/base/Navigator.cpp @@ -112,6 +112,7 @@ namespace mozilla { namespace dom { static bool sDoNotTrackEnabled = false; +static uint32_t sDoNotTrackValue = 1; static bool sVibratorEnabled = false; static uint32_t sMaxVibrateMS = 0; static uint32_t sMaxVibrateListLen = 0; @@ -123,6 +124,9 @@ Navigator::Init() Preferences::AddBoolVarCache(&sDoNotTrackEnabled, "privacy.donottrackheader.enabled", false); + Preferences::AddUintVarCache(&sDoNotTrackValue, + "privacy.donottrackheader.value", + 1); Preferences::AddBoolVarCache(&sVibratorEnabled, "dom.vibrator.enabled", true); Preferences::AddUintVarCache(&sMaxVibrateMS, @@ -624,7 +628,11 @@ NS_IMETHODIMP Navigator::GetDoNotTrack(nsAString &aResult) { if (sDoNotTrackEnabled) { - aResult.AssignLiteral("1"); + if (sDoNotTrackValue == 0) { + aResult.AssignLiteral("0"); + } else { + aResult.AssignLiteral("1"); + } } else { aResult.AssignLiteral("unspecified"); } diff --git a/dom/tests/mochitest/general/test_donottrack.html b/dom/tests/mochitest/general/test_donottrack.html index 95c55d948cc8..4b74d44cab79 100644 --- a/dom/tests/mochitest/general/test_donottrack.html +++ b/dom/tests/mochitest/general/test_donottrack.html @@ -14,6 +14,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=629535