Index: third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js b/third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..79eb3e54e282066c57553f4c5949382c11dbf58e |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/webusb/resources/usb-helpers.js |
@@ -0,0 +1,58 @@ |
+'use strict'; |
+ |
+function usb_test(func, name, properties) { |
+ promise_test(() => { |
+ return navigator.usb.test.initialize().then(() => { |
+ let testResult = func(); |
+ let cleanup = () => { |
+ navigator.usb.test.reset(); |
+ }; |
+ testResult.then(cleanup, cleanup); |
+ return testResult; |
+ }); |
+ }, name, properties); |
+} |
+ |
+function assertRejectsWithError(promise, name, message) { |
+ return promise.then(() => { |
+ assert_unreached('expected promise to reject with ' + name); |
+ }, error => { |
+ assert_equals(error.name, name); |
+ if (message !== undefined) |
+ assert_equals(error.message, message); |
+ }); |
+} |
+ |
+function assertDeviceInfoEquals(usbDevice, deviceInit) { |
+ for (var property in deviceInit) { |
+ if (property == 'activeConfigurationValue') { |
+ if (deviceInit.activeConfigurationValue == 0) { |
+ assert_equals(usbDevice.configuration, null); |
+ } else { |
+ assert_equals(usbDevice.configuration.configurationValue, |
+ deviceInit.activeConfigurationValue); |
+ } |
+ } else if (Array.isArray(deviceInit[property])) { |
+ assert_equals(usbDevice[property].length, deviceInit[property].length); |
+ for (var i = 0; i < usbDevice[property].length; ++i) |
+ assertDeviceInfoEquals(usbDevice[property][i], deviceInit[property][i]); |
+ } else { |
+ assert_equals(usbDevice[property], deviceInit[property], property); |
+ } |
+ } |
+} |
+ |
+function callWithTrustedClick(callback) { |
+ return new Promise(resolve => { |
+ 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); |
+ }); |
+} |