зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1532248 [wpt PR 15609] - Async Clipboard: Read/Write Blob->sequence<Blob>, a=testonly
Automatic update from web-platform-tests Async Clipboard: Read/Write Blob->sequence<Blob> - read(Blob) updated to read(sequence<Blob>). - write() returns sequence<Blob> instead of Blob now. - All available and valid types are returned in read() or allowed for write(). - Tests updated and added for these API changes. Also: - Updated header file function ordering. - Duplicate MIME types not allowed on write (consistent w/existing clipboard). Bug: 150835 Change-Id: I5b08e648a5313222552757dfa6fa0db6a7e46f68 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1471492 Commit-Queue: Darwin Huang <huangdarwin@chromium.org> Reviewed-by: Victor Costan <pwnall@chromium.org> Cr-Commit-Position: refs/heads/master@{#638905} -- wpt-commits: 3eb820dcc7cc5255f7182080caf9bd56f04d3cc2 wpt-pr: 15609
This commit is contained in:
Родитель
da46e66a24
Коммит
1f81a8ba21
|
@ -11,32 +11,25 @@ test(() => {
|
|||
assert_equals(navigator.clipboard, navigator.clipboard);
|
||||
}, "navigator.clipboard exists");
|
||||
|
||||
/* clipboard.write(text/plain Blob) */
|
||||
|
||||
promise_test(async () => {
|
||||
const blob = new Blob(["hello"], {type: 'text/plain'});
|
||||
await navigator.clipboard.write(blob);
|
||||
}, "navigator.clipboard.write(text/plain Blob) succeeds");
|
||||
|
||||
/* clipboard.write(invalid input) */
|
||||
await navigator.clipboard.write([blob]);
|
||||
}, "navigator.clipboard.write([text/plain Blob]) succeeds");
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects(t, new TypeError(),
|
||||
navigator.clipboard.write());
|
||||
}, "navigator.clipboard.write() fails (expect Blob)");
|
||||
}, "navigator.clipboard.write() fails (expect [Blob])");
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects(t, new TypeError(),
|
||||
navigator.clipboard.write(null));
|
||||
}, "navigator.clipboard.write(null) fails (expect Blob)");
|
||||
}, "navigator.clipboard.write(null) fails (expect [Blob])");
|
||||
|
||||
promise_test(async t => {
|
||||
await promise_rejects(t, new TypeError(),
|
||||
navigator.clipboard.write("Bad string"));
|
||||
}, "navigator.clipboard.write(DOMString) fails (expect Blob)");
|
||||
|
||||
|
||||
/* clipboard.writeText() */
|
||||
}, "navigator.clipboard.write(DOMString) fails (expect [Blob])");
|
||||
|
||||
promise_test(async () => {
|
||||
await navigator.clipboard.writeText("New clipboard text");
|
||||
|
@ -47,27 +40,21 @@ promise_test(async t => {
|
|||
navigator.clipboard.writeText());
|
||||
}, "navigator.clipboard.writeText() fails (expect DOMString)");
|
||||
|
||||
/* clipboard.write(image/png Blob) */
|
||||
|
||||
promise_test(async () => {
|
||||
const fetched = await fetch(
|
||||
'http://localhost:8001/clipboard-apis/resources/greenbox.png');
|
||||
const image = await fetched.blob();
|
||||
|
||||
await navigator.clipboard.write(image);
|
||||
}, "navigator.clipboard.write(image/png Blob) succeeds");
|
||||
|
||||
/* text/plain or image/png Blob clipboard.read() */
|
||||
await navigator.clipboard.write([image]);
|
||||
}, "navigator.clipboard.write([image/png Blob]) succeeds");
|
||||
|
||||
promise_test(async () => {
|
||||
const result = await navigator.clipboard.read();
|
||||
assert_true(result instanceof Blob);
|
||||
assert_true(result instanceof Array);
|
||||
assert_true(result[0] instanceof Blob);
|
||||
assert_equals(typeof result, "object");
|
||||
}, "navigator.clipboard.read() succeeds");
|
||||
|
||||
|
||||
/* clipboard.readText() */
|
||||
|
||||
promise_test(async () => {
|
||||
const result = await navigator.clipboard.readText();
|
||||
assert_equals(typeof result, "string");
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>
|
||||
Async Clipboard write blobs -> read blobs tests
|
||||
</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<script>
|
||||
async function loadBlob(fileName) {
|
||||
const fetched = await fetch(fileName);
|
||||
return await fetched.blob();
|
||||
}
|
||||
|
||||
promise_test(async t => {
|
||||
const blobText = new Blob(["test text"], {type: 'text/plain'});
|
||||
const blobImage = await loadBlob('resources/greenbox.png');
|
||||
|
||||
assert_equals(blobText.type, "text/plain");
|
||||
assert_equals(blobImage.type, "image/png");
|
||||
|
||||
await navigator.clipboard.write([blobText, blobImage]);
|
||||
const output = await navigator.clipboard.read();
|
||||
|
||||
assert_equals(output.length, 2);
|
||||
assert_equals(output[0].type, "text/plain");
|
||||
assert_equals(output[1].type, "image/png");
|
||||
}, "Verify write and read clipboard (multiple blobs)");
|
||||
</script>
|
||||
<p>
|
||||
Note: This is a manual test because it writes/reads to the shared system
|
||||
clipboard and thus cannot be run async with other tests that might interact
|
||||
with the clipboard.
|
||||
</p>
|
|
@ -1,6 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Async Clipboard write (text/plain Blob) -> read (text/plain Blob) tests</title>
|
||||
<title>
|
||||
Async Clipboard write ([text/plain Blob]) -> read ([text/plain Blob]) tests
|
||||
</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
@ -8,8 +10,10 @@ async function readWriteTest(textInput) {
|
|||
promise_test(async t => {
|
||||
const blobInput = new Blob([textInput], {type: 'text/plain'});
|
||||
|
||||
await navigator.clipboard.write(blobInput);
|
||||
const blobOutput = await navigator.clipboard.read();
|
||||
await navigator.clipboard.write([blobInput]);
|
||||
const blobsOutput = await navigator.clipboard.read();
|
||||
assert_equals(blobsOutput.length, 1);
|
||||
const blobOutput = blobsOutput[0];
|
||||
assert_equals(blobOutput.type, "text/plain");
|
||||
|
||||
const textOutput = await (new Response(blobOutput)).text();
|
||||
|
@ -17,7 +21,7 @@ async function readWriteTest(textInput) {
|
|||
}, "Verify write and read clipboard given text: " + textInput);
|
||||
}
|
||||
|
||||
readWriteTest("Clipboard write (text/plain Blob) -> read (text/plain Blob) test");
|
||||
readWriteTest("Clipboard write ([text/plain Blob]) -> read ([text/plain Blob]) test");
|
||||
readWriteTest("non-Latin1 text encoding test データ");
|
||||
</script>
|
||||
<p>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Async Clipboard write (text/plain Blob) -> readText tests</title>
|
||||
<title>Async Clipboard write ([text/plain Blob]) -> readText tests</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
|
@ -8,14 +8,14 @@ async function readWriteTest(textInput) {
|
|||
promise_test(async t => {
|
||||
const blobInput = new Blob([textInput], {type: 'text/plain'});
|
||||
|
||||
await navigator.clipboard.write(blobInput);
|
||||
await navigator.clipboard.write([blobInput]);
|
||||
const textOutput = await navigator.clipboard.readText();
|
||||
|
||||
assert_equals(textOutput, textInput);
|
||||
}, "Verify write and read clipboard given text: " + textInput);
|
||||
}
|
||||
|
||||
readWriteTest("Clipboard write (text/plain Blob) -> read text test");
|
||||
readWriteTest("Clipboard write ([text/plain Blob]) -> read text test");
|
||||
readWriteTest("non-Latin1 text encoding test データ");
|
||||
</script>
|
||||
<p>
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>
|
||||
Async Clipboard write duplicate mime type test
|
||||
</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
||||
<script>
|
||||
promise_test(async t => {
|
||||
const blobText = new Blob(["test text"], {type: 'text/plain'});
|
||||
const blobText2 = new Blob(["test text"], {type: 'text/plain'});
|
||||
|
||||
assert_equals(blobText.type, "text/plain");
|
||||
assert_equals(blobText2.type, "text/plain");
|
||||
|
||||
|
||||
await promise_rejects(t, 'NotAllowedError',
|
||||
navigator.clipboard.write([blobText, blobText2]));
|
||||
}, "Verify write and read clipboard (multiple blobs)");
|
||||
</script>
|
||||
<p>
|
||||
Note: This is a manual test because it writes/reads to the shared system
|
||||
clipboard and thus cannot be run async with other tests that might interact
|
||||
with the clipboard.
|
||||
</p>
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>
|
||||
Async Clipboard write image/png Blob -> read image/png Blob tests
|
||||
Async Clipboard write [image/png Blob] -> read [image/png Blob] tests
|
||||
</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
|
@ -37,21 +37,23 @@ async function loadBlob(fileName) {
|
|||
}
|
||||
|
||||
promise_test(async t => {
|
||||
const input = await loadBlob('resources/greenbox.png');
|
||||
const blobInput = await loadBlob('resources/greenbox.png');
|
||||
|
||||
assert_equals(input.type, "image/png");
|
||||
await navigator.clipboard.write(input);
|
||||
const output = await navigator.clipboard.read();
|
||||
assert_equals(output.type, "image/png");
|
||||
assert_equals(blobInput.type, "image/png");
|
||||
await navigator.clipboard.write([blobInput]);
|
||||
const blobsOutput = await navigator.clipboard.read();
|
||||
assert_equals(blobsOutput.length, 1);
|
||||
const blobOutput = blobsOutput[0];
|
||||
assert_equals(blobOutput.type, "image/png");
|
||||
|
||||
document.getElementById('image-on-clipboard').src =
|
||||
window.URL.createObjectURL(output);
|
||||
window.URL.createObjectURL(blobOutput);
|
||||
|
||||
const comparableInput = await getBitmapString(input);
|
||||
const comparableOutput = await getBitmapString(output);
|
||||
const comparableInput = await getBitmapString(blobInput);
|
||||
const comparableOutput = await getBitmapString(blobOutput);
|
||||
|
||||
assert_equals(comparableOutput, comparableInput);
|
||||
}, "Verify write and read clipboard (DOMString)");
|
||||
}, "Verify write and read clipboard ([image/png Blob])");
|
||||
</script>
|
||||
<p>
|
||||
Note: This is a manual test because it writes/reads to the shared system
|
||||
|
|
|
@ -1,13 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Async Clipboard writeText -> read (text/plain Blob) tests</title>
|
||||
<title>Async Clipboard writeText -> read ([text/plain Blob]) tests</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
async function readWriteTest(textInput) {
|
||||
promise_test(async t => {
|
||||
await navigator.clipboard.writeText(textInput);
|
||||
const blobOutput = await navigator.clipboard.read();
|
||||
const blobsOutput = await navigator.clipboard.read();
|
||||
assert_equals(blobsOutput.length, 1);
|
||||
const blobOutput = blobsOutput[0];
|
||||
assert_equals(blobOutput.type, "text/plain");
|
||||
|
||||
const textOutput = await (new Response(blobOutput)).text();
|
||||
|
@ -15,7 +17,7 @@ async function readWriteTest(textInput) {
|
|||
}, "Verify write and read clipboard given text: " + textInput);
|
||||
}
|
||||
|
||||
readWriteTest("Clipboard write text -> read (text/plain Blob) test");
|
||||
readWriteTest("Clipboard write text -> read ([text/plain Blob]) test");
|
||||
readWriteTest("non-Latin1 text encoding test データ");
|
||||
</script>
|
||||
<p>
|
||||
|
|
Загрузка…
Ссылка в новой задаче