* 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 ```