summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/addons/e10s/lib/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/test/addons/e10s/lib/main.js')
-rw-r--r--addon-sdk/source/test/addons/e10s/lib/main.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/addon-sdk/source/test/addons/e10s/lib/main.js b/addon-sdk/source/test/addons/e10s/lib/main.js
new file mode 100644
index 000000000..1eee511c3
--- /dev/null
+++ b/addon-sdk/source/test/addons/e10s/lib/main.js
@@ -0,0 +1,65 @@
+/* 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 { getMostRecentBrowserWindow, isBrowser } = require('sdk/window/utils');
+const { promise: windowPromise, close, focus } = require('sdk/window/helpers');
+const { openTab, closeTab, getBrowserForTab } = require('sdk/tabs/utils');
+const { WindowTracker } = require('sdk/deprecated/window-utils');
+const { version, platform } = require('sdk/system');
+const { when } = require('sdk/system/unload');
+const tabs = require('sdk/tabs');
+
+const SKIPPING_TESTS = {
+ "test skip": (assert) => assert.pass("nothing to test here")
+};
+
+exports.testTabIsRemote = function(assert, done) {
+ const url = 'data:text/html,test-tab-is-remote';
+ let tab = openTab(getMostRecentBrowserWindow(), url);
+ assert.ok(tab.linkedBrowser.isRemoteBrowser, "The new tab should be remote");
+
+ // can't simply close a remote tab before it is loaded, bug 1006043
+ let mm = getBrowserForTab(tab).messageManager;
+ mm.addMessageListener('7', function listener() {
+ mm.removeMessageListener('7', listener);
+ tabs.once('close', done);
+ closeTab(tab);
+ })
+ mm.loadFrameScript('data:,sendAsyncMessage("7")', true);
+}
+
+// run e10s tests only on builds from trunk, fx-team, Nightly..
+if (!version.endsWith('a1')) {
+ module.exports = {};
+}
+
+function replaceWindow(remote) {
+ let next = null;
+ let old = getMostRecentBrowserWindow();
+ let promise = new Promise(resolve => {
+ let tracker = WindowTracker({
+ onTrack: window => {
+ if (window !== next)
+ return;
+ resolve(window);
+ tracker.unload();
+ }
+ });
+ })
+ next = old.OpenBrowserWindow({ remote });
+ return promise.then(focus).then(_ => close(old));
+}
+
+// bug 1054482 - e10s test addons time out on linux
+if (platform === 'linux') {
+ module.exports = SKIPPING_TESTS;
+ require('sdk/test/runner').runTestsFromModule(module);
+}
+else {
+ replaceWindow(true).then(_ =>
+ require('sdk/test/runner').runTestsFromModule(module));
+
+ when(_ => replaceWindow(false));
+}