From 21717ca7b387fbf57bea9df7c5b4b53ad1614d3d Mon Sep 17 00:00:00 2001 From: Johann Hofmann Date: Mon, 29 Oct 2018 16:27:25 +0000 Subject: [PATCH] Bug 1502361 - Remove Content Blocking toggle from about:privatebrowsing. r=Ehsan This simply removes the content blocking section when TP is not enabled to avoid overpromising. We may update this UI to alert the user that TP is off after the UX team comes back with a new design. Differential Revision: https://phabricator.services.mozilla.com/D10071 --HG-- extra : moz-landing-system : lando --- .../content/aboutPrivateBrowsing.js | 44 ++----------- .../content/aboutPrivateBrowsing.xhtml | 5 +- .../browser/browser_privatebrowsing_about.js | 48 -------------- browser/themes/shared/jar.inc.mn | 1 - .../privatebrowsing/aboutPrivateBrowsing.css | 64 ------------------- .../tracking-protection-off.svg | 15 ----- .../remotepagemanager/MessagePort.jsm | 9 +-- toolkit/modules/AsyncPrefs.jsm | 1 - 8 files changed, 9 insertions(+), 178 deletions(-) delete mode 100644 browser/themes/shared/privatebrowsing/tracking-protection-off.svg diff --git a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js index 1c2bd5bccc76..f59214f1ef01 100644 --- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js +++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js @@ -4,29 +4,8 @@ /* eslint-env mozilla/frame-script */ -const CB_ENABLED_PREF = "browser.contentblocking.enabled"; -const TP_ENABLED_PREF = "privacy.trackingprotection.enabled"; const TP_PB_ENABLED_PREF = "privacy.trackingprotection.pbmode.enabled"; -function updateTPInfo() { - let tpButton = document.getElementById("tpButton"); - let tpToggle = document.getElementById("tpToggle"); - let tpSubHeader = document.getElementById("tpSubHeader"); - - let globalTrackingEnabled = RPMGetBoolPref(TP_ENABLED_PREF); - let trackingEnabled = globalTrackingEnabled || RPMGetBoolPref(TP_PB_ENABLED_PREF); - - let contentBlockingEnabled = RPMGetBoolPref(CB_ENABLED_PREF); - trackingEnabled = trackingEnabled && contentBlockingEnabled; - - // if tracking protection is enabled globally we don't even give the user - // a choice here by hiding the toggle completely. - tpButton.toggleAttribute("hidden", globalTrackingEnabled); - tpToggle.checked = trackingEnabled; - - tpSubHeader.classList.toggle("tp-off", !trackingEnabled); -} - document.addEventListener("DOMContentLoaded", function() { if (!RPMIsWindowPrivate()) { document.documentElement.classList.remove("private"); @@ -50,22 +29,9 @@ document.addEventListener("DOMContentLoaded", function() { document.getElementById("learnMore").setAttribute("href", RPMGetFormatURLPref("app.support.baseURL") + "private-browsing"); - let tpToggle = document.getElementById("tpToggle"); - document.getElementById("tpButton").addEventListener("click", () => { - tpToggle.click(); - }); - tpToggle.addEventListener("change", async function() { - let promises = []; - if (tpToggle.checked) { - promises.push(RPMSetBoolPref(CB_ENABLED_PREF, true)); - } - - promises.push(RPMSetBoolPref(TP_PB_ENABLED_PREF, tpToggle.checked)); - - await Promise.all(promises); - - updateTPInfo(); - }); - - updateTPInfo(); + let tpEnabled = RPMGetBoolPref(TP_PB_ENABLED_PREF); + if (!tpEnabled) { + document.getElementById("tpSubHeader").remove(); + document.getElementById("tpSection").remove(); + } }); diff --git a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml index 36064834c985..d862871a47bd 100644 --- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml +++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml @@ -58,11 +58,9 @@

&contentBlocking.title; - -

-
+

&contentBlocking.description;

&trackingProtection.startTour1; @@ -72,7 +70,6 @@

&aboutPrivateBrowsing.learnMore3.before;&aboutPrivateBrowsing.learnMore3.title;&aboutPrivateBrowsing.learnMore3.after;

- diff --git a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js index bd716596aaf3..c58e82478fbf 100644 --- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js +++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js @@ -73,51 +73,3 @@ add_task(async function test_links() { await BrowserTestUtils.closeWindow(win); }); -function waitForPrefChanged(pref) { - return new Promise(resolve => { - let prefObserver = { - QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver]), - observe() { - Services.prefs.removeObserver(pref, prefObserver); - resolve(); - }, - }; - Services.prefs.addObserver(pref, prefObserver); - }); -} - -/** - * Tests the action to disable and re-enable Tracking Protection in - * "about:privatebrowsing" when content blocking is disabled. - */ -add_task(async function test_toggleTrackingProtectionContentBlocking() { - Services.prefs.setBoolPref(TP_PB_ENABLED_PREF, true); - Services.prefs.setBoolPref(CB_ENABLED_PREF, false); - - registerCleanupFunction(function() { - Services.prefs.clearUserPref(TP_PB_ENABLED_PREF); - Services.prefs.clearUserPref(CB_ENABLED_PREF); - }); - - let { win, tab } = await openAboutPrivateBrowsing(); - - let promiseCBPrefChanged = waitForPrefChanged(CB_ENABLED_PREF); - await ContentTask.spawn(tab, {}, async function() { - is(content.document.getElementById("tpToggle").checked, false, "toggle is not active"); - content.document.getElementById("tpButton").click(); - }); - await promiseCBPrefChanged; - ok(Services.prefs.getBoolPref(TP_PB_ENABLED_PREF), "Tracking Protection is enabled."); - ok(Services.prefs.getBoolPref(CB_ENABLED_PREF), "Content Blocking is enabled."); - - let promiseTPPrefChanged = waitForPrefChanged(TP_PB_ENABLED_PREF); - await ContentTask.spawn(tab, {}, async function() { - is(content.document.getElementById("tpToggle").checked, true, "toggle is active"); - content.document.getElementById("tpButton").click(); - }); - await promiseTPPrefChanged; - ok(!Services.prefs.getBoolPref(TP_PB_ENABLED_PREF), "Tracking Protection is disabled."); - ok(Services.prefs.getBoolPref(CB_ENABLED_PREF), "Content Blocking is enabled."); - - await BrowserTestUtils.closeWindow(win); -}); diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn index c6a2a1f8bf0a..1fbe16c19406 100644 --- a/browser/themes/shared/jar.inc.mn +++ b/browser/themes/shared/jar.inc.mn @@ -243,5 +243,4 @@ skin/classic/browser/privatebrowsing/aboutPrivateBrowsing.css (../shared/privatebrowsing/aboutPrivateBrowsing.css) skin/classic/browser/privatebrowsing/favicon.svg (../shared/privatebrowsing/favicon.svg) skin/classic/browser/privatebrowsing/private-browsing.svg (../shared/privatebrowsing/private-browsing.svg) - skin/classic/browser/privatebrowsing/tracking-protection-off.svg (../shared/privatebrowsing/tracking-protection-off.svg) skin/classic/browser/privatebrowsing/tracking-protection.svg (../shared/privatebrowsing/tracking-protection.svg) diff --git a/browser/themes/shared/privatebrowsing/aboutPrivateBrowsing.css b/browser/themes/shared/privatebrowsing/aboutPrivateBrowsing.css index b687320b8554..99802cf7729c 100644 --- a/browser/themes/shared/privatebrowsing/aboutPrivateBrowsing.css +++ b/browser/themes/shared/privatebrowsing/aboutPrivateBrowsing.css @@ -78,10 +78,6 @@ p { background-position: right; } -.about-subheader.tp-off { - background-image: url("chrome://browser/skin/privatebrowsing/tracking-protection-off.svg"); -} - .about-info { font-size: .9em; } @@ -97,63 +93,3 @@ a.button { text-decoration: none; display: inline-block; } - -/** - * We want to hide the checkbox in lieu of the toggle-btn - * "slider toggle". We need to make the toggle keyboard - * focusable, however, which is not possible if it's - * display:none. We work around this by making the toggle - * invisible but still present in the display list, allowing - * it to receive keyboard events. When it is focused by keyboard, - * we use the -moz-focusring selector on the invisible checkbox - * to show a focus ring around the slider toggle. - */ -.toggle-input { - opacity: 0; - width: 0; - pointer-events: none; - position: absolute; -} - -.toggle + .toggle-btn { - box-sizing: border-box; - cursor: pointer; - min-width: 48px; - height: 27px; - border-radius: 13px; - background-color: var(--color-grey); - border: 1px solid #202340; -} - -.toggle + .toggle-btn::after { - position: relative; - display: block; - content: ""; - width: 25px; - height: 100%; - left: 0; - border-radius: 50%; - background: white; - transition: left .2s ease; -} - -.toggle + .toggle-btn:dir(rtl)::after { - left: auto; - right: 0; - transition-property: right; -} - -.toggle:checked + .toggle-btn { - background: #16da00; - border-color: #0CA700; -} - -.toggle:checked + .toggle-btn::after { - inset-inline-start: 21px; -} - -.toggle:-moz-focusring + .toggle-btn { - outline: 2px solid rgba(0, 149, 221, 0.5); - outline-offset: 1px; - -moz-outline-radius: 2px; -} diff --git a/browser/themes/shared/privatebrowsing/tracking-protection-off.svg b/browser/themes/shared/privatebrowsing/tracking-protection-off.svg deleted file mode 100644 index 7da0ca78a01e..000000000000 --- a/browser/themes/shared/privatebrowsing/tracking-protection-off.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - diff --git a/toolkit/components/remotepagemanager/MessagePort.jsm b/toolkit/components/remotepagemanager/MessagePort.jsm index 4b08a2a7850c..9f9421c7125c 100644 --- a/toolkit/components/remotepagemanager/MessagePort.jsm +++ b/toolkit/components/remotepagemanager/MessagePort.jsm @@ -23,12 +23,9 @@ let RPMAccessManager = { accessMap: { "about:privatebrowsing": { // "sendAsyncMessage": handled within AboutPrivateBrowsingHandler.jsm - // "setBoolPref": handled within AsyncPrefs.jsm and uses the prefs - // ["browser.contentblocking.enabled", - // "privacy.trackingprotection.pbmode.enabled"], - "getBoolPref": ["browser.contentblocking.enabled", - "privacy.trackingprotection.enabled", - "privacy.trackingprotection.pbmode.enabled"], + // "setBoolPref": handled within AsyncPrefs.jsm and uses the pref + // ["privacy.trackingprotection.pbmode.enabled"], + "getBoolPref": ["privacy.trackingprotection.pbmode.enabled"], "getFormatURLPref": ["privacy.trackingprotection.introURL", "app.support.baseURL"], "isWindowPrivate": ["yes"], diff --git a/toolkit/modules/AsyncPrefs.jsm b/toolkit/modules/AsyncPrefs.jsm index 2bf554f75694..da314465131e 100644 --- a/toolkit/modules/AsyncPrefs.jsm +++ b/toolkit/modules/AsyncPrefs.jsm @@ -20,7 +20,6 @@ const kAllowedPrefs = new Set([ "narrate.rate", "narrate.voice", - "browser.contentblocking.enabled", "privacy.trackingprotection.pbmode.enabled", "reader.font_size",