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

Unified Diff: third_party/WebKit/LayoutTests/usb/resources/webusb-test.js

Issue 2816663002: Ensure tests don't depend on fake devices being added synchronously (Closed)
Patch Set: Created 3 years, 8 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/usb/resources/webusb-test.js
diff --git a/third_party/WebKit/LayoutTests/usb/resources/webusb-test.js b/third_party/WebKit/LayoutTests/usb/resources/webusb-test.js
index 2af2182cb3debc780fad8e2dfbd0aeeb8dcbc626..ed36450ee525f37ea42375afe70b435ff8e1f4d7 100644
--- a/third_party/WebKit/LayoutTests/usb/resources/webusb-test.js
+++ b/third_party/WebKit/LayoutTests/usb/resources/webusb-test.js
@@ -76,6 +76,7 @@ let g_initializePromise = null;
let g_chooserService = null;
let g_deviceManager = null;
let g_closeListener = null;
+let g_nextGuid = 0;
function fakeDeviceInitToDeviceInfo(guid, init) {
let deviceInfo = {
@@ -358,20 +359,22 @@ class FakeDeviceManager {
this.bindingSet_.addBinding(this, handle);
}
- addDevice(info) {
+ addDevice(guid, info) {
let device = {
- guid: this.nextGuid_++ + "",
+ guid: guid,
info: info,
bindingArray: []
};
this.devices_.set(device.guid, device);
if (this.client_)
this.client_.onDeviceAdded(fakeDeviceInitToDeviceInfo(device.guid, info));
- return device.guid;
}
removeDevice(guid) {
let device = this.devices_.get(guid);
+ if (!device)
+ throw new Error('Cannot remove unknown device "' + guid + '"');
+
for (var binding of device.bindingArray)
binding.close();
this.devices_.delete(guid);
@@ -526,14 +529,23 @@ class USBTest {
if (!g_deviceManager)
throw new Error('Call initialize() before addFakeDevice().');
- return g_deviceManager.addDevice(deviceInit);
+ // |addDevice| and |removeDevice| are called in a setTimeout callback so
+ // that tests do not rely on the device being immediately available which
+ // may not be true for all implementations of this test API.
+ let guid = g_nextGuid++ + "";
ortuno 2017/04/12 03:31:07 nit: let guid = (g_nextGuid++).toString();
Reilly Grant (use Gerrit) 2017/04/12 22:47:07 Done.
+ setTimeout(() => {
+ g_deviceManager.addDevice(guid, deviceInit);
+ }, 0);
+ return guid;
}
removeFakeDevice(guid) {
if (!g_deviceManager)
throw new Error('Call initialize() before removeFakeDevice().');
- return g_deviceManager.removeDevice(guid);
+ setTimeout(() => {
+ g_deviceManager.removeDevice(guid);
+ }, 0);
}
set ondeviceclose(func) {

Powered by Google App Engine
This is Rietveld 408576698