Bug 1735858 [wpt PR 31247] - App history: make it mostly nonfunctional for opaque...
[gecko.git] / testing / web-platform / tests / serial / serial_requestPort.https.window.js
blob4edcfa6a46d3fe0f0e969efc66ff53445f7c7f9b
1 // META: script=/resources/testdriver.js
2 // META: script=/resources/testdriver-vendor.js
3 // META: script=/resources/test-only-api.js
4 // META: script=/serial/resources/common.js
5 // META: script=resources/automation.js
7 serial_test((t, fake) => {
8   return promise_rejects_dom(
9       t, 'SecurityError', navigator.serial.requestPort());
10 }, 'requestPort() rejects without a user gesture');
12 serial_test(async (t, fake) => {
13   await trustedClick();
14   return promise_rejects_dom(
15       t, 'NotFoundError', navigator.serial.requestPort());
16 }, 'requestPort() rejects if no port has been selected');
18 serial_test(async (t, fake) => {
19   let token = fake.addPort();
20   fake.setSelectedPort(token);
22   await trustedClick();
23   let port = await navigator.serial.requestPort();
24   assert_true(port instanceof SerialPort);
25 }, 'requestPort() returns the selected port');
27 serial_test(async (t, fake) => {
28   let token = fake.addPort();
29   fake.setSelectedPort(token);
31   await trustedClick();
32   let firstPort = await navigator.serial.requestPort();
33   assert_true(firstPort instanceof SerialPort);
34   let secondPort = await navigator.serial.requestPort();
35   assert_true(secondPort instanceof SerialPort);
36   assert_true(firstPort === secondPort);
37 }, 'requestPort() returns the same port object every time');
39 serial_test(async (t, fake) => {
40   let token = fake.addPort();
41   fake.setSelectedPort(token);
43   await trustedClick();
44   let port = await navigator.serial.requestPort({filters: []});
45   assert_true(port instanceof SerialPort);
46 }, 'An empty list of filters is valid');
48 serial_test(async (t, fake) => {
49   let token = fake.addPort();
50   fake.setSelectedPort(token);
52   await trustedClick();
53   return promise_rejects_js(t, TypeError, navigator.serial.requestPort({
54     filters: [{}],
55   }));
56 }, 'An empty filter is not valid');
58 serial_test(async (t, fake) => {
59   let token = fake.addPort();
60   fake.setSelectedPort(token);
62   await trustedClick();
63   return promise_rejects_js(t, TypeError, navigator.serial.requestPort({
64     filters: [{usbProductId: 0x0001}],
65   }));
66 }, 'requestPort() requires a USB vendor ID if a product ID specified');