mirror of
https://github.com/servo/servo.git
synced 2025-07-12 18:03:49 +01:00
69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
'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
|
|
|
|
let loadChromiumResources = Promise.resolve().then(() => {
|
|
if (!MojoInterfaceInterceptor) {
|
|
// Do nothing on non-Chromium-based browsers or when the Mojo bindings are
|
|
// not present in the global namespace.
|
|
return;
|
|
}
|
|
|
|
let chain = Promise.resolve();
|
|
[
|
|
'/resources/chromium/mojo_bindings.js',
|
|
'/resources/chromium/image_capture.mojom.js',
|
|
'/resources/chromium/mock-imagecapture.js',
|
|
].forEach(path => {
|
|
// Use importScripts for workers.
|
|
if (typeof document === 'undefined') {
|
|
chain = chain.then(() => importScripts(path));
|
|
return;
|
|
}
|
|
let script = document.createElement('script');
|
|
script.src = path;
|
|
script.async = false;
|
|
chain = chain.then(() => new Promise(resolve => {
|
|
script.onload = () => resolve();
|
|
}));
|
|
document.head.appendChild(script);
|
|
});
|
|
|
|
return chain;
|
|
});
|
|
|
|
async function initialize_image_capture_tests() {
|
|
if (typeof ImageCaptureTest === 'undefined') {
|
|
await loadChromiumResources;
|
|
}
|
|
assert_true(typeof ImageCaptureTest !== 'undefined');
|
|
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');
|
|
}
|
|
}
|