Source code

Revision control

Copy as Markdown

Other Tools

'use strict';
// These tests rely on the User Agent providing an implementation of
// platform image capture backends.
//
// In Chromium-based browsers this implementation is provided by a polyfill
// in order to reduce the amount of test-only code shipped to users. To enable
// these tests the browser must be run with these options:
//
// --enable-blink-features=MojoJS,MojoJSTest
async function loadChromiumResources() {
await import('/resources/chromium/mock-imagecapture.js');
}
async function initialize_image_capture_tests() {
if (typeof ImageCaptureTest === 'undefined') {
const script = document.createElement('script');
script.src = '/resources/test-only-api.js';
script.async = false;
const p = new Promise((resolve, reject) => {
script.onload = () => { resolve(); };
script.onerror = e => { reject(e); };
})
document.head.appendChild(script);
await p;
if (isChromiumBased) {
await loadChromiumResources();
}
}
assert_implements(ImageCaptureTest, 'ImageCaptureTest is unavailable');
let imageCaptureTest = new ImageCaptureTest();
await imageCaptureTest.initialize();
return imageCaptureTest;
}
function image_capture_test(func, name, properties) {
promise_test(async (t) => {
let imageCaptureTest = await initialize_image_capture_tests();
try {
await func(t, imageCaptureTest);
} finally {
await imageCaptureTest.reset();
};
}, name, properties);
}
function assert_point2d_array_approx_equals(actual, expected, epsilon) {
assert_equals(actual.length, expected.length, 'length');
for (var i = 0; i < actual.length; ++i) {
assert_approx_equals(actual[i].x, expected[i].x, epsilon, 'x');
assert_approx_equals(actual[i].y, expected[i].y, epsilon, 'y');
}
}