diff options
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/bluetooth.rs | 17 | ||||
-rw-r--r-- | components/script/dom/webidls/Bluetooth.webidl | 4 |
2 files changed, 19 insertions, 2 deletions
diff --git a/components/script/dom/bluetooth.rs b/components/script/dom/bluetooth.rs index 82d455e5f4f..82c39782133 100644 --- a/components/script/dom/bluetooth.rs +++ b/components/script/dom/bluetooth.rs @@ -443,6 +443,18 @@ impl BluetoothMethods for Bluetooth { return p; } + #[allow(unrooted_must_root)] + // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetooth-getavailability + fn GetAvailability(&self) -> Rc<Promise> { + let p = Promise::new(&self.global()); + // Step 1. We did not override the method + // Step 2 - 3. in handle_response + let sender = response_async(&p, self); + self.get_bluetooth_thread().send( + BluetoothRequest::GetAvailability(sender)).unwrap(); + p + } + // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetooth-onavailabilitychanged event_handler!(availabilitychanged, GetOnavailabilitychanged, SetOnavailabilitychanged); } @@ -466,6 +478,11 @@ impl AsyncBluetoothListener for Bluetooth { // Step 5. promise.resolve_native(promise_cx, &bt_device); }, + // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetooth-getavailability + // Step 2 - 3. + BluetoothResponse::GetAvailability(is_available) => { + promise.resolve_native(promise_cx, &is_available); + } _ => promise.reject_error(promise_cx, Error::Type("Something went wrong...".to_owned())), } } diff --git a/components/script/dom/webidls/Bluetooth.webidl b/components/script/dom/webidls/Bluetooth.webidl index fe87d10aa81..6299e661474 100644 --- a/components/script/dom/webidls/Bluetooth.webidl +++ b/components/script/dom/webidls/Bluetooth.webidl @@ -29,8 +29,8 @@ dictionary RequestDeviceOptions { [Pref="dom.bluetooth.enabled"] interface Bluetooth : EventTarget { - // [SecureContext] - // Promise<boolean> getAvailability(); + [SecureContext] + Promise<boolean> getAvailability(); [SecureContext] attribute EventHandler onavailabilitychanged; // [SecureContext, SameObject] |