зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1253565 - [webext] Run event pages as background pages and log warning on persistent manifest attribute. r=kmag
MozReview-Commit-ID: 9QWvRkADsQD --HG-- extra : rebase_source : 508abbd040d70c10868807126b57b6b0ca8b3884
This commit is contained in:
Родитель
65e076156d
Коммит
1e89a7231e
|
@ -90,7 +90,11 @@
|
|||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"page": { "$ref": "ExtensionURL" }
|
||||
"page": { "$ref": "ExtensionURL" },
|
||||
"persistent": {
|
||||
"optional": true,
|
||||
"$ref": "PersistentBackgroundProperty"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -99,6 +103,10 @@
|
|||
"scripts": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "ExtensionURL" }
|
||||
},
|
||||
"persistent": {
|
||||
"optional": true,
|
||||
"$ref": "PersistentBackgroundProperty"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -284,6 +292,11 @@
|
|||
"isInstanceOf": "ImageData"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PersistentBackgroundProperty",
|
||||
"type": "boolean",
|
||||
"deprecated": "Event pages are not currently supported. This will run as a persistent background page."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -7,3 +7,4 @@ support-files =
|
|||
[test_chrome_ext_downloads_download.html]
|
||||
[test_chrome_ext_downloads_misc.html]
|
||||
[test_chrome_ext_downloads_search.html]
|
||||
[test_chrome_ext_eventpage_warning.html]
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test for WebExtension EventPage Warning</title>
|
||||
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"></script>
|
||||
<script src="chrome://mochikit/content/tests/SimpleTest/ExtensionTestUtils.js"></script>
|
||||
<script type="text/javascript" src="head.js"></script>
|
||||
<link rel="stylesheet" href="chrome://mochikit/contents/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script type="text/javascript">
|
||||
"use strict";
|
||||
|
||||
function createEventPageExtension(eventPage) {
|
||||
function eventPageScript() {
|
||||
browser.test.log("running event page as background script");
|
||||
browser.test.sendMessage("running", 1);
|
||||
}
|
||||
|
||||
return ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
"background": eventPage,
|
||||
},
|
||||
files: {
|
||||
"event-page-script.js": `(${eventPageScript})()`,
|
||||
"event-page.html": `<html><head>
|
||||
<meta charset="utf-8">
|
||||
<script src="event-page-script.js"></${"script"}>
|
||||
</head></html>`,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
add_task(function* test_eventpages() {
|
||||
// Used in other tests to prevent the monitorConsole to grip.
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
let testCases = [
|
||||
{
|
||||
message: "testing event page running as a background page",
|
||||
eventPage: {
|
||||
"page": "event-page.html",
|
||||
"persistent": false,
|
||||
},
|
||||
},
|
||||
{
|
||||
message: "testing event page scripts running as a background page",
|
||||
eventPage: {
|
||||
"scripts": ["event-page-script.js"],
|
||||
"persistent": false,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
for (let {message, eventPage} of testCases) {
|
||||
info(message);
|
||||
|
||||
// Wait for the expected logged warnings from the manifest validation.
|
||||
let waitForConsole = new Promise(resolve => {
|
||||
SimpleTest.monitorConsole(resolve, [{message: /Event pages are not currently supported./}]);
|
||||
});
|
||||
|
||||
let extension = createEventPageExtension(eventPage);
|
||||
|
||||
info("load complete");
|
||||
let [, x] = yield Promise.all([extension.startup(), extension.awaitMessage("running")]);
|
||||
is(x, 1, "got correct value from extension");
|
||||
info("test complete");
|
||||
yield extension.unload();
|
||||
info("extension unloaded successfully");
|
||||
|
||||
SimpleTest.endMonitorConsole();
|
||||
yield waitForConsole;
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче