<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true experimental:AsyncClipboardAPIEnabled=true domPasteAllowed=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>
        <script src="../../resources/ui-helper.js"></script>
        <script src="./resources/async-clipboard-helpers.js"></script>
        <style>
            button, iframe {
                width: 100%;
                height: 150px;
                display: block;
            }
        </style>
    </head>
    <script>
        jsTestIsAsync = true;

        if (window.testRunner)
            testRunner.setJavaScriptCanAccessClipboard(false);

        async function runTest() {
            description("This test verifies that navigator.clipboard.readText rejects if the contents of the platform pasteboard change while reading. This test requires WebKitTestRunner.");

            paste = document.getElementById("paste");
            paste.addEventListener("click", async () => {
                try {
                    testFailed(`Should not have been able to read ${await navigator.clipboard.readText()}`);
                } catch (exception) {
                    testPassed(`Failed to read with exception: ${exception.name}`);
                } finally {
                    paste.remove();
                    finishJSTest();
                }
            });

            await UIHelper.copyText("I should not be able to read this text.");
            await triggerProgrammaticPaste(paste, ["ChangePasteboardWhenGrantingAccess"]);
        }

        addEventListener("load", runTest);
    </script>
    <body>
        <button id="paste">Paste</button>
        <p id="description"></p>
        <p id="console"></p>
    </body>
</html>
