| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> |
| <script src="file:///gen/services/device/public/mojom/nfc.mojom.js"></script> |
| <script src="resources/nfc-helpers.js"></script> |
| <script> |
| |
| 'use strict'; |
| |
| nfc_test(() => { |
| return navigator.nfc.watch(noop); |
| }, 'Test that nfc.watch succeeds if NFC hardware is enabled.'); |
| |
| nfc_test(() => { |
| mockNFC.setHWStatus(NFCHWStatus.DISABLED); |
| return assertRejectsWithError(navigator.nfc.watch(noop), 'NotSupportedError'); |
| }, 'Test that nfc.watch fails if NFC hardware is disabled.') |
| |
| nfc_test(() => { |
| mockNFC.setHWStatus(NFCHWStatus.NOT_SUPPORTED); |
| return assertRejectsWithError(navigator.nfc.watch(noop), 'NotSupportedError'); |
| }, 'Test that nfc.watch fails if NFC hardware is not supported.') |
| |
| nfc_test(async () => { |
| await navigator.nfc.watch(noop); |
| assertNFCWatchOptionsEqual(createNFCWatchOptions(), mockNFC.watchOptions()); |
| }, 'Test that default NFCWatchOptions values are set correctly.') |
| |
| nfc_test(async () => { |
| let watchOptions = createNFCWatchOptions(test_message_origin, 'json', |
| 'application/json', 'any'); |
| await navigator.nfc.watch(noop, watchOptions); |
| assertNFCWatchOptionsEqual(watchOptions, mockNFC.watchOptions()); |
| }, 'Test that NFCWatchOptions values are correctly converted.') |
| |
| nfc_test(() => { |
| return assertRejectsWithError(navigator.nfc.cancelWatch(1), 'NotFoundError'); |
| }, 'Test that nfc.cancelWatch fails if invalid watch ID is provided.') |
| |
| nfc_test(_=> { |
| return assertRejectsWithError(navigator.nfc.cancelWatch(), 'NotFoundError'); |
| }, 'Test that nfc.cancelWatch fails if there are no active watchers.') |
| |
| nfc_test(async () => { |
| let id = await navigator.nfc.watch(noop); |
| await navigator.nfc.cancelWatch(id); |
| }, 'Test that nfc.cancelWatch succeeds if correct watch id is provided.') |
| |
| nfc_test(async () => { |
| await navigator.nfc.watch(noop); |
| await navigator.nfc.cancelWatch(); |
| }, 'Test that nfc.cancelWatch succeeds if there are active watchers.') |
| |
| nfc_test(async () => { |
| let message = createMessage([createTextRecord(test_text_data), |
| createJsonRecord(test_json_data), |
| createOpaqueRecord(test_buffer_data), |
| createTextRecord(test_number_data), |
| createUrlRecord(test_url_data)], |
| test_message_origin); |
| let messageCallback; |
| let promise = new Promise(resolve => { |
| messageCallback = receivedMessage => { |
| assertWebNFCMessagesEqual(message, receivedMessage); |
| resolve(); |
| } |
| }); |
| |
| let id = await navigator.nfc.watch(messageCallback); |
| mockNFC.triggerWatchCallback(id, message); |
| return promise; |
| }, 'Test that watch callback is triggered with valid NFCMessage.'); |
| |
| nfc_test(() => { |
| return assertRejectsWithError(navigator.nfc.watch(noop, {url:"www.a.com"}), |
| 'SyntaxError'); |
| }, 'Test that nfc.watch fails if NFCWatchOptions.url is missing components.'); |
| |
| nfc_test(() => { |
| return assertRejectsWithError(navigator.nfc.watch(noop, {url:"invalid"}), |
| 'SyntaxError'); |
| }, 'Test that nfc.watch fails if NFCWatchOptions.url is invalid.'); |
| |
| nfc_test(() => { |
| return assertRejectsWithError(navigator.nfc.watch(noop, {url:"http://a.com"}), |
| 'SyntaxError'); |
| }, 'Test that nfc.watch fails if NFCWatchOptions.url has wrong protocol.'); |
| |
| nfc_test(() => { |
| return navigator.nfc.watch(noop, {url:"https://a.com"}); |
| }, 'Test that nfc.watch succeeds if NFCWatchOptions.url is valid URL.'); |
| |
| nfc_test(() => { |
| return navigator.nfc.watch(noop, {url:"https://a.com/*"}); |
| }, 'Test that nfc.watch succeeds if NFCWatchOptions.url is valid URL with "*"' + |
| ' wildcard character in path.'); |
| |
| nfc_test(() => { |
| return navigator.nfc.watch(noop, {url:"https://foo.com/*/bar"}); |
| }, 'Test that nfc.watch succeeds if NFCWatchOptions.url is valid URL with "*"' + |
| ' wildcard character in the beginning of path component followed by' + |
| ' subpath.'); |
| |
| nfc_test(() => { |
| return navigator.nfc.watch(noop, {url:""}); |
| }, 'Test that nfc.watch succeeds if NFCWatchOptions.url is empty.') |
| |
| </script> |