| <!DOCTYPE html> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <script src="file:///gen/layout_test_data/mojo/public/js/mojo_bindings.js"></script> |
| <script src="file:///gen/services/shape_detection/public/interfaces/barcodedetection.mojom.js"></script> |
| <script src="file:///gen/services/shape_detection/public/interfaces/facedetection.mojom.js"></script> |
| <script src="file:///gen/services/shape_detection/public/interfaces/facedetection_provider.mojom.js"></script> |
| <script src="file:///gen/services/shape_detection/public/interfaces/textdetection.mojom.js"></script> |
| <script src="resources/mock-barcodedetection.js"></script> |
| <script src="resources/mock-facedetection.js"></script> |
| <script src="resources/mock-textdetection.js"></script> |
| <script> |
| |
| function detectShapeForCanvas(createDetector, |
| createCanvas, |
| mock, |
| detectionResultTest) { |
| return new Promise(function(resolve, reject) { |
| var img = new Image(); |
| img.onload = function() { |
| var canvas = createCanvas(); |
| canvas.getContext("2d").drawImage(img, 0, 0); |
| |
| var detector = createDetector(); |
| detector.detect(canvas) |
| .then(detectionResult => { |
| detectionResultTest(detectionResult, mock); |
| resolve("Success"); |
| }, error => { |
| assert_unreached("Error during detect(canvas): " + error); |
| }); |
| }; |
| |
| img.src = "../media/content/greenbox.png"; |
| }); |
| } |
| |
| var createTestForCanvasElement = function(createDetector, |
| createCanvas, |
| mock, |
| detectionResultTest) { |
| promise_test(function() { |
| return detectShapeForCanvas(createDetector, |
| createCanvas, |
| mock, |
| detectionResultTest) |
| .then(function(result) { |
| assert_equals(result, "Success", "Detect 'Success'"); |
| }); |
| }); |
| }; |
| |
| function FaceDetectorDetectionResultTest(detectionResult, mock) { |
| const imageReceivedByMock = mock.getFrameData(); |
| assert_equals(imageReceivedByMock.byteLength, 180000,"Image length"); |
| const GREEN_PIXEL = 0xFF00FF00; |
| assert_equals(imageReceivedByMock[0], GREEN_PIXEL, "Pixel color"); |
| assert_equals(detectionResult.length, 3, "Number of faces"); |
| } |
| |
| function BarcodeDetectorDetectionResultTest(detectionResult, mock) { |
| assert_equals(detectionResult.length, 2, "Number of barcodes"); |
| assert_equals(detectionResult[0].rawValue, "cats", "barcode 1"); |
| assert_equals(detectionResult[1].rawValue, "dogs", "barcode 2"); |
| } |
| |
| function TextDetectorDetectionResultTest(detectionResult, mock) { |
| assert_equals(detectionResult.length, 2, "Number of textBlocks"); |
| assert_equals(detectionResult[0].rawValue, "cats", "textBlock 1"); |
| assert_equals(detectionResult[1].rawValue, "dogs", "textBlock 2"); |
| } |
| |
| // These tests verify that a Detector's detect() works on an HTMLCanvasElement |
| // and on an OffscreenCanvas. Use the mock mojo server implemented in |
| // mock-{barcode,face}detection.js. |
| generate_tests(createTestForCanvasElement, [ |
| [ |
| "Face - detect(HTMLCanvasElement)", |
| () => { return new FaceDetector(); }, |
| () => { return document.createElement("canvas"); }, |
| mockFaceDetectionProvider, |
| FaceDetectorDetectionResultTest |
| ], |
| [ |
| "Face - detect(OffscreenCanvas)", |
| () => { return new FaceDetector(); }, |
| () => { return new OffscreenCanvas(300, 150); }, |
| mockFaceDetectionProvider, |
| FaceDetectorDetectionResultTest |
| ], |
| [ |
| "Barcode - detect(HTMLCanvasElement)", |
| () => { return new BarcodeDetector(); }, |
| () => { return document.createElement("canvas"); }, |
| mockBarcodeDetection, |
| BarcodeDetectorDetectionResultTest |
| ], |
| [ |
| "Barcode - detect(OffscreenCanvas)", |
| () => { return new BarcodeDetector(); }, |
| () => { return new OffscreenCanvas(300, 150); }, |
| mockBarcodeDetection, |
| BarcodeDetectorDetectionResultTest |
| ], |
| [ |
| "Text - detect(HTMLCanvasElement)", |
| () => { return new TextDetector(); }, |
| () => { return document.createElement("canvas"); }, |
| mockTextDetection, |
| TextDetectorDetectionResultTest |
| ], |
| [ |
| "Text - detect(OffscreenCanvas)", |
| () => { return new TextDetector(); }, |
| () => { return new OffscreenCanvas(300, 150); }, |
| mockTextDetection, |
| TextDetectorDetectionResultTest |
| ] |
| ]); |
| |
| </script> |