Bug 1443644 - Add UI explaining why the "Keep until..." menu is disabled in permanent private browsing. draft
authorJohann Hofmann <jhofmann@mozilla.com>
Fri, 20 Apr 2018 00:12:49 +0200
changeset 785327 2edd432ecb03fe19e9b96d82e5af7940bcbf61c0
parent 784732 a0c804993efc599a95e97bea39fa1528fd0195d8
push id107197
push userjhofmann@mozilla.com
push dateThu, 19 Apr 2018 22:13:22 +0000
bugs1443644
milestone61.0a1
Bug 1443644 - Add UI explaining why the "Keep until..." menu is disabled in permanent private browsing. MozReview-Commit-ID: 167xaVQyQHA
browser/components/preferences/in-content/privacy.js
browser/components/preferences/in-content/privacy.xul
browser/locales/en-US/browser/preferences/preferences.ftl
--- a/browser/components/preferences/in-content/privacy.js
+++ b/browser/components/preferences/in-content/privacy.js
@@ -833,29 +833,36 @@ var gPrivacyPane = {
    * Returns "0" if cookies are accepted and "2" if they are entirely disabled.
    */
   readAcceptCookies() {
     let pref = Preferences.get("network.cookie.cookieBehavior");
     let acceptThirdPartyLabel = document.getElementById("acceptThirdPartyLabel");
     let acceptThirdPartyMenu = document.getElementById("acceptThirdPartyMenu");
     let keepUntilLabel = document.getElementById("keepUntil");
     let keepUntilMenu = document.getElementById("keepCookiesUntil");
+    let keepUntilMenuPBNote = document.getElementById("keepUntilPrivateBrowsingNote");
 
     // enable the rest of the UI for anything other than "disable all cookies"
     let acceptCookies = (pref.value != 2);
     let cookieBehaviorLocked = Services.prefs.prefIsLocked("network.cookie.cookieBehavior");
     const acceptThirdPartyControlsDisabled = !acceptCookies || cookieBehaviorLocked;
 
     acceptThirdPartyLabel.disabled = acceptThirdPartyMenu.disabled = acceptThirdPartyControlsDisabled;
 
     let privateBrowsing = Preferences.get("browser.privatebrowsing.autostart").value;
     let cookieExpirationLocked = Services.prefs.prefIsLocked("network.cookie.lifetimePolicy");
     const keepUntilControlsDisabled = privateBrowsing || !acceptCookies || cookieExpirationLocked;
     keepUntilLabel.disabled = keepUntilMenu.disabled = keepUntilControlsDisabled;
 
+    if (privateBrowsing) {
+      keepUntilMenuPBNote.removeAttribute("hidden");
+    } else {
+      keepUntilMenuPBNote.setAttribute("hidden", "true");
+    }
+
     // Our top-level setting is a radiogroup that only sets "enable all"
     // and "disable all", so convert the pref value accordingly.
     return acceptCookies ? "0" : "2";
   },
 
   /**
    * Updates the "accept third party cookies" menu based on whether the
    * "accept cookies" or "block cookies" radio buttons are selected.
--- a/browser/components/preferences/in-content/privacy.xul
+++ b/browser/components/preferences/in-content/privacy.xul
@@ -174,34 +174,38 @@
                   preference="network.cookie.cookieBehavior"
                   onsyncfrompreference="return gPrivacyPane.readAcceptCookies();"
                   onsynctopreference="return gPrivacyPane.writeAcceptCookies();">
         <hbox id="cookiesBox">
           <radio value="0"
                  data-l10n-id="sitedata-accept-cookies-option"
                  flex="1" />
         </hbox>
-        <hbox id="keepRow"
-              class="indent"
-              align="center">
-          <label id="keepUntil"
-                 control="keepCookiesUntil"
-                 data-l10n-id="sitedata-keep-until"/>
-          <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
-          <hbox>
-            <menulist id="keepCookiesUntil"
-                      onsyncfrompreference="return gPrivacyPane.readKeepCookiesUntil();"
-                      preference="network.cookie.lifetimePolicy">
-              <menupopup>
-                <menuitem data-l10n-id="sitedata-keep-until-expire" value="0"/>
-                <menuitem data-l10n-id="sitedata-keep-until-closed" value="2"/>
-              </menupopup>
-            </menulist>
+        <vbox id="keepRow"
+              class="indent">
+          <hbox align="center">
+            <label id="keepUntil"
+                   control="keepCookiesUntil"
+                   data-l10n-id="sitedata-keep-until"/>
+            <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
+            <hbox>
+              <menulist id="keepCookiesUntil"
+                        onsyncfrompreference="return gPrivacyPane.readKeepCookiesUntil();"
+                        preference="network.cookie.lifetimePolicy">
+                <menupopup>
+                  <menuitem data-l10n-id="sitedata-keep-until-expire" value="0"/>
+                  <menuitem data-l10n-id="sitedata-keep-until-closed" value="2"/>
+                </menupopup>
+              </menulist>
+            </hbox>
           </hbox>
-        </hbox>
+          <description id="keepUntilPrivateBrowsingNote"
+                       hidden="true"
+                       data-l10n-id="sitedata-keep-until-private-browsing"/>
+        </vbox>
         <hbox id="acceptThirdPartyRow"
               class="indent"
               align="center">
           <label id="acceptThirdPartyLabel" control="acceptThirdPartyMenu"
                  data-l10n-id="sitedata-accept-third-party-desc"/>
           <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
           <hbox>
             <menulist id="acceptThirdPartyMenu" preference="network.cookie.cookieBehavior"
--- a/browser/locales/en-US/browser/preferences/preferences.ftl
+++ b/browser/locales/en-US/browser/preferences/preferences.ftl
@@ -658,16 +658,18 @@ sitedata-accept-cookies-option =
 
 sitedata-block-cookies-option =
     .label = Block cookies and site data (may cause websites to break)
     .accesskey = B
 
 sitedata-keep-until = Keep until
     .accesskey = u
 
+sitedata-keep-until-private-browsing = In permanent private browsing mode, cookies and site data will always be cleared when { -brand-short-name } is closed.
+
 sitedata-keep-until-expire =
     .label = They expire
 sitedata-keep-until-closed =
     .label = { -brand-short-name } is closed
 
 sitedata-accept-third-party-desc = Accept third-party cookies and site data
     .accesskey = y