Index: third_party/WebKit/LayoutTests/external/wpt/webusb/usbDevice-iframe.https.html |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webusb/usbDevice-iframe.https.html b/third_party/WebKit/LayoutTests/external/wpt/webusb/usbDevice-iframe.https.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..02b2c5010fb566a485bf6887295a05cae3822e37 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/webusb/usbDevice-iframe.https.html |
@@ -0,0 +1,51 @@ |
+<!DOCTYPE html> |
+<script src="/resources/testharness.js"></script> |
+<script src="/resources/testharnessreport.js"></script> |
+<script src="resources/fake-devices.js"></script> |
+<script src="resources/usb-helpers.js"></script> |
+<script> |
+'use strict'; |
+ |
+function runIframeDisconnectTest(onDeviceConnected) { |
+ return new Promise((resolve, reject) => { |
+ let opened = false; |
+ |
+ let iframe = document.createElement('iframe'); |
+ iframe.src = 'resources/open-in-iframe.html'; |
+ iframe.onload = () => { |
+ navigator.usb.test.attachToWindow(iframe.contentWindow).then(() => { |
+ iframe.contentWindow.postMessage('Ready', '*'); |
+ }); |
+ }; |
+ |
+ window.onmessage = messageEvent => { |
+ if (messageEvent.data == 'Ready') { |
+ let fakeDevice = navigator.usb.test.addFakeDevice(fakeDeviceInit); |
+ fakeDevice.onclose = () => { |
+ assert_true(opened); |
+ resolve(); |
+ }; |
+ } else if (messageEvent.data == 'Success') { |
+ opened = true; |
+ onDeviceConnected(iframe); |
+ } else { |
+ reject(messageEvent.data); |
+ } |
+ }; |
+ |
+ document.body.appendChild(iframe); |
+ }); |
+} |
+ |
+usb_test(() => { |
+ return runIframeDisconnectTest(iframe => { |
+ document.body.removeChild(iframe); |
+ }); |
+}, 'detaching iframe disconnects device.'); |
+ |
+usb_test(() => { |
+ return runIframeDisconnectTest(iframe => { |
+ iframe.src = 'about:blank'; |
+ }); |
+}, 'navigating iframe disconnects device.'); |
+</script> |