mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-26 09:18:37 +09:00
140 lines
3.7 KiB
HTML
140 lines
3.7 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>clipboard permission test</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script src="/tests/SimpleTest/SpawnTask.js"></script>
|
|
<script src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
|
|
<script src="head.js"></script>
|
|
<link rel="stylesheet" href="/tests/SimpleTest/test.css">
|
|
</head>
|
|
<body>
|
|
|
|
<script>
|
|
"use strict";
|
|
|
|
function doCopy(txt) {
|
|
let field = document.createElement("textarea");
|
|
document.body.appendChild(field);
|
|
field.value = txt;
|
|
field.select();
|
|
return document.execCommand("copy");
|
|
}
|
|
|
|
add_task(function* no_permission_deny_copy() {
|
|
function backgroundScript() {
|
|
browser.test.assertEq(false, doCopy("whatever"),
|
|
"copy should be denied without permission");
|
|
browser.test.sendMessage("ready");
|
|
}
|
|
let extensionData = {
|
|
background: `${doCopy};(${backgroundScript})();`,
|
|
};
|
|
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() {
|
|
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})();`,
|
|
manifest: {
|
|
permissions: [
|
|
"clipboardWrite",
|
|
],
|
|
},
|
|
};
|
|
let extension = ExtensionTestUtils.loadExtension(extensionData);
|
|
yield extension.startup();
|
|
yield extension.awaitMessage("ready");
|
|
|
|
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* content_script_no_permission_deny_copy() {
|
|
function contentScript() {
|
|
browser.test.assertEq(false, doCopy("whatever"),
|
|
"copy should be denied without permission");
|
|
browser.test.sendMessage("ready");
|
|
}
|
|
let extensionData = {
|
|
manifest: {
|
|
content_scripts: [{
|
|
js: ["contentscript.js"],
|
|
matches: ["http://mochi.test/*/file_sample.html"],
|
|
}],
|
|
},
|
|
files: {
|
|
"contentscript.js": `${doCopy};(${contentScript})();`,
|
|
},
|
|
};
|
|
let extension = ExtensionTestUtils.loadExtension(extensionData);
|
|
yield extension.startup();
|
|
|
|
let win = window.open("file_sample.html");
|
|
yield extension.awaitMessage("ready");
|
|
win.close();
|
|
|
|
yield extension.unload();
|
|
});
|
|
|
|
add_task(function* content_script_with_permission_allow_copy() {
|
|
function contentScript() {
|
|
browser.test.onMessage.addListener(txt => {
|
|
browser.test.assertEq(true, doCopy(txt),
|
|
"copy should be allowed with permission");
|
|
});
|
|
browser.test.sendMessage("ready");
|
|
}
|
|
let extensionData = {
|
|
manifest: {
|
|
content_scripts: [{
|
|
js: ["contentscript.js"],
|
|
matches: ["http://mochi.test/*/file_sample.html"],
|
|
}],
|
|
permissions: [
|
|
"clipboardWrite",
|
|
],
|
|
},
|
|
files: {
|
|
"contentscript.js": `${doCopy};(${contentScript})();`,
|
|
},
|
|
};
|
|
let extension = ExtensionTestUtils.loadExtension(extensionData);
|
|
yield extension.startup();
|
|
|
|
let win = window.open("file_sample.html");
|
|
yield extension.awaitMessage("ready");
|
|
|
|
const DUMMY_STR = "dummy string to copy in content script";
|
|
yield new Promise(resolve => {
|
|
SimpleTest.waitForClipboard(DUMMY_STR, () => {
|
|
extension.sendMessage(DUMMY_STR);
|
|
}, resolve, resolve);
|
|
});
|
|
|
|
win.close();
|
|
|
|
yield extension.unload();
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|