diff --git a/browser/base/content/browser-menubar.inc b/browser/base/content/browser-menubar.inc
index e818cdfafcbe..6dc75f7547fe 100644
--- a/browser/base/content/browser-menubar.inc
+++ b/browser/base/content/browser-menubar.inc
@@ -34,6 +34,12 @@
accesskey="&newPrivateWindow.accesskey;"
command="Tools:PrivateBrowsing"
key="key_privatebrowsing"/>
+#ifdef E10S_TESTING_ONLY
+
+#endif
#ifdef MAC_NON_BROWSER_WINDOW
+#ifdef E10S_TESTING_ONLY
+
+#endif
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 12a03b01616c..8831891dc375 100755
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1466,6 +1466,9 @@ var gBrowserInit = {
IndexedDBPromptHelper.init();
CanvasPermissionPromptHelper.init();
+ if (AppConstants.E10S_TESTING_ONLY)
+ gRemoteTabsUI.init();
+
// Initialize the full zoom setting.
// 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.
@@ -1979,6 +1982,9 @@ if (AppConstants.platform == "macosx") {
// initialize the private browsing UI
gPrivateBrowsingUI.init();
+ if (AppConstants.E10S_TESTING_ONLY) {
+ gRemoteTabsUI.init();
+ }
};
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.
* 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"))
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;
menuItems = aPopupMenu.getElementsByAttribute("tbattr", "tabbrowser-multiple-visible");
for (let menuItem of menuItems)
diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
index 3058058ab390..206575daa5c6 100644
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -96,6 +96,12 @@
accesskey="&moveToNewWindow.accesskey;"
tbattr="tabbrowser-multiple"
oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
+#ifdef E10S_TESTING_ONLY
+
+#endif