blob: 2529e735b1cfa37223f27e8fd845df75dbfd6258 [file] [log] [blame]
<!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/mojom/barcodedetection_provider.mojom.js"></script>
<script src="file:///gen/services/shape_detection/public/mojom/facedetection_provider.mojom.js"></script>
<script src="file:///gen/services/shape_detection/public/mojom/textdetection.mojom.js"></script>
<script src="resources/big-buffer-helpers.js"></script>
<script src="resources/mock-barcodedetection.js"></script>
<script src="resources/mock-facedetection.js"></script>
<script src="resources/mock-textdetection.js"></script>
<script>
const createTestForImageData = (createDetector, mock, detectionResultTest) => {
async_test(t => {
const img = new Image();
img.onload = async() => {
const canvas = document.createElement("canvas");;
canvas.getContext("2d").drawImage(img, 0, 0);
const detector = createDetector();
try {
const detectionResult = await detector.detect(canvas.getContext("2d")
.getImageData(0, 0, canvas.width, canvas.height));
detectionResultTest(detectionResult);
t.done();
} catch(error) {
assert_unreached("Error during detect(canvas): " + error);
}
}
img.src = "../media/content/greenbox.png";
});
};
function CheckDetectedReadOnlyBoundingBoxes(detectedObjects) {
var properties = ['x', 'y', 'width', 'height', 'top', 'right', 'bottom', 'left'];
detectedObjects.forEach(detectedObject => {
properties.forEach(property => {
assert_readonly(detectedObject.boundingBox, property);
});
});
}
// These tests verify that detected{Face, Barcode, Text}'s boundingBox should be DOMRectReadOnly.
generate_tests(createTestForImageData, [
[
"Face - detectedFace.boundingBox should be DOMRectReadOnly",
() => { return new FaceDetector(); },
mockFaceDetectionProvider,
CheckDetectedReadOnlyBoundingBoxes
],
[
"Barcode - detectedBarcode.boundingBox should be DOMRectReadOnly",
() => { return new BarcodeDetector(); },
mockBarcodeDetectionProvider,
CheckDetectedReadOnlyBoundingBoxes
],
[
"Text - detectedText.boundingBox should be DOMRectReadOnly",
() => { return new TextDetector(); },
mockTextDetection,
CheckDetectedReadOnlyBoundingBoxes
]
]);
</script>