diff options
Diffstat (limited to 'testing/web-platform/tests/clipboard-apis/clipboard-item.https.html')
-rw-r--r-- | testing/web-platform/tests/clipboard-apis/clipboard-item.https.html | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/testing/web-platform/tests/clipboard-apis/clipboard-item.https.html b/testing/web-platform/tests/clipboard-apis/clipboard-item.https.html new file mode 100644 index 0000000000..9ed6f583bd --- /dev/null +++ b/testing/web-platform/tests/clipboard-apis/clipboard-item.https.html @@ -0,0 +1,98 @@ +<!doctype html> +<meta charset="utf-8"> +<title>ClipboardItem tests</title> +<link rel="help" href="https://w3c.github.io/clipboard-apis/#async-clipboard-api"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + +const blob = new Blob(['hello'], {type: 'text/plain'}); +const blob2 = new Blob(['this should work'], {type: 'not a/real type'}); + +test(() => { + new ClipboardItem({'text/plain': blob}); + new ClipboardItem({'text/plain': blob, 'not a/real type': blob2}); +}, "ClipboardItem({string, Blob}) succeeds with different types"); + +test(() => { + new ClipboardItem({'text/plain': blob}, {}); +}, "ClipboardItem() succeeds with empty options"); + +test(() => { + assert_throws_js(TypeError, () => {new ClipboardItem({});}); +}, "ClipboardItem({}) fails with empty dictionary input"); + +test(() => { + assert_throws_js(TypeError, () => {new ClipboardItem(blob);}); +}, "ClipboardItem(Blob) fails"); + +test(() => { + assert_throws_js(TypeError, () => {new ClipboardItem(null);}); +}, "ClipboardItem() fails with null input"); + +test(() => { + assert_throws_js(TypeError, () => {new ClipboardItem();}); +}, "ClipboardItem() fails with no input"); + +test(() => { + const item = new ClipboardItem({'text/plain': blob}); + const types = item.types; + assert_equals(types.length, 1); + assert_equals(types[0], 'text/plain'); + const item2 = + new ClipboardItem({'text/plain': blob, 'not a/real type': blob2}); + const types2 = item2.types; + assert_equals(types2.length, 2); + assert_equals(types2[0], 'text/plain'); + assert_equals(types2[1], 'not a/real type'); +}, "types() returns correct values"); + +promise_test(async () => { + const item = + new ClipboardItem({'text/plain': blob, 'not a/real type': blob2}); + + const blobOutput = await item.getType('text/plain'); + assert_true(blobOutput.type.includes('text/plain')); + const text = await (new Response(blobOutput)).text(); + + assert_equals('hello', text); +}, "getType(DOMString valid type) succeeds with correct output"); + +promise_test(async () => { + const item = + new ClipboardItem({'text/plain': blob, 'not a/real type': blob2}); + + const blobOutput = await item.getType('not a/real type'); + assert_true(blobOutput.type.includes('not a/real type')); + const text = await (new Response(blobOutput)).text(); + + assert_equals('this should work', text); +}, "getType(DOMString invalid type) succeeds with correct output"); + +promise_test(async t => { + const item = + new ClipboardItem({'text/plain': blob, 'not a/real type': blob2}); + promise_rejects_dom(t, "NotFoundError", item.getType('type not in item')); + promise_rejects_dom(t, "NotFoundError", item.getType('text/plain:subtype')); +}, "getType(DOMString type) rejects correctly when querying for missing type"); + +promise_test(async () => { + const item = + new ClipboardItem({'text/plain': 'abc', 'not a/real type': 'xxx'}); + const blob = await item.getType('text/plain'); + assert_equals(blob.type, 'text/plain'); + + const text = await (new Response(blob)).text(); + assert_equals(text, 'abc'); +}, "getType(DOMString valid type) converts DOMString to Blob"); + +promise_test(async () => { + const item = + new ClipboardItem({'text/plain': 'abc', 'not a/real type': 'xxx'}); + const blob = await item.getType('not a/real type'); + assert_equals(blob.type, 'not a/real type'); + + const text = await (new Response(blob)).text(); + assert_equals(text, 'xxx'); +}, "getType(DOMString invalid type) converts DOMString to Blob"); +</script> |