Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(250)

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js

Issue 2789723003: Migrate WebUSB LayoutTests into external/wpt (Closed)
Patch Set: Add README.md and more comments explaining the polyfill Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js
diff --git a/third_party/WebKit/LayoutTests/usb/resources/usb-helpers.js b/third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js
similarity index 58%
rename from third_party/WebKit/LayoutTests/usb/resources/usb-helpers.js
rename to third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js
index 35ba6eaff40dd61e22d74146a0f8cb84401f2c63..452c04fc36d16b31ad7bf8844187d9849046f9fa 100644
--- a/third_party/WebKit/LayoutTests/usb/resources/usb-helpers.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js
@@ -1,8 +1,48 @@
'use strict';
+// These tests rely on the User Agent providing an implementation of the
+// WebUSB Testing API (https://wicg.github.io/webusb/test/).
+//
+// 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/device.mojom.js',
+ '/resources/chromium/device_manager.mojom.js',
+ '/resources/chromium/chooser_service.mojom.js',
+ '/resources/chromium/webusb-test.js',
+ ].forEach(path => {
+ 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;
+});
+
function usb_test(func, name, properties) {
promise_test(async () => {
- await navigator.usb.test.initialize()
+ if (navigator.usb.test === undefined) {
+ // Try loading a polyfill for the WebUSB Testing API.
+ await loadChromiumResources;
+ }
+
+ await navigator.usb.test.initialize();
try {
await func();
} finally {
@@ -72,24 +112,17 @@ function assertDeviceInfoEquals(usbDevice, deviceInit) {
}
}
-// TODO(reillyg): Remove when jyasskin upstreams this to testharness.js:
-// https://crbug.com/509058.
-function callWithKeyDown(functionCalledOnKeyPress) {
+function callWithTrustedClick(callback) {
return new Promise(resolve => {
- function onKeyPress() {
- document.removeEventListener('keypress', onKeyPress, false);
- resolve(functionCalledOnKeyPress());
- }
- document.addEventListener('keypress', onKeyPress, false);
-
- eventSender.keyDown(' ', []);
- });
-}
-
-function runGarbageCollection() {
- // Run gc() as a promise.
- return new Promise((resolve, reject) => {
- GCController.collect();
- setTimeout(resolve, 0);
+ let button = document.createElement('button');
+ button.textContent = 'click to continue test';
+ button.style.display = 'block';
+ button.style.fontSize = '20px';
+ button.style.padding = '10px';
+ button.onclick = () => {
+ resolve(callback());
+ document.body.removeChild(button);
+ };
+ document.body.appendChild(button);
});
}

Powered by Google App Engine
This is Rietveld 408576698