| <!DOCTYPE html> <!-- webkit-test-runner [ useFlexibleViewport=true experimental: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 it's still possible to read from the clipboard, after attempting to read data from stale items. Requires DumpRenderTree or WebKitTestRunner."); |
| |
| await UIHelper.copyText("Hello"); |
| itemsBeforeChange = await navigator.clipboard.read(); |
| shouldBe("itemsBeforeChange.length", "1"); |
| |
| try { |
| const textBlob = await itemsBeforeChange[0].getType("text/plain"); |
| text = await loadText(textBlob); |
| shouldBeEqualToString("text", "Hello"); |
| } catch (exception) { |
| testFailed(`Caught unexpected exception: ${exception.name}`); |
| } |
| |
| await UIHelper.copyText("World"); |
| itemsAfterChange = await navigator.clipboard.read(); |
| shouldBe("itemsAfterChange.length", "1"); |
| |
| try { |
| const textBlob = await itemsBeforeChange[0].getType("text/plain"); |
| testFailed(`Expected exception when calling getType(). Instead, got Blob(${textBlob.size} bytes)`); |
| } catch (exception) { |
| testPassed(`Caught expected exception: ${exception.name}`); |
| } |
| |
| try { |
| const textBlob = await itemsAfterChange[0].getType("text/plain"); |
| text = await loadText(textBlob); |
| shouldBeEqualToString("text", "World"); |
| } catch (exception) { |
| testFailed(`Caught unexpected exception: ${exception.name}`); |
| } |
| |
| finishJSTest(); |
| } |
| |
| addEventListener("load", runTest); |
| </script> |
| <body></body> |
| </html> |