зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
959e7b2259
Коммит
db8de0e61c
|
@ -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>
|
||||
|
|
Загрузка…
Ссылка в новой задаче