Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: third_party/WebKit/LayoutTests/nfc/push.html

Issue 1759373003: [webnfc] Implement nfc.watch in blink nfc module. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@implement_nfc_push_in_android
Patch Set: Rebased to master and improved tests Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script> 2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script> 3 <script src="../resources/testharnessreport.js"></script>
4 <script src="../resources/mojo-helpers.js"></script> 4 <script src="../resources/mojo-helpers.js"></script>
5 <script src="resources/nfc-helpers.js"></script> 5 <script src="resources/nfc-helpers.js"></script>
6 <script> 6 <script>
7 7
8 'use strict'; 8 'use strict';
9 9
10 const invalid_messages = 10 const invalid_messages =
11 [ 11 [
12 // NFCMessage.data: should have at least 1 valid record. 12 // NFCMessage.data: should have at least 1 valid record.
13 // https://w3c.github.io/web-nfc/#the-push-method - Step 8. 13 // https://w3c.github.io/web-nfc/#the-push-method - Step 8.
14 createMessage([{}]), 14 createMessage([{}]),
15 15
16 // https://w3c.github.io/web-nfc/#dfn-map-text-to-ndef 16 // https://w3c.github.io/web-nfc/#dfn-map-text-to-ndef
17 // NFCRecord must have data. 17 // NFCRecord must have data.
18 createMessage([createTextRecord()]), 18 createMessage([createTextRecord()]),
19 19
20 // NFCRecord.mediaType for 'text' record must be text/* . 20 // NFCRecord.mediaType for 'text' record must be 'text/*'.
21 createMessage([createRecord('text', 'application/json', 21 createMessage([createRecord('text', 'application/json',
22 test_number_data)]), 22 test_number_data)]),
23 23
24 // NFCRecord.data for 'text' record must be number or string. 24 // NFCRecord.data for 'text' record must be number or string.
25 createMessage([createTextRecord(test_buffer_data)]), 25 createMessage([createTextRecord(test_buffer_data)]),
26 createMessage([createTextRecord(test_json_data)]), 26 createMessage([createTextRecord(test_json_data)]),
27 27
28 // https://w3c.github.io/web-nfc/#dfn-map-a-json-object-to-ndef 28 // https://w3c.github.io/web-nfc/#dfn-map-a-json-object-to-ndef
29 // NFCRecord must have data. 29 // NFCRecord must have data.
30 createMessage([createJsonRecord()]), 30 createMessage([createJsonRecord()]),
(...skipping 18 matching lines...) Expand all
49 // https://w3c.github.io/web-nfc/#dfn-map-binary-data-to-ndef 49 // https://w3c.github.io/web-nfc/#dfn-map-binary-data-to-ndef
50 // NFCRecord must have data. 50 // NFCRecord must have data.
51 createMessage([createOpaqueRecord()]), 51 createMessage([createOpaqueRecord()]),
52 // NFCRecord.data for 'opaque' record must be ArrayBuffer. 52 // NFCRecord.data for 'opaque' record must be ArrayBuffer.
53 createMessage([createOpaqueRecord(test_text_data)]), 53 createMessage([createOpaqueRecord(test_text_data)]),
54 createMessage([createOpaqueRecord(test_number_data)]), 54 createMessage([createOpaqueRecord(test_number_data)]),
55 createMessage([createOpaqueRecord(test_json_data)]) 55 createMessage([createOpaqueRecord(test_json_data)])
56 ]; 56 ];
57 57
58 nfc_test(nfc => { 58 nfc_test(nfc => {
59 return promise_test(test => { 59 return assertRejectsWithError(navigator.nfc.push(undefined),
60 promise_rejects(test, 'TypeMismatchError', navigator.nfc.push(undefined)); 60 'TypeMismatchError');
61 }, 'Reject promise with TypeMismatchError if invalid type is provided.');
62 }, 'Test that passing undefined to nfc.push would raise TypeMismatchError.'); 61 }, 'Test that passing undefined to nfc.push would raise TypeMismatchError.');
63 62
64 nfc_test(nfc => { 63 nfc_test(nfc => {
65 let promises = []; 64 let promises = [];
66 invalid_messages.forEach(message => { 65 invalid_messages.forEach(message => {
67 promises.push(promise_test(test => { 66 promises.push(
68 promise_rejects(test, 'SyntaxError', navigator.nfc.push(message)); 67 assertRejectsWithError(navigator.nfc.push(message), 'SyntaxError'));
69 }, 'Promise rejected with SyntaxError.'));
70 }); 68 });
71 return Promise.all(promises) 69 return Promise.all(promises)
72 }, 'Test that promise is rejected with SyntaxError if NFCMessage is invalid.'); 70 }, 'Test that promise is rejected with SyntaxError if NFCMessage is invalid.');
73 71
74
75 nfc_test(nfc => { 72 nfc_test(nfc => {
76 nfc.mockNFC.setHWStatus(NFCHWStatus.DISABLED); 73 nfc.mockNFC.setHWStatus(NFCHWStatus.DISABLED);
77 return promise_test(test => { 74 return assertRejectsWithError(navigator.nfc.push(test_text_data),
78 promise_rejects(test, 'NotSupportedError', navigator.nfc.push(test_text_data )); 75 'NotSupportedError');
79 }, 'Promise rejected with NotSupportedError.');
80 }, 'nfc.push should fail when NFC HW is disabled.') 76 }, 'nfc.push should fail when NFC HW is disabled.')
81 77
82 nfc_test(nfc => { 78 nfc_test(nfc => {
83 nfc.mockNFC.setHWStatus(NFCHWStatus.NOT_SUPPORTED); 79 nfc.mockNFC.setHWStatus(NFCHWStatus.NOT_SUPPORTED);
84 return promise_test(test => { 80 return assertRejectsWithError(navigator.nfc.push(test_text_data),
85 promise_rejects(test, 'NotSupportedError', navigator.nfc.push(test_text_data )); 81 'NotSupportedError');
86 }, 'Promise rejected with NotSupportedError.');
87 }, 'nfc.push should fail when NFC HW is not supported.') 82 }, 'nfc.push should fail when NFC HW is not supported.')
88 83
89 nfc_test(nfc => { 84 nfc_test(nfc => {
90 return navigator.nfc.push(test_text_data, { timeout: 1 }); 85 return navigator.nfc.push(test_text_data, { timeout: 1 });
91 }, 'nfc.push should succeed when NFC HW is enabled'); 86 }, 'nfc.push should succeed when NFC HW is enabled');
92 87
93 nfc_test(nfc => { 88 nfc_test(nfc => {
94 nfc.mockNFC.setPendingPushCompleted(false); 89 nfc.mockNFC.setPendingPushCompleted(false);
95 return promise_test(test => { 90 return assertRejectsWithError(
96 promise_rejects(test, 'TimeoutError', 91 navigator.nfc.push(test_text_data,{ timeout: 1 }),
97 navigator.nfc.push(test_text_data,{ timeout: 1 })); 92 'TimeoutError');
98 }, 'Promise rejected with TimeoutError.');
99 }, 'nfc.push should fail with TimeoutError when push operation is not' + 93 }, 'nfc.push should fail with TimeoutError when push operation is not' +
100 ' completed before specified timeout value.') 94 ' completed before specified timeout value.')
101 95
102 nfc_test(nfc => { 96 nfc_test(nfc => {
103 let message = createMessage([createTextRecord(test_text_data), 97 let message = createMessage([createTextRecord(test_text_data),
104 createJsonRecord(test_json_data), 98 createJsonRecord(test_json_data),
105 createOpaqueRecord(test_buffer_data), 99 createOpaqueRecord(test_buffer_data),
106 createTextRecord(test_number_data), 100 createTextRecord(test_number_data),
107 createUrlRecord(test_url_data)], 101 createUrlRecord(test_url_data)],
108 test_message_origin); 102 test_message_origin);
109 return navigator.nfc.push(message).then(() => { 103 return navigator.nfc.push(message).then(() => {
110 nfc.assertNFCMessagesEqual(message, nfc.mockNFC.pushedMessage()); 104 nfc.assertNFCMessagesEqual(message, nfc.mockNFC.pushedMessage());
111 }); 105 });
112 }, 'nfc.push NFCMessage containing text, json, opaque and url records with defau lt ' 106 }, 'nfc.push NFCMessage containing text, json, opaque and url records with'
113 + 'NFCPushOptions.'); 107 + ' default NFCPushOptions.');
114 108
115 nfc_test(nfc => { 109 nfc_test(nfc => {
116 return navigator.nfc.push(test_text_data).then(() => { 110 return navigator.nfc.push(test_text_data).then(() => {
117 nfc.assertNFCMessagesEqual(test_text_data, nfc.mockNFC.pushedMessage()); 111 nfc.assertNFCMessagesEqual(test_text_data, nfc.mockNFC.pushedMessage());
118 }); 112 });
119 }, 'nfc.push String with default NFCPushOptions.'); 113 }, 'nfc.push String with default NFCPushOptions.');
120 114
121 nfc_test(nfc => { 115 nfc_test(nfc => {
122 return navigator.nfc.push(test_buffer_data).then(() => { 116 return navigator.nfc.push(test_buffer_data).then(() => {
123 nfc.assertNFCMessagesEqual(test_buffer_data, nfc.mockNFC.pushedMessage()); 117 nfc.assertNFCMessagesEqual(test_buffer_data, nfc.mockNFC.pushedMessage());
(...skipping 20 matching lines...) Expand all
144 }); 138 });
145 }, 'Push ArrayBuffer with default NFCPushOptions.'); 139 }, 'Push ArrayBuffer with default NFCPushOptions.');
146 140
147 nfc_test(nfc => { 141 nfc_test(nfc => {
148 return navigator.nfc.push(test_text_data) 142 return navigator.nfc.push(test_text_data)
149 .then(() => { navigator.nfc.cancelPush }); 143 .then(() => { navigator.nfc.cancelPush });
150 }, 'nfc.cancelPush should succeed if there is pending push operation.'); 144 }, 'nfc.cancelPush should succeed if there is pending push operation.');
151 145
152 nfc_test(nfc => { 146 nfc_test(nfc => {
153 nfc.mockNFC.setPendingPushCompleted(false); 147 nfc.mockNFC.setPendingPushCompleted(false);
154 return promise_test(test => {
155 promise_rejects(test, 'TimeoutError',
156 navigator.nfc.push(test_text_data,{ timeout: 1 }));
157 }, 'Promise rejected with TimeoutError.');
158 }, 'nfc.push should fail with TimeoutError when push operation is not' +
159 ' completed before specified timeout value.')
160
161 nfc_test(nfc => {
162 nfc.mockNFC.setPendingPushCompleted(false);
163 let promise = navigator.nfc.push(test_text_data, { timeout: 100 }); 148 let promise = navigator.nfc.push(test_text_data, { timeout: 100 });
164 navigator.nfc.cancelPush(); 149 navigator.nfc.cancelPush();
165 return promise_test(test => { 150 return assertRejectsWithError(promise, 'AbortError');
166 promise_rejects(test, 'AbortError', promise);
167 }, 'Promise rejected with AbortError.');
168 }, 'nfc.cancelPush should reject pending promise with AbortError.') 151 }, 'nfc.cancelPush should reject pending promise with AbortError.')
169 152
153 nfc_test(nfc => {
154 return assertRejectsWithError(
155 navigator.nfc.push(new ArrayBuffer(32 * 1024 + 1)),
156 'NotSupportedError');
157 }, 'Reject promise with NotSupportedError if NFC message size exceeds 32KB.');
158
170 </script> 159 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698