Bug 1286124 - Part 1/2 - Modify existing tests to not use same-frame messaging
MozReview-Commit-ID: CtCcajKYAoR
--- a/toolkit/components/extensions/test/mochitest/test_ext_jsversion.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_jsversion.html
@@ -30,33 +30,33 @@ add_task(function* test_versioned_js() {
<meta charset="utf-8">
${script('src="background.js" type="application/javascript"')}
${script('src="background-1.js" type="application/javascript;version=1.8"')}
${script('src="background-2.js" type="application/javascript;version=latest"')}
${script('src="background-3.js" type="application/javascript"')}
`,
"background.js": "new " + function() {
- browser.runtime.onMessage.addListener(msg => {
+ window.reportResult = msg => {
browser.test.assertEq(
msg, "background-script-3",
"Expected a message only from the unversioned background script.");
browser.test.sendMessage("finished");
- });
+ };
},
"background-1.js": "new " + function() {
- browser.runtime.sendMessage("background-script-1");
+ window.reportResult("background-script-1");
},
"background-2.js": "new " + function() {
- browser.runtime.sendMessage("background-script-2");
+ window.reportResult("background-script-2");
},
"background-3.js": "new " + function() {
- browser.runtime.sendMessage("background-script-3");
+ window.reportResult("background-script-3");
},
},
});
let messages = [/Versioned JavaScript.*not supported in WebExtension.*developer\.mozilla\.org/,
/Versioned JavaScript.*not supported in WebExtension.*developer\.mozilla\.org/];
let waitForConsole = new Promise(resolve => {
--- a/toolkit/components/extensions/test/xpcshell/test_ext_background_runtime_connect_params.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_background_runtime_connect_params.js
@@ -1,62 +1,70 @@
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
function backgroundScript() {
+ let received_ports_number = 0;
+
+ const expected_received_ports_number = 1;
+
+ function countReceivedPorts(port) {
+ received_ports_number++;
+
+ if (port.name == "check-results") {
+ browser.runtime.onConnect.removeListener(countReceivedPorts);
+
+ browser.test.assertEq(expected_received_ports_number, received_ports_number, "invalid connect should not create a port");
+
+ browser.test.notifyPass("runtime.connect invalid params");
+ }
+ }
+
+ browser.runtime.onConnect.addListener(countReceivedPorts);
+
+ let childFrame = document.createElement("iframe");
+ childFrame.src = "extensionpage.html";
+ document.body.appendChild(childFrame);
+}
+
+function senderScript() {
let detected_invalid_connect_params = 0;
- let received_ports_number = 0;
const invalid_connect_params = [
// too many params
["fake-extensions-id", {name: "fake-conn-name"}, "unexpected third params"],
// invalid params format
[{}, {}],
["fake-extensions-id", "invalid-connect-info-format"],
];
-
const expected_detected_invalid_connect_params = invalid_connect_params.length;
- const expected_received_ports_number = 1;
function assertInvalidConnectParamsException(params) {
try {
browser.runtime.connect(...params);
} catch (e) {
detected_invalid_connect_params++;
browser.test.assertTrue(e.toString().indexOf("Incorrect argument types for runtime.connect.") >= 0, "exception message is correct");
}
}
-
- function countReceivedPorts(port) {
- received_ports_number++;
-
- if (port.name == "check-results") {
- browser.runtime.onConnect.removeListener(countReceivedPorts);
-
- browser.test.assertEq(expected_detected_invalid_connect_params, detected_invalid_connect_params, "all invalid runtime.connect params detected");
- browser.test.assertEq(expected_received_ports_number, received_ports_number, "invalid connect should not create a port");
-
- browser.test.notifyPass("runtime.connect invalid params");
- }
- }
-
- browser.runtime.onConnect.addListener(countReceivedPorts);
-
for (let params of invalid_connect_params) {
assertInvalidConnectParamsException(params);
}
+ browser.test.assertEq(expected_detected_invalid_connect_params, detected_invalid_connect_params, "all invalid runtime.connect params detected");
browser.runtime.connect(browser.runtime.id, {name: "check-results"});
}
let extensionData = {
background: backgroundScript,
- manifest: {},
- files: {},
+ files: {
+ "senderScript.js": senderScript,
+ "extensionpage.html": `<!DOCTYPE html><meta charset="utf-8"><script src="senderScript.js"></script>`,
+ },
};
add_task(function* test_backgroundRuntimeConnectParams() {
let extension = ExtensionTestUtils.loadExtension(extensionData);
yield extension.startup();
yield extension.awaitFinish("runtime.connect invalid params");
--- a/toolkit/components/extensions/test/xpcshell/test_ext_runtime_sendMessage.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_runtime_sendMessage.js
@@ -24,16 +24,22 @@ add_task(function* tabsSendMessageReply(
browser.runtime.onMessage.addListener((msg, sender, respond) => {
if (msg == "respond-now") {
respond("hello");
} else if (msg == "respond-now-2") {
respond(msg);
}
});
+ let childFrame = document.createElement("iframe");
+ childFrame.src = "extensionpage.html";
+ document.body.appendChild(childFrame);
+ }
+
+ function senderScript() {
Promise.all([
browser.runtime.sendMessage("respond-now"),
browser.runtime.sendMessage("respond-now-2"),
new Promise(resolve => browser.runtime.sendMessage("respond-soon", resolve)),
browser.runtime.sendMessage("respond-promise"),
browser.runtime.sendMessage("respond-never"),
new Promise(resolve => {
browser.runtime.sendMessage("respond-never", response => { resolve(response); });
@@ -56,14 +62,18 @@ add_task(function* tabsSendMessageReply(
}).catch(e => {
browser.test.fail(`Error: ${e} :: ${e.stack}`);
browser.test.notifyFail("sendMessage");
});
}
let extension = ExtensionTestUtils.loadExtension({
background,
+ files: {
+ "senderScript.js": senderScript,
+ "extensionpage.html": `<!DOCTYPE html><meta charset="utf-8"><script src="senderScript.js"></script>`,
+ },
});
yield extension.startup();
yield extension.awaitFinish("sendMessage");
yield extension.unload();
});