Bug 1458375 - Remove non-e10s support for TalosPowersContent goQuitApplication. r?rwood draft
authorMike Conley <mconley@mozilla.com>
Tue, 29 May 2018 12:40:22 -0400
changeset 806905 2dccba6ff0013558abcbdc031e176f55a7f0e143
parent 806884 75a32b57132f8cba42779555662a057a0416a313
child 806906 3671cb4a05e726bd367dc0dcd42a60e78044caee
push id112986
push usermconley@mozilla.com
push dateTue, 12 Jun 2018 19:30:14 +0000
reviewersrwood
bugs1458375
milestone62.0a1
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