Bug 1362047 - Fix content_script.run_at default value, add test r=mixedpuppy

MozReview-Commit-ID: CiBaSkZ0TqQ

--HG--
extra : rebase_source : 88fed5902a1c8eeaaa19cb6c50ace19f27750a43
This commit is contained in:
Tomislav Jovanovic 2017-05-10 02:00:29 +02:00
Родитель 2483e7b376
Коммит 5e33a4fcc3
4 изменённых файлов: 21 добавлений и 4 удалений

Просмотреть файл

@ -50,6 +50,10 @@ add_task(async function testExecuteScript() {
// Send the executeScript requests in the reverse order that we expect
// them to execute in, to avoid them passing only because of timing
// races.
browser.tabs.executeScript({
code: "document.readyState",
// Testing default `runAt`.
}),
browser.tabs.executeScript({
code: "document.readyState",
runAt: "document_idle",
@ -77,7 +81,8 @@ add_task(async function testExecuteScript() {
// Otherwise, try again.
success = (states[0] == "loading" &&
states[1] == "interactive" &&
states[2] == "complete");
states[2] == "complete" &&
states[3] == "complete");
}
browser.test.assertTrue(success, "Got the earliest expected states at least once");

Просмотреть файл

@ -62,6 +62,7 @@
"runAt": {
"$ref": "RunAt",
"optional": true,
"default": "document_idle",
"description": "The soonest that the JavaScript or CSS will be injected into the tab. Defaults to \"document_idle\"."
},
"cssOrigin": {

Просмотреть файл

@ -362,6 +362,7 @@
"run_at": {
"$ref": "extensionTypes.RunAt",
"optional": true,
"default": "document_idle",
"description": "The soonest that the JavaScript or CSS will be injected into the tab. Defaults to \"document_idle\"."
}
}

Просмотреть файл

@ -7,7 +7,7 @@ const BASE_URL = `http://localhost:${server.identity.primaryPort}/data`;
ExtensionTestUtils.mockAppInfo();
add_task(async function test_contentscript() {
add_task(async function test_contentscript_runAt() {
function background() {
browser.runtime.onMessage.addListener(([msg, expectedStates, readyState], sender) => {
if (msg == "chrome-namespace-ok") {
@ -57,6 +57,11 @@ add_task(async function test_contentscript() {
"js": ["content_script_idle.js"],
"run_at": "document_idle",
},
{
"matches": ["http://*/*/file_sample.html"],
"js": ["content_script_idle.js"],
// Test default `run_at`.
},
{
"matches": ["http://*/*/file_sample.html"],
"js": ["content_script.js"],
@ -83,7 +88,12 @@ add_task(async function test_contentscript() {
extension.onMessage("script-run-interactive", () => { interactiveCount++; });
let completePromise = new Promise(resolve => {
extension.onMessage("script-run-complete", () => { completeCount++; resolve(); });
extension.onMessage("script-run-complete", () => {
completeCount++;
if (completeCount > 1) {
resolve();
}
});
});
let chromeNamespacePromise = extension.awaitMessage("chrome-namespace-ok");
@ -98,7 +108,7 @@ add_task(async function test_contentscript() {
equal(loadingCount, 1, "document_start script ran exactly once");
equal(interactiveCount, 1, "document_end script ran exactly once");
equal(completeCount, 1, "document_idle script ran exactly once");
equal(completeCount, 2, "document_idle script ran exactly twice");
await extension.unload();
});