summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/bluetooth/device/forget
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/bluetooth/device/forget')
-rw-r--r--testing/web-platform/tests/bluetooth/device/forget/connect-after-forget.https.window.js11
-rw-r--r--testing/web-platform/tests/bluetooth/device/forget/detachedIframe.https.window.js27
-rw-r--r--testing/web-platform/tests/bluetooth/device/forget/getDevices.https.window.js26
3 files changed, 64 insertions, 0 deletions
diff --git a/testing/web-platform/tests/bluetooth/device/forget/connect-after-forget.https.window.js b/testing/web-platform/tests/bluetooth/device/forget/connect-after-forget.https.window.js
new file mode 100644
index 0000000000..0b15b4d060
--- /dev/null
+++ b/testing/web-platform/tests/bluetooth/device/forget/connect-after-forget.https.window.js
@@ -0,0 +1,11 @@
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-test.js
+// META: script=/bluetooth/resources/bluetooth-fake-devices.js
+
+bluetooth_test(async (t) => {
+ const { device } = await getConnectedHealthThermometerDevice();
+ await device.forget();
+
+ await promise_rejects_dom(t, 'SecurityError', device.gatt.connect());
+}, 'gatt.connect() rejects after forget().');
diff --git a/testing/web-platform/tests/bluetooth/device/forget/detachedIframe.https.window.js b/testing/web-platform/tests/bluetooth/device/forget/detachedIframe.https.window.js
new file mode 100644
index 0000000000..f4803542fb
--- /dev/null
+++ b/testing/web-platform/tests/bluetooth/device/forget/detachedIframe.https.window.js
@@ -0,0 +1,27 @@
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/common/gc.js
+// META: script=/bluetooth/resources/bluetooth-test.js
+// META: script=/bluetooth/resources/bluetooth-fake-devices.js
+
+bluetooth_test(async () => {
+ let iframe = document.createElement('iframe');
+ let error;
+
+ const {device} = await getHealthThermometerDeviceFromIframe(iframe);
+
+ iframe.remove();
+ // Set iframe to null to ensure that the GC cleans up as much as possible.
+ iframe = null;
+ await garbageCollect();
+
+ try {
+ await device.forget();
+ } catch (e) {
+ // Cannot use promise_rejects_dom() because |e| is thrown from a different
+ // global.
+ error = e;
+ }
+ assert_not_equals(error, undefined);
+ assert_equals(error.name, 'TypeError');
+}, 'forget() rejects in a detached context');
diff --git a/testing/web-platform/tests/bluetooth/device/forget/getDevices.https.window.js b/testing/web-platform/tests/bluetooth/device/forget/getDevices.https.window.js
new file mode 100644
index 0000000000..0594a6f03b
--- /dev/null
+++ b/testing/web-platform/tests/bluetooth/device/forget/getDevices.https.window.js
@@ -0,0 +1,26 @@
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+// META: script=/bluetooth/resources/bluetooth-test.js
+// META: script=/bluetooth/resources/bluetooth-fake-devices.js
+
+bluetooth_test(async () => {
+ await getConnectedHealthThermometerDevice();
+ const devicesBeforeForget = await navigator.bluetooth.getDevices();
+ assert_equals(
+ devicesBeforeForget.length, 1, 'getDevices() should return the granted device.');
+
+ const device = devicesBeforeForget[0];
+ await device.forget();
+ const devicesAfterForget = await navigator.bluetooth.getDevices();
+ assert_equals(
+ devicesAfterForget.length, 0,
+ 'getDevices() is empty after device.forget().');
+
+ // Call forget() again getDevices() should return the same result of empty
+ // list.
+ await device.forget();
+ const devicesAfterForgetCalledAgain = await navigator.bluetooth.getDevices();
+ assert_equals(
+ devicesAfterForgetCalledAgain.length, 0,
+ 'getDevices() is still empty after device.forget().');
+}, 'forget() removes devices from getDevices().');