blob: 6e20ebf44f78a752c65b3ab83774fe96075557bf [file] [log] [blame]
<!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/interfaces/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>