diff --git a/browser/base/content/browser-development-helpers.js b/browser/base/content/browser-development-helpers.js new file mode 100644 index 000000000000..4656cfc2b818 --- /dev/null +++ b/browser/base/content/browser-development-helpers.js @@ -0,0 +1,48 @@ +/* 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/. */ + +/** + * Extra features for local development. This file isn't loaded in + * non-local builds. + */ + +var DevelopmentHelpers = { + init() { + this.quickRestart = this.quickRestart.bind(this); + this.addRestartShortcut(); + }, + + quickRestart() { + Services.obs.notifyObservers(null, "startupcache-invalidate"); + + let env = Cc["@mozilla.org/process/environment;1"]. + getService(Components.interfaces.nsIEnvironment); + env.set("MOZ_DISABLE_SAFE_MODE_KEY", "1"); + + Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart); + }, + + addRestartShortcut() { + let command = document.createElement("command"); + command.setAttribute("id", "cmd_quickRestart"); + command.addEventListener("command", this.quickRestart, true); + command.setAttribute("oncommand", "void 0;"); // Needed - bug 371900 + document.getElementById("mainCommandSet").prepend(command); + + let key = document.createElement("key"); + key.setAttribute("id", "key_quickRestart"); + key.setAttribute("key", "r"); + key.setAttribute("modifiers", "accel,alt"); + key.setAttribute("command", "cmd_quickRestart"); + key.setAttribute("oncommand", "void 0;"); // Needed - bug 371900 + document.getElementById("mainKeyset").prepend(key); + + let menuitem = document.createElement("menuitem"); + menuitem.setAttribute("id", "menu_FileRestartItem"); + menuitem.setAttribute("key", "key_quickRestart"); + menuitem.setAttribute("label", "Restart (Developer)"); + menuitem.addEventListener("command", this.quickRestart, true); + document.getElementById("menu_FilePopup").appendChild(menuitem); + }, +}; diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 370e464b6ba0..1ee76286fced 100755 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -1688,6 +1688,9 @@ var gBrowserInit = { if (AppConstants.MOZ_DATA_REPORTING) gDataNotificationInfoBar.init(); + if (!AppConstants.MOZILLA_OFFICIAL) + DevelopmentHelpers.init(); + requestIdleCallback(() => { // setup simple gestures support gGestureSupport.init(true); diff --git a/browser/base/content/global-scripts.inc b/browser/base/content/global-scripts.inc index 5ede9c24d9b4..fd43dd8b88bf 100755 --- a/browser/base/content/global-scripts.inc +++ b/browser/base/content/global-scripts.inc @@ -23,3 +23,7 @@ #ifdef MOZ_DATA_REPORTING