Bug 1286124 - Part 1/2 - Modify existing tests to not use same-frame messaging r=kmag

MozReview-Commit-ID: CtCcajKYAoR

--HG--
extra : rebase_source : 80fda91586e917b77f2a3df8e3ad24cc1433b38d
This commit is contained in:
Rob Wu 2016-07-13 16:25:58 -07:00
parent c0412a3515
commit 6a21e0fb1b
3 changed files with 44 additions and 26 deletions

View File

@ -35,23 +35,23 @@ add_task(function* test_versioned_js() {
`,
"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");
},
},
});

View File

@ -3,9 +3,32 @@
"use strict";
function backgroundScript() {
let detected_invalid_connect_params = 0;
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;
const invalid_connect_params = [
// too many params
["fake-extensions-id", {name: "fake-conn-name"}, "unexpected third params"],
@ -13,9 +36,7 @@ function backgroundScript() {
[{}, {}],
["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 {
@ -25,33 +46,20 @@ function backgroundScript() {
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() {

View File

@ -29,6 +29,12 @@ add_task(function* tabsSendMessageReply() {
}
});
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"),
@ -61,6 +67,10 @@ add_task(function* tabsSendMessageReply() {
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();