Index: third_party/WebKit/LayoutTests/nfc/resources/nfc-helpers.js |
diff --git a/third_party/WebKit/LayoutTests/nfc/resources/nfc-helpers.js b/third_party/WebKit/LayoutTests/nfc/resources/nfc-helpers.js |
deleted file mode 100644 |
index f7ca9763920ae71a1a41f1e43afde51b204ebe4f..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/LayoutTests/nfc/resources/nfc-helpers.js |
+++ /dev/null |
@@ -1,286 +0,0 @@ |
-'use strict'; |
- |
-var test_text_data = 'Test text data.'; |
-var test_text_byte_array = new TextEncoder('utf-8').encode(test_text_data); |
-var test_number_data = 42; |
-var test_json_data = {level: 1, score: 100, label: 'Game'}; |
-var test_url_data = 'https://w3c.github.io/web-nfc/'; |
-var test_message_origin = 'https://127.0.0.1:8443'; |
-var test_buffer_data = new ArrayBuffer(test_text_byte_array.length); |
-var test_buffer_view = new Uint8Array(test_buffer_data).set(test_text_byte_array); |
- |
-var NFCHWStatus = {}; |
-NFCHWStatus.ENABLED = 1; |
-NFCHWStatus.NOT_SUPPORTED = NFCHWStatus.ENABLED + 1; |
-NFCHWStatus.DISABLED = NFCHWStatus.NOT_SUPPORTED + 1; |
- |
-function createMessage(records) { |
- if (records !== undefined) { |
- let message = {} |
- message.data = records; |
- return message; |
- } |
-} |
- |
-function createRecord(recordType, mediaType, data) { |
- let record = {}; |
- if (recordType !== undefined) |
- record.recordType = recordType; |
- if (mediaType !== undefined) |
- record.mediaType = mediaType; |
- if (data !== undefined) |
- record.data = data; |
- return record; |
-} |
- |
-function createNFCPushOptions(target, timeout, ignoreRead) { |
- return { target, timeout, ignoreRead }; |
-} |
- |
-function createTextRecord(text) { |
- return createRecord('text', 'text/plain', text); |
-} |
- |
-function createJsonRecord(json) { |
- return createRecord('json', 'application/json', json); |
-} |
- |
-function createOpaqueRecord(buffer) { |
- return createRecord('opaque', 'application/octet-stream', buffer); |
-} |
- |
-function createUrlRecord(url) { |
- return createRecord('url', 'text/plain', url); |
-} |
- |
-function nfc_mocks(mojo) { |
- return define('NFC mocks', [ |
- 'mojo/public/js/bindings', |
- 'mojo/public/js/connection', |
- 'device/nfc/nfc.mojom', |
- ], (bindings, connection, nfc) => { |
- |
- function toMojoNFCRecordType(type) { |
- switch (type) { |
- case 'text': |
- return nfc.NFCRecordType.TEXT; |
- case 'url': |
- return nfc.NFCRecordType.URL; |
- case 'json': |
- return nfc.NFCRecordType.JSON; |
- case 'opaque': |
- return nfc.NFCRecordType.OPAQUE_RECORD; |
- } |
- |
- return nfc.NFCRecordType.EMPTY; |
- } |
- |
- function toMojoNFCPushTarget(target) { |
- switch (target) { |
- case 'any': |
- return nfc.NFCPushTarget.ANY; |
- case 'peer': |
- return nfc.NFCPushTarget.PEER; |
- case 'tag': |
- return nfc.NFCPushTarget.TAG; |
- } |
- |
- return nfc.NFCPushTarget.ANY; |
- } |
- |
- function toByteArray(data) { |
- // Convert JS objects to byte array |
- let byteArray; |
- let tmpData = data; |
- |
- if (tmpData instanceof ArrayBuffer) |
- byteArray = new Uint8Array(tmpData); |
- else if (typeof tmpData === 'object' || typeof tmpData === 'number') |
- tmpData = JSON.stringify(tmpData); |
- |
- if (typeof tmpData === 'string') |
- byteArray = new TextEncoder('utf-8').encode(tmpData); |
- |
- return byteArray; |
- } |
- |
- // Compares NFCMessage that was provided to the API |
- // (e.g. navigator.nfc.push), and NFCMessage that was received by the |
- // mock NFC service. |
- function assertNFCMessagesEqual(providedMessage, receivedMessage) { |
- // If simple data type is passed, e.g. String or ArrayBuffer, convert it |
- // to NFCMessage before comparing. |
- // https://w3c.github.io/web-nfc/#idl-def-nfcpushmessage |
- let provided = providedMessage; |
- if (providedMessage instanceof ArrayBuffer) |
- provided = createMessage([createOpaqueRecord(providedMessage)]); |
- else if (typeof providedMessage === 'string') |
- provided = createMessage([createTextRecord(providedMessage)]); |
- |
- assert_equals(provided.data.length, receivedMessage.data.length, |
- 'NFCMessages must have same number of NFCRecords'); |
- |
- // Compare contents of each individual NFCRecord |
- for (let i = 0; i < provided.data.length; ++i) |
- compareNFCRecords(provided.data[i], receivedMessage.data[i]); |
- } |
- |
- // Compares NFCRecords that were provided / received by the mock service. |
- function compareNFCRecords(providedRecord, receivedRecord) { |
- assert_equals(toMojoNFCRecordType(providedRecord.recordType), |
- receivedRecord.recordType); |
- |
- // Compare media types without charset. |
- // Charset should be compared when watch method is implemented, in order |
- // to check that written and read strings are equal. |
- assert_equals(providedRecord.mediaType, |
- receivedRecord.mediaType.substring(0, providedRecord.mediaType.length)); |
- |
- assert_false(toMojoNFCRecordType(providedRecord.recordType) == |
- nfc.NFCRecordType.EMPTY); |
- |
- assert_array_equals(toByteArray(providedRecord.data), |
- new Uint8Array(receivedRecord.data)); |
- } |
- |
- // Compares NFCPushOptions structures that were provided to API and |
- // received by the mock mojo service. |
- function assertNFCPushOptionsEqual(provided, received) { |
- if (provided.ignoreRead !== undefined) |
- assert_equals(provided.ignoreRead, !!+received.ignoreRead); |
- else |
- assert_equals(!!+received.ignoreRead, true); |
- |
- if (provided.timeout !== undefined) |
- assert_equals(provided.timeout, received.timeout); |
- else |
- assert_equals(received.timeout, Infinity); |
- |
- if (provided.target !== undefined) |
- assert_equals(toMojoNFCPushTarget(provided.target), received.target); |
- else |
- assert_equals(received.target, nfc.NFCPushTarget.ANY); |
- } |
- |
- function createNFCError(type) { |
- return { error: type ? |
- new nfc.NFCError({ error_type: type }) : null }; |
- } |
- |
- class MockNFC { |
- constructor() { |
- this.hw_status_ = NFCHWStatus.ENABLED; |
- this.pushed_message_ = null; |
- this.push_options_ = null; |
- this.pending_promise_func_ = null; |
- this.push_timeout_id_ = null; |
- this.push_completed_ = true; |
- } |
- |
- // NFC.stubClass delegate functions |
- push(message, options) { |
- let error = this.isReady(); |
- if (error) |
- return Promise.resolve(error); |
- |
- this.pushed_message_ = message; |
- this.push_options_ = options; |
- |
- return new Promise((resolve, reject) => { |
- this.pending_promise_func_ = resolve; |
- if (options.timeout && options.timeout !== Infinity && |
- !this.push_completed_) { |
- this.push_timeout_id_ = |
- window.setTimeout(() => { |
- resolve(createNFCError(nfc.NFCErrorType.TIMER_EXPIRED)); |
- }, options.timeout); |
- } else { |
- resolve(createNFCError(null)); |
- } |
- }); |
- } |
- |
- cancelPush(target) { |
- if (this.push_options_ && ((target === nfc.NFCPushTarget.ANY) || |
- (this.push_options_.target === target))) { |
- this.cancelPendingPushOperation(); |
- } |
- |
- return Promise.resolve(createNFCError(null)); |
- } |
- |
- // Mock utility functions |
- bindToPipe(pipe) { |
- this.stub_ = connection.bindHandleToStub( |
- pipe, nfc.NFC); |
- bindings.StubBindings(this.stub_).delegate = this; |
- } |
- |
- isReady() { |
- if (this.hw_status_ === NFCHWStatus.DISABLED) |
- return createNFCError(nfc.NFCErrorType.DEVICE_DISABLED); |
- if (this.hw_status_ === NFCHWStatus.NOT_SUPPORTED) |
- return createNFCError(nfc.NFCErrorType.NOT_SUPPORTED); |
- return null; |
- } |
- |
- setHWStatus(status) { |
- this.hw_status_ = status; |
- } |
- |
- pushedMessage() { |
- return this.pushed_message_; |
- } |
- |
- pushOptions() { |
- return this.push_options_; |
- } |
- |
- setPendingPushCompleted(result) { |
- this.push_completed_ = result; |
- } |
- |
- reset() { |
- this.hw_status_ = NFCHWStatus.ENABLED; |
- this.push_completed_ = true; |
- this.cancelPendingPushOperation(); |
- } |
- |
- cancelPendingPushOperation() { |
- if (this.push_timeout_id_) { |
- window.clearTimeout(this.push_timeout_id_); |
- } |
- |
- if (this.pending_promise_func_) { |
- this.pending_promise_func_(createNFCError(nfc.NFCErrorType.OPERATION_CANCELLED)); |
- } |
- |
- this.pushed_message_ = null; |
- this.push_options_ = null; |
- this.pending_promise_func_ = null; |
- } |
- } |
- |
- let mockNFC = new MockNFC; |
- mojo.frameServiceRegistry.addServiceOverrideForTesting( |
- nfc.NFC.name, |
- pipe => { |
- mockNFC.bindToPipe(pipe); |
- }); |
- |
- return Promise.resolve({ |
- mockNFC: mockNFC, |
- assertNFCMessagesEqual: assertNFCMessagesEqual, |
- assertNFCPushOptionsEqual: assertNFCPushOptionsEqual, |
- }); |
- }); |
-} |
- |
-function nfc_test(func, name, properties) { |
- mojo_test(mojo => nfc_mocks(mojo).then(nfc => { |
- let result = Promise.resolve(func(nfc)); |
- let cleanUp = () => nfc.mockNFC.reset(); |
- result.then(cleanUp, cleanUp); |
- return result; |
- }), name, properties); |
-} |