<!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true AsyncClipboardAPIEnabled=true ] -->
<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>
    </head>
    <script>
        jsTestIsAsync = true;

        async function runTest() {
            description("This test verifies that if platform pasteboard contents are changed before reading from a ClipboardItem, the new contents of the pasteboard should not be exposed to the page and the result of getType() should be rejected. This test requires WebKitTestRunner.");

            await UIHelper.copyText("Foo");
            items = await navigator.clipboard.read();
            shouldBe("items.length", "1");
            await UIHelper.copyText("Bar");
            try {
                const textBlob = await items[0].getType("text/plain");
                testFailed(`Did not handle exception (instead, got text: "${await loadText(textBlob)}")`);
            } catch (exception) {
                testPassed(`Handled exception: ${exception.name}`);
            }
            finishJSTest();
        }

        addEventListener("load", runTest);
    </script>
    <body></body>
</html>
