Bug 1652741 [wpt PR 24587] - [webnfc] Do not support multiple scans on the same reader., a=testonly

Automatic update from web-platform-tests
[webnfc] Do not support multiple scans on the same reader.

We added support for multiple scan invocations on the same Reader in
this CL https://chromium-review.googlesource.com/c/chromium/src/+/2145263

Since Origin Trials feedback was to remove Filtering,
spec : https://github.com/w3c/web-nfc/pull/565
WIP CL : https://chromium-review.googlesource.com/c/chromium/src/+/2225770/
we tried to reason if in a world without filtering, multiple scans on
the same Reader is needed at all. The present thinking is to simply
reject scan promise when there's already an ongoing scan.

Spec discussions: https://github.com/w3c/web-nfc/issues/592

Bug: 520391
Change-Id: Ic50873ddc30351cec6656ac7b030394dc9fa18ea
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2297559
Commit-Queue: Rijubrata Bhaumik <rijubrata.bhaumik@intel.com>
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#790438}

--

wpt-commits: 5f51831e18a9fd911c5d0dd43349b65cadcc3e2f
wpt-pr: 24587
This commit is contained in:
Rijubrata Bhaumik 2020-07-22 20:03:32 +00:00 коммит произвёл moz-wptsync-bot
Родитель 959e7b2259
Коммит db8de0e61c
2 изменённых файлов: 15 добавлений и 75 удалений

Просмотреть файл

@ -284,4 +284,19 @@ nfc_test(async (t, mockNFC) => {
await promise;
}, "Test that reading message with multiple records should succeed.");
nfc_test(async (t, mockNFC) => {
const reader = new NDEFReader();
const promise1 = reader.scan();
const promise2 = promise_rejects_dom(t, 'InvalidStateError', reader.scan());
await promise1;
await promise2;
}, "Test that NDEFReader.scan rejects if there is already an ongoing scan.");
nfc_test(async (t, mockNFC) => {
const reader = new NDEFReader();
const controller = new AbortController();
await reader.scan({signal : controller.signal});
controller.abort();
await reader.scan();
}, "Test that NDEFReader.scan can be started after the previous scan is aborted.");
</script>

Просмотреть файл

@ -162,79 +162,4 @@ for (let multiMessagesTest of multiMessagesTests) {
);
}
nfc_test(async (t, mockNFC) => {
const reader = new NDEFReader();
const controller = new AbortController();
const signal = controller.signal;
const textMsg = createMessage([createTextRecord(test_text_data)]);
const urlMsg = createMessage([createUrlRecord(test_url_data)]);
const mimeMsg = createMessage([createMimeRecord(test_buffer_data)]);
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
const promise = readerWatcher.wait_for("reading").then(event => {
controller.abort();
assertWebNDEFMessagesEqual(event.message, new NDEFMessage(mimeMsg));
});
const scanOptions1 = {recordType: "text", signal: signal};
const scanOptions2 = {recordType: "url", signal: signal};
const scanOptions3 = {recordType: "mime", signal: signal};
await reader.scan(scanOptions1);
await reader.scan(scanOptions2);
// There is maximum one filter for an NDEFReader object,
// last filter will replace all previous ones.
await reader.scan(scanOptions3);
mockNFC.setReadingMessage(textMsg);
mockNFC.setReadingMessage(urlMsg);
mockNFC.setReadingMessage(mimeMsg);
await promise;
}, "Multiple scan() from the same NDEFReader object with new options should \
replace existing filters.");
nfc_test(async (t, mockNFC) => {
const reader = new NDEFReader();
const controller1 = new AbortController();
const controller2 = new AbortController();
const urlMsg = createMessage([createUrlRecord(test_url_data)]);
const mimeMsg = createMessage([createMimeRecord(test_buffer_data)]);
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
const promise = readerWatcher.wait_for("reading").then(event => {
assertWebNDEFMessagesEqual(event.message, new NDEFMessage(mimeMsg));
controller2.abort();
});
const scanOptions1 = {recordType: "url", signal: controller1.signal};
const scanOptions2 = {recordType: "mime", signal: controller2.signal};
// There is maximum one filter for an NDEFReader object,
// last filter will replace all previous ones.
await reader.scan(scanOptions1);
await reader.scan(scanOptions2);
mockNFC.setReadingMessage(urlMsg);
controller1.abort();
mockNFC.setReadingMessage(mimeMsg);
await promise;
}, "Aborting on previous signal should not stop current reading for multiple \
scan() with different signals.");
nfc_test(async (t, mockNFC) => {
const reader = new NDEFReader();
const controller = new AbortController();
const scanOptions1 = {recordType: "url", signal: controller.signal };
const scanOptions2 = {recordType: "mime"};
await reader.scan(scanOptions1);
const promise = reader.scan(scanOptions2);
controller.abort();
await promise_rejects_dom(t, 'AbortError', promise);
}, "Aborting on previous signal can stop current reading if no new signals \
passed to successive scan().");
</script>