summaryrefslogtreecommitdiffstats
path: root/devtools/shared/gcli/commands/restart.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/gcli/commands/restart.js')
-rw-r--r--devtools/shared/gcli/commands/restart.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/devtools/shared/gcli/commands/restart.js b/devtools/shared/gcli/commands/restart.js
new file mode 100644
index 000000000..cf0e688d3
--- /dev/null
+++ b/devtools/shared/gcli/commands/restart.js
@@ -0,0 +1,77 @@
+/* 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/. */
+
+"use strict";
+
+const { Cc, Ci, Cu } = require("chrome");
+const l10n = require("gcli/l10n");
+const Services = require("Services");
+
+const BRAND_SHORT_NAME = Cc["@mozilla.org/intl/stringbundle;1"]
+ .getService(Ci.nsIStringBundleService)
+ .createBundle("chrome://branding/locale/brand.properties")
+ .GetStringFromName("brandShortName");
+
+/**
+ * Restart command
+ *
+ * @param boolean nocache
+ * Disables loading content from cache upon restart.
+ *
+ * Examples :
+ * >> restart
+ * - restarts browser immediately
+ * >> restart --nocache
+ * - restarts immediately and starts Firefox without using cache
+ */
+exports.items = [
+ {
+ item: "command",
+ runAt: "client",
+ name: "restart",
+ description: l10n.lookupFormat("restartBrowserDesc", [ BRAND_SHORT_NAME ]),
+ params: [{
+ group: l10n.lookup("restartBrowserGroupOptions"),
+ params: [
+ {
+ name: "nocache",
+ type: "boolean",
+ description: l10n.lookup("restartBrowserNocacheDesc")
+ },
+ {
+ name: "safemode",
+ type: "boolean",
+ description: l10n.lookup("restartBrowserSafemodeDesc")
+ }
+ ]
+ }],
+ returnType: "string",
+ exec: function Restart(args, context) {
+ let canceled = Cc["@mozilla.org/supports-PRBool;1"]
+ .createInstance(Ci.nsISupportsPRBool);
+ Services.obs.notifyObservers(canceled, "quit-application-requested", "restart");
+ if (canceled.data) {
+ return l10n.lookup("restartBrowserRequestCancelled");
+ }
+
+ // disable loading content from cache.
+ if (args.nocache) {
+ Services.appinfo.invalidateCachesOnRestart();
+ }
+
+ const appStartup = Cc["@mozilla.org/toolkit/app-startup;1"]
+ .getService(Ci.nsIAppStartup);
+
+ if (args.safemode) {
+ // restart in safemode
+ appStartup.restartInSafeMode(Ci.nsIAppStartup.eAttemptQuit);
+ } else {
+ // restart normally
+ appStartup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
+ }
+
+ return l10n.lookupFormat("restartBrowserRestarting", [ BRAND_SHORT_NAME ]);
+ }
+ }
+];