Bug 1382649 - Take the process count value set by e10s rollout as the default in the about:preferences UI, r=jaws, r=evanxd, r=mrbkap draft
authorTimothy Guan-tin Chien <timdream@gmail.com>
Fri, 21 Jul 2017 12:42:19 +0800
changeset 613693 f7ba19ed2712b900f2cc3c584efef3ff1895d1c3
parent 613609 2b033328830e4f5d5293b204b1613c90f9d00e58
child 638704 ad17b42557de70e05338bc1b0c5cbc9f8c9c92b2
push id69834
push usertimdream@gmail.com
push dateSat, 22 Jul 2017 06:39:11 +0000
reviewersjaws, evanxd, mrbkap
bugs1382649
milestone56.0a1
Bug 1382649 - Take the process count value set by e10s rollout as the default in the about:preferences UI, r=jaws, r=evanxd, r=mrbkap When the user sets browser.preferences.defaultPerformanceSettings.enabled to false and want to set custom process count, we want to offer the process count value given by e10s rollout add-on as the default, instead of the default value of dom.ipc.processCount. MozReview-Commit-ID: 1hXWHA9j4xw
browser/components/preferences/in-content-new/main.js
browser/components/preferences/in-content-new/main.xul
browser/components/preferences/in-content/main.js
browser/components/preferences/in-content/main.xul
--- a/browser/components/preferences/in-content-new/main.js
+++ b/browser/components/preferences/in-content-new/main.js
@@ -1113,36 +1113,49 @@ var gMainPane = {
       defaultPerformancePref.value = false;
     }
   },
 
   updatePerformanceSettingsBox() {
     let defaultPerformancePref =
       document.getElementById("browser.preferences.defaultPerformanceSettings.enabled");
     let performanceSettings = document.getElementById("performanceSettings");
+    let processCountPref = document.getElementById("dom.ipc.processCount");
     if (defaultPerformancePref.value) {
-      let processCountPref = document.getElementById("dom.ipc.processCount");
       let accelerationPref = document.getElementById("layers.acceleration.disabled");
+      // Unset the value so process count will be decided by e10s rollout.
       processCountPref.value = processCountPref.defaultValue;
       accelerationPref.value = accelerationPref.defaultValue;
       performanceSettings.hidden = true;
     } else {
+      let e10sRolloutProcessCountPref =
+        document.getElementById("dom.ipc.processCount.web");
+      // Take the e10s rollout value as the default value (if it exists),
+      // but don't overwrite the user set value.
+      if (e10sRolloutProcessCountPref.value &&
+          processCountPref.value == processCountPref.defaultValue) {
+        processCountPref.value = e10sRolloutProcessCountPref.value;
+      }
       performanceSettings.hidden = false;
     }
   },
 
   buildContentProcessCountMenuList() {
     if (gMainPane.isE10SEnabled()) {
       let processCountPref = document.getElementById("dom.ipc.processCount");
+      let e10sRolloutProcessCountPref =
+        document.getElementById("dom.ipc.processCount.web");
+      let defaultProcessCount =
+        e10sRolloutProcessCountPref.value || processCountPref.defaultValue;
       let bundlePreferences = document.getElementById("bundlePreferences");
       let label = bundlePreferences.getFormattedString("defaultContentProcessCount",
-        [processCountPref.defaultValue]);
+        [defaultProcessCount]);
       let contentProcessCount =
         document.querySelector(`#contentProcessCount > menupopup >
-                                menuitem[value="${processCountPref.defaultValue}"]`);
+                                menuitem[value="${defaultProcessCount}"]`);
       contentProcessCount.label = label;
 
       document.getElementById("limitContentProcess").disabled = false;
       document.getElementById("contentProcessCount").disabled = false;
       document.getElementById("contentProcessCountEnabledDescription").hidden = false;
       document.getElementById("contentProcessCountDisabledDescription").hidden = true;
     } else {
       document.getElementById("limitContentProcess").disabled = true;
--- a/browser/components/preferences/in-content-new/main.xul
+++ b/browser/components/preferences/in-content-new/main.xul
@@ -179,16 +179,20 @@
   <preference id="browser.preferences.defaultPerformanceSettings.enabled"
               name="browser.preferences.defaultPerformanceSettings.enabled"
               type="bool"/>
 
   <preference id="dom.ipc.processCount"
               name="dom.ipc.processCount"
               type="int"/>
 
+  <preference id="dom.ipc.processCount.web"
+              name="dom.ipc.processCount.web"
+              type="int"/>
+
   <preference id="layers.acceleration.disabled"
               name="layers.acceleration.disabled"
               type="bool"
               inverted="true"/>
 
   <!-- Files and Applications -->
   <preference id="browser.feeds.handler"
               name="browser.feeds.handler"
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
@@ -424,36 +424,49 @@ var gMainPane = {
       defaultPerformancePref.value = false;
     }
   },
 
   updatePerformanceSettingsBox() {
     let defaultPerformancePref =
       document.getElementById("browser.preferences.defaultPerformanceSettings.enabled");
     let performanceSettings = document.getElementById("performanceSettings");
+    let processCountPref = document.getElementById("dom.ipc.processCount");
     if (defaultPerformancePref.value) {
-      let processCountPref = document.getElementById("dom.ipc.processCount");
       let accelerationPref = document.getElementById("layers.acceleration.disabled");
+      // Unset the value so process count will be decided by e10s rollout.
       processCountPref.value = processCountPref.defaultValue;
       accelerationPref.value = accelerationPref.defaultValue;
       performanceSettings.hidden = true;
     } else {
+      let e10sRolloutProcessCountPref =
+        document.getElementById("dom.ipc.processCount.web");
+      // Take the e10s rollout value as the default value (if it exists),
+      // but don't overwrite the user set value.
+      if (e10sRolloutProcessCountPref.value &&
+          processCountPref.value == processCountPref.defaultValue) {
+        processCountPref.value = e10sRolloutProcessCountPref.value;
+      }
       performanceSettings.hidden = false;
     }
   },
 
   buildContentProcessCountMenuList() {
     if (gMainPane.isE10SEnabled()) {
       let processCountPref = document.getElementById("dom.ipc.processCount");
+      let e10sRolloutProcessCountPref =
+        document.getElementById("dom.ipc.processCount.web");
+      let defaultProcessCount =
+        e10sRolloutProcessCountPref.value || processCountPref.defaultValue;
       let bundlePreferences = document.getElementById("bundlePreferences");
       let label = bundlePreferences.getFormattedString("defaultContentProcessCount",
-        [processCountPref.defaultValue]);
+        [defaultProcessCount]);
       let contentProcessCount =
         document.querySelector(`#contentProcessCount > menupopup >
-                                menuitem[value="${processCountPref.defaultValue}"]`);
+                                menuitem[value="${defaultProcessCount}"]`);
       contentProcessCount.label = label;
 
       document.getElementById("limitContentProcess").disabled = false;
       document.getElementById("contentProcessCount").disabled = false;
       document.getElementById("contentProcessCountEnabledDescription").hidden = false;
       document.getElementById("contentProcessCountDisabledDescription").hidden = true;
     } else {
       document.getElementById("limitContentProcess").disabled = true;
--- a/browser/components/preferences/in-content/main.xul
+++ b/browser/components/preferences/in-content/main.xul
@@ -114,16 +114,20 @@
   <preference id="browser.preferences.defaultPerformanceSettings.enabled"
               name="browser.preferences.defaultPerformanceSettings.enabled"
               type="bool"/>
 
   <preference id="dom.ipc.processCount"
               name="dom.ipc.processCount"
               type="int"/>
 
+  <preference id="dom.ipc.processCount.web"
+              name="dom.ipc.processCount.web"
+              type="int"/>
+
   <preference id="layers.acceleration.disabled"
               name="layers.acceleration.disabled"
               type="bool"
               inverted="true"/>
 </preferences>
 
 <hbox id="header-general"
       class="header"