"use strict"; var BarcodeDetectionTest = (() => { // Class that mocks BarcodeDetectionProvider interface defined in // https://cs.chromium.org/chromium/src/services/shape_detection/public/mojom/barcodedetection_provider.mojom class MockBarcodeDetectionProvider { constructor() { this.bindingSet_ = new mojo.BindingSet( shapeDetection.mojom.BarcodeDetectionProvider); this.interceptor_ = new MojoInterfaceInterceptor( shapeDetection.mojom.BarcodeDetectionProvider.name, "context", true); this.interceptor_.oninterfacerequest = e => this.bindingSet_.addBinding(this, e.handle); this.interceptor_.start(); } createBarcodeDetection(request, options) { this.mockService_ = new MockBarcodeDetection(request, options); } enumerateSupportedFormats() { return Promise.resolve({ supportedFormats: [ shapeDetection.mojom.BarcodeFormat.AZTEC, shapeDetection.mojom.BarcodeFormat.DATA_MATRIX, shapeDetection.mojom.BarcodeFormat.QR_CODE, ] }); } getFrameData() { return this.mockService_.bufferData_; } getFormats() { return this.mockService_.options_.formats; } reset() { this.mockService_ = null; this.bindingSet_.closeAllBindings(); this.interceptor_.stop(); } } // Class that mocks BarcodeDetection interface defined in // https://cs.chromium.org/chromium/src/services/shape_detection/public/mojom/barcodedetection.mojom class MockBarcodeDetection { constructor(request, options) { this.options_ = options; this.binding_ = new mojo.Binding(shapeDetection.mojom.BarcodeDetection, this, request); } detect(bitmapData) { this.bufferData_ = new Uint32Array(getArrayBufferFromBigBuffer(bitmapData.pixelData)); return Promise.resolve({ results: [ { rawValue : "cats", boundingBox: { x: 1.0, y: 1.0, width: 100.0, height: 100.0 }, format: shapeDetection.mojom.BarcodeFormat.QR_CODE, cornerPoints: [ { x: 1.0, y: 1.0 }, { x: 101.0, y: 1.0 }, { x: 101.0, y: 101.0 }, { x: 1.0, y: 101.0 } ], }, { rawValue : "dogs", boundingBox: { x: 2.0, y: 2.0, width: 50.0, height: 50.0 }, format: shapeDetection.mojom.BarcodeFormat.CODE_128, cornerPoints: [ { x: 2.0, y: 2.0 }, { x: 52.0, y: 2.0 }, { x: 52.0, y: 52.0 }, { x: 2.0, y: 52.0 } ], }, ], }); } } let testInternal = { initialized: false, MockBarcodeDetectionProvider: null } class BarcodeDetectionTestChromium { constructor() { Object.freeze(this); // Make it immutable. } initialize() { if (testInternal.initialized) throw new Error('Call reset() before initialize().'); testInternal.MockBarcodeDetectionProvider = new MockBarcodeDetectionProvider; testInternal.initialized = true; } // Resets state of barcode detection mocks between test runs. async reset() { if (!testInternal.initialized) throw new Error('Call initialize() before reset().'); testInternal.MockBarcodeDetectionProvider.reset(); testInternal.MockBarcodeDetectionProvider = null; testInternal.initialized = false; await new Promise(resolve => setTimeout(resolve, 0)); } MockBarcodeDetectionProvider() { return testInternal.MockBarcodeDetectionProvider; } } return BarcodeDetectionTestChromium; })();