|  | importScripts("/resources/testharness.js"); | 
|  | importScripts("/resources/test-only-api.js"); | 
|  | importScripts("resources/shapedetection-helpers.js"); | 
|  |  | 
|  | 'use strict'; | 
|  |  | 
|  | // These tests verify that a Detector's detect() works on an | 
|  | // ImageBitmap on workers. | 
|  | const imageBitmapTests = | 
|  | [ | 
|  | { | 
|  | createDetector: () => { return new FaceDetector(); }, | 
|  | mockTestName: "FaceDetectionTest", | 
|  | resultSize: 3, // Number of faces | 
|  | detectorType: "Face" | 
|  | }, | 
|  | { | 
|  | createDetector: () => { return new BarcodeDetector(); }, | 
|  | mockTestName: "BarcodeDetectionTest", | 
|  | resultSize: 2, // Number of barcodes | 
|  | detectorType: "Barcode" | 
|  | }, | 
|  | { | 
|  | createDetector: () => { return new TextDetector(); }, | 
|  | mockTestName: "TextDetectionTest", | 
|  | resultSize: 2, // Number of text blocks | 
|  | detectorType: "Text" | 
|  | } | 
|  | ]; | 
|  |  | 
|  | for (let imageBitmapTest of imageBitmapTests) { | 
|  | // ImageBitmap is of transferable type and can be sent to and | 
|  | // tested on worker. | 
|  | detection_test(imageBitmapTest.mockTestName, async (t, detectionTest) => { | 
|  | const img = createTestImage(); | 
|  | const theImageBitmap = await createImageBitmap(img); | 
|  | const detector = imageBitmapTest.createDetector(); | 
|  | const detectionResult = await detector.detect(theImageBitmap); | 
|  | assert_equals(detectionResult.length, imageBitmapTest.resultSize, | 
|  | `Number of ${imageBitmapTest.detectorType}`); | 
|  | }, `${imageBitmapTest.detectorType} Detector detect(ImageBitmap) on worker`); | 
|  | } | 
|  |  | 
|  | function createTestImage() { | 
|  | const image = new OffscreenCanvas(100, 50); | 
|  | const imgctx = image.getContext('2d'); | 
|  | imgctx.fillStyle = "#F00"; | 
|  | imgctx.fillRect(0, 0, 2, 2); | 
|  | imgctx.fillStyle = "#0F0"; | 
|  | imgctx.fillRect(0, 0, 1, 1); | 
|  | return image; | 
|  | } | 
|  |  | 
|  | done(); |