Bug 1340556 - Add tests for clipboardRead from the background page
MozReview-Commit-ID: 1eQ1JUBt5ps
--- a/toolkit/components/extensions/test/mochitest/mochitest-common.ini
+++ b/toolkit/components/extensions/test/mochitest/mochitest-common.ini
@@ -41,17 +41,17 @@ support-files =
file_ext_test_api_injection.js
file_permission_xhr.html
file_teardown_test.js
return_headers.sjs
webrequest_worker.js
!/toolkit/components/passwordmgr/test/authenticate.sjs
!/dom/tests/mochitest/geolocation/network_geolocation.sjs
-[test_clipboard.html]
+[test_ext_clipboard.html]
# skip-if = # disabled test case with_permission_allow_copy, see inline comment.
[test_ext_inIncognitoContext_window.html]
skip-if = os == 'android' # Android does not support multiple windows.
[test_ext_geturl.html]
[test_ext_background_canvas.html]
[test_ext_content_security_policy.html]
[test_ext_contentscript.html]
[test_ext_contentscript_api_injection.html]
rename from toolkit/components/extensions/test/mochitest/test_clipboard.html
rename to toolkit/components/extensions/test/mochitest/test_ext_clipboard.html
--- a/toolkit/components/extensions/test/mochitest/test_clipboard.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_clipboard.html
@@ -45,27 +45,27 @@ add_task(function* test_background_clipb
let extension = ExtensionTestUtils.loadExtension(extensionData);
yield extension.startup();
yield extension.awaitMessage("ready");
yield extension.unload();
});
-/** Selecting text in a bg page is not possible, skip test until it's fixed.
-add_task(function* with_permission_allow_copy() {
+/** Selecting text in a bg page is not possible, bug 1272869.
+add_task(function* test_background_clipboard_copy() {
function backgroundScript() {
browser.test.onMessage.addListener(txt => {
browser.test.assertEq(true, doCopy(txt),
"copy should be allowed with permission");
});
browser.test.sendMessage("ready");
}
let extensionData = {
- background: `${doCopy};(${backgroundScript})();`,
+ background: `(${shared})();(${backgroundScript})();`,
manifest: {
permissions: [
"clipboardWrite",
],
},
};
let extension = ExtensionTestUtils.loadExtension(extensionData);
yield extension.startup();
@@ -74,17 +74,18 @@ add_task(function* with_permission_allow
const DUMMY_STR = "dummy string to copy";
yield new Promise(resolve => {
SimpleTest.waitForClipboard(DUMMY_STR, () => {
extension.sendMessage(DUMMY_STR);
}, resolve, resolve);
});
yield extension.unload();
-}); */
+});
+*/
add_task(function* test_contentscript_clipboard_permissions() {
function contentScript() {
browser.test.assertEq(false, doCopy("whatever"),
"copy should be denied without permission");
browser.test.assertEq(false, doPaste(),
"paste should be denied without permission");
browser.test.sendMessage("ready");
@@ -179,11 +180,34 @@ add_task(function* test_contentscript_cl
const paste = yield extension.awaitMessage("paste");
is(paste, STRANGE, "the correct string was pasted");
win.close();
yield extension.unload();
});
+add_task(function* test_background_clipboard_paste() {
+ function background() {
+ browser.test.sendMessage("paste", doPaste());
+ }
+
+ const extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ permissions: ["clipboardRead"],
+ },
+ background: `(${shared})();(${background})();`,
+ });
+
+ const STRANGE = "Stranger Things";
+ SpecialPowers.clipboardCopyString(STRANGE);
+
+ yield extension.startup();
+
+ const paste = yield extension.awaitMessage("paste");
+ is(paste, STRANGE, "the correct string was pasted");
+
+ yield extension.unload();
+});
+
</script>
</body>
</html>