| <!DOCTYPE html> <!-- webkit-test-runner [ experimental:AsyncClipboardAPIEnabled=true ] --> |
| <html> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| <script> |
| jsTestIsAsync = true; |
| |
| async function shouldReject(scriptToEvaluate) |
| { |
| try { |
| testFailed(`${scriptToEvaluate} resolved to ${await eval(scriptToEvaluate)}`); |
| } catch (exception) { |
| testPassed(`${scriptToEvaluate} rejected with ${exception}`); |
| } |
| } |
| |
| async function runTest() |
| { |
| description("Tests the interfaces of the async clipboard API, which include Clipboard, ClipboardItem, and extensions to Navigator."); |
| |
| debug("\nTesting Clipboard:"); |
| shouldBeTrue("Clipboard instanceof Function"); |
| shouldBeEqualToString("typeof Clipboard", "function"); |
| shouldBeTrue("navigator.clipboard instanceof Clipboard"); |
| shouldBeTrue("Object.getPrototypeOf(navigator.clipboard) === Clipboard.prototype"); |
| shouldBeTrue("Clipboard.prototype.readText instanceof Function"); |
| shouldBeTrue("Clipboard.prototype.writeText instanceof Function"); |
| shouldBeTrue("Clipboard.prototype.read instanceof Function"); |
| shouldBeTrue("Clipboard.prototype.write instanceof Function"); |
| shouldThrow("Clipboard()"); |
| shouldThrow("new Clipboard()"); |
| shouldBeEqualToString("Clipboard.toString()", "function Clipboard() {\n [native code]\n}"); |
| shouldBeEqualToString("navigator.clipboard.toString()", "[object Clipboard]"); |
| shouldBeTrue("navigator.clipboard.writeText('foo') instanceof Promise"); |
| shouldBeTrue("navigator.clipboard.write([ ]) instanceof Promise"); |
| shouldBeTrue("navigator.clipboard.read() instanceof Promise"); |
| shouldBeTrue("navigator.clipboard.readText() instanceof Promise"); |
| await shouldReject("navigator.clipboard.write()"); |
| await shouldReject("navigator.clipboard.writeText()"); |
| await shouldReject("navigator.clipboard.write('foo')"); |
| await shouldReject("navigator.clipboard.write([1, 2, 3])"); |
| await shouldReject("navigator.clipboard.write(new ClipboardItem({ }))"); |
| |
| debug("\nTesting ClipboardItem:"); |
| shouldBeTrue("ClipboardItem instanceof Function"); |
| shouldBeEqualToString("typeof ClipboardItem", "function"); |
| shouldBeTrue("ClipboardItem.prototype.getType instanceof Function"); |
| shouldThrow("ClipboardItem()"); |
| shouldThrow("new ClipboardItem()"); |
| shouldThrow("new ClipboardItem('foo')"); |
| shouldBeTrue("new ClipboardItem({ }) instanceof ClipboardItem"); |
| shouldBeTrue("Object.getPrototypeOf(new ClipboardItem({ })) === ClipboardItem.prototype"); |
| shouldBeTrue("new ClipboardItem({ }).types instanceof Array"); |
| shouldBeEqualToString("ClipboardItem.toString()", "function ClipboardItem() {\n [native code]\n}"); |
| shouldBeEqualToString("new ClipboardItem({ }).toString()", "[object ClipboardItem]"); |
| shouldBeEqualToString("new ClipboardItem({ }, { foo: 'attachment' }).presentationStyle", "unspecified"); |
| shouldThrow("new ClipboardItem({ }, { presentationStyle: 'AttaCHmenT' }).presentationStyle"); |
| shouldBeEqualToString("new ClipboardItem({ }, { presentationStyle: 'unspecified' }).presentationStyle", "unspecified"); |
| shouldBeEqualToString("new ClipboardItem({ }, { presentationStyle: 'attachment' }).presentationStyle", "attachment"); |
| shouldBeEqualToString("new ClipboardItem({ }, { presentationStyle: 'inline' }).presentationStyle", "inline"); |
| shouldThrow("new ClipboardItem({ }, 'inline')"); |
| |
| finishJSTest(); |
| } |
| </script> |
| <body onload=runTest()></body> |
| </html> |