haikuwebkit/LayoutTests/editing/async-clipboard/clipboard-write-in-copy-eve...

45 lines
1.6 KiB
HTML

<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true AsyncClipboardAPIEnabled=true JavaScriptCanAccessClipboard=false ] -->
<html>
<meta charset="utf8">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<script src="../../resources/js-test.js"></script>
<style>
button {
width: 100px;
padding: 1em;
}
</style>
</head>
<script>
jsTestIsAsync = true;
description("This test verifies that clipboard items can be written while dispatching the 'copy' event. To manually run the test, copy the 'Copy me' text below.");
addEventListener("load", async function() {
const target = document.getElementById("target");
const textBlob = new Blob([ (new TextEncoder()).encode("Hello world") ], { type : "text/plain" });
target.addEventListener("copy", async event => {
try {
event.preventDefault();
await navigator.clipboard.write([ new ClipboardItem({ "text/plain" : textBlob })]);
testPassed("Successfully wrote to clipboard.");
} catch (exception) {
testFailed(`Failed with exception: ${exception}.`);
} finally {
finishJSTest();
}
});
getSelection().selectAllChildren(target);
if (window.testRunner)
testRunner.execCommand("Copy");
});
</script>
<body>
<span id="target">Copy me</span>
</body>
</html>