diff options
Diffstat (limited to 'components/script/dom/bluetooth')
4 files changed, 34 insertions, 20 deletions
diff --git a/components/script/dom/bluetooth/bluetoothdevice.rs b/components/script/dom/bluetooth/bluetoothdevice.rs index 49f38d6f843..8eafc696330 100644 --- a/components/script/dom/bluetooth/bluetoothdevice.rs +++ b/components/script/dom/bluetooth/bluetoothdevice.rs @@ -103,6 +103,7 @@ impl BluetoothDevice { &self, service: &BluetoothServiceMsg, server: &BluetoothRemoteGATTServer, + can_gc: CanGc, ) -> DomRoot<BluetoothRemoteGATTService> { let service_map_ref = &self.attribute_instance_map.service_map; let mut service_map = service_map_ref.borrow_mut(); @@ -115,7 +116,7 @@ impl BluetoothDevice { DOMString::from(service.uuid.clone()), service.is_primary, service.instance_id.clone(), - CanGc::note(), + can_gc, ); service_map.insert(service.instance_id.clone(), Dom::from_ref(&bt_service)); bt_service @@ -125,6 +126,7 @@ impl BluetoothDevice { &self, characteristic: &BluetoothCharacteristicMsg, service: &BluetoothRemoteGATTService, + can_gc: CanGc, ) -> DomRoot<BluetoothRemoteGATTCharacteristic> { let characteristic_map_ref = &self.attribute_instance_map.characteristic_map; let mut characteristic_map = characteristic_map_ref.borrow_mut(); @@ -142,7 +144,7 @@ impl BluetoothDevice { characteristic.authenticated_signed_writes, characteristic.reliable_write, characteristic.writable_auxiliaries, - CanGc::note(), + can_gc, ); let bt_characteristic = BluetoothRemoteGATTCharacteristic::new( &service.global(), @@ -150,7 +152,7 @@ impl BluetoothDevice { DOMString::from(characteristic.uuid.clone()), &properties, characteristic.instance_id.clone(), - CanGc::note(), + can_gc, ); characteristic_map.insert( characteristic.instance_id.clone(), @@ -174,6 +176,7 @@ impl BluetoothDevice { &self, descriptor: &BluetoothDescriptorMsg, characteristic: &BluetoothRemoteGATTCharacteristic, + can_gc: CanGc, ) -> DomRoot<BluetoothRemoteGATTDescriptor> { let descriptor_map_ref = &self.attribute_instance_map.descriptor_map; let mut descriptor_map = descriptor_map_ref.borrow_mut(); @@ -185,7 +188,7 @@ impl BluetoothDevice { characteristic, DOMString::from(descriptor.uuid.clone()), descriptor.instance_id.clone(), - CanGc::note(), + can_gc, ); descriptor_map.insert( descriptor.instance_id.clone(), diff --git a/components/script/dom/bluetooth/bluetoothremotegattcharacteristic.rs b/components/script/dom/bluetooth/bluetoothremotegattcharacteristic.rs index 25119fdda99..eebc86ef8fe 100644 --- a/components/script/dom/bluetooth/bluetoothremotegattcharacteristic.rs +++ b/components/script/dom/bluetooth/bluetoothremotegattcharacteristic.rs @@ -309,14 +309,16 @@ impl AsyncBluetoothListener for BluetoothRemoteGATTCharacteristic { // Step 7. BluetoothResponse::GetDescriptors(descriptors_vec, single) => { if single { - promise.resolve_native( - &device.get_or_create_descriptor(&descriptors_vec[0], self), - ); + promise.resolve_native(&device.get_or_create_descriptor( + &descriptors_vec[0], + self, + can_gc, + )); return; } let mut descriptors = vec![]; for descriptor in descriptors_vec { - let bt_descriptor = device.get_or_create_descriptor(&descriptor, self); + let bt_descriptor = device.get_or_create_descriptor(&descriptor, self, can_gc); descriptors.push(bt_descriptor); } promise.resolve_native(&descriptors); diff --git a/components/script/dom/bluetooth/bluetoothremotegattserver.rs b/components/script/dom/bluetooth/bluetoothremotegattserver.rs index db21f1fb88e..fbc8f21f997 100644 --- a/components/script/dom/bluetooth/bluetoothremotegattserver.rs +++ b/components/script/dom/bluetooth/bluetoothremotegattserver.rs @@ -148,7 +148,7 @@ impl BluetoothRemoteGATTServerMethods<crate::DomTypeHolder> for BluetoothRemoteG } impl AsyncBluetoothListener for BluetoothRemoteGATTServer { - fn handle_response(&self, response: BluetoothResponse, promise: &Rc<Promise>, _can_gc: CanGc) { + fn handle_response(&self, response: BluetoothResponse, promise: &Rc<Promise>, can_gc: CanGc) { match response { // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothremotegattserver-connect BluetoothResponse::GATTServerConnect(connected) => { @@ -171,12 +171,16 @@ impl AsyncBluetoothListener for BluetoothRemoteGATTServer { BluetoothResponse::GetPrimaryServices(services_vec, single) => { let device = self.Device(); if single { - promise.resolve_native(&device.get_or_create_service(&services_vec[0], self)); + promise.resolve_native(&device.get_or_create_service( + &services_vec[0], + self, + can_gc, + )); return; } let mut services = vec![]; for service in services_vec { - let bt_service = device.get_or_create_service(&service, self); + let bt_service = device.get_or_create_service(&service, self, can_gc); services.push(bt_service); } promise.resolve_native(&services); diff --git a/components/script/dom/bluetooth/bluetoothremotegattservice.rs b/components/script/dom/bluetooth/bluetoothremotegattservice.rs index bee14b01737..5c768411013 100644 --- a/components/script/dom/bluetooth/bluetoothremotegattservice.rs +++ b/components/script/dom/bluetooth/bluetoothremotegattservice.rs @@ -165,22 +165,24 @@ impl BluetoothRemoteGATTServiceMethods<crate::DomTypeHolder> for BluetoothRemote } impl AsyncBluetoothListener for BluetoothRemoteGATTService { - fn handle_response(&self, response: BluetoothResponse, promise: &Rc<Promise>, _can_gc: CanGc) { + fn handle_response(&self, response: BluetoothResponse, promise: &Rc<Promise>, can_gc: CanGc) { let device = self.Device(); match response { // https://webbluetoothcg.github.io/web-bluetooth/#getgattchildren // Step 7. BluetoothResponse::GetCharacteristics(characteristics_vec, single) => { if single { - promise.resolve_native( - &device.get_or_create_characteristic(&characteristics_vec[0], self), - ); + promise.resolve_native(&device.get_or_create_characteristic( + &characteristics_vec[0], + self, + can_gc, + )); return; } let mut characteristics = vec![]; for characteristic in characteristics_vec { let bt_characteristic = - device.get_or_create_characteristic(&characteristic, self); + device.get_or_create_characteristic(&characteristic, self, can_gc); characteristics.push(bt_characteristic); } promise.resolve_native(&characteristics); @@ -189,13 +191,16 @@ impl AsyncBluetoothListener for BluetoothRemoteGATTService { // Step 7. BluetoothResponse::GetIncludedServices(services_vec, single) => { if single { - return promise.resolve_native( - &device.get_or_create_service(&services_vec[0], &device.get_gatt()), - ); + return promise.resolve_native(&device.get_or_create_service( + &services_vec[0], + &device.get_gatt(), + can_gc, + )); } let mut services = vec![]; for service in services_vec { - let bt_service = device.get_or_create_service(&service, &device.get_gatt()); + let bt_service = + device.get_or_create_service(&service, &device.get_gatt(), can_gc); services.push(bt_service); } promise.resolve_native(&services); |