| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title> |
| Async Clipboard writeImageExperimental -> readImageExperimental tests |
| </title> |
| <script src="../../../resources/testharness.js"></script> |
| <script src="../../../resources/testharnessreport.js"></script> |
| <script src="../resources/permissions-helper.js"></script> |
| |
| <p> |
| <p>The bottom image should display the same image as the top image.</p> |
| <p>Original Image:</p> |
| <image id='image-to-copy' width='20' height='20' |
| src="resources/greenbox.png"></image> |
| <p>Image after copy/paste:</p> |
| <image id='image-on-clipboard'></image> |
| <canvas id='canvas' width='20' height='20'></canvas> |
| </p> |
| |
| <script> |
| // Must compare a bitmap as opposed to simply blob data, because an encoded |
| // image may have different contents depending on encoder. |
| async function getBitmapString(blob) { |
| const imageBitmap = await createImageBitmap(blob); |
| const canvas = document.getElementById('canvas'); |
| const ctx = canvas.getContext('2d'); |
| |
| ctx.drawImage(imageBitmap, 0,0); |
| |
| let imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); |
| ctx.clearRect(0, 0, canvas.width, canvas.height); |
| return imageData.data.toString(); |
| }; |
| |
| async function loadBlob(fileName) { |
| const fetched = await fetch(fileName); |
| return await fetched.blob(); |
| } |
| |
| promise_test(async t => { |
| await PermissionsHelper.setPermission('clipboard-read', 'granted'); |
| await PermissionsHelper.setPermission('clipboard-write', 'granted'); |
| |
| const input = await loadBlob('resources/greenbox.png'); |
| |
| await navigator.clipboard.writeImageExperimental(input); |
| const output = await navigator.clipboard.readImageExperimental(); |
| |
| document.getElementById('image-on-clipboard').src = |
| window.URL.createObjectURL(output); |
| |
| const comparableInput = await getBitmapString(input); |
| const comparableOutput = await getBitmapString(output); |
| |
| assert_equals(comparableOutput, comparableInput); |
| }, "Verify write and read clipboard (DOMString)"); |
| </script> |