зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1268804 Part 3: Test storage api in WebExtensions, r=kmag
This commit is contained in:
Родитель
cdec8ba558
Коммит
7f3f03793f
|
@ -84,6 +84,8 @@ skip-if = os == 'android' # Android support Bug 1336194
|
|||
[test_ext_sendmessage_no_receiver.html]
|
||||
[test_ext_storage_content.html]
|
||||
[test_ext_storage_tab.html]
|
||||
[test_ext_storage_manager_capabilities.html]
|
||||
scheme=https
|
||||
[test_ext_test.html]
|
||||
[test_ext_cookies.html]
|
||||
[test_ext_background_api_injection.html]
|
||||
|
|
|
@ -0,0 +1,127 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test Storage API </title>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
|
||||
<script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
|
||||
<script type="text/javascript" src="head.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script type="text/javascript">
|
||||
"use strict";
|
||||
|
||||
add_task(function* setup() {
|
||||
yield SpecialPowers.pushPrefEnv({
|
||||
"set": [
|
||||
["dom.storageManager.enabled", true],
|
||||
["dom.storageManager.prompt.testing", true],
|
||||
["dom.storageManager.prompt.testing.allow", true],
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
add_task(function* test_backgroundScript() {
|
||||
function background() {
|
||||
browser.test.assertTrue(navigator.storage !== undefined, "Has storage api interface");
|
||||
|
||||
// Test estimate.
|
||||
browser.test.assertTrue("estimate" in navigator.storage, "Has estimate function");
|
||||
browser.test.assertEq("function", typeof navigator.storage.estimate, "estimate is function");
|
||||
browser.test.assertTrue(navigator.storage.estimate() instanceof Promise, "estimate returns a promise");
|
||||
|
||||
return browser.test.notifyPass("navigation_storage_api.done");
|
||||
}
|
||||
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
background,
|
||||
});
|
||||
|
||||
yield extension.startup();
|
||||
yield extension.awaitFinish("navigation_storage_api.done");
|
||||
yield extension.unload();
|
||||
});
|
||||
|
||||
add_task(function* test_contentScript() {
|
||||
function contentScript() {
|
||||
// Should not access storage api in non-secure context.
|
||||
browser.test.assertEq(undefined, navigator.storage,
|
||||
"A page from the unsecure http protocol " +
|
||||
"doesn't have access to the navigator.storage API");
|
||||
|
||||
return browser.test.notifyPass("navigation_storage_api.done");
|
||||
}
|
||||
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
content_scripts: [{
|
||||
"matches": ["http://example.com/*/file_sample.html"],
|
||||
"js": ["content_script.js"],
|
||||
}],
|
||||
},
|
||||
|
||||
files: {
|
||||
"content_script.js": `(${contentScript})()`,
|
||||
},
|
||||
});
|
||||
|
||||
yield extension.startup();
|
||||
|
||||
// Open an explicit URL for testing Storage API in an insecure context.
|
||||
let win = window.open("http://example.com/tests/toolkit/components/extensions/test/mochitest/file_sample.html");
|
||||
|
||||
yield extension.awaitFinish("navigation_storage_api.done");
|
||||
|
||||
yield extension.unload();
|
||||
win.close();
|
||||
});
|
||||
|
||||
add_task(function* test_contentScriptSecure() {
|
||||
function contentScript() {
|
||||
browser.test.assertTrue(navigator.storage !== undefined, "Has storage api interface");
|
||||
|
||||
// Test estimate.
|
||||
browser.test.assertTrue("estimate" in navigator.storage, "Has estimate function");
|
||||
browser.test.assertEq("function", typeof navigator.storage.estimate, "estimate is function");
|
||||
|
||||
// The promise that estimate function returns belongs to the content page,
|
||||
// but the Promise constructor belongs to the content script sandbox.
|
||||
// Check window.Promise here.
|
||||
browser.test.assertTrue(navigator.storage.estimate() instanceof window.Promise, "estimate returns a promise");
|
||||
|
||||
return browser.test.notifyPass("navigation_storage_api.done");
|
||||
}
|
||||
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
content_scripts: [{
|
||||
"matches": ["https://example.com/*/file_sample.html"],
|
||||
"js": ["content_script.js"],
|
||||
}],
|
||||
},
|
||||
|
||||
files: {
|
||||
"content_script.js": `(${contentScript})()`,
|
||||
},
|
||||
});
|
||||
|
||||
yield extension.startup();
|
||||
|
||||
// Open an explicit URL for testing Storage API in a secure context.
|
||||
let win = window.open("file_sample.html");
|
||||
|
||||
yield extension.awaitFinish("navigation_storage_api.done");
|
||||
|
||||
yield extension.unload();
|
||||
win.close();
|
||||
});
|
||||
|
||||
add_task(function* cleanup() {
|
||||
yield SpecialPowers.popPrefEnv();
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче