| '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'); |
| } |
| } |