Bug 1190427 - Update the design of about:privatebrowsing. r=ttaubert draft
authorPaolo Amadini <paolo.mozmail@amadzone.org>
Thu, 06 Aug 2015 15:51:41 +0100
changeset 283401 4fa58074ef91d7d03cf4421ef9e1824e0f57df3b
parent 283047 f3b757156f6921572e72a799e729daf5b98abaa8
child 508094 d8042e7ddd92a99bd088877de1fe386c1449edb4
push id4136
push userpaolo.mozmail@amadzone.org
push dateThu, 06 Aug 2015 14:59:01 +0000
reviewersttaubert
bugs1190427
milestone42.0a1
Bug 1190427 - Update the design of about:privatebrowsing. r=ttaubert
browser/base/content/browser.js
browser/base/content/tab-content.js
browser/components/privatebrowsing/content/aboutPrivateBrowsing.css
browser/components/privatebrowsing/content/aboutPrivateBrowsing.js
browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml
browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js
browser/locales/en-US/chrome/browser/aboutPrivateBrowsing.dtd
browser/themes/linux/jar.mn
browser/themes/osx/jar.mn
browser/themes/shared/mask-and-shield.svg
browser/themes/shared/mask.png
browser/themes/shared/mask@2x.png
browser/themes/shared/privatebrowsing/attention.png
browser/themes/shared/privatebrowsing/attention@2x.png
browser/themes/shared/privatebrowsing/check.png
browser/themes/shared/privatebrowsing/check@2x.png
browser/themes/shared/privatebrowsing/mask.svg
browser/themes/shared/privatebrowsing/shield-page.png
browser/themes/shared/privatebrowsing/shield-page@2x.png
browser/themes/windows/jar.mn
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -7817,14 +7817,15 @@ let PanicButtonNotifier = {
 let AboutPrivateBrowsingListener = {
   init: function () {
     window.messageManager.addMessageListener(
       "AboutPrivateBrowsing:OpenPrivateWindow",
       msg => {
         OpenBrowserWindow({private: true});
     });
     window.messageManager.addMessageListener(
-      "AboutPrivateBrowsing:EnableTrackingProtection",
+      "AboutPrivateBrowsing:ToggleTrackingProtection",
       msg => {
-        Services.prefs.setBoolPref("privacy.trackingprotection.pbmode.enabled", true);
+        const PREF = "privacy.trackingprotection.pbmode.enabled";
+        Services.prefs.setBoolPref(PREF, !Services.prefs.getBoolPref(PREF));
     });
   }
 };
--- a/browser/base/content/tab-content.js
+++ b/browser/base/content/tab-content.js
@@ -230,34 +230,34 @@ let AboutHomeListener = {
   },
 };
 AboutHomeListener.init(this);
 
 let AboutPrivateBrowsingListener = {
   init(chromeGlobal) {
     chromeGlobal.addEventListener("AboutPrivateBrowsingOpenWindow", this,
                                   false, true);
-    chromeGlobal.addEventListener("AboutPrivateBrowsingEnableTrackingProtection", this,
+    chromeGlobal.addEventListener("AboutPrivateBrowsingToggleTrackingProtection", this,
                                   false, true);
   },
 
   get isAboutPrivateBrowsing() {
     return content.document.documentURI.toLowerCase() == "about:privatebrowsing";
   },
 
   handleEvent(aEvent) {
     if (!this.isAboutPrivateBrowsing) {
       return;
     }
     switch (aEvent.type) {
       case "AboutPrivateBrowsingOpenWindow":
         sendAsyncMessage("AboutPrivateBrowsing:OpenPrivateWindow");
         break;
-      case "AboutPrivateBrowsingEnableTrackingProtection":
-        sendAsyncMessage("AboutPrivateBrowsing:EnableTrackingProtection");
+      case "AboutPrivateBrowsingToggleTrackingProtection":
+        sendAsyncMessage("AboutPrivateBrowsing:ToggleTrackingProtection");
         break;
     }
   },
 };
 AboutPrivateBrowsingListener.init(this);
 
 let AboutReaderListener = {
 
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.css
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.css
@@ -2,145 +2,184 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 %endif
 
 @import url("chrome://global/skin/in-content/common.css");
 
 body {
+  min-height: 100vh;
   display: flex;
   flex-direction: column;
-  box-sizing: border-box;
-  min-height: 100vh;
-  padding: 0 48px;
   align-items: center;
   justify-content: center;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-weight: 300;
 }
 
-body.tour {
-  margin: 0;
-  padding: 0;
-  align-items: stretch;
-}
-
+body.private .showNormal,
 body.normal .showPrivate,
-body.private .showNormal,
-body.tour #pageContainer,
-body:not(.tour) .showTour,
 body[tpEnabled] .showTpDisabled,
 body:not([tpEnabled]) .showTpEnabled {
   display: none !important;
 }
 
-#pageContainer {
-  min-width: 320px;
-  max-width: 512px;
-}
-
-.titleText {
-  background: url("chrome://browser/skin/mask.png") left 0 no-repeat;
-  background-size: 45px;
-  -moz-margin-start: -2em;
-  -moz-padding-start: 2em;
-}
-
-.titleText:-moz-dir(rtl) {
-  background-position: right 0;
-}
-
-@media (min-resolution: 2dppx) {
-  .titleText {
-    background-image: url("chrome://browser/skin/mask@2x.png");
-  }
-}
-
-@media (max-width: 675px) {
-  .titleText {
-    padding-top: 0;
-    background-image: none;
-    -moz-margin-start: 0;
-    -moz-padding-start: 0;
+@media screen and (min-width: 1200px) and (min-height: 700px) {
+  body.private {
+    font-size: 1.25em;
   }
 }
 
-a {
-  font-size: 1rem;
+#bar {
+  align-self: stretch;
+  background: url("chrome://browser/skin/privatebrowsing/mask.svg") no-repeat 22px 50%,
+              #8d20ae;
+  background-size: 47px 26px;
+  padding-inline-start: 87px;
+  color: white;
+  font-size: 24pt;
+  font-weight: 200;
+  line-height: 60pt;
 }
 
-#startPrivateBrowsing {
-  margin-top: 1.2em;
-  -moz-margin-start: 0;
+#main {
+  padding: 0 2em;
+  flex: 1;
+  display: flex;
+  flex-flow: row wrap;
+  align-items: center;
+  justify-content: center;
+}
+
+.sectionHeader {
+  font-size: 1.75em;
 }
 
-/* TRACKING PROTECTION TOUR */
+/* PRIVATE BROWSING SECTION */
 
-#tourTop,
-#tourBottom,
-#tourFooter {
-  text-align: center;
-  padding: 0 31px;
+#privateBrowsingSection {
+  margin: 1em;
+  padding: 0 1em;
+}
+
+ul {
+  margin-bottom: 0;
+  padding-inline-start: 8px;
 }
 
-#tourTop,
-#tourBottom {
-  flex: 1;
+li {
+  list-style: none;
+  padding-inline-start: 24px;
+  background-size: 16px 16px;
+  background-repeat: no-repeat;
+  background-position: 0 50%;
+}
+
+#forgotten > li {
+  background-image: url("chrome://browser/skin/privatebrowsing/check.png");
+}
+
+#kept > li {
+  background-image: url("chrome://browser/skin/privatebrowsing/attention.png");
 }
 
-#tourTop {
+@media (min-resolution: 1.1dppx) {
+  #forgotten li {
+    background-image: url("chrome://browser/skin/privatebrowsing/check@2x.png");
+  }
+
+  #kept li {
+    background-image: url("chrome://browser/skin/privatebrowsing/attention@2x.png");
+  }
+}
+
+#list-area {
   display: flex;
-  flex-direction: column;
-  justify-content: flex-end;
-  background-color: rgb(108,192,65);
-  color: white;
-  font-style: italic;
+  flex-direction: row;
+  justify-content: flex-start;
+  align-items: flex-start;
+}
+
+#list-area > div {
+  margin-inline-end: 1em;
+}
+
+.list-header {
+  font-weight: bold;
+}
+
+/* TRACKING PROTECTION SECTION */
+
+#trackingProtectionSection {
+  margin: 1em;
+  padding: 1em;
+  text-align: center;
+  border: lightgray 2px solid;
+  border-radius: 10px;
 }
 
-#tourTitle {
-  margin: 16px 0 0;
-  background: url("chrome://browser/skin/mask-and-shield.svg") top no-repeat;
-  background-size: 179px 88px;
-  padding-top: 114px;
-  font-size: 38px;
+#tpEnabled,
+#tpDisabled {
+  display: inline-block;
+  margin-inline-start: 0.5em;
+  border-radius: 3px;
+  padding: 0.1em;
+  color: white;
+  font-size: 0.78em;
+  font-weight: bold;
+}
+
+#tpEnabled {
+  background-color: #6fbe4a;
 }
 
-#tourSubtitle {
-  margin: 12px 0 32px;
-  font-size: 24px;
+#tpDisabled {
+  background-color: #c33b32;
 }
 
-#tourDescription,
-#tourFooter {
-  margin: 16px auto;
-  max-width: 550px;
+#tpDiagram {
+  margin-left: auto;
+  margin-right: auto;
+  width: 145px;
+  height: 90px;
+  background: url("chrome://browser/skin/privatebrowsing/shield-page.png") no-repeat;
+  background-size: 145px 90px;
+}
+
+@media (min-resolution: 1.1dppx) {
+  #tpDiagram {
+    background-image: url("chrome://browser/skin/privatebrowsing/shield-page@2x.png");
+  }
+}
+
+#tpStartTour {
+  margin-bottom: 0;
 }
 
 #startTour {
   display: inline-block;
-  width: 255px;
+  width: 16em;
   border-radius: 2px;
   background-color: var(--in-content-primary-button-background);
   color: var(--in-content-selected-text);
-  padding: 2px 5px;
-  line-height: 36px;
+  padding: 0.1em 0.3em;
+  line-height: 2.25em;
   text-decoration: none;
 }
 
 #startTour:hover {
   background-color: var(--in-content-primary-button-background-hover);
 }
 
-#enableTrackingProtection {
-  height: 40px;
-}
-
-#tourFooter {
-  margin: 16px auto;
+#startTour:hover:active {
+  background-color: var(--in-content-primary-button-background-active);
 }
 
-#tourFooter,
-#tourLearnMore {
-  font-size: 12px;
+#startTour:-moz-focusring {
+  outline: 1px dotted var(--in-content-border-focus);
 }
 
-#tourFooterText {
-  opacity: 0.6;
+#enableTrackingProtection,
+#disableTrackingProtection {
+  font-size: 0.875em;
+  cursor: pointer;
 }
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js
@@ -3,89 +3,86 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
+const FAVICON_QUESTION = "chrome://global/skin/icons/question-16.png";
+const FAVICON_PRIVACY = "chrome://browser/skin/Privacy-16.png";
+
 let stringBundle = Services.strings.createBundle(
                      "chrome://browser/locale/aboutPrivateBrowsing.properties");
 
-let useTour = false;
-try {
-  useTour = Services.prefs.getBoolPref("privacy.trackingprotection.ui.enabled");
-} catch (ex) {
-  // The preference is not available.
-}
-
-if (!PrivateBrowsingUtils.isContentWindowPrivate(window)) {
-  document.title = stringBundle.GetStringFromName("title.normal");
-  setFavIcon("chrome://global/skin/icons/question-16.png");
-} else {
-  document.title = stringBundle.GetStringFromName("title");
-  setFavIcon("chrome://browser/skin/Privacy-16.png");
-}
-
 let prefBranch = Services.prefs.getBranch("privacy.trackingprotection.pbmode.");
 let prefObserver = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
                                          Ci.nsISupportsWeakReference]),
   observe: function () {
     if (prefBranch.getBoolPref("enabled")) {
       document.body.setAttribute("tpEnabled", "true");
     } else {
       document.body.removeAttribute("tpEnabled");
     }
   },
 };
 prefBranch.addObserver("enabled", prefObserver, true);
 
 function setFavIcon(url) {
-  let icon = document.createElement("link");
-  icon.setAttribute("rel", "icon");
-  icon.setAttribute("type", "image/png");
-  icon.setAttribute("href", url);
-  let head = document.getElementsByTagName("head")[0];
-  head.insertBefore(icon, head.firstChild);
+  document.getElementById("favicon").setAttribute("href", url);
 }
 
 document.addEventListener("DOMContentLoaded", function () {
+  if (!PrivateBrowsingUtils.isContentWindowPrivate(window)) {
+    document.body.setAttribute("class", "normal");
+    document.title = stringBundle.GetStringFromName("title.normal");
+    document.getElementById("favicon")
+            .setAttribute("href", FAVICON_QUESTION);
+    document.getElementById("startPrivateBrowsing")
+            .addEventListener("command", openPrivateWindow);
+    return;
+  }
+
+  document.title = stringBundle.GetStringFromName("title");
+  document.getElementById("favicon")
+          .setAttribute("href", FAVICON_PRIVACY);
+  document.getElementById("enableTrackingProtection")
+          .addEventListener("click", toggleTrackingProtection);
+  document.getElementById("disableTrackingProtection")
+          .addEventListener("click", toggleTrackingProtection);
+
   let formatURLPref = Cc["@mozilla.org/toolkit/URLFormatterService;1"]
                         .getService(Ci.nsIURLFormatter).formatURLPref;
-  let learnMoreURL = formatURLPref("app.support.baseURL") + "private-browsing";
+  document.getElementById("startTour").setAttribute("href",
+                     formatURLPref("privacy.trackingprotection.introURL"));
+  document.getElementById("learnMore").setAttribute("href",
+                     formatURLPref("app.support.baseURL") + "private-browsing");
+
+  // Update state that depends on preferences.
+  prefObserver.observe();
 
-  if (!PrivateBrowsingUtils.isContentWindowPrivate(window)) {
-    // Normal browsing window.
-    document.body.setAttribute("class", "normal");
-  } else if (!useTour) {
-    // Private browsing window, classic version.
-    document.getElementById("learnMore").setAttribute("href", learnMoreURL);
-  } else {
-    // Private browsing window, Tracking Protection tour version.
-    document.body.setAttribute("class", "tour");
-    let tourURL = formatURLPref("privacy.trackingprotection.introURL");
-    document.getElementById("startTour").setAttribute("href", tourURL);
-    document.getElementById("tourLearnMore").setAttribute("href", learnMoreURL);
-    // Update state that depends on preferences.
-    prefObserver.observe();
+  // This check can be removed when Tracking Protection is always available.
+  let tpUIEnabled = false;
+  try {
+    tpUIEnabled = Services.prefs.getBoolPref("privacy.trackingprotection.ui.enabled");
+  } catch (ex) {
+    // The preference is not available.
   }
-
-  document.getElementById("startPrivateBrowsing")
-          .addEventListener("command", openPrivateWindow);
-
-  document.getElementById("enableTrackingProtection")
-          .addEventListener("command", enableTrackingProtection);
+  if (!tpUIEnabled) {
+    document.getElementById("trackingProtectionSection")
+            .setAttribute("hidden", "true");
+  }
 }, false);
 
 function openPrivateWindow() {
   // Ask chrome to open a private window
   document.dispatchEvent(
     new CustomEvent("AboutPrivateBrowsingOpenWindow", {bubbles:true}));
 }
 
-function enableTrackingProtection() {
+function toggleTrackingProtection() {
   // Ask chrome to enable tracking protection
   document.dispatchEvent(
-    new CustomEvent("AboutPrivateBrowsingEnableTrackingProtection",
+    new CustomEvent("AboutPrivateBrowsingToggleTrackingProtection",
                     {bubbles:true}));
 }
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.xhtml
@@ -14,55 +14,75 @@
   <!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd">
   %browserDTD;
   <!ENTITY % aboutPrivateBrowsingDTD SYSTEM "chrome://browser/locale/aboutPrivateBrowsing.dtd">
   %aboutPrivateBrowsingDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
+    <link id="favicon" rel="icon" type="image/png"/>
     <link rel="stylesheet" href="chrome://browser/content/aboutPrivateBrowsing.css" type="text/css" media="all"/>
     <script type="application/javascript;version=1.7" src="chrome://browser/content/aboutPrivateBrowsing.js"></script>
   </head>
 
   <body dir="&locale.dir;" class="private">
-    <div id="pageContainer">
-      <h1 class="titleText showPrivate">&aboutPrivateBrowsing.title;</h1>
-      <h1 class="titleText showNormal">&aboutPrivateBrowsing.title.normal;</h1>
-
-      <p class="subtitleText showPrivate">&aboutPrivateBrowsing.subtitle;</p>
-      <p class="subtitleText showNormal">&aboutPrivateBrowsing.subtitle.normal;</p>
-
-      <p class="descriptionText">&aboutPrivateBrowsing.description;</p>
-
-      <p class="notPrivateText showNormal">&aboutPrivateBrowsing.notPrivate;</p>
-
-      <button xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-              id="startPrivateBrowsing"
-              class="openPrivate showNormal"
-              label="&privatebrowsingpage.openPrivateWindow.label;"
-              accesskey="&privatebrowsingpage.openPrivateWindow.accesskey;"/>
-      <div class="showPrivate">
-        <p class="moreInfoText">&aboutPrivateBrowsing.moreInfo;</p>
-        <p><a id="learnMore" target="_blank">&aboutPrivateBrowsing.learnMore;</a></p>
+    <p class="showNormal">&aboutPrivateBrowsing.notPrivate;</p>
+    <button xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+            id="startPrivateBrowsing"
+            class="showNormal"
+            label="&privatebrowsingpage.openPrivateWindow.label;"
+            accesskey="&privatebrowsingpage.openPrivateWindow.accesskey;"/>
+    <div id="bar" class="showPrivate">&privateBrowsing.title;</div>
+    <div id="main" class="showPrivate">
+      <div id="privateBrowsingSection"
+           style="width: &aboutPrivateBrowsing.width;">
+        <div class="sectionHeader">&aboutPrivateBrowsing.title;</div>
+        <p>&aboutPrivateBrowsing.subtitle;</p>
+        <div id="list-area">
+          <div>
+            <div class="list-header">&aboutPrivateBrowsing.info.forgotten;</div>
+            <ul id="forgotten">
+              <li>&aboutPrivateBrowsing.info.history;</li>
+              <li>&aboutPrivateBrowsing.info.search;</li>
+              <li>&aboutPrivateBrowsing.info.cookies;</li>
+              <li>&aboutPrivateBrowsing.info.temporaryFiles;</li>
+            </ul>
+          </div>
+          <div>
+            <div class="list-header">&aboutPrivateBrowsing.info.kept;</div>
+            <ul id="kept">
+              <li>&aboutPrivateBrowsing.info.downloads;</li>
+              <li>&aboutPrivateBrowsing.info.bookmarks;</li>
+            </ul>
+          </div>
+        </div>
+        <p>&aboutPrivateBrowsing.note;</p>
+        <a id="learnMore" target="_blank">&aboutPrivateBrowsing.learnMore;</a>
+      </div>
+      <div id="trackingProtectionSection"
+           style="width: &trackingProtection.width;">
+        <div class="sectionHeader">&trackingProtection.title;
+          <span id="tpEnabled"
+                style="width: &trackingProtection.state.width;"
+                class="showTpEnabled">&trackingProtection.state.enabled;</span>
+          <span id="tpDisabled"
+                style="width: &trackingProtection.state.width;"
+                class="showTpDisabled">&trackingProtection.state.disabled;</span>
+        </div>
+        <p id="tpDiagram"/>
+        <p class="showTpEnabled">&trackingProtection.description.enabled;</p>
+        <p class="showTpDisabled">&trackingProtection.description.disabled;</p>
+        <!-- Use text links to implement plain styled buttons without an href. -->
+        <label xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+               id="disableTrackingProtection"
+               class="text-link showTpEnabled"
+               value="&trackingProtection.disable;"/>
+        <label xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+               id="enableTrackingProtection"
+               class="text-link showTpDisabled"
+               value="&trackingProtection.enable;"/>
+        <p id="tpStartTour"
+           class="showTpEnabled"><a id="startTour">&trackingProtection.startTour;</a></p>
       </div>
     </div>
-    <div id="tourTop" class="showTour">
-      <p id="tourTitle">&aboutPrivateBrowsing.title;</p>
-      <p id="tourSubtitle">&trackingProtection.subtitle;</p>
-    </div>
-    <div id="tourBottom" class="showTour">
-      <p id="tourDescription">&trackingProtection.description;</p>
-      <p class="showTpEnabled"><a id="startTour">&trackingProtection.startTour;</a></p>
-      <p class="showTpEnabled"><a id="showPreferences" href="about:preferences#privacy"
-        target="_blank">&trackingProtection.showPreferences;</a></p>
-      <button xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-              id="enableTrackingProtection"
-              class="primary showTpDisabled"
-              label="&trackingProtection.enable.label;"
-              accesskey="&trackingProtection.enable.accesskey;"/>
-    </div>
-    <p id="tourFooter" class="showTour">
-      <span id="tourFooterText">&aboutPrivateBrowsing.shortdescription;</span>
-      <a id="tourLearnMore" target="_blank">&aboutPrivateBrowsing.learnMore;</a>
-    </p>
   </body>
 </html>
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js
@@ -37,103 +37,83 @@ function* testLinkOpensUrl({ win, tab, e
     content.document.getElementById(elementId).click();
   });
   yield loadedPromise;
   is(tab.currentURI.spec, expectedUrl,
      `Clicking ${elementId} opened ${expectedUrl} in the same tab.`);
 }
 
 /**
- * Tests the Learn More action in the classic "about:privatebrowsing" window.
+ * Tests the links in "about:privatebrowsing".
  */
-add_task(function* test_classicActions() {
-  // Use classic version and change the remote URL to prevent network access.
-  Services.prefs.setBoolPref("privacy.trackingprotection.ui.enabled", false);
-  Services.prefs.setCharPref("app.support.baseURL", "https://example.com/");
-  registerCleanupFunction(function () {
-    Services.prefs.clearUserPref("app.support.baseURL");
-    Services.prefs.clearUserPref("privacy.trackingprotection.ui.enabled");
-  });
-
-  let { win, tab } = yield openAboutPrivateBrowsing();
-
-  yield testLinkOpensTab({ win, tab,
-    elementId: "learnMore",
-    expectedUrl: "https://example.com/private-browsing",
-  });
-
-  yield BrowserTestUtils.closeWindow(win);
-});
-
-/**
- * Tests the Tracking Protection tour actions in "about:privatebrowsing".
- */
-add_task(function* test_tourActions() {
-  // Use tour version and change the remote URLs to prevent network access.
+add_task(function* test_links() {
+  // Use full version and change the remote URLs to prevent network access.
   Services.prefs.setBoolPref("privacy.trackingprotection.ui.enabled", true);
   Services.prefs.setCharPref("app.support.baseURL", "https://example.com/");
   Services.prefs.setCharPref("privacy.trackingprotection.introURL",
                              "https://example.com/tour");
   registerCleanupFunction(function () {
     Services.prefs.clearUserPref("privacy.trackingprotection.introURL");
     Services.prefs.clearUserPref("app.support.baseURL");
     Services.prefs.clearUserPref("privacy.trackingprotection.ui.enabled");
   });
 
   let { win, tab } = yield openAboutPrivateBrowsing();
 
   yield testLinkOpensTab({ win, tab,
-    elementId: "showPreferences",
-    expectedUrl: "about:preferences#privacy",
-  });
-
-  yield testLinkOpensTab({ win, tab,
-    elementId: "tourLearnMore",
+    elementId: "learnMore",
     expectedUrl: "https://example.com/private-browsing",
   });
 
   yield testLinkOpensUrl({ win, tab,
     elementId: "startTour",
     expectedUrl: "https://example.com/tour",
   });
 
   yield BrowserTestUtils.closeWindow(win);
 });
 
 /**
- * Tests the action to re-enable Tracking Protection in "about:privatebrowsing"
- * when it has been disabled from the preferences.
+ * Tests the action to disable and re-enable Tracking Protection in
+ * "about:privatebrowsing".
  */
-add_task(function* test_enableTrackingProtection() {
+add_task(function* test_toggleTrackingProtection() {
   // Use tour version but disable Tracking Protection.
   Services.prefs.setBoolPref("privacy.trackingprotection.ui.enabled", true);
   Services.prefs.setBoolPref("privacy.trackingprotection.pbmode.enabled",
-                             false);
+                             true);
   registerCleanupFunction(function () {
     Services.prefs.clearUserPref("privacy.trackingprotection.pbmode.enabled");
     Services.prefs.clearUserPref("privacy.trackingprotection.ui.enabled");
   });
 
   let { win, tab } = yield openAboutPrivateBrowsing();
 
   // Set up the observer for the preference change before triggering the action.
   let prefBranch =
       Services.prefs.getBranch("privacy.trackingprotection.pbmode.");
-  let promisePrefChanged = new Promise(resolve => {
+  let waitForPrefChanged = () => new Promise(resolve => {
     let prefObserver = {
       QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
       observe: function () {
         prefBranch.removeObserver("enabled", prefObserver);
         resolve();
       },
     };
     prefBranch.addObserver("enabled", prefObserver, false);
   });
 
+  let promisePrefChanged = waitForPrefChanged();
+  yield ContentTask.spawn(tab, {}, function* () {
+    content.document.getElementById("disableTrackingProtection").click();
+  });
+  yield promisePrefChanged;
+  ok(!prefBranch.getBoolPref("enabled"), "Tracking Protection is disabled.");
+
+  promisePrefChanged = waitForPrefChanged();
   yield ContentTask.spawn(tab, {}, function* () {
     content.document.getElementById("enableTrackingProtection").click();
   });
-
   yield promisePrefChanged;
   ok(prefBranch.getBoolPref("enabled"), "Tracking Protection is enabled.");
 
   yield BrowserTestUtils.closeWindow(win);
 });
--- a/browser/locales/en-US/chrome/browser/aboutPrivateBrowsing.dtd
+++ b/browser/locales/en-US/chrome/browser/aboutPrivateBrowsing.dtd
@@ -1,32 +1,50 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
-<!ENTITY aboutPrivateBrowsing.title            "You're browsing privately">
-<!ENTITY aboutPrivateBrowsing.title.normal     "Open a private window?">
-
-<!ENTITY aboutPrivateBrowsing.subtitle         "&brandShortName; won't remember any history for this window.">
-<!ENTITY aboutPrivateBrowsing.subtitle.normal  "&brandShortName; won't remember any history for private windows.">
-
-<!ENTITY aboutPrivateBrowsing.description      "That includes browsing history, search history, download history, web form history, cookies, and temporary internet files. However, files you download and bookmarks you make will be kept.">
-
-<!ENTITY aboutPrivateBrowsing.shortdescription "&brandShortName; won't remember any history for this window, but will keep any files you download and bookmarks you make. (Please note that your employer or internet service provider can still track the pages you visit.)">
-
 <!ENTITY aboutPrivateBrowsing.notPrivate       "You are currently not in a private window.">
-
-<!ENTITY aboutPrivateBrowsing.moreInfo         "While this computer won't have a record of your browsing history, your employer or internet service provider can still track the pages you visit.">
-<!ENTITY aboutPrivateBrowsing.learnMore        "Learn More.">
-
 <!ENTITY privatebrowsingpage.openPrivateWindow.label "Open a Private Window">
 <!ENTITY privatebrowsingpage.openPrivateWindow.accesskey "P">
 
-<!ENTITY trackingProtection.subtitle           "Now with Tracking Protection">
+<!ENTITY privateBrowsing.title                 "Private Browsing">
+
+<!-- LOCALIZATION NOTE (aboutPrivateBrowsing.width):
+     Width of the Private Browsing section.
+     -->
+<!ENTITY aboutPrivateBrowsing.width            "25em">
+<!ENTITY aboutPrivateBrowsing.title            "You're browsing privately">
+<!ENTITY aboutPrivateBrowsing.subtitle         "&brandShortName; won't remember any history for this window.">
 
-<!ENTITY trackingProtection.description        "Tracking Protection will block content that tracks your browsing activity so you don't have to worry about it being shared across websites.">
+<!ENTITY aboutPrivateBrowsing.info.forgotten   "Forgotten">
+<!ENTITY aboutPrivateBrowsing.info.history     "History">
+<!ENTITY aboutPrivateBrowsing.info.search      "Search">
+<!ENTITY aboutPrivateBrowsing.info.cookies     "Cookies">
+<!ENTITY aboutPrivateBrowsing.info.temporaryFiles "Temporary Files">
+
+<!ENTITY aboutPrivateBrowsing.info.kept        "Kept">
+<!ENTITY aboutPrivateBrowsing.info.downloads   "Downloads">
+<!ENTITY aboutPrivateBrowsing.info.bookmarks   "Bookmarks">
 
-<!ENTITY trackingProtection.showPreferences    "Privacy Preferences">
+<!ENTITY aboutPrivateBrowsing.note             "Your employer or Internet service provider can still track the pages you visit.">
+<!ENTITY aboutPrivateBrowsing.learnMore        "Learn More.">
+
+<!-- LOCALIZATION NOTE (trackingProtection.width):
+     Width of the Tracking Protection section. This should be enough to
+     accommodate the title as well as the enabled or disabled indicator.
+     -->
+<!ENTITY trackingProtection.width              "22em">
+<!ENTITY trackingProtection.title              "Tracking Protection">
 
-<!ENTITY trackingProtection.startTour          "See what's new">
+<!-- LOCALIZATION NOTE (trackingProtection.state.width):
+     Width of the element representing the enabled or disabled indicator.
+     -->
+<!ENTITY trackingProtection.state.width        "6ch">
+<!ENTITY trackingProtection.state.enabled      "ON">
+<!ENTITY trackingProtection.state.disabled     "OFF">
 
-<!ENTITY trackingProtection.enable.label       "Turn on Tracking Protection">
-<!ENTITY trackingProtection.enable.accesskey   "T">
+<!ENTITY trackingProtection.description.enabled "Private Windows now block content that tracks your browsing activity.">
+<!ENTITY trackingProtection.description.disabled "Private Windows will not block content that tracks your browsing activity.">
+
+<!ENTITY trackingProtection.disable            "Turn Tracking Protection Off">
+<!ENTITY trackingProtection.enable             "Turn Tracking Protection On">
+<!ENTITY trackingProtection.startTour          "See how this works">
--- a/browser/themes/linux/jar.mn
+++ b/browser/themes/linux/jar.mn
@@ -51,19 +51,16 @@ browser.jar:
   skin/classic/browser/identity-mixed-active-blocked.svg    (../shared/identity-block/identity-mixed-active-blocked.svg)
   skin/classic/browser/identity-mixed-passive-loaded.svg    (../shared/identity-block/identity-mixed-passive-loaded.svg)
   skin/classic/browser/identity-mixed-active-loaded.svg     (../shared/identity-block/identity-mixed-active-loaded.svg)
   skin/classic/browser/tracking-protection-16.svg           (../shared/identity-block/tracking-protection-16.svg)
   skin/classic/browser/tracking-protection-disabled-16.svg  (../shared/identity-block/tracking-protection-disabled-16.svg)
   skin/classic/browser/Info.png
   skin/classic/browser/magnifier.png                        (../shared/magnifier.png)
   skin/classic/browser/magnifier@2x.png                     (../shared/magnifier@2x.png)
-  skin/classic/browser/mask.png                             (../shared/mask.png)
-  skin/classic/browser/mask@2x.png                          (../shared/mask@2x.png)
-  skin/classic/browser/mask-and-shield.svg                  (../shared/mask-and-shield.svg)
   skin/classic/browser/menuPanel.png
   skin/classic/browser/menuPanel@2x.png
   skin/classic/browser/menuPanel-customize.png
   skin/classic/browser/menuPanel-customize@2x.png
   skin/classic/browser/menuPanel-exit.png
   skin/classic/browser/menuPanel-exit@2x.png
   skin/classic/browser/menuPanel-help.png
   skin/classic/browser/menuPanel-help@2x.png
@@ -221,16 +218,23 @@ browser.jar:
 * skin/classic/browser/preferences/in-content/dialog.css      (preferences/in-content/dialog.css)
   skin/classic/browser/preferences/in-content/favicon.ico     (../shared/incontentprefs/favicon.ico)
   skin/classic/browser/preferences/in-content/icons.svg       (../shared/incontentprefs/icons.svg)
   skin/classic/browser/preferences/in-content/search.css      (../shared/incontentprefs/search.css)
   skin/classic/browser/fxa/default-profile-image.svg   (../shared/fxa/default-profile-image.svg)
   skin/classic/browser/preferences/applications.css   (preferences/applications.css)
   skin/classic/browser/preferences/aboutPermissions.css (preferences/aboutPermissions.css)
   skin/classic/browser/preferences/search.css         (preferences/search.css)
+  skin/classic/browser/privatebrowsing/attention.png          (../shared/privatebrowsing/attention.png)
+  skin/classic/browser/privatebrowsing/attention@2x.png       (../shared/privatebrowsing/attention@2x.png)
+  skin/classic/browser/privatebrowsing/check.png              (../shared/privatebrowsing/check.png)
+  skin/classic/browser/privatebrowsing/check@2x.png           (../shared/privatebrowsing/check@2x.png)
+  skin/classic/browser/privatebrowsing/mask.svg               (../shared/privatebrowsing/mask.svg)
+  skin/classic/browser/privatebrowsing/shield-page.png        (../shared/privatebrowsing/shield-page.png)
+  skin/classic/browser/privatebrowsing/shield-page@2x.png     (../shared/privatebrowsing/shield-page@2x.png)
   skin/classic/browser/social/services-16.png         (social/services-16.png)
   skin/classic/browser/social/services-64.png         (social/services-64.png)
   skin/classic/browser/social/share-button.png        (social/share-button.png)
   skin/classic/browser/social/share-button-active.png (social/share-button-active.png)
   skin/classic/browser/social/chat-icons.svg          (../shared/social/chat-icons.svg)
   skin/classic/browser/social/gear_default.png        (../shared/social/gear_default.png)
   skin/classic/browser/social/gear_clicked.png        (../shared/social/gear_clicked.png)
   skin/classic/browser/tabbrowser/alltabs.png         (tabbrowser/alltabs.png)
--- a/browser/themes/osx/jar.mn
+++ b/browser/themes/osx/jar.mn
@@ -65,19 +65,16 @@ browser.jar:
   skin/classic/browser/menu-back.png
   skin/classic/browser/menu-forward.png
   skin/classic/browser/notification-16.png
   skin/classic/browser/notification-16@2x.png
   skin/classic/browser/notification-64.png
   skin/classic/browser/notification-64@2x.png
   skin/classic/browser/magnifier.png                        (../shared/magnifier.png)
   skin/classic/browser/magnifier@2x.png                     (../shared/magnifier@2x.png)
-  skin/classic/browser/mask.png                             (../shared/mask.png)
-  skin/classic/browser/mask@2x.png                          (../shared/mask@2x.png)
-  skin/classic/browser/mask-and-shield.svg                  (../shared/mask-and-shield.svg)
   skin/classic/browser/menuPanel.png
   skin/classic/browser/menuPanel@2x.png
   skin/classic/browser/menuPanel-customize.png
   skin/classic/browser/menuPanel-customize@2x.png
   skin/classic/browser/menuPanel-exit.png
   skin/classic/browser/menuPanel-exit@2x.png
   skin/classic/browser/menuPanel-help.png
   skin/classic/browser/menuPanel-help@2x.png
@@ -299,16 +296,23 @@ browser.jar:
   skin/classic/browser/preferences/in-content/icons.svg       (../shared/incontentprefs/icons.svg)
   skin/classic/browser/preferences/in-content/search.css      (../shared/incontentprefs/search.css)
   skin/classic/browser/fxa/default-profile-image.svg   (../shared/fxa/default-profile-image.svg)
   skin/classic/browser/preferences/applications.css         (preferences/applications.css)
   skin/classic/browser/preferences/aboutPermissions.css     (preferences/aboutPermissions.css)
   skin/classic/browser/preferences/search.css               (preferences/search.css)
   skin/classic/browser/preferences/checkbox.png             (preferences/checkbox.png)
   skin/classic/browser/preferences/checkbox@2x.png          (preferences/checkbox@2x.png)
+  skin/classic/browser/privatebrowsing/attention.png        (../shared/privatebrowsing/attention.png)
+  skin/classic/browser/privatebrowsing/attention@2x.png     (../shared/privatebrowsing/attention@2x.png)
+  skin/classic/browser/privatebrowsing/check.png            (../shared/privatebrowsing/check.png)
+  skin/classic/browser/privatebrowsing/check@2x.png         (../shared/privatebrowsing/check@2x.png)
+  skin/classic/browser/privatebrowsing/mask.svg             (../shared/privatebrowsing/mask.svg)
+  skin/classic/browser/privatebrowsing/shield-page.png      (../shared/privatebrowsing/shield-page.png)
+  skin/classic/browser/privatebrowsing/shield-page@2x.png   (../shared/privatebrowsing/shield-page@2x.png)
   skin/classic/browser/yosemite/preferences/checkbox.png    (preferences/checkbox-yosemite.png)
   skin/classic/browser/yosemite/preferences/checkbox@2x.png (preferences/checkbox-yosemite@2x.png)
   skin/classic/browser/social/services-16.png               (social/services-16.png)
   skin/classic/browser/social/services-16@2x.png            (social/services-16@2x.png)
   skin/classic/browser/social/services-64.png               (social/services-64.png)
   skin/classic/browser/social/services-64@2x.png            (social/services-64@2x.png)
   skin/classic/browser/social/chat-icons.svg                             (../shared/social/chat-icons.svg)
   skin/classic/browser/social/gear_default.png                           (../shared/social/gear_default.png)
deleted file mode 100755
--- a/browser/themes/shared/mask-and-shield.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this
-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
-     width="179" height="88" viewBox="0 0 179 88">
-  <path fill="#fff" d="M8.946,35.096 C8.606,31.547 8.420,23.513 8.426,12.880 L36.504,8.301 L36.504,74.685 C33.361,74.046 24.945,71.679 19.034,64.025 C13.254,56.539 10.426,50.586 8.946,35.096 ZM70.859,17.395 C69.626,17.801 68.460,18.195 67.354,18.580 C67.370,16.177 67.375,13.601 67.367,10.865 C67.366,10.686 67.212,10.536 66.991,10.500 L36.505,5.532 L6.018,10.500 C5.798,10.536 5.643,10.687 5.642,10.866 C5.609,22.579 5.802,31.508 6.170,35.361 C7.705,51.406 10.825,57.918 16.814,65.669 C23.751,74.645 33.895,76.990 36.508,77.458 C38.819,77.044 47.234,75.103 53.958,68.218 C54.688,69.280 55.457,70.380 56.317,71.575 C56.631,71.983 56.954,72.374 57.276,72.765 C47.955,81.768 36.504,83.000 36.504,83.000 C36.504,83.000 21.987,81.447 12.339,68.990 C5.237,59.821 2.096,51.895 0.563,35.900 C0.036,30.405 -0.010,17.912 0.010,10.913 C0.019,8.021 2.164,5.580 5.089,5.105 L36.504,-0.003 L67.919,5.105 C70.844,5.580 72.990,8.021 72.998,10.913 C73.003,12.580 73.003,14.563 72.995,16.684 C72.347,16.902 71.640,17.137 70.859,17.395 Z" />
-  <path fill="#fff" d="M176.593,36.244 C176.057,45.236 178.201,55.977 166.140,71.463 C153.271,87.987 140.491,86.725 138.079,86.974 C123.601,88.466 121.694,75.948 113.238,75.948 C105.835,75.948 99.803,88.386 88.929,86.974 C86.526,86.661 73.738,87.987 60.868,71.463 C48.808,55.977 50.952,45.236 50.416,36.244 C49.880,27.251 48.004,17.510 48.004,17.510 C48.004,17.510 53.816,23.255 61.321,23.755 C68.826,24.254 70.228,21.187 86.063,16.761 C103.186,11.975 113.505,31.587 113.505,31.587 C113.505,31.587 125.132,12.265 140.946,16.761 C156.759,21.257 157.416,24.254 164.920,23.755 C172.425,23.255 179.005,17.510 179.005,17.510 C179.005,17.510 177.129,27.251 176.593,36.244 ZM88.064,40.011 C78.705,37.996 74.778,41.439 70.768,42.908 C67.269,44.189 64.085,44.587 64.085,44.587 C64.085,44.587 64.621,49.832 74.002,54.328 C83.383,58.824 102.627,56.504 102.627,56.504 C102.627,56.504 104.670,43.587 88.064,40.011 ZM156.241,42.908 C152.231,41.439 148.304,37.996 138.944,40.011 C122.338,43.587 124.382,56.504 124.382,56.504 C124.382,56.504 143.626,58.824 153.006,54.328 C162.388,49.832 162.923,44.587 162.923,44.587 C162.923,44.587 159.740,44.189 156.241,42.908 Z" />
-</svg>
deleted file mode 100644
index f48d176ee2826efac48b3119a7e5dd215f113919..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e284af03309d6994b328f2c410e0c24750a3c760..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100755
index 0000000000000000000000000000000000000000..8706928ffe851f356e14fcab0c0770222813c757
GIT binary patch
literal 602
zc%17D@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F
z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a><Y92N?Z!?32_C||8Erx8wB*u
zjeWr&Z@ZKP`2{lszFNu1^*prf-+^n)d~YY~$2C++++!8~*sh$>HRTDX<k$H&Mccz(
z^2+}_^rm|5t<)v&1=W7r-)?OVdK&*_*2Sac1)^I`k7NPOV@&dPcVXyYmGuB}I14-?
ziy0WiR6&^0Gf3qFP;jcJi(`ny<=nobLd^~WF4iqA0?O}z;L`v9zBd~eJ(ytW^SwIM
zdh3DzoEeUH&o4B{{NZ|}Cu`%5<DE-dMJ~@fVbCq}nRR-%>a;+`)$3MFEdAQjyX^2<
zvzw07Q_c%cTUE<*MXs;qxNzv%mp-}YTy>V{hG%!46}$0vsq6xIRsRE#lf-|2e<Hf$
n=A(ZVw|)kh_iQ(xuU}_dC-e3CW}yb40~tJB{an^LB{Ts5KhHEA
new file mode 100755
index 0000000000000000000000000000000000000000..5b32888c832901b899f79b4e17fcf2dd644d2ed9
GIT binary patch
literal 902
zc%17D@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50
z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+081EY0-Plzi}!T(zYqli=l
z47ar`NB0A%^pYUIU<TIS4-ev6|GCM2zsxi<TKV^Fmc<L~eNLom|J^I{{t^4y+C1aK
zFSxf)yjWo~=gwRH11p-geE!6E@=%xmxo?t}Zc0sw{KEWG;g;aedCBTIqLcKwo`-EL
zGctd&GW3~13XjD3`5Y5o-_6h~x1I~Mk}=8K-G!lpRn`N@;VkfoEM{O3Qw3p0&mff#
zKn13rE{-7<r`Jxt9>nA*;2Q2ICR%#5r6K9i8i{Kgw79wi&se6v|Np=7vaxjPG4)@m
z{@-mwFPoaK&fL0o*ROyb5A7A19Qs#%KBlI&z;c;L)PdEZQ@2YxW%O&e@GaQ9dN;er
ziO=^`g5FGi=Unfm#lz72#h1}}Q%wZB5{t4!S%^~4#;?aX)g*kvo(FIFZ*q~R`DV;i
z1NTEVfzvV`=F2@b-{6rUq`S2F=O-@lu+F2ok&cPJKG!9mvE)7ZTbUE=vt2@*Wzh@q
zZEqj?b>3}1ySqA0?*8`n4SZbfeDak}lADaQ{N{0bvleQH9DjGhXU-G<(&gUsI{*AR
zB&xSkf7jco0_*NNcI-bU{eD99EAR5Ghx7Kk+>hcvsQkg>@8pNPXP!?F_x}FNeBWW~
oDXRZA^`F<zTvh)+W9y3enOXA=G2XTYh9m=nr>mdKI;Vst09rfS=l}o!
new file mode 100755
index 0000000000000000000000000000000000000000..59ca51b7bd5bc350644f5b3e436dea16a22d4e98
GIT binary patch
literal 338
zc%17D@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F
z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a><Y92N_YhLgt!9f{C!>&BA_Aq
zm73{5N~|QvFPMR2Q^1a&F6V@OHn2HwV;8-^|Ngwl;!D3Z{DCSMlf2zs7&=&GJ%Aj}
z0*}aIpe|JqX7mhF`2ZAj^>lFzk+__kuz<(F$Z+we$RiOq1AZpGk-70>PRt#R8o4mT
zIJ=auf0&Yz_B5UN<*4MO@vPA$;0${wNAUs+PZyD?{o)J^s~MU1F+9Ea31}dLr>mdK
II;Vst0CDea0{{R3
new file mode 100755
index 0000000000000000000000000000000000000000..031685cbf43337d21599e8d00b225d7e14f4afdd
GIT binary patch
literal 370
zc%17D@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50
z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10!YRNf#1%;A@AD!X0kz*c
z>IpQNL8K(eFPK5`wDyBnPuL&+^i)40`|K`9K%m$4>!q4NdB!AfcNc~ZR#^`qhqJ&V
zvY3HEOcjI~J%dy}00nbBT^vI!PG7xnTFk+K$Ms^s`bDoM{{J7gC2;byS&=DK-xN46
zu3xUf`%d&aTe+K3$+KlwtHgJ`z5n{~i-P$#tnXNM`pkcPGBD+PbdJ!ef1WG8uT}c;
z+qL2U9jD*-Rj>T-+8`|`v|>KfcW0X~@6YkQS;p&T)Tz1^XfcDQtDnm{r-UW|oPUbN
new file mode 100755
--- /dev/null
+++ b/browser/themes/shared/privatebrowsing/mask.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+     width="47.203" height="26.109" viewBox="0 0 94.407 52.219">
+  <path fill="#fff" d="M92.657,14.670 C92.270,21.197 93.816,28.994 85.124,40.236 C75.849,52.230 66.639,51.314 64.901,51.495 C54.468,52.578 53.093,43.491 46.999,43.491 C41.664,43.491 37.317,52.520 29.481,51.495 C27.749,51.268 18.533,52.230 9.259,40.236 C0.567,28.994 2.112,21.197 1.726,14.670 C1.340,8.142 -0.012,1.071 -0.012,1.071 C-0.012,1.071 4.176,5.241 9.585,5.604 C14.993,5.967 16.004,3.740 27.416,0.527 C39.755,-2.947 47.191,11.290 47.191,11.290 C47.191,11.290 55.571,-2.737 66.967,0.527 C78.363,3.791 78.836,5.967 84.245,5.604 C89.653,5.241 94.395,1.071 94.395,1.071 C94.395,1.071 93.043,8.142 92.657,14.670 ZM28.858,17.405 C22.113,15.942 19.283,18.441 16.393,19.507 C13.872,20.437 11.577,20.726 11.577,20.726 C11.577,20.726 11.963,24.533 18.724,27.797 C25.484,31.061 39.352,29.377 39.352,29.377 C39.352,29.377 40.824,20.000 28.858,17.405 ZM77.990,19.507 C75.100,18.441 72.270,15.942 65.525,17.405 C53.557,20.000 55.030,29.377 55.030,29.377 C55.030,29.377 68.899,31.061 75.659,27.797 C82.419,24.533 82.805,20.726 82.805,20.726 C82.805,20.726 80.511,20.437 77.990,19.507 Z"/>
+</svg>
new file mode 100755
index 0000000000000000000000000000000000000000..2ddcf34e97bd59cd35887b04cd44bc1edb8e3bd0
GIT binary patch
literal 4257
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
D8XNC;
new file mode 100755
index 0000000000000000000000000000000000000000..72a0b827329d4d7d30746a28d4b46846328ab889
GIT binary patch
literal 9367
zc$_U-1ymI8+g(aP1X)^|W$6|WgaxEox&`TOX;?Z0q+<!mr4|rGr9pC~7NsPlOX+S<
z@>_rZZ_k;XnRjNMGw*%xbD#U1GjZCQ%ES+89|8aXVyKFOE&zZ9!W=gcJiz=5Ua**A
zcDN3*8nOUDZ3@wi6&~iC*+xZI0{{qQ2LQsO0DvpZQ1})A;426K>{tQ-64?L%wMTxd
z4g_=Ifwh{l0^q;jU-`B$%#P4Q#n>AFpkn*CVL^4lM*slpHB>=XA2zpN5Rh$Z@a6Ne
zsvrv~7;AkX-$$aLwoOM?Q5N_(cEI2pb5U$O=#BT82fumBraxrIK<7*WxCUbWPD9q~
z{o*U3ryQZYKZorW3)WK+5H2`PeYi8M+MvL!&BcFuuC2<?U^=j{0`W<z+Q8+|?Dm6u
z$gasUb_#m+TXwCnSdn>}$VL>o=E_pg;czP#qt;^jU@KN*GO{C_-I7F*Jezo^?hwlm
z=R>&i{&nVy&&Y`C`Gez0BJ)^Ycs~{&O<GPgFhA$wRvf+KXQ|*Ms#Ih+J5391tLrpO
zshDyUXMu}gu?h-vHF%Zd1R4BU^~aK;c%}6r;wRjE;A#m5F&1);Rv8ba@GCnp)Fc;V
z-@Q<z0Zi#QN=d~7-*48x&PVGx?U=`cHOgyvMA5IAa(w5%zW_j#iqFqDYgEUxs_8b5
zGZI>XAgF-D`yLpHhsTuLU~G~?HHT#xvZC&FHhNWcm@o|~|71t-H6F=OtDA4P9_DHy
zUZc=%OaR2w7Nh|8%KoG`V+Fxyg<Ly?=qYiHT1Rp1aE7Vtruwczk~9=CZ)jx69Zj;@
z{@7u;T3`tWWq9Fp*lpI~D^2xXkMBDsggLf|@T3)lh^FvdF_5g5fmKyUIUpq^`Xqyn
zgQbpYMBS1<s5<`(4KNToMZH@2uq|8^g9DFX@q?wv6L1Nb1%Af9(t~nBA*<=ka3F7M
z$-H1)h6p}X0qQ>8$6_k!c#^v3VH$E4<sTvDu=pbpmMcZFl-Zm3LQ&~zqt2oCvySpr
zD2^%E$#;tQcoM%>4!n(nqC_nji`6|mt9KA_!c+3lMXyC!7uxI5;GD--3$#3R#ploP
zG5dGF^uIYeguB}=wmdu%k3JSnvBs^a()s?37UKSV{bPkO>X-3y(Nl6jVWyAqzXzVl
zN2!d<tx!1&&eSTLOn?l@;&Rf?OsA6QNTAnxkft4#o$G*hlW{j=v0lA4ir_CFKbI0^
z=lk}kGDCDk1SCEPM%MG~_Ggkquj@G2pyv7ZHr5S0EMFF>EI%PN{ymhZFkv1XH%DIV
zxRc0#fgG99+3#1OP1)ClwpOYZej$ea=qz#jc3sdd{r(kEMfRg$pzz7g@gu7rAh?fU
z4dW%)a^0FE2z#qrI=|5v_eXSf>Wxgm(mP?t=$T4x(YM5c1z)w9Ce`agI+ay-Mz8K*
z&M7sDKI}jL!aGrnT^ciQCpet^8{J<3yVRHBOq)ZW@GS7`@wCh2UOZbK&LdQR?@`~6
z<p8+PJik4jWVB+Ds2%c^8D-pM-|I0J*zR+-a2!(k>AF(m+|0&P{o`}v=c79z6h+Kc
zkv;ZxW-TGd@8|)&s2b8naJ3Cl^mETv!Mi+keM`}UltpONt<_fjXGvCcvZYp$y*RZ#
znZ@tK>d!y*@}i;#*uKt?tkAFc!=E{f9jS<T|9RQ2Q<}pQc`F-0-y&IePr4$$5~x}@
zvlsRVqDV-TmOyxiM4EgUdjZuu3P^A!k)#OwfK-cMRps3%%&FkaG;b^c%Sp$#4@A`q
zXH6*oI-X>Mo8z=o!bI)+a-jNt;Z}4<kNOK?G9JxH%I&JeiYhsM+sX1wDYa|;z{&pA
zN=a}5VKCO|s;LIM%>%Ewa6FV4SPBqqJ}$L>R})X5Gh`j@z1La&+X#Ya{o4QDjHq2^
zw<${e!JjWk0ae}SJp3O>p}9m0s{4u;fspflyvZzr^>0}B{M%aa15LBMvIQby&2FO?
z=1~xYPkxRsPStGZE0g2NRVP@r%W8J@ybv}zv;L`o0;ATxCq<(SY{K=;+rda`P)fyx
z__N&y`fUZ~u@J=EDltaw=JwCz){ZAhpS3hs-@SY275s(!<lg|*=IXOUVYTE;AJymo
zMxbgM>g2S<Dz5;+lDmH5UiC<^@{i!{cLQj`fRnvEUz{BVs9uBsj)UD|7Vh5T8`W_G
z6g8Vv4ib)(YtS0H+pO>8LFD!eK;6=Oz#e3RkA-s@5kVY5SkzcdSw8q4_)7Vznnb3r
z>sxnnsHJ@SrjBAXCaztll1?&`JW+Djpr;IOJnX*58mLUTU(DkegO(j0YZwF(V+A^r
zP_J5%neUBx6BX?kG{tuggAjk!K^6Et=Pl~IE<;?Q9b8>a=OR+p#M(&%Ac$(1)?E??
z4Rku?=b^6SuZ{?3T|s8+mjsoAio8;<RUXFg@$ax+waItb)OQMM4Qub{%B|olK!l>A
zIXyVVgzWFVjV)3ucJ>N<aUka@mq1L+p<`)~mi^hq1p_ULnwgmZ5Sh%pQkAtm+%{dk
zFHLClg49S)ikV=BkQX89t#n!X!B8v4Qis%o^ym?87$No)AdfI|b7Q37)OtET(<a<l
zmb3w&j3a>4gfCmu(($pexwL-w#ftDFGloA{E4dd<Q`C|YZA)0~QeHQBD<=DHA5(mN
z{5lq<fM$``DX0`zhSP}j9{l<FSEG;JFVD}voT)e`mzS68cXrm0{vB{mA%EtdOcZT)
zN&m$Zfc2btD}2F#Z=zz~e16fJOtywuaMP$l_B97?g2QnBScmh^oo`sY-N9j>A28+%
z2VJCYD}MCeY$vG3HT3iQ_=iv_5%EMe>JHn~1PbitHQyoxQh_*>OOUr<MUF35bPGmE
z(`d2gW`mq$deff^5I28+tx>2fDpCp?w+2o2sxffbHqsJU^Tca<C`Zb>4e1GA!fPi=
z?>r+lvBx<Q^ti4oYhJXXCP0?fyMSine>7L!A)WI@q)V*r{2fAM5v`?fWPv-Pi?!HZ
zlHN72jl`^jpDt7C52(@xeX(8+VGwUaP6!!}@@0$A>ItR`a9A6XN)y#jEvZ6JUCZVL
zu_?=)L6b{UR|->N9aBdm&RSWntZ0MbiCn+SvkT(*RL^H?s8@2r_6<It&FiOPNg*V>
zU(U1g&?;B7HIM3xHdRD$)YwAyFYMINfM%@0{o1N{ZDogP8M}~Gmn0E6eb+DKOdR7z
z>OPRJmFu)OcTO4_Z9yLiqHzf<9Z0A~9dnjC?A^?xyn?W%M{}RE0y?ox^NWV5aV(tN
zU5LYXBZA&{5`>gnYaul;^5ydAN2=%^Tfkd?n_sjuua0gVopWi=E<V!DF$_LYdtYW3
zc$wR{7@)SrymDbI?66nEWl#!gAU8@p2JSmpps~X^$CDG-_#E9`7RQ#RT19YxC+Q)q
ze|`mF`1{f1vW}S`F4a?;4w$>N(9zTu<V9LT;Ds-HBytpPh9|nSw}{(rHqQF10G^Cm
zLvi&tv)$^Ck0g(LYW}6jsn<<4rirfe+_nz6toHO^5KTy~dWKcJWb~S&1{Ub;eK~i4
z_?9|oBDZGwcjyTp7W?(GRk4I0pn?)u9F0oqHF0~3eb{tZ`uc%@oB=zpf`E8dl3LMW
zn?ur@4=J7l@12(fGV0AfY!6Sgwgm-pY`XgMQm{4m--WzH#`CaICWadWTjS(_w17Jb
zuIo=Kiz|wp<l{cWzc*+)!n?MUx}}phm7_Q>$>?}7cq~9ZR<>1Ch%r^ew0~8)HXJ6$
zO$NxrY%q>Q;D{#L+Na?*?{nKLkdH+Gll*PE&xKU)Xsh4;?|>cZX}hu#v-*yc<ZY*k
z+}5DL>kIMn)AH26*Q7xY^vr>krNZ~@<&w_;`Fz_{G5sX#)K3>weHFL*RUwIi?Av=m
zu}rOtJNgL~hybVWCpHm%6S?Jnmm7+l)U{EG1ZGmDWo-AiiFZHnw3+3scw_|R#OC)~
z7*PQ8sHbea3ZEu~e=}C4e0oi9+IE4*0(uT>aoU+YSnBjm|3<l;OdS8?EJD<!?R5F)
zaGG~=UC&?EI8s!;%Iq)zBNMWjijG!)nG{3FsY=X}?N&pH&Dvmyt3J`9+7)Hzok=c}
ztErDfXhI;ZTo6G^tKHRqv9$Wsr^B^h4xJDuYH@PQ9VWz*MtOlvPSSqr8%Hhab}9=>
zsI0QapFVDRm|GF*`E7&%_#tSq^_-lBqS#d2p_;OIBcgFpssj7aHih&Sth;&qh_cul
zyhtGp)#dRBMeb>#614fW<HSqCY(sPqRljlzglIu0qp6ad@PQ4Mm7VS3VVp(7sJ-LT
z>1yLVoGeTGpVX`Za(JOMQ19^j<OYA%8jLvb;0I$1$mNjTv3Vx3=91PgH!^D7)_q?6
zJI2(81DZFCDkt{2JVU6GwhR00z3`&v+s1+>2nz3%-e3t2O3U0jQk6?yc*cZU$nZI#
zw@){idbF1_sEfJN`;Dde?Yo#d-RVsWevTc4wYXf8dib6;lt&;COTqrULw+ky08q7X
zwS>ugr4^vM_CCq=opnt7k1}|ckB?sx{)S?*fqYa+Kszl$M2>=b>CoM4b%nNtcE2g_
zlkQ0Dj|L|V9I1{FPf!C)Nloo=N7Uug#I4ow9bj4G$HriUnnau7TKJ`oW2S*x6u(;7
zt}?Y1i&xV9vD}&`gDB6<>ouB`#;9^p4Th~Gj9QTxW0JScet!-}2)p4ZQFt^^XB;gg
zd>N$rXOGdc7@0Dh*R`T(DIKjdXFy(zDJB|}fsDRtMzN-Nwz@;1GQrE@>Ru3;E1PD<
zmR1b6A~4*l&C*sIJX^w$q33z|GPY@p^LcIu8(&{9egQFWqwhi8=X1a1Srk3A+1KwQ
z&EtHce2T05|H&YWL7=p+d`rq9w?ewjMNq<fPjS@o&3jTlms|<EBKO5sy*JECQRQNn
zpUmb%ECof-K9cOdXkDnJkoU;z*z1)~lsw+28v^1FR>{93C8@}Y6;Td6Cki_mHKbqI
zl@hMWt`w>0-hNBoq&6DVt5AQkWzu}7PY{pEgN=<P4DImAa6RJ=-0@*PKX;mCYnsh8
z9m#P=M{}ftn8W^+TLE-pzM@`(J)0aCH3Llu#zZ98%tD2(@3YPo1FHJL=+naF1IJv6
zb^eu4E!cb$d4&(8#Z1fU9fogaJ<ukbBLNTpbbD+zG&l11`K<m<miabN>EvDpGm`C0
z)_|$K=d@xPoA@u+?sNY|jQOB=ranb{G0FZ0)05yWl$3Dv?Oj?l^;^MvzRZLF?iC<P
z6omJ__<Uej;eHmpJMHQW0C!L{V|r1$MSHD%vZTaY9*-#bzw%t_^>N63IO1!FLZ6;R
z3yCZ>flgT1{S(x%Yz+soA=?sqpT|#A6xwEZ<H+g^bo1d2Ga3qIsu8_<K6!kz<^KW9
zGWbdm@{@&I;S)C5rJWb0h}LbIVJwL^Z=q2}d-hLhC%%#vfl}&{v6K&_ieYQPKD7?1
z4OD5=CH;K{DrCOHziGa4tW^q>$gN5I_Js}Iq3bY?sqgv1zxC~VrEhLTo6=xb&n0v{
zZ5LvNh!^fVzWG`me|vlT93%}AkWSLjkDZdtDkS?~u8yt2LT6N^X)c4O5jyI!^l3<H
z@VT%Luuc5polkfY-NRE{_OPQFvfblJAe^Mv?e~T~-Iqd#hcF&a^-?q?rAb?GhYf>X
zsU&#6Te4bNSdV_x;vF)W>}>;e^A!>#XUoOrf~b(r*?`?$4P0b6i#B9%x@cWw$j9c|
zTznq6`VFBht(IGJ{`;r+dQ7?2fF_V(Hyc<V<~BvWSxF<zFnXBaDi(zGB;L$spMK>$
zP2MEjy{WlT`sdiJFZhTn<`WO>Wsu1(14DtCP55K%&vEo&b5qAYm>dupdi8n?I_Qrf
z$&%f!_+yyC+8+xc=u#6#9yHM4Ji5m}mZoUU+Q;Lpsm5s062GI~OKS8$M28=tPfMqc
z&#DEArrtXMx$)OYON@oCUuJ$tL*(`t#6I}AdUtmhmmxS>jn!sB%p<3*5DUJggiRGE
zL*XRcb@xIG)2gSF;&Af_6S)QlaI{`Hg^|3|jXXbkCp?g<c!r{_>?yl_*N4&oKcBZq
z>WEAyx~<CR_L2yu#u|q#H9@7Sie%-X9o4A0`B#U~ps${CYdemwQ)ZWQnj#RnrNhU;
z4)@vxv5IByC4oCzdtPRN!33U^Ee}=lNqv!SMHL&4{*W+5+n^sM++`+HmL>Xzz`FT7
zp+V-PK3+c$X2If)kG=s<6t`GWm*b|evgr3b8mkb|xDTY1!S5oOJ@}aTP0m7U_a%_@
zpfd`4hNiES0hl*AC9>XoaJA1fTKtHZUjrl;SLlTBA{?WK20`Z-X78CpM`qv4j+?h!
zV*vV%0f<nR^wGTN2ju<x{yy%H1ipZ2%tE|=Cqe>y7s8P6?Y4nD9qX6XP<Mv^Of)NA
z`(yE#L<IutU<Eh=sr_8p8e)HY>?mb&OtL%HYq}8QcHP5jFH1Vqf5-XvwJ{5q;?_$P
zrD2pN`et+yJ3qP>){jLl6!G4{iYmgC%gG$W2$B_i)YGSAEV2HEZ-Sb4e1)!=IA7XG
z<($4kpEAX{GG(5<Q4VNMqyRP08+l>ut_?VZn3Z#wH3T8$P>KA!*y*~RjnV10dNLLo
zbBs)bHDmAeM;-({UH8RUnl5=a?Es?pByD!7>QQ$OO_woL0$5nBvDGGc*7D_TcC;j<
zsvTBx_7INUCi^nb)!(N$(QQ{gN%n=va4U?3ftUH_<>6zs?#<1O2dNF=#sAsG0Q>9N
z=~@(1eDFnI6G=Fx`BnuM500DPc*vbmqg!8riH-Gj#<{;2Wg}c`N1OU;XI4^XH-_`j
zLh94ild;=lGkiR9-{jAxgl<0$VEQ%}wh-O%TX@r}uzg^!N#k;pFJJSyeB6J=+jNd7
znG&>HV}7Xpl0;m3W2VE2Zs%M6s?cbQ{uM}1axT1sXCKLk*S$u|(U98xB}g)S0xU(w
z4|ZblU_EA?`DYs!+t<ZoG4<x<LhuCqiEy{)^ucVL(Dk9lytdXx{ub=6kahl3^6Mf<
zx32Q<HEub}n5`aDuI*n(Bs_9rI-GJikIt7jc3TH^qWD#Vez6jcg(RPMJh#6Wn0Pjs
z{@mRUa^IY`KMgi(mOe0IAXMiP*O=eh+WUT;ksO!r|Np+RhEw;#F&wi}`^g{?{{6lb
zu)?LplvwkOdN8!(Phyg9LP)tcL&756Y^Y7yym3XT9RQpy*)+kJ!0#hOlSn_oKnEDf
z@*!ex5gPhhd}%<=LL(bXCZ6k!f(oGzeBPt=Oxh{M?tidD-_#$7xi3N32qL-u?(2Rm
zR`SxV$VRmadxZk<Kokh6H0t8KeZR3B$|>5aT!OCyRKOM!#lyte!|3;+e=U+Xm+6)W
zB3GhR#XKko(mxPrG=zyMf2X&5`&$`9F$p?rZ{z`lHBNgc&mx}m_IvF}I$H;F;O<%w
z%LpOSEj^gdkZ>zeC$(i!RW7RU@O#afkiq(1X)`($XO$dNd9Ohr+#|%mh1a!MJ3WjG
z<fAs1AfOm~(5-QNfuEdkkRbwC$ZGnEsPcwv<YcJ=Zg}eshkvAQTcqo%N*9OhFBd9Y
zFpX*hC6vcCex-vOvB#n=|F)h~hO3eN^DE29jul|E$~b$BM5B_m)zDpDf%EYsHWB@3
z*i5JcV5Y%IkH_PW2j2KA`SU#_zg#7B_(W${O|X6^0fP%&k0jeL)}5s8p^{~s#_uo@
z5|IA4UPqk+TgMaRuWW&Ba>en;8!Q+-`LFFtPuID}FInQRu$M``z1^aFG(8mm_Mdj7
zHV_DxN`Ge(tlvAueo8dKa4jy#;&o8Lwl5yCbYl~4))MzaF?$;v$5rO?;2?S9O?b0{
z{~Tm$y4<OzqUuKY$P4}So_toCt?~%m7_*ZB-Zqn&8=Dn1A17NG2l;ja)3L1HhDb%`
zq*GBAtFiHIZ|%{hKz|={%XzCnD=``Pd$>z{B!2cDXQi)!_)<R_Q=P){e<)0A<UQNh
zvh|I3Hj?+{)`WVgGXdI1{VMpeI`dY%1@QT6ee-cmU%CM!$)Z(s!`n&&I+5?FDt8HE
zB!s0zV?z8sE!Npxw81wUm<b*zYnv%`(GJmq6icpc!u7z!Dp%qgIp-NiX;LUTD3c^+
zrqmH)fUZHgs3M;Pf`zwR>`#4Qf}{T5eX$Vn$L1G_Lm8@H2h>S%iR2IC=;{0<xz4#Y
zxn9oG<dbtdaVas6^jC{DF|MA@+ARw-qBm4phyBo+c&&A0ES!tR#P(!1Oh4ANHy|tD
zLDz>^jD1q~wH1N+o3PLn<kv}|yk~B6G6a!&@daDls-=sxbs09_3NNj1z6{RKzj9}O
zddRDeQG*eQatp1igBf;R-8w~Eje}kK-LOpLbl;?JrHvVa+p2Juhatg?`d>B_%&3R)
zm!#P@PD@Z%cvVaK2_9Lk@L-C0g^3G(IHt#~#T=(gNVM7e`}h@*1QUuUoy2PI^g4c8
zy`RSJ{-}28w2}zAcE`QLk;$+~2%bB>!HT(4DZtupvn>^g4+M|%hr$3gA2B6QIo|k;
zEkPSo8cv-AW)!tk8?ajDkA*j&&fL1wnh(9#1DyfTiSU5rzEFNAn^2q8{-n16j*9(A
zQI&VRs$X7OerzG|_3`^+Z%-4MPHG&w0=qNsz3(>1sa6XDBI-`K7Wmd(K=YdlyPWUV
z^$zMpl{(^oL^}yU;z$=G;;21;$-_zF4l){uCVrky0xq6}4Ajo7qO?xw=)_(RVQrRE
zA|5ov>=;MsY8`t}fh65}eE)=Cv#(Uq$XJh7TWB=}Cl~89vmO@==p$B3K728(Q+xKR
zw=zwU0B)=Rc!^`eFqqG=U9+Vr8F`W8WtzzG98Q8xY-y>XJT;>M6GWycHhIqaSvACx
zK4MpLQ2}B%R|ny#ymEDqCz@835G(J@^C;9!<${wfcfFDyZ$#nKCxj@EbDYr8J#!Vu
z-s%gL9klzKsO0j#veIcX*k6@}%#&%U@XZ<(Fk8H+AlYt7fa^8YJ&5`IN`=vXPxv{y
zc1Ck$H!Xw-osi0b6&F1)@}!Ob>t={>dFL?d{@YcI2<N+BcV;d9G2Vb0tDcy+nNMb9
zX-D1TGsxOlK<C3fKVI)hjXkqO9<EOCrwTb02^?6uO|2Pf8gxB^&z@=hGh>J2WJ-HA
zwY89Yn|ooC%?;OH?J6kksvL)*C1pv!An+16`{d%oO!|F`ey6~8<V}AJF&#S~M3z+H
zUDL5y9ZiXJNoQwgYiCVbuzBVgaQ&~pWu8rre8hdClabi5{4L_-#BM>+kxt&GYvdHP
z29<Yasp~8Nr!Pr!Z;J|{sch`Gg1Dm!W^%!x3p)6N>DGD7ME)=n@FycC!@rbEadEy?
z#I?uWhoYa_L@=qwk4TK<c^+zMS5)BcNp)p)Q@&6uW~w(GW`6d1>&Jj}%zW~^7`=Is
zl9(M31RYJUmJ}ubW366ro6TZ(Ps}TGANS?*(~UdyO+>X8<ha*XUF4Z%ZwZ;sxOtS4
z%z9lc>e2dgVbKBzil&rg-e!#HuY&1X9yYq<J`R_`o>smvi-bPc5xP&IF77XKm9uTr
zqqg>%Xc46PlZM2Uy89$s?9DjK!{ZdsLpZTzaNwJ&qh4|?`iP|JOU&HWp7VjgQrM<x
zMOzd@&e(lB3(>~FUS+e2O|O*!@cLdovG<djW+uYZj5l=;)7HrrCZYiC%H!7w45<x_
ztV*Azve2MyoL&KYLHb=z#$)NOY?=3_pf$XzTFy37V~33Zu=mq2E#0xGD|qOG8y8>q
z(Jj={#2`5ZaX3*o$<9|C%EaUg&?HR18}wZ=CoH>YOB&?{zlf{6%p=@&GXn1?7^lB3
z#O?cBJL+ZBP7pAz3uLL|#YU)Tzozmy7o6abj<hJM1@B3<(|T)}1w8t*r^3<a+lRT+
z^nErdbS{!mRlTnL%(&O5$94P`4|Q1O`DQ0yO(kp936Ng5KHEZWdMoRc9H1nV*$|t0
zMrS=9nt^)9*1=l76lOVPdm?;pQ*(KsMwnp1z1{pN8WR_;tHV+k%m@>=nh)izY@Csm
z^uDK9nKo#NY3*LBr&Gx?`z1T1V9yb=8y^5XNmS^I9`Gw0!G-g7H!&R%L5GEW-TSKN
zLrls(mzvi&>4y@kt83pJqKq$cG8J^gw7JkyN%Eq+An?aN@tpJ{EtET$lDId$0jIvo
zah!hz<HacwqhZ?J+|t$)H5m%DYX9<3-5`qK#rQDllAKEB(I30o#xd7L0o5yB5B{3c
zSJV1xDiRcb@HWiZem#UXX9RlDhNV)oXk}CprmataPpPp)a4!3dl>}SJ`aEA~Wq#(-
zbDciF%nr(kTF>@K(1(Ska&Q??f}jGHQwCw&R+JOr%g}f;7n5<Xm7gfMv$=_(io`=!
zIXyDNV+xN}<i69~uQqFhi2gk2`zW0x&ShEb34L;Hq9*-@@E!m5B5D>T{Ij#)+3N7C
zyHIEYcn^2u?aS4gb8~HHyfU9g48%$$J94;hjukiIknLI9mDkW7{v*!q2Sf3h%?_Rg
znZ4%Mizqd6Lm*&Nm7CyEBh^&1YE=;~)(L2hD_T8@;DO?AZ?38tA|u{yTIlMkCVW!B
ziP1j0>mWoK-mljBAbnbL7~WM_Kgw)+X{-Lu?=bCQ5YK>~=2LPI0BV8P`K~VaF?QFx
z$*0{8w~uTX%+w3~rokFLf8I!E*HsPfcRZe!qH2j-BRQ1)N3(DGvAj$;p&50_r4jgS
zA&xES;Qb6AuKw*?12~?seI(L5{Ow+2`L94%`#yquYM4uIe8|h8^o*hCfpVr>W)JW0
zRqWRG`vRFhM+Aj`tC4DgtQz;S#3m|mlB|YD>385t8P3rpnl9~#S1PTff8HT81F=q!
zY~C!`sUqP|ezi)wnPne^E3<{zA~TKHq*$TZX)UJ_l*Y>m+VfuU5qw5GO#%5#8QhWD
zONpE3hk(xX23>&{2rq4N493=Hvg6l@0CuaAmN1^}Ot#<)8L*ihM?xo7JqT*Q_-uaT
zI-F;}5xMS_$fnQx^FX78W8%^<wW1pN#FtAFZr)o>bqp>a%*a}eSciYYk#>Js#!yKd
zhI_}k4O-dHUQl)~gG36BJ1`|e7mu;NpRxi0_w3t)J^ATi?^3j$p|fi2iON+85-nsn
z+>-G#>1!`<0oQgAYML#HX4b6~<=%t*v`8fEyQaTlYspVo9cv}M%RJ<`goo<1tMbFQ
zCv$n;+Qz7*SP8|z;ZuNQR2Td`_+5KlI(xE$TBQ~HPZLsut;tTz<8z1^uak^AHUGXS
zV`NU4Kg&8fv*5(D4d_+Klif2Ix6<%KU^sGFEl{*3<E&>YfZbXtR+?*@eZ>SWK|g;E
zIXb17{uz^F8%VXy*U9-9Kvb=`eLRUL%BKK;Gd2%`1=s^LORW=o)+R%{&WX(M7M$B`
zGh31gQEmI8?VWPXyQ(XC&y>^AdSa99q+cyh>QDE_pS{!zMIZ0(?@Gc$A1+`oq+c-2
zX-YkRBK+-=Av-ZW(~{`Oiq3uQc#;9?Me7ic>=Dx3Yc}{(iogrCw&-eFtks=sX7T{B
zBeogzLmT$_6II+*bZ6q-zO=n%)Z%h&ycam<PzcyNnS6(Zum5Y+4=1eO_C-52j8i}z
z&Tf6eQ~=1wZO_^<${n?AwW=&ft6Y&EwQ@I1uf}<GA#IA2qcNJoBZ!r{9t-ia0vNe1
zk0KN0|FYFRY8mJ^DU%!L2*0oLx|U)T#8FBp)(lqgRM|m4(kqOFB4pZBnWU(M)4S#%
z4}+C-e*@b<!A#^1KM`NgVYKfw<(}`k*vBi=?#b9o9_g&O8#h;A-wd0Z1m!4l9<l~X
z9;r-GZ#&UQgzNRZk@Z~^<%vN;v&*t%ly0>wW*!7n|Jm^vlzE2(T@{STbik?SbPq2>
z*ApAz-O$uqtIJkx>0qW^eZOUa=~8z03!UluU2g-Q-@IVd`Y7xi&6$FHXH{KFq=K;R
ze063MN!G=)y<JVWdaR$IBcKrA>hbFdiX-Bs-6DeEu{8+oeylTwP(oToaV932{Q)Rt
zUyQzgGHL~C`JCw!Hg(y%`VAgKQ3CP1n}!V0*ED0VPW%)HNk#+-I(fb`a5m3F>$!_G
zkVdDS>8^;Vd#ph-Ms)*8$kRgbJt~lV#ugvYdM+>)?nsTOi@-$Y4ni1lnTeWYc$cN2
z<t-lj{OUpV=WnZ(cI~8@;rrc<Hu(#mvCZRh=70c~@V7#0w-8(i+>aq31-*I<gD|F`
cCme6WE=3=KjKZ8`|9v9_Rn%1YBxf1<f0?`b<NyEw
--- a/browser/themes/windows/jar.mn
+++ b/browser/themes/windows/jar.mn
@@ -58,19 +58,16 @@ browser.jar:
         skin/classic/browser/tracking-protection-16.svg              (../shared/identity-block/tracking-protection-16.svg)
         skin/classic/browser/tracking-protection-disabled-16.svg     (../shared/identity-block/tracking-protection-disabled-16.svg)
         skin/classic/browser/keyhole-forward-mask.svg
         skin/classic/browser/KUI-background.png
         skin/classic/browser/livemark-folder.png
         skin/classic/browser/livemark-folder-XP.png
         skin/classic/browser/magnifier.png                          (../shared/magnifier.png)
         skin/classic/browser/magnifier@2x.png                       (../shared/magnifier@2x.png)
-        skin/classic/browser/mask.png                               (../shared/mask.png)
-        skin/classic/browser/mask@2x.png                            (../shared/mask@2x.png)
-        skin/classic/browser/mask-and-shield.svg                    (../shared/mask-and-shield.svg)
         skin/classic/browser/menu-back.png
         skin/classic/browser/menu-back-XP.png
         skin/classic/browser/menu-forward.png
         skin/classic/browser/menu-forward-XP.png
         skin/classic/browser/menuPanel.png
         skin/classic/browser/menuPanel@2x.png
         skin/classic/browser/menuPanel-aero.png
         skin/classic/browser/menuPanel-aero@2x.png
@@ -310,16 +307,23 @@ browser.jar:
         skin/classic/browser/fxa/default-profile-image.svg   (../shared/fxa/default-profile-image.svg)
         skin/classic/browser/preferences/applications.css            (preferences/applications.css)
         skin/classic/browser/preferences/aboutPermissions.css        (preferences/aboutPermissions.css)
         skin/classic/browser/preferences/search.css                  (preferences/search.css)
         skin/classic/browser/preferences/checkbox.png                (preferences/checkbox.png)
         skin/classic/browser/preferences/checkbox-aero.png           (preferences/checkbox-aero.png)
         skin/classic/browser/preferences/checkbox-classic.png        (preferences/checkbox-classic.png)
         skin/classic/browser/preferences/checkbox-xp.png             (preferences/checkbox-xp.png)
+        skin/classic/browser/privatebrowsing/attention.png           (../shared/privatebrowsing/attention.png)
+        skin/classic/browser/privatebrowsing/attention@2x.png        (../shared/privatebrowsing/attention@2x.png)
+        skin/classic/browser/privatebrowsing/check.png               (../shared/privatebrowsing/check.png)
+        skin/classic/browser/privatebrowsing/check@2x.png            (../shared/privatebrowsing/check@2x.png)
+        skin/classic/browser/privatebrowsing/mask.svg                (../shared/privatebrowsing/mask.svg)
+        skin/classic/browser/privatebrowsing/shield-page.png         (../shared/privatebrowsing/shield-page.png)
+        skin/classic/browser/privatebrowsing/shield-page@2x.png      (../shared/privatebrowsing/shield-page@2x.png)
         skin/classic/browser/social/services-16.png                  (social/services-16.png)
         skin/classic/browser/social/services-64.png                  (social/services-64.png)
         skin/classic/browser/social/chat-icons.svg                   (../shared/social/chat-icons.svg)
         skin/classic/browser/social/gear_default.png                 (../shared/social/gear_default.png)
         skin/classic/browser/social/gear_clicked.png                 (../shared/social/gear_clicked.png)
         skin/classic/browser/tabbrowser/newtab.png                   (tabbrowser/newtab.png)
         skin/classic/browser/tabbrowser/newtab@2x.png                (tabbrowser/newtab@2x.png)
         skin/classic/browser/tabbrowser/newtab-XPVista7.png          (tabbrowser/newtab-XPVista7.png)