Bug 1458375 - Remove non-e10s support for TalosPowersContent goQuitApplication. r=rwood
authorMike Conley <mconley@mozilla.com>
Tue, 29 May 2018 12:40:22 -0400
changeset 479090 8b65605994f94db8fc544c8e4f2cee0425b6a1d9
parent 479089 1ad660199a87e8d35f55aa1a49907f9e511ff595
child 479091 764acaea4d9ec1019a354fb2f070314fa308b981
push id1757
push userffxbld-merge
push dateFri, 24 Aug 2018 17:02:43 +0000
treeherdermozilla-release@736023aebdb1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersrwood
bugs1458375
milestone62.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1458375 - Remove non-e10s support for TalosPowersContent goQuitApplication. r=rwood MozReview-Commit-ID: 5FfToOP9sSi
testing/talos/talos/talos-powers/chrome/talos-powers-content.js
--- a/testing/talos/talos/talos-powers/chrome/talos-powers-content.js
+++ b/testing/talos/talos/talos-powers/chrome/talos-powers-content.js
@@ -3,114 +3,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // This file is loaded as a framescript
 /* global docShell */
 // eslint-env mozilla/frame-script
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-function canQuitApplication() {
-  try {
-    var cancelQuit = Cc["@mozilla.org/supports-PRBool;1"]
-      .createInstance(Ci.nsISupportsPRBool);
-    Services.obs.notifyObservers(cancelQuit, "quit-application-requested");
-
-    // Something aborted the quit process.
-    if (cancelQuit.data) {
-      return false;
-    }
-  } catch (ex) {
-  }
-  Services.obs.notifyObservers(null, "quit-application-granted");
-  return true;
-}
-
-function goQuitApplication(waitForSafeBrowsing) {
-  if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) {
-    // If we're running in a remote browser, emit an event for a
-    // frame script to pick up to quit the whole browser.
-    var event = new content.CustomEvent("TalosQuitApplication", {bubbles: true, detail: {waitForSafeBrowsing}});
-    content.document.dispatchEvent(event);
-    return false;
-  }
-
-  if (waitForSafeBrowsing) {
-    var SafeBrowsing = ChromeUtils.import("resource://gre/modules/SafeBrowsing.jsm", {}).SafeBrowsing;
-
-    var whenDone = () => {
-      goQuitApplication(false);
-    };
-
-    SafeBrowsing.addMozEntriesFinishedPromise.then(whenDone, whenDone);
-    // Speed things up in case nobody else called this:
-    SafeBrowsing.init();
-    return false;
-  }
-
-  if (!canQuitApplication()) {
-    return false;
-  }
-
-  const kAppStartup = "@mozilla.org/toolkit/app-startup;1";
-  const kAppShell   = "@mozilla.org/appshell/appShellService;1";
-  var appService;
-
-  if (kAppStartup in Cc) {
-    appService = Services.startup;
-  } else if (kAppShell in Cc) {
-    appService = Services.appShell;
-  } else {
-    throw "goQuitApplication: no AppStartup/appShell";
-  }
-
-  var windowManager = Cc["@mozilla.org/appshell/window-mediator;1"].getService();
-
-  var windowManagerInterface = windowManager.
-    QueryInterface(Ci.nsIWindowMediator);
-
-  var enumerator = windowManagerInterface.getEnumerator(null);
-
-  while (enumerator.hasMoreElements()) {
-    var domWindow = enumerator.getNext();
-    if (("tryToClose" in domWindow) && !domWindow.tryToClose()) {
-      return false;
-    }
-    domWindow.close();
-  }
-
-  try {
-    appService.quit(appService.eForceQuit);
-  } catch (ex) {
-    throw ("goQuitApplication: " + ex);
-  }
-
-  return true;
-}
-
-
-/**
- * Content that wants to quit the whole session should
- * fire the TalosQuitApplication custom event. This will
- * attempt to force-quit the browser.
- */
-addEventListener("TalosQuitApplication", event => {
-  // If we're loaded in a low-priority background process, like
-  // the background page thumbnailer, then we shouldn't be allowed
-  // to quit the whole application. This is a workaround until
-  // bug 1164459 is fixed.
-  let priority = docShell.QueryInterface(Ci.nsIDocumentLoader)
-                         .loadGroup
-                         .QueryInterface(Ci.nsISupportsPriority)
-                         .priority;
-  if (priority != Ci.nsISupportsPriority.PRIORITY_LOWEST) {
-    sendAsyncMessage("Talos:ForceQuit", event.detail);
-  }
-});
-
 addEventListener("TalosContentProfilerCommand", (e) => {
   let name = e.detail.name;
   let data = e.detail.data;
   sendAsyncMessage("TalosContentProfiler:Command", { name, data });
 });
 
 addMessageListener("TalosContentProfiler:Response", (msg) => {
   let name = msg.data.name;
@@ -159,18 +61,33 @@ addEventListener("TalosPowersContentGetS
     }, content);
 
     content.dispatchEvent(
       new content.CustomEvent("TalosPowersContentGetStartupInfoResult",
                               event));
   });
 });
 
+/**
+ * Content that wants to quit the whole session should
+ * fire the TalosPowersGoQuitApplication custom event. This will
+ * attempt to force-quit the browser.
+ */
 addEventListener("TalosPowersGoQuitApplication", (e) => {
-  goQuitApplication(e.detail);
+  // If we're loaded in a low-priority background process, like
+  // the background page thumbnailer, then we shouldn't be allowed
+  // to quit the whole application. This is a workaround until
+  // bug 1164459 is fixed.
+  let priority = docShell.QueryInterface(Ci.nsIDocumentLoader)
+                         .loadGroup
+                         .QueryInterface(Ci.nsISupportsPriority)
+                         .priority;
+  if (priority != Ci.nsISupportsPriority.PRIORITY_LOWEST) {
+    sendAsyncMessage("Talos:ForceQuit", e.detail);
+  }
 });
 
 /* *
  * Mediator for the generic ParentExec mechanism.
  * Listens for a query event from the content, forwards it as a query message
  * to the parent, listens to a parent reply message, and forwards it as a reply
  * event for the content to capture.
  * The consumer API for this mechanism is at content/TalosPowersContent.js