Bug 1076314 - Re-prompt nightly users to enable e10s. r=mconley
--- a/browser/base/content/popup-notifications.inc
+++ b/browser/base/content/popup-notifications.inc
@@ -54,8 +54,14 @@
</popupnotification>
<popupnotification id="pointerLock-notification" hidden="true">
<popupnotificationcontent orient="vertical" align="start">
<separator class="thin"/>
<label id="pointerLock-cancel" value="&pointerLock.notification.message;"/>
</popupnotificationcontent>
</popupnotification>
+
+#ifdef E10S_TESTING_ONLY
+ <popupnotification id="enable-e10s-notification" hidden="true">
+ <popupnotificationcontent orient="vertical"/>
+ </popupnotification>
+#endif
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -102,16 +102,21 @@ XPCOMUtils.defineLazyModuleGetter(this,
#ifdef NIGHTLY_BUILD
XPCOMUtils.defineLazyModuleGetter(this, "SignInToWebsiteUX",
"resource:///modules/SignInToWebsite.jsm");
#endif
XPCOMUtils.defineLazyModuleGetter(this, "ContentSearch",
"resource:///modules/ContentSearch.jsm");
+#ifdef E10S_TESTING_ONLY
+XPCOMUtils.defineLazyModuleGetter(this, "UpdateChannel",
+ "resource://gre/modules/UpdateChannel.jsm");
+#endif
+
XPCOMUtils.defineLazyGetter(this, "ShellService", function() {
try {
return Cc["@mozilla.org/browser/shell-service;1"].
getService(Ci.nsIShellService);
}
catch(ex) {
return null;
}
@@ -2260,22 +2265,25 @@ let DefaultBrowserCheck = {
}
},
};
#ifdef E10S_TESTING_ONLY
let E10SUINotification = {
// Increase this number each time we want to roll out an
// e10s testing period to Nightly users.
- CURRENT_NOTICE_COUNT: 0,
+ CURRENT_NOTICE_COUNT: 1,
+ CURRENT_PROMPT_PREF: "browser.displayedE10SPrompt.1",
+ PREVIOUS_PROMPT_PREF: "browser.displayedE10SPrompt",
checkStatus: function() {
let skipE10sChecks = false;
try {
- skipE10sChecks = Services.prefs.getBoolPref("browser.tabs.remote.autostart.disabled-because-using-a11y");
+ skipE10sChecks = (UpdateChannel.get() != "nightly") ||
+ Services.prefs.getBoolPref("browser.tabs.remote.autostart.disabled-because-using-a11y");
} catch(e) {}
if (skipE10sChecks) {
return;
}
if (Services.appinfo.browserTabsRemoteAutostart) {
let notice = 0;
@@ -2311,27 +2319,36 @@ let E10SUINotification = {
url += "?utm_source=tab&utm_campaign=e10sfeedback";
win.openUILinkIn(url, "tab");
return;
}
let e10sPromptShownCount = 0;
try {
- e10sPromptShownCount = Services.prefs.getIntPref("browser.displayedE10SPrompt");
+ e10sPromptShownCount = Services.prefs.getIntPref(this.CURRENT_PROMPT_PREF);
} catch(e) {}
+ let isHardwareAccelerated = true;
+ try {
+ let win = RecentWindow.getMostRecentBrowserWindow();
+ let winutils = win.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
+ isHardwareAccelerated = winutils.layerManagerType != "Basic";
+ } catch (e) {}
+
if (!Services.appinfo.inSafeMode &&
!Services.appinfo.accessibilityEnabled &&
!Services.appinfo.keyboardMayHaveIME &&
+ isHardwareAccelerated &&
e10sPromptShownCount < 5) {
Services.tm.mainThread.dispatch(() => {
try {
this._showE10SPrompt();
- Services.prefs.setIntPref("browser.displayedE10SPrompt", e10sPromptShownCount + 1);
+ Services.prefs.setIntPref(this.CURRENT_PROMPT_PREF, e10sPromptShownCount + 1);
+ Services.prefs.clearUserPref(this.PREVIOUS_PROMPT_PREF);
} catch (ex) {
Cu.reportError("Failed to show e10s prompt: " + ex);
}
}, Ci.nsIThread.DISPATCH_NORMAL);
}
}
},
@@ -2368,17 +2385,17 @@ let E10SUINotification = {
_showE10SPrompt: function BG__showE10SPrompt() {
let win = RecentWindow.getMostRecentBrowserWindow();
if (!win)
return;
let browser = win.gBrowser.selectedBrowser;
- let promptMessage = "Would you like to help us test multiprocess Nightly (e10s)? You can also enable e10s in Nightly preferences.";
+ let promptMessage = "Would you like to help us test multiprocess Nightly (e10s)? You can also enable e10s in Nightly preferences. Notable fixes:";
let mainAction = {
label: "Enable and Restart",
accessKey: "E",
callback: function () {
Services.prefs.setBoolPref("browser.tabs.remote.autostart", true);
Services.prefs.setBoolPref("browser.enabledE10SFromPrompt", true);
// Restart the app
let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool);
@@ -2388,27 +2405,41 @@ let E10SUINotification = {
Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart);
}
};
let secondaryActions = [
{
label: "No thanks",
accessKey: "N",
callback: function () {
- Services.prefs.setIntPref("browser.displayedE10SPrompt", 5);
+ Services.prefs.setIntPref(E10SUINotification.CURRENT_PROMPT_PREF, 5);
}
}
];
let options = {
popupIconURL: "chrome://browser/skin/e10s-64@2x.png",
learnMoreURL: "https://wiki.mozilla.org/Electrolysis",
persistWhileVisible: true
};
- win.PopupNotifications.show(browser, "enable_e10s", promptMessage, null, mainAction, secondaryActions, options);
+ win.PopupNotifications.show(browser, "enable-e10s", promptMessage, null, mainAction, secondaryActions, options);
+
+ let highlights = [
+ "Less crashing!",
+ "Improved add-on compatibility and DevTools",
+ "PDF.js, Web Console, Spellchecking, WebRTC now work"
+ ];
+
+ let doorhangerExtraContent = win.document.getElementById("enable-e10s-notification")
+ .querySelector("popupnotificationcontent");
+ for (let highlight of highlights) {
+ let highlightLabel = win.document.createElement("label");
+ highlightLabel.setAttribute("value", highlight);
+ doorhangerExtraContent.appendChild(highlightLabel);
+ }
},
_warnedAboutAccessibility: false,
_showE10sAccessibilityWarning: function() {
Services.prefs.setBoolPref("browser.tabs.remote.autostart.disabled-because-using-a11y", true);
if (this._warnedAboutAccessibility) {
--- a/testing/profiles/prefs_general.js
+++ b/testing/profiles/prefs_general.js
@@ -258,9 +258,9 @@ user_pref("loop.CSP","default-src 'self'
// Ensure UITour won't hit the network
user_pref("browser.uitour.pinnedTabUrl", "http://%(server)s/uitour-dummy/pinnedTab");
user_pref("browser.uitour.url", "http://%(server)s/uitour-dummy/tour");
user_pref("media.eme.enabled", true);
// Don't prompt about e10s
-user_pref("browser.displayedE10SPrompt", 5);
+user_pref("browser.displayedE10SPrompt.1", 5);