Merge m-c to autoland. a=merge
This commit is contained in:
@@ -34,6 +34,12 @@
|
|||||||
accesskey="&newPrivateWindow.accesskey;"
|
accesskey="&newPrivateWindow.accesskey;"
|
||||||
command="Tools:PrivateBrowsing"
|
command="Tools:PrivateBrowsing"
|
||||||
key="key_privatebrowsing"/>
|
key="key_privatebrowsing"/>
|
||||||
|
#ifdef E10S_TESTING_ONLY
|
||||||
|
<menuitem id="menu_newNonRemoteWindow"
|
||||||
|
label="&newNonRemoteWindow.label;"
|
||||||
|
hidden="true"
|
||||||
|
command="Tools:NonRemoteWindow"/>
|
||||||
|
#endif
|
||||||
#ifdef MAC_NON_BROWSER_WINDOW
|
#ifdef MAC_NON_BROWSER_WINDOW
|
||||||
<menuitem id="menu_openLocation"
|
<menuitem id="menu_openLocation"
|
||||||
label="&openLocationCmd.label;"
|
label="&openLocationCmd.label;"
|
||||||
|
|||||||
@@ -102,6 +102,10 @@
|
|||||||
oncommand="Cc['@mozilla.org/browser/browserglue;1'].getService(Ci.nsIBrowserGlue).sanitize(window);"/>
|
oncommand="Cc['@mozilla.org/browser/browserglue;1'].getService(Ci.nsIBrowserGlue).sanitize(window);"/>
|
||||||
<command id="Tools:PrivateBrowsing"
|
<command id="Tools:PrivateBrowsing"
|
||||||
oncommand="OpenBrowserWindow({private: true});"/>
|
oncommand="OpenBrowserWindow({private: true});"/>
|
||||||
|
#ifdef E10S_TESTING_ONLY
|
||||||
|
<command id="Tools:NonRemoteWindow"
|
||||||
|
oncommand="OpenBrowserWindow({remote: false});"/>
|
||||||
|
#endif
|
||||||
<command id="History:UndoCloseTab" oncommand="undoCloseTab();"/>
|
<command id="History:UndoCloseTab" oncommand="undoCloseTab();"/>
|
||||||
<command id="History:UndoCloseWindow" oncommand="undoCloseWindow();"/>
|
<command id="History:UndoCloseWindow" oncommand="undoCloseWindow();"/>
|
||||||
</commandset>
|
</commandset>
|
||||||
|
|||||||
@@ -1466,6 +1466,9 @@ var gBrowserInit = {
|
|||||||
IndexedDBPromptHelper.init();
|
IndexedDBPromptHelper.init();
|
||||||
CanvasPermissionPromptHelper.init();
|
CanvasPermissionPromptHelper.init();
|
||||||
|
|
||||||
|
if (AppConstants.E10S_TESTING_ONLY)
|
||||||
|
gRemoteTabsUI.init();
|
||||||
|
|
||||||
// Initialize the full zoom setting.
|
// Initialize the full zoom setting.
|
||||||
// We do this before the session restore service gets initialized so we can
|
// We do this before the session restore service gets initialized so we can
|
||||||
// apply full zoom settings to tabs restored by the session restore service.
|
// apply full zoom settings to tabs restored by the session restore service.
|
||||||
@@ -1979,6 +1982,9 @@ if (AppConstants.platform == "macosx") {
|
|||||||
// initialize the private browsing UI
|
// initialize the private browsing UI
|
||||||
gPrivateBrowsingUI.init();
|
gPrivateBrowsingUI.init();
|
||||||
|
|
||||||
|
if (AppConstants.E10S_TESTING_ONLY) {
|
||||||
|
gRemoteTabsUI.init();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
gBrowserInit.nonBrowserWindowShutdown = function() {
|
gBrowserInit.nonBrowserWindowShutdown = function() {
|
||||||
@@ -8277,6 +8283,27 @@ var gPrivateBrowsingUI = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var gRemoteTabsUI = {
|
||||||
|
init() {
|
||||||
|
if (window.location.href != getBrowserURL() &&
|
||||||
|
// Also check hidden window for the Mac no-window case
|
||||||
|
window.location.href != "chrome://browser/content/hiddenWindow.xul") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppConstants.platform == "macosx" &&
|
||||||
|
Services.prefs.getBoolPref("layers.acceleration.disabled")) {
|
||||||
|
// On OS X, "Disable Hardware Acceleration" also disables OMTC and forces
|
||||||
|
// a fallback to Basic Layers. This is incompatible with e10s.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let newNonRemoteWindow = document.getElementById("menu_newNonRemoteWindow");
|
||||||
|
let autostart = Services.appinfo.browserTabsRemoteAutostart;
|
||||||
|
newNonRemoteWindow.hidden = !autostart;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Switch to a tab that has a given URI, and focuses its browser window.
|
* Switch to a tab that has a given URI, and focuses its browser window.
|
||||||
* If a matching tab is in this window, it will be switched to. Otherwise, other
|
* If a matching tab is in this window, it will be switched to. Otherwise, other
|
||||||
@@ -8534,6 +8561,16 @@ var TabContextMenu = {
|
|||||||
if (this.contextTab.hasAttribute("customizemode"))
|
if (this.contextTab.hasAttribute("customizemode"))
|
||||||
document.getElementById("context_openTabInWindow").disabled = true;
|
document.getElementById("context_openTabInWindow").disabled = true;
|
||||||
|
|
||||||
|
if (AppConstants.E10S_TESTING_ONLY) {
|
||||||
|
menuItems = aPopupMenu.getElementsByAttribute("tbattr", "tabbrowser-remote");
|
||||||
|
for (let menuItem of menuItems) {
|
||||||
|
menuItem.hidden = !gMultiProcessBrowser;
|
||||||
|
if (menuItem.id == "context_openNonRemoteWindow") {
|
||||||
|
menuItem.disabled = !!parseInt(this.contextTab.getAttribute("usercontextid"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
disabled = gBrowser.visibleTabs.length == 1;
|
disabled = gBrowser.visibleTabs.length == 1;
|
||||||
menuItems = aPopupMenu.getElementsByAttribute("tbattr", "tabbrowser-multiple-visible");
|
menuItems = aPopupMenu.getElementsByAttribute("tbattr", "tabbrowser-multiple-visible");
|
||||||
for (let menuItem of menuItems)
|
for (let menuItem of menuItems)
|
||||||
|
|||||||
@@ -96,6 +96,12 @@
|
|||||||
accesskey="&moveToNewWindow.accesskey;"
|
accesskey="&moveToNewWindow.accesskey;"
|
||||||
tbattr="tabbrowser-multiple"
|
tbattr="tabbrowser-multiple"
|
||||||
oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
|
oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
|
||||||
|
#ifdef E10S_TESTING_ONLY
|
||||||
|
<menuitem id="context_openNonRemoteWindow" label="Open in new non-e10s window"
|
||||||
|
tbattr="tabbrowser-remote"
|
||||||
|
hidden="true"
|
||||||
|
oncommand="gBrowser.openNonRemoteWindow(TabContextMenu.contextTab);"/>
|
||||||
|
#endif
|
||||||
<menuseparator id="context_sendTabToDevice_separator"/>
|
<menuseparator id="context_sendTabToDevice_separator"/>
|
||||||
<menu id="context_sendTabToDevice" label="&sendTabToDevice.label;"
|
<menu id="context_sendTabToDevice" label="&sendTabToDevice.label;"
|
||||||
accesskey="&sendTabToDevice.accesskey;">
|
accesskey="&sendTabToDevice.accesskey;">
|
||||||
|
|||||||
@@ -3954,6 +3954,20 @@
|
|||||||
</body>
|
</body>
|
||||||
</method>
|
</method>
|
||||||
|
|
||||||
|
<!-- Opens a given tab to a non-remote window. -->
|
||||||
|
<method name="openNonRemoteWindow">
|
||||||
|
<parameter name="aTab"/>
|
||||||
|
<body>
|
||||||
|
<![CDATA[
|
||||||
|
if (!AppConstants.E10S_TESTING_ONLY) {
|
||||||
|
throw "This method is intended only for e10s testing!";
|
||||||
|
}
|
||||||
|
let url = aTab.linkedBrowser.currentURI.spec;
|
||||||
|
return window.openDialog("chrome://browser/content/", "_blank", "chrome,all,dialog=no,non-remote", url);
|
||||||
|
]]>
|
||||||
|
</body>
|
||||||
|
</method>
|
||||||
|
|
||||||
<method name="moveTabTo">
|
<method name="moveTabTo">
|
||||||
<parameter name="aTab"/>
|
<parameter name="aTab"/>
|
||||||
<parameter name="aIndex"/>
|
<parameter name="aIndex"/>
|
||||||
@@ -5530,11 +5544,14 @@
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
label = tab._fullLabel || tab.getAttribute("label");
|
label = tab._fullLabel || tab.getAttribute("label");
|
||||||
if (AppConstants.NIGHTLY_BUILD &&
|
if (AppConstants.E10S_TESTING_ONLY &&
|
||||||
tab.linkedBrowser &&
|
tab.linkedBrowser &&
|
||||||
tab.linkedBrowser.isRemoteBrowser &&
|
tab.linkedBrowser.isRemoteBrowser) {
|
||||||
tab.linkedBrowser.frameLoader) {
|
label += " - e10s";
|
||||||
label += " (pid " + tab.linkedBrowser.frameLoader.tabParent.osPid + ")";
|
if (tab.linkedBrowser.frameLoader &&
|
||||||
|
Services.appinfo.maxWebProcessCount > 1) {
|
||||||
|
label += " (" + tab.linkedBrowser.frameLoader.tabParent.osPid + ")";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (tab.userContextId) {
|
if (tab.userContextId) {
|
||||||
label = this.mStringBundle.getFormattedString("tabs.containers.tooltip", [label, ContextualIdentityService.getUserContextLabel(tab.userContextId)]);
|
label = this.mStringBundle.getFormattedString("tabs.containers.tooltip", [label, ContextualIdentityService.getUserContextLabel(tab.userContextId)]);
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ const kSubviewEvents = [
|
|||||||
* The current version. We can use this to auto-add new default widgets as necessary.
|
* The current version. We can use this to auto-add new default widgets as necessary.
|
||||||
* (would be const but isn't because of testing purposes)
|
* (would be const but isn't because of testing purposes)
|
||||||
*/
|
*/
|
||||||
var kVersion = 13;
|
var kVersion = 12;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Buttons removed from built-ins by version they were removed. kVersion must be
|
* Buttons removed from built-ins by version they were removed. kVersion must be
|
||||||
@@ -345,6 +345,7 @@ var CustomizableUIInternal = {
|
|||||||
"preferences-button",
|
"preferences-button",
|
||||||
"add-ons-button",
|
"add-ons-button",
|
||||||
"sync-button",
|
"sync-button",
|
||||||
|
"e10s-button",
|
||||||
];
|
];
|
||||||
|
|
||||||
if (!AppConstants.MOZ_DEV_EDITION) {
|
if (!AppConstants.MOZ_DEV_EDITION) {
|
||||||
@@ -451,17 +452,6 @@ var CustomizableUIInternal = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove the old placements from the now-gone Nightly-only
|
|
||||||
// "New non-e10s window" button.
|
|
||||||
if (currentVersion < 13 && gSavedState.placements) {
|
|
||||||
for (let placements of Object.values(gSavedState.placements)) {
|
|
||||||
let buttonIndex = placements.indexOf("e10s-button");
|
|
||||||
if (buttonIndex != -1) {
|
|
||||||
placements.spice(buttonIndex, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -997,3 +997,21 @@ if (Services.prefs.getBoolPref("privacy.panicButton.enabled")) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (AppConstants.E10S_TESTING_ONLY) {
|
||||||
|
if (Services.appinfo.browserTabsRemoteAutostart) {
|
||||||
|
CustomizableWidgets.push({
|
||||||
|
id: "e10s-button",
|
||||||
|
defaultArea: CustomizableUI.AREA_PANEL,
|
||||||
|
onBuild(aDocument) {
|
||||||
|
let node = aDocument.createElementNS(kNSXUL, "toolbarbutton");
|
||||||
|
node.setAttribute("label", CustomizableUI.getLocalizedProperty(this, "label"));
|
||||||
|
node.setAttribute("tooltiptext", CustomizableUI.getLocalizedProperty(this, "tooltiptext"));
|
||||||
|
},
|
||||||
|
onCommand(aEvent) {
|
||||||
|
let win = aEvent.view;
|
||||||
|
win.OpenBrowserWindow({remote: false});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ Services.scriptloader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/
|
|||||||
Services.prefs.setBoolPref("browser.uiCustomization.skipSourceNodeCheck", true);
|
Services.prefs.setBoolPref("browser.uiCustomization.skipSourceNodeCheck", true);
|
||||||
registerCleanupFunction(() => Services.prefs.clearUserPref("browser.uiCustomization.skipSourceNodeCheck"));
|
registerCleanupFunction(() => Services.prefs.clearUserPref("browser.uiCustomization.skipSourceNodeCheck"));
|
||||||
|
|
||||||
|
// Remove temporary e10s related new window options in customize ui,
|
||||||
|
// they break a lot of tests.
|
||||||
|
CustomizableUI.destroyWidget("e10s-button");
|
||||||
|
CustomizableUI.removeWidgetFromArea("e10s-button");
|
||||||
|
|
||||||
var {synthesizeDragStart, synthesizeDrop} = EventUtils;
|
var {synthesizeDragStart, synthesizeDrop} = EventUtils;
|
||||||
|
|
||||||
const kNSXUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
const kNSXUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||||
|
|||||||
@@ -97,6 +97,11 @@ const APP_ICON_ATTR_NAME = "appHandlerIcon";
|
|||||||
XPCOMUtils.defineLazyModuleGetter(this, "OS",
|
XPCOMUtils.defineLazyModuleGetter(this, "OS",
|
||||||
"resource://gre/modules/osfile.jsm");
|
"resource://gre/modules/osfile.jsm");
|
||||||
|
|
||||||
|
if (AppConstants.E10S_TESTING_ONLY) {
|
||||||
|
XPCOMUtils.defineLazyModuleGetter(this, "UpdateUtils",
|
||||||
|
"resource://gre/modules/UpdateUtils.jsm");
|
||||||
|
}
|
||||||
|
|
||||||
if (AppConstants.MOZ_DEV_EDITION) {
|
if (AppConstants.MOZ_DEV_EDITION) {
|
||||||
XPCOMUtils.defineLazyModuleGetter(this, "fxAccounts",
|
XPCOMUtils.defineLazyModuleGetter(this, "fxAccounts",
|
||||||
"resource://gre/modules/FxAccounts.jsm");
|
"resource://gre/modules/FxAccounts.jsm");
|
||||||
@@ -314,6 +319,26 @@ var gMainPane = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (AppConstants.E10S_TESTING_ONLY) {
|
||||||
|
setEventListener("e10sAutoStart", "command",
|
||||||
|
gMainPane.enableE10SChange);
|
||||||
|
let e10sCheckbox = document.getElementById("e10sAutoStart");
|
||||||
|
|
||||||
|
let e10sPref = document.getElementById("browser.tabs.remote.autostart");
|
||||||
|
let e10sTempPref = document.getElementById("e10sTempPref");
|
||||||
|
let e10sForceEnable = document.getElementById("e10sForceEnable");
|
||||||
|
|
||||||
|
let preffedOn = e10sPref.value || e10sTempPref.value || e10sForceEnable.value;
|
||||||
|
|
||||||
|
if (preffedOn) {
|
||||||
|
// The checkbox is checked if e10s is preffed on and enabled.
|
||||||
|
e10sCheckbox.checked = Services.appinfo.browserTabsRemoteAutostart;
|
||||||
|
|
||||||
|
// but if it's force disabled, then the checkbox is disabled.
|
||||||
|
e10sCheckbox.disabled = !Services.appinfo.browserTabsRemoteAutostart;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (AppConstants.MOZ_DEV_EDITION) {
|
if (AppConstants.MOZ_DEV_EDITION) {
|
||||||
let uAppData = OS.Constants.Path.userApplicationDataDir;
|
let uAppData = OS.Constants.Path.userApplicationDataDir;
|
||||||
let ignoreSeparateProfile = OS.Path.join(uAppData, "ignore-dev-edition-profile");
|
let ignoreSeparateProfile = OS.Path.join(uAppData, "ignore-dev-edition-profile");
|
||||||
@@ -521,6 +546,54 @@ var gMainPane = {
|
|||||||
this.readBrowserContainersCheckbox();
|
this.readBrowserContainersCheckbox();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
isE10SEnabled() {
|
||||||
|
let e10sEnabled;
|
||||||
|
try {
|
||||||
|
let e10sStatus = Components.classes["@mozilla.org/supports-PRUint64;1"]
|
||||||
|
.createInstance(Ci.nsISupportsPRUint64);
|
||||||
|
let appinfo = Services.appinfo.QueryInterface(Ci.nsIObserver);
|
||||||
|
appinfo.observe(e10sStatus, "getE10SBlocked", "");
|
||||||
|
e10sEnabled = e10sStatus.data < 2;
|
||||||
|
} catch (e) {
|
||||||
|
e10sEnabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return e10sEnabled;
|
||||||
|
},
|
||||||
|
|
||||||
|
enableE10SChange() {
|
||||||
|
if (AppConstants.E10S_TESTING_ONLY) {
|
||||||
|
let e10sCheckbox = document.getElementById("e10sAutoStart");
|
||||||
|
let e10sPref = document.getElementById("browser.tabs.remote.autostart");
|
||||||
|
let e10sTempPref = document.getElementById("e10sTempPref");
|
||||||
|
|
||||||
|
let prefsToChange;
|
||||||
|
if (e10sCheckbox.checked) {
|
||||||
|
// Enabling e10s autostart
|
||||||
|
prefsToChange = [e10sPref];
|
||||||
|
} else {
|
||||||
|
// Disabling e10s autostart
|
||||||
|
prefsToChange = [e10sPref];
|
||||||
|
if (e10sTempPref.value) {
|
||||||
|
prefsToChange.push(e10sTempPref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let buttonIndex = confirmRestartPrompt(e10sCheckbox.checked, 0,
|
||||||
|
true, false);
|
||||||
|
if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) {
|
||||||
|
for (let prefToChange of prefsToChange) {
|
||||||
|
prefToChange.value = e10sCheckbox.checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Revert the checkbox in case we didn't quit
|
||||||
|
e10sCheckbox.checked = e10sPref.value || e10sTempPref.value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
separateProfileModeChange() {
|
separateProfileModeChange() {
|
||||||
if (AppConstants.MOZ_DEV_EDITION) {
|
if (AppConstants.MOZ_DEV_EDITION) {
|
||||||
function quitApp() {
|
function quitApp() {
|
||||||
@@ -1212,7 +1285,7 @@ var gMainPane = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
buildContentProcessCountMenuList() {
|
buildContentProcessCountMenuList() {
|
||||||
if (Services.appinfo.browserTabsRemoteAutostart) {
|
if (gMainPane.isE10SEnabled()) {
|
||||||
let processCountPref = document.getElementById("dom.ipc.processCount");
|
let processCountPref = document.getElementById("dom.ipc.processCount");
|
||||||
let e10sRolloutProcessCountPref =
|
let e10sRolloutProcessCountPref =
|
||||||
document.getElementById("dom.ipc.processCount.web");
|
document.getElementById("dom.ipc.processCount.web");
|
||||||
|
|||||||
@@ -17,6 +17,19 @@
|
|||||||
<stringbundle id="bundlePreferences" src="chrome://browser/locale/preferences.properties"/>
|
<stringbundle id="bundlePreferences" src="chrome://browser/locale/preferences.properties"/>
|
||||||
|
|
||||||
<preferences id="mainPreferences" hidden="true" data-category="paneGeneral">
|
<preferences id="mainPreferences" hidden="true" data-category="paneGeneral">
|
||||||
|
|
||||||
|
#ifdef E10S_TESTING_ONLY
|
||||||
|
<preference id="browser.tabs.remote.autostart"
|
||||||
|
name="browser.tabs.remote.autostart"
|
||||||
|
type="bool"/>
|
||||||
|
<preference id="e10sTempPref"
|
||||||
|
name="browser.tabs.remote.autostart.2"
|
||||||
|
type="bool"/>
|
||||||
|
<preference id="e10sForceEnable"
|
||||||
|
name="browser.tabs.remote.force-enable"
|
||||||
|
type="bool"/>
|
||||||
|
#endif
|
||||||
|
|
||||||
<!-- Startup -->
|
<!-- Startup -->
|
||||||
<preference id="browser.startup.page"
|
<preference id="browser.startup.page"
|
||||||
name="browser.startup.page"
|
name="browser.startup.page"
|
||||||
@@ -285,6 +298,11 @@
|
|||||||
</vbox>
|
</vbox>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef E10S_TESTING_ONLY
|
||||||
|
<checkbox id="e10sAutoStart"
|
||||||
|
label="&e10sEnabled.label;"/>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_SHELL_SERVICE
|
#ifdef HAVE_SHELL_SERVICE
|
||||||
<vbox id="defaultBrowserBox">
|
<vbox id="defaultBrowserBox">
|
||||||
<checkbox id="alwaysCheckDefault" preference="browser.shell.checkDefaultBrowser"
|
<checkbox id="alwaysCheckDefault" preference="browser.shell.checkDefaultBrowser"
|
||||||
|
|||||||
@@ -294,6 +294,7 @@ These should match what Safari and other Apple applications use on OS X Lion. --
|
|||||||
<!ENTITY newNavigatorCmd.accesskey "N">
|
<!ENTITY newNavigatorCmd.accesskey "N">
|
||||||
<!ENTITY newPrivateWindow.label "New Private Window">
|
<!ENTITY newPrivateWindow.label "New Private Window">
|
||||||
<!ENTITY newPrivateWindow.accesskey "W">
|
<!ENTITY newPrivateWindow.accesskey "W">
|
||||||
|
<!ENTITY newNonRemoteWindow.label "New Non-e10s Window">
|
||||||
|
|
||||||
<!ENTITY editMenu.label "Edit">
|
<!ENTITY editMenu.label "Edit">
|
||||||
<!ENTITY editMenu.accesskey "E">
|
<!ENTITY editMenu.accesskey "E">
|
||||||
|
|||||||
@@ -101,6 +101,9 @@ panic-button.tooltiptext = Forget about some browsing history
|
|||||||
devtools-webide-button2.label = WebIDE
|
devtools-webide-button2.label = WebIDE
|
||||||
devtools-webide-button2.tooltiptext = Open WebIDE (%S)
|
devtools-webide-button2.tooltiptext = Open WebIDE (%S)
|
||||||
|
|
||||||
|
e10s-button.label = New Non-e10s Window
|
||||||
|
e10s-button.tooltiptext = Open a new Non-e10s Window
|
||||||
|
|
||||||
toolbarspring.label = Flexible Space
|
toolbarspring.label = Flexible Space
|
||||||
toolbarseparator.label = Separator
|
toolbarseparator.label = Separator
|
||||||
toolbarspacer.label = Space
|
toolbarspacer.label = Space
|
||||||
|
|||||||
@@ -44,3 +44,5 @@
|
|||||||
<!ENTITY useFirefoxSync.label "Tip: This uses separate profiles. Use Sync to share data between them.">
|
<!ENTITY useFirefoxSync.label "Tip: This uses separate profiles. Use Sync to share data between them.">
|
||||||
<!ENTITY getStarted.notloggedin.label "Sign in to &syncBrand.shortName.label;…">
|
<!ENTITY getStarted.notloggedin.label "Sign in to &syncBrand.shortName.label;…">
|
||||||
<!ENTITY getStarted.configured.label "Open &syncBrand.shortName.label; preferences">
|
<!ENTITY getStarted.configured.label "Open &syncBrand.shortName.label; preferences">
|
||||||
|
|
||||||
|
<!ENTITY e10sEnabled.label "Enable multi-process &brandShortName;">
|
||||||
|
|||||||
@@ -229,6 +229,14 @@ toolbar[brighttext] {
|
|||||||
list-style-image: url("chrome://browser/skin/new-window.svg");
|
list-style-image: url("chrome://browser/skin/new-window.svg");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#e10s-button {
|
||||||
|
list-style-image: url("chrome://browser/skin/new-window.svg");
|
||||||
|
}
|
||||||
|
|
||||||
|
#e10s-button > .toolbarbutton-icon {
|
||||||
|
transform: scaleY(-1);
|
||||||
|
}
|
||||||
|
|
||||||
#new-tab-button {
|
#new-tab-button {
|
||||||
list-style-image: url("chrome://browser/skin/new-tab.svg");
|
list-style-image: url("chrome://browser/skin/new-tab.svg");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,11 @@
|
|||||||
- is displayed as the tooltip for the buffer capacity during a recording. -->
|
- is displayed as the tooltip for the buffer capacity during a recording. -->
|
||||||
<!ENTITY performanceUI.bufferStatusTooltip "The profiler stores samples in a circular buffer, and once the buffer reaches the limit for a recording, newer samples begin to overwrite samples at the beginning of the recording.">
|
<!ENTITY performanceUI.bufferStatusTooltip "The profiler stores samples in a circular buffer, and once the buffer reaches the limit for a recording, newer samples begin to overwrite samples at the beginning of the recording.">
|
||||||
|
|
||||||
|
<!-- LOCALIZATION NOTE (performanceUI.disabledRealTime.nonE10SBuild): This string
|
||||||
|
- is displayed as a message for why the real time overview graph is disabled
|
||||||
|
- when running on a non-multiprocess build. -->
|
||||||
|
<!ENTITY performanceUI.disabledRealTime.nonE10SBuild "Realtime recording data disabled on non-multiprocess Firefox.">
|
||||||
|
|
||||||
<!-- LOCALIZATION NOTE (performanceUI.disabledRealTime.disabledE10S): This string
|
<!-- LOCALIZATION NOTE (performanceUI.disabledRealTime.disabledE10S): This string
|
||||||
- is displayed as a message for why the real time overview graph is disabled
|
- is displayed as a message for why the real time overview graph is disabled
|
||||||
- when running on a build that can run multiprocess Firefox, but just is not enabled. -->
|
- when running on a build that can run multiprocess Firefox, but just is not enabled. -->
|
||||||
|
|||||||
@@ -517,17 +517,18 @@ var PerformanceController = {
|
|||||||
* @return {object}
|
* @return {object}
|
||||||
*/
|
*/
|
||||||
getMultiprocessStatus: function () {
|
getMultiprocessStatus: function () {
|
||||||
// If testing, set enabled to true so we have realtime rendering tests
|
// If testing, set both supported and enabled to true so we
|
||||||
// in non-e10s. This function is overridden wholesale in tests
|
// have realtime rendering tests in non-e10s. This function is
|
||||||
// when we want to test multiprocess support
|
// overridden wholesale in tests when we want to test multiprocess support
|
||||||
// specifically.
|
// specifically.
|
||||||
if (flags.testing) {
|
if (flags.testing) {
|
||||||
return { enabled: true };
|
return { supported: true, enabled: true };
|
||||||
}
|
}
|
||||||
|
let supported = system.constants.E10S_TESTING_ONLY;
|
||||||
// This is only checked on tool startup -- requires a restart if
|
// This is only checked on tool startup -- requires a restart if
|
||||||
// e10s subsequently enabled.
|
// e10s subsequently enabled.
|
||||||
let enabled = this._e10s;
|
let enabled = this._e10s;
|
||||||
return { enabled };
|
return { supported, enabled };
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -555,9 +556,12 @@ var PerformanceController = {
|
|||||||
* if e10s is not possible on the platform. If e10s is on, no attribute is set.
|
* if e10s is not possible on the platform. If e10s is on, no attribute is set.
|
||||||
*/
|
*/
|
||||||
_setMultiprocessAttributes: function () {
|
_setMultiprocessAttributes: function () {
|
||||||
let { enabled } = this.getMultiprocessStatus();
|
let { enabled, supported } = this.getMultiprocessStatus();
|
||||||
if (!enabled) {
|
if (!enabled && supported) {
|
||||||
$("#performance-view").setAttribute("e10s", "disabled");
|
$("#performance-view").setAttribute("e10s", "disabled");
|
||||||
|
} else if (!enabled && !supported) {
|
||||||
|
// Could be a chance where the directive goes away yet e10s is still on
|
||||||
|
$("#performance-view").setAttribute("e10s", "unsupported");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -211,6 +211,8 @@
|
|||||||
<hbox pack="center">
|
<hbox pack="center">
|
||||||
<html:div class='recording-button-mount'/>
|
<html:div class='recording-button-mount'/>
|
||||||
</hbox>
|
</hbox>
|
||||||
|
<label class="realtime-disabled-message"
|
||||||
|
value="&performanceUI.disabledRealTime.nonE10SBuild;"/>
|
||||||
<label class="realtime-disabled-on-e10s-message"
|
<label class="realtime-disabled-on-e10s-message"
|
||||||
value="&performanceUI.disabledRealTime.disabledE10S;"/>
|
value="&performanceUI.disabledRealTime.disabledE10S;"/>
|
||||||
<label class="buffer-status-message"
|
<label class="buffer-status-message"
|
||||||
@@ -235,6 +237,8 @@
|
|||||||
<label class="console-profile-command" />
|
<label class="console-profile-command" />
|
||||||
<label value="&performanceUI.console.stopCommandEnd;" />
|
<label value="&performanceUI.console.stopCommandEnd;" />
|
||||||
</hbox>
|
</hbox>
|
||||||
|
<label class="realtime-disabled-message"
|
||||||
|
value="&performanceUI.disabledRealTime.nonE10SBuild;"/>
|
||||||
<label class="realtime-disabled-on-e10s-message"
|
<label class="realtime-disabled-on-e10s-message"
|
||||||
value="&performanceUI.disabledRealTime.disabledE10S;"/>
|
value="&performanceUI.disabledRealTime.disabledE10S;"/>
|
||||||
<label class="buffer-status-message"
|
<label class="buffer-status-message"
|
||||||
|
|||||||
@@ -20,21 +20,35 @@ add_task(function* () {
|
|||||||
// Set a fast profiler-status update interval
|
// Set a fast profiler-status update interval
|
||||||
yield gFront.setProfilerStatusInterval(10);
|
yield gFront.setProfilerStatusInterval(10);
|
||||||
|
|
||||||
|
let supported = false;
|
||||||
let enabled = false;
|
let enabled = false;
|
||||||
|
|
||||||
PerformanceController.getMultiprocessStatus = () => {
|
PerformanceController.getMultiprocessStatus = () => {
|
||||||
return { enabled };
|
return { supported, enabled };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
PerformanceController._setMultiprocessAttributes();
|
||||||
|
ok($("#performance-view").getAttribute("e10s"), "unsupported",
|
||||||
|
"When e10s is disabled and no option to turn on, container has [e10s=unsupported].");
|
||||||
|
|
||||||
|
supported = true;
|
||||||
|
enabled = false;
|
||||||
PerformanceController._setMultiprocessAttributes();
|
PerformanceController._setMultiprocessAttributes();
|
||||||
ok($("#performance-view").getAttribute("e10s"), "disabled",
|
ok($("#performance-view").getAttribute("e10s"), "disabled",
|
||||||
"When e10s is disabled, container has [e10s=disabled].");
|
"When e10s is disabled and but is supported, container has [e10s=disabled].");
|
||||||
|
|
||||||
|
supported = false;
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
|
||||||
PerformanceController._setMultiprocessAttributes();
|
PerformanceController._setMultiprocessAttributes();
|
||||||
ok($("#performance-view").getAttribute("e10s"), "",
|
ok($("#performance-view").getAttribute("e10s"), "",
|
||||||
"When e10s is enabled, there should be no e10s attribute.");
|
"When e10s is enabled, but not supported, this probably means we no longer have " +
|
||||||
|
"E10S_TESTING_ONLY, and we have no e10s attribute.");
|
||||||
|
|
||||||
|
supported = true;
|
||||||
|
enabled = true;
|
||||||
|
PerformanceController._setMultiprocessAttributes();
|
||||||
|
ok($("#performance-view").getAttribute("e10s"), "",
|
||||||
|
"When e10s is enabled and supported, there should be no e10s attribute.");
|
||||||
|
|
||||||
yield teardownToolboxAndRemoveTab(panel);
|
yield teardownToolboxAndRemoveTab(panel);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -247,11 +247,13 @@
|
|||||||
margin: 3px 2px;
|
margin: 3px 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.realtime-disabled-message,
|
||||||
.realtime-disabled-on-e10s-message {
|
.realtime-disabled-on-e10s-message {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#performance-view[e10s="disabled"] .realtime-disabled-on-e10s-message {
|
#performance-view[e10s="disabled"] .realtime-disabled-on-e10s-message,
|
||||||
|
#performance-view[e10s="unsupported"] .realtime-disabled-message {
|
||||||
display: initial;
|
display: initial;
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,17 @@ include('build/moz.configure/init.configure')
|
|||||||
# - Spidermonkey-specific options and rules should go in js/moz.configure.
|
# - Spidermonkey-specific options and rules should go in js/moz.configure.
|
||||||
# - etc.
|
# - etc.
|
||||||
|
|
||||||
|
# Multiprocess Firefox Testing UI - Nightly and Aurora
|
||||||
|
# To be removed in Bug 1003313
|
||||||
|
@depends(milestone)
|
||||||
|
def e10s_testing_only(milestone):
|
||||||
|
if not milestone.is_release_or_beta:
|
||||||
|
return True
|
||||||
|
|
||||||
|
set_config('E10S_TESTING_ONLY', e10s_testing_only)
|
||||||
|
set_define('E10S_TESTING_ONLY', e10s_testing_only)
|
||||||
|
|
||||||
|
|
||||||
option('--enable-artifact-builds', env='MOZ_ARTIFACT_BUILDS',
|
option('--enable-artifact-builds', env='MOZ_ARTIFACT_BUILDS',
|
||||||
help='Download and use prebuilt binary artifacts.')
|
help='Download and use prebuilt binary artifacts.')
|
||||||
|
|
||||||
|
|||||||
@@ -180,6 +180,13 @@ this.AppConstants = Object.freeze({
|
|||||||
false,
|
false,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
E10S_TESTING_ONLY:
|
||||||
|
#ifdef E10S_TESTING_ONLY
|
||||||
|
true,
|
||||||
|
#else
|
||||||
|
false,
|
||||||
|
#endif
|
||||||
|
|
||||||
DEBUG:
|
DEBUG:
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
true,
|
true,
|
||||||
|
|||||||
Reference in New Issue
Block a user