Best JavaScript code snippet using wpt
nfc-mock.js
Source:nfc-mock.js
1import {NDEFErrorType, NDEFRecordTypeCategory, NFC, NFCReceiver} from '/gen/services/device/public/mojom/nfc.mojom.m.js';2// Converts between NDEFMessageInit https://w3c.github.io/web-nfc/#dom-ndefmessage3// and mojom.NDEFMessage structure, so that watch function can be tested.4function toMojoNDEFMessage(message) {5 let ndefMessage = {data: []};6 for (let record of message.records) {7 ndefMessage.data.push(toMojoNDEFRecord(record));8 }9 return ndefMessage;10}11function toMojoNDEFRecord(record) {12 let nfcRecord = {};13 // Simply checks the existence of ':' to decide whether it's an external14 // type or a local type. As a mock, no need to really implement the validation15 // algorithms for them.16 if (record.recordType.startsWith(':')) {17 nfcRecord.category = NDEFRecordTypeCategory.kLocal;18 } else if (record.recordType.search(':') != -1) {19 nfcRecord.category = NDEFRecordTypeCategory.kExternal;20 } else {21 nfcRecord.category = NDEFRecordTypeCategory.kStandardized;22 }23 nfcRecord.recordType = record.recordType;24 nfcRecord.mediaType = record.mediaType;25 nfcRecord.id = record.id;26 if (record.recordType == 'text') {27 nfcRecord.encoding = record.encoding == null? 'utf-8': record.encoding;28 nfcRecord.lang = record.lang == null? 'en': record.lang;29 }30 nfcRecord.data = toByteArray(record.data);31 if (record.data != null && record.data.records !== undefined) {32 // |record.data| may be an NDEFMessageInit, i.e. the payload is a message.33 nfcRecord.payloadMessage = toMojoNDEFMessage(record.data);34 }35 return nfcRecord;36}37// Converts JS objects to byte array.38function toByteArray(data) {39 if (data instanceof ArrayBuffer)40 return new Uint8Array(data);41 else if (ArrayBuffer.isView(data))42 return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);43 let byteArray = new Uint8Array(0);44 let tmpData = data;45 if (typeof tmpData === 'object' || typeof tmpData === 'number')46 tmpData = JSON.stringify(tmpData);47 if (typeof tmpData === 'string')48 byteArray = new TextEncoder('utf-8').encode(tmpData);49 return byteArray;50}51// Compares NDEFRecords that were provided / received by the mock service.52// TODO: Use different getters to get received record data,53// see spec changes at https://github.com/w3c/web-nfc/pull/243.54self.compareNDEFRecords = function(providedRecord, receivedRecord) {55 assert_equals(providedRecord.recordType, receivedRecord.recordType);56 if (providedRecord.id === undefined) {57 assert_equals(null, receivedRecord.id);58 } else {59 assert_equals(providedRecord.id, receivedRecord.id);60 }61 if (providedRecord.mediaType === undefined) {62 assert_equals(null, receivedRecord.mediaType);63 } else {64 assert_equals(providedRecord.mediaType, receivedRecord.mediaType);65 }66 assert_not_equals(providedRecord.recordType, 'empty');67 if (providedRecord.recordType == 'text') {68 assert_equals(69 providedRecord.encoding == null? 'utf-8': providedRecord.encoding,70 receivedRecord.encoding);71 assert_equals(providedRecord.lang == null? 'en': providedRecord.lang,72 receivedRecord.lang);73 } else {74 assert_equals(null, receivedRecord.encoding);75 assert_equals(null, receivedRecord.lang);76 }77 assert_array_equals(toByteArray(providedRecord.data),78 new Uint8Array(receivedRecord.data));79}80// Compares NDEFWriteOptions structures that were provided to API and81// received by the mock mojo service.82self.assertNDEFWriteOptionsEqual = function(provided, received) {83 if (provided.overwrite !== undefined)84 assert_equals(provided.overwrite, !!received.overwrite);85 else86 assert_equals(!!received.overwrite, true);87}88// Compares NDEFReaderOptions structures that were provided to API and89// received by the mock mojo service.90self.assertNDEFReaderOptionsEqual = function(provided, received) {91 if (provided.url !== undefined)92 assert_equals(provided.url, received.url);93 else94 assert_equals(received.url, '');95 if (provided.mediaType !== undefined)96 assert_equals(provided.mediaType, received.mediaType);97 else98 assert_equals(received.mediaType, '');99 if (provided.recordType !== undefined) {100 assert_equals(provided.recordType, received.recordType);101 }102}103function createNDEFError(type) {104 return {error: (type != null ? {errorType: type, errorMessage: ''} : null)};105}106self.WebNFCTest = (() => {107 class MockNFC {108 constructor() {109 this.receiver_ = new NFCReceiver(this);110 this.interceptor_ = new MojoInterfaceInterceptor(NFC.$interfaceName);111 this.interceptor_.oninterfacerequest = e => {112 if (this.should_close_pipe_on_request_)113 e.handle.close();114 else115 this.receiver_.$.bindHandle(e.handle);116 }117 this.interceptor_.start();118 this.hw_status_ = NFCHWStatus.ENABLED;119 this.pushed_message_ = null;120 this.pending_write_options_ = null;121 this.pending_promise_func_ = null;122 this.push_completed_ = true;123 this.client_ = null;124 this.watchers_ = [];125 this.reading_messages_ = [];126 this.operations_suspended_ = false;127 this.is_formatted_tag_ = false;128 this.data_transfer_failed_ = false;129 this.should_close_pipe_on_request_ = false;130 }131 // NFC delegate functions.132 async push(message, options) {133 let error = this.getHWError();134 if (error)135 return error;136 // Cancels previous pending push operation.137 if (this.pending_promise_func_) {138 this.cancelPendingPushOperation();139 }140 this.pushed_message_ = message;141 this.pending_write_options_ = options;142 return new Promise(resolve => {143 if (this.operations_suspended_ || !this.push_completed_) {144 // Leaves the push pending.145 this.pending_promise_func_ = resolve;146 } else if (this.is_formatted_tag_ && !options.overwrite) {147 // Resolves with NotAllowedError if there are NDEF records on the device148 // and overwrite is false.149 resolve(createNDEFError(NDEFErrorType.NOT_ALLOWED));150 } else if (this.data_transfer_failed_) {151 // Resolves with NetworkError if data transfer fails.152 resolve(createNDEFError(NDEFErrorType.IO_ERROR));153 } else {154 resolve(createNDEFError(null));155 }156 });157 }158 async cancelPush() {159 this.cancelPendingPushOperation();160 return createNDEFError(null);161 }162 setClient(client) {163 this.client_ = client;164 }165 async watch(id) {166 assert_true(id > 0);167 let error = this.getHWError();168 if (error) {169 return error;170 }171 this.watchers_.push({id: id});172 // Ignores reading if NFC operation is suspended173 // or the NFC tag does not expose NDEF technology.174 if (!this.operations_suspended_) {175 // Triggers onWatch if the new watcher matches existing messages.176 for (let message of this.reading_messages_) {177 this.client_.onWatch(178 [id], fake_tag_serial_number, toMojoNDEFMessage(message));179 }180 }181 return createNDEFError(null);182 }183 cancelWatch(id) {184 let index = this.watchers_.findIndex(value => value.id === id);185 if (index !== -1) {186 this.watchers_.splice(index, 1);187 }188 }189 getHWError() {190 if (this.hw_status_ === NFCHWStatus.DISABLED)191 return createNDEFError(NDEFErrorType.NOT_READABLE);192 if (this.hw_status_ === NFCHWStatus.NOT_SUPPORTED)193 return createNDEFError(NDEFErrorType.NOT_SUPPORTED);194 return null;195 }196 setHWStatus(status) {197 this.hw_status_ = status;198 }199 pushedMessage() {200 return this.pushed_message_;201 }202 writeOptions() {203 return this.pending_write_options_;204 }205 watchOptions() {206 assert_not_equals(this.watchers_.length, 0);207 return this.watchers_[this.watchers_.length - 1].options;208 }209 setPendingPushCompleted(result) {210 this.push_completed_ = result;211 }212 reset() {213 this.hw_status_ = NFCHWStatus.ENABLED;214 this.watchers_ = [];215 this.reading_messages_ = [];216 this.operations_suspended_ = false;217 this.cancelPendingPushOperation();218 this.is_formatted_tag_ = false;219 this.data_transfer_failed_ = false;220 this.should_close_pipe_on_request_ = false;221 }222 cancelPendingPushOperation() {223 if (this.pending_promise_func_) {224 this.pending_promise_func_(225 createNDEFError(NDEFErrorType.OPERATION_CANCELLED));226 this.pending_promise_func_ = null;227 }228 this.pushed_message_ = null;229 this.pending_write_options_ = null;230 this.push_completed_ = true;231 }232 // Sets message that is used to deliver NFC reading updates.233 setReadingMessage(message) {234 this.reading_messages_.push(message);235 // Ignores reading if NFC operation is suspended.236 if(this.operations_suspended_) return;237 // when overwrite is false, the write algorithm will read the NFC tag238 // to determine if it has NDEF records on it.239 if (this.pending_write_options_ && this.pending_write_options_.overwrite)240 return;241 // Triggers onWatch if the new message matches existing watchers.242 for (let watcher of this.watchers_) {243 this.client_.onWatch(244 [watcher.id], fake_tag_serial_number,245 toMojoNDEFMessage(message));246 }247 }248 // Suspends all pending NFC operations. Could be used when web page249 // visibility is lost.250 suspendNFCOperations() {251 this.operations_suspended_ = true;252 }253 // Resumes all suspended NFC operations.254 resumeNFCOperations() {255 this.operations_suspended_ = false;256 // Resumes pending NFC reading.257 for (let watcher of this.watchers_) {258 for (let message of this.reading_messages_) {259 this.client_.onWatch(260 [watcher.id], fake_tag_serial_number,261 toMojoNDEFMessage(message));262 }263 }264 // Resumes pending push operation.265 if (this.pending_promise_func_ && this.push_completed_) {266 this.pending_promise_func_(createNDEFError(null));267 this.pending_promise_func_ = null;268 }269 }270 // Simulates the device coming in proximity does not expose NDEF technology.271 simulateNonNDEFTagDiscovered() {272 // Notify NotSupportedError to all active readers.273 if (this.watchers_.length != 0) {274 this.client_.onError({275 errorType: NDEFErrorType.NOT_SUPPORTED,...
Using AI Code Generation
1var wptoolkit = require("wptoolkit");2var ndefMessage = wptoolkit.toMojoNDEFMessage([{3}]);4console.log(ndefMessage);5 var wptoolkit = require("wptoolkit");6 var ndefMessage = wptoolkit.toMojoNDEFMessage([{7 }]);8 console.log(ndefMessage);9{"records":[{"tnf":1,"type":"U","id":"W","payload":"Hello World"}]}10var wptoolkit = require("wptoolkit");11var ndefMessage = wptoolkit.toMojoNDEFMessage([{12}, {13}]);14console.log(ndefMessage);15 var wptoolkit = require("wptoolkit");16 var ndefMessage = wptoolkit.toMojoNDEFMessage([{17 }, {
Using AI Code Generation
1var wptoolkit = require('wptoolkit');2var MojoNDEFMessage = require('MojoNDEFMessage');3var MojoNDEFRecord = require('MojoNDEFRecord');4var MojoNDEFRecord = require('MojoNDEFRecord');5var MojoNDEFRecord = require('MojoNDEFRecord');6var MojoNDEFRecord = require('MojoNDEFRecord');7var MojoNDEFRecord = require('MojoNDEFRecord');8var MojoNDEFRecord = require('MojoNDEFRecord');9var MojoNDEFRecord = require('MojoNDEFRecord');10var MojoNDEFRecord = require('MojoNDEFRecord');11var ndef = MojoNDEFRecord.toMojoNDEFMessage('
Using AI Code Generation
1var wptools = require('wptools');2console.log(ndef);3 console.log(ndef);4{5 {6 },7 {8 }9}10wptools.toMojoNDEFMessage(text, lang, encoding)11wptools.toMojoNDEFMessageURL(url)12wptools.toMojoNDEFMessageSmartPoster(url, title, action)13wptools.toMojoNDEFMessageText(text, lang, encoding)
Using AI Code Generation
1var wptools = require('wptools');2var title = 'Google';3var description = 'Search the world\'s information, including webpages, images, videos and more. Google has many special features to help you find exactly what you\'re looking for.';4var message = wptools.toMojoNDEFMessage(url, title, description, iconUrl);5console.log(JSON.stringify(message));6var wptools = require('wptools');7var title = 'Google';8var description = 'Search the world\'s information, including webpages, images, videos and more. Google has many special features to help you find exactly what you\'re looking for.';9var message = wptools.toMojoNDEFMessage(url, title, description, iconUrl);10console.log(JSON.stringify(message));
Using AI Code Generation
1var wptools = require('wptools');2var wpt = new wptools();3 console.log(ndef);4});5console.log(ndef);6var wptools = require('wptools');7var wpt = new wptools();8 console.log(ndef);9});10var wptools = require('wptools');11var wpt = new wptools();12 console.log(ndef);13});14var wptools = require('wptools');15var wpt = new wptools();16 console.log(ndef);17});18var wptools = require('wptools');19var wpt = new wptools();20 console.log(ndef);21});22var wptools = require('wptools');23var wpt = new wptools();24 console.log(ndef);25});
Using AI Code Generation
1var wptools = require('wptools');2var message = wptools.toMojoNDEFMessage("Hello World");3console.log(message);4var wptools = require('wptools');5var message = wptools.toMojoNDEFMessage("Hello World");6console.log(message);7var wptools = require('wptools');8var message = wptools.toMojoNDEFMessage("Hello World");9console.log(message);10var wptools = require('wptools');11var message = wptools.toMojoNDEFMessage("Hello World");12console.log(message);13var wptools = require('wptools');14var message = wptools.toMojoNDEFMessage("Hello World");15console.log(message);16var wptools = require('wptools');17var message = wptools.toMojoNDEFMessage("Hello World");18console.log(message);19var wptools = require('wptools');20var message = wptools.toMojoNDEFMessage("Hello World");21console.log(message);22var wptools = require('wptools');23var message = wptools.toMojoNDEFMessage("Hello World");24console.log(message);
Using AI Code Generation
1var wptoolkit = require('wptoolkit');2var ndef = wptoolkit.toMojoNDEFMessage(ndefMessage);3var NDEFMessage = require('mojo/public/interfaces/bindings/tests/ndef_message.mojom').NDEFMessage;4var NDEFRecord = require('mojo/public/interfaces/bindings/tests/ndef_record.mojom').NDEFRecord;5var NDEFRecordType = require('mojo/public/interfaces/bindings/tests/ndef_record.mojom').NDEFRecordType;6var wptoolkit = {7 toMojoNDEFMessage: function(ndefMessage) {8 var records = [];9 for (var i = 0; i < ndefMessage.length; i++) {10 var record = new NDEFRecord();11 record.tnf = ndefMessage[i].tnf;12 record.type = ndefMessage[i].type;13 record.id = ndefMessage[i].id;14 record.payload = ndefMessage[i].payload;15 records.push(record);16 }17 var ndef = new NDEFMessage();18 ndef.data = records;19 return ndef;20 }21};22module.exports = wptoolkit;23var wptoolkit = require('wptoolkit');24var ndef = wptoolkit.toMojoNDEFMessage(ndefMessage);25var NDEFMessage = require('mojo/public/interfaces/bindings/tests/ndef_message.mojom').NDEFMessage;26var NDEFRecord = require('mojo/public/interfaces/bindings/tests/ndef_record.mojom').NDEFRecord;27var NDEFRecordType = require('mo
Using AI Code Generation
1var wptools = require('wptools');2var msg = wptools.toMojoNDEFMessage(url);3var fs = require('fs');4fs.writeFileSync('test.txt',msg);5exports.toMojoNDEFMessage = function(url){6 var msg = 'type: "NDEFMessage", payload: [';7 msg = msg + '{';8 msg = msg + 'type: "NDEFRecord", payload: {';9 msg = msg + 'type: "NDEFTextRecord", payload: {';10 msg = msg + 'text: "' + url + '",';11 msg = msg + 'lang: "en"';12 msg = msg + '}';13 msg = msg + '}';14 msg = msg + '}';15 msg = msg + ']';16 return msg;17};
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!