summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/bluetooth/server/connect
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /testing/web-platform/tests/bluetooth/server/connect
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/bluetooth/server/connect')
-rw-r--r--testing/web-platform/tests/bluetooth/server/connect/connection-succeeds.https.window.js13
-rw-r--r--testing/web-platform/tests/bluetooth/server/connect/detachedIframe.https.window.js27
-rw-r--r--testing/web-platform/tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.window.js19
-rw-r--r--testing/web-platform/tests/bluetooth/server/connect/get-same-gatt-server.https.window.js19
4 files changed, 78 insertions, 0 deletions
diff --git a/testing/web-platform/tests/bluetooth/server/connect/connection-succeeds.https.window.js b/testing/web-platform/tests/bluetooth/server/connect/connection-succeeds.https.window.js
new file mode 100644
index 0000000000..90b62b9265
--- /dev/null
+++ b/testing/web-platform/tests/bluetooth/server/connect/connection-succeeds.https.window.js
@@ -0,0 +1,13 @@
+// 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
+'use strict';
+const test_desc = 'Device will connect';
+
+bluetooth_test(async () => {
+ let {device, fake_peripheral} = await getDiscoveredHealthThermometerDevice();
+ await fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS});
+ let gatt = await device.gatt.connect();
+ assert_true(gatt.connected);
+}, test_desc);
diff --git a/testing/web-platform/tests/bluetooth/server/connect/detachedIframe.https.window.js b/testing/web-platform/tests/bluetooth/server/connect/detachedIframe.https.window.js
new file mode 100644
index 0000000000..2332cef707
--- /dev/null
+++ b/testing/web-platform/tests/bluetooth/server/connect/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.gatt.connect();
+ } 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, 'NetworkError');
+}, 'connect() rejects in a detached context');
diff --git a/testing/web-platform/tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.window.js b/testing/web-platform/tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.window.js
new file mode 100644
index 0000000000..2d2211dec3
--- /dev/null
+++ b/testing/web-platform/tests/bluetooth/server/connect/garbage-collection-ran-during-success.https.window.js
@@ -0,0 +1,19 @@
+// 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
+'use strict';
+const test_desc = 'Garbage Collection ran during a connect call that ' +
+ 'succeeds. Should not crash.';
+
+bluetooth_test(async () => {
+ let connectPromise;
+ {
+ let {device, fake_peripheral} =
+ await getDiscoveredHealthThermometerDevice();
+ await fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS});
+ connectPromise = device.gatt.connect();
+ }
+ await Promise.all([connectPromise, garbageCollect()]);
+}, test_desc);
diff --git a/testing/web-platform/tests/bluetooth/server/connect/get-same-gatt-server.https.window.js b/testing/web-platform/tests/bluetooth/server/connect/get-same-gatt-server.https.window.js
new file mode 100644
index 0000000000..59d7243a65
--- /dev/null
+++ b/testing/web-platform/tests/bluetooth/server/connect/get-same-gatt-server.https.window.js
@@ -0,0 +1,19 @@
+// 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
+'use strict';
+const test_desc = 'Multiple connects should return the same gatt object.';
+
+bluetooth_test(async () => {
+ let {device, fake_peripheral} = await getDiscoveredHealthThermometerDevice();
+ await fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS});
+ // No second response is necessary because an ATT Bearer
+ // already exists from the first connection.
+ // See
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-connect
+ // step 5.1.
+ let gatt1 = await device.gatt.connect();
+ let gatt2 = await device.gatt.connect();
+ assert_equals(gatt1, gatt2);
+}, test_desc);