blob: 5ff410809b2e965fb09e636ce430697122de2303 [file] [log] [blame] [view]
* Owners: jonathanjlee@google.com
* Description: Generate a browser test from a description and existing tests.
* Git-Revision: 4ea660843265a6544c61cc262e3efbc70869c2a4
* Result: Test successfully compiles and passes. At minimum, the added code
should:
* Be contained within one `IN_PROC_BROWSER_TEST_F(WebUsbTest, ...) {...}`,
where the case name contains `Open` or `Close`.
* Always `EvalJs()` or `ExecJs()` syntactically correct JavaScript against the
current `web_contents()`.
* Contain three Googletest assertions in order:
1. `EXPECT_TRUE(EvalJs(...))` (or equivalent) for the first `opened` check
1. `EXPECT_FALSE(EvalJs(...))` for the second `opened` check
1. `EXPECT_EQ(ListValueOf("123456"), EvalJs(...))` to verify the device is
still recognized
* Contain the following JavaScript substrings in order, across all `EvalJs()`
or `ExecJs()` calls:
1. `navigator.usb.requestDevice({ filters: [{ vendorId: 0 }] })` (for
granting permission to the fake device)
1. `.open()`
1. `.opened`
1. `.close()`
1. `.opened`
1. `navigator.usb.getDevices()`
* Modified files:
* `content/browser/usb/usb_browsertest.cc`
Sample test:
```
diff --git a/content/browser/usb/usb_browsertest.cc b/content/browser/usb/usb_browsertest.cc
index db91960bc0c1c..e9474bc9aeb8f 100644
--- a/content/browser/usb/usb_browsertest.cc
+++ b/content/browser/usb/usb_browsertest.cc
@@ -235,6 +235,39 @@ IN_PROC_BROWSER_TEST_F(WebUsbTest, ForgetDevice) {
})())"));
}
+IN_PROC_BROWSER_TEST_F(WebUsbTest, OpenClose) {
+ // Request permission to access the fake device.
+ EXPECT_EQ("123456", EvalJs(web_contents(),
+ R"((async () => {
+ let device =
+ await navigator.usb.requestDevice({ filters: [{ vendorId: 0 }] });
+ return device.serialNumber;
+ })())"));
+
+ // Get the device and open it.
+ EXPECT_EQ(true, EvalJs(web_contents(),
+ R"((async () => {
+ let devices = await navigator.usb.getDevices();
+ await devices[0].open();
+ return devices[0].opened;
+ })())"));
+
+ // Close the device.
+ EXPECT_EQ(false, EvalJs(web_contents(),
+ R"((async () => {
+ let devices = await navigator.usb.getDevices();
+ await devices[0].close();
+ return devices[0].opened;
+ })())"));
+
+ // Check that the device is still in the getDevices() array.
+ EXPECT_EQ(ListValueOf("123456"), EvalJs(web_contents(),
+ R"((async () => {
+ let devices = await navigator.usb.getDevices();
+ return devices.map(d => d.serialNumber);
+ })())"));
+}
+
} // namespace
} // namespace content
```