mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Fix several clippy warnings in components/bluetooth (#31512)
* Fix several clippy warnings in components/bluetooth/lib * Fix requested change while maintaining clippy rules
This commit is contained in:
parent
096bd2977a
commit
7ce19f2885
1 changed files with 41 additions and 48 deletions
|
@ -120,7 +120,7 @@ fn matches_filter(device: &BluetoothDevice, filter: &BluetoothScanfilter) -> boo
|
||||||
if !filter.get_services().is_empty() {
|
if !filter.get_services().is_empty() {
|
||||||
if let Ok(device_uuids) = device.get_uuids() {
|
if let Ok(device_uuids) = device.get_uuids() {
|
||||||
for service in filter.get_services() {
|
for service in filter.get_services() {
|
||||||
if device_uuids.iter().find(|x| x == &service).is_none() {
|
if !device_uuids.iter().any(|x| x == service) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,12 +128,12 @@ fn matches_filter(device: &BluetoothDevice, filter: &BluetoothScanfilter) -> boo
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 4.
|
// Step 4.
|
||||||
if let Some(ref manufacturer_data) = filter.get_manufacturer_data() {
|
if let Some(manufacturer_data) = filter.get_manufacturer_data() {
|
||||||
let advertised_manufacturer_data = match device.get_manufacturer_data() {
|
let advertised_manufacturer_data = match device.get_manufacturer_data() {
|
||||||
Ok(data) => data,
|
Ok(data) => data,
|
||||||
Err(_) => return false,
|
Err(_) => return false,
|
||||||
};
|
};
|
||||||
for (ref id, &(ref prefix, ref mask)) in manufacturer_data.iter() {
|
for (id, (prefix, mask)) in manufacturer_data.iter() {
|
||||||
if let Some(advertised_data) = advertised_manufacturer_data.get(id) {
|
if let Some(advertised_data) = advertised_manufacturer_data.get(id) {
|
||||||
if !data_filter_matches(advertised_data, prefix, mask) {
|
if !data_filter_matches(advertised_data, prefix, mask) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -145,12 +145,12 @@ fn matches_filter(device: &BluetoothDevice, filter: &BluetoothScanfilter) -> boo
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 5.
|
// Step 5.
|
||||||
if let Some(ref service_data) = filter.get_service_data() {
|
if let Some(service_data) = filter.get_service_data() {
|
||||||
let advertised_service_data = match device.get_service_data() {
|
let advertised_service_data = match device.get_service_data() {
|
||||||
Ok(data) => data,
|
Ok(data) => data,
|
||||||
Err(_) => return false,
|
Err(_) => return false,
|
||||||
};
|
};
|
||||||
for (uuid, &(ref prefix, ref mask)) in service_data.iter() {
|
for (uuid, (prefix, mask)) in service_data.iter() {
|
||||||
if let Some(advertised_data) = advertised_service_data.get(uuid.as_str()) {
|
if let Some(advertised_data) = advertised_service_data.get(uuid.as_str()) {
|
||||||
if !data_filter_matches(advertised_data, prefix, mask) {
|
if !data_filter_matches(advertised_data, prefix, mask) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -193,10 +193,7 @@ fn matches_filters(device: &BluetoothDevice, filters: &BluetoothScanfilterSequen
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_mock_adapter(adapter: &BluetoothAdapter) -> bool {
|
fn is_mock_adapter(adapter: &BluetoothAdapter) -> bool {
|
||||||
match adapter {
|
matches!(adapter, &BluetoothAdapter::Mock(_))
|
||||||
&BluetoothAdapter::Mock(_) => true,
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct BluetoothManager {
|
pub struct BluetoothManager {
|
||||||
|
@ -299,7 +296,7 @@ impl BluetoothManager {
|
||||||
self.allowed_services.clear();
|
self.allowed_services.clear();
|
||||||
self.adapter = BluetoothAdapter::new_mock().ok();
|
self.adapter = BluetoothAdapter::new_mock().ok();
|
||||||
match test::test(self, data_set_name) {
|
match test::test(self, data_set_name) {
|
||||||
Ok(_) => return Ok(()),
|
Ok(_) => Ok(()),
|
||||||
Err(error) => Err(BluetoothError::Type(error.to_string())),
|
Err(error) => Err(BluetoothError::Type(error.to_string())),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -352,16 +349,16 @@ impl BluetoothManager {
|
||||||
if !adapter.is_powered().unwrap_or(false) {
|
if !adapter.is_powered().unwrap_or(false) {
|
||||||
return Err(BluetoothError::NotFound);
|
return Err(BluetoothError::NotFound);
|
||||||
}
|
}
|
||||||
return Ok(adapter);
|
Ok(adapter)
|
||||||
},
|
},
|
||||||
None => return Err(BluetoothError::NotFound),
|
None => Err(BluetoothError::NotFound),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Device
|
// Device
|
||||||
|
|
||||||
fn get_and_cache_devices(&mut self, adapter: &mut BluetoothAdapter) -> Vec<BluetoothDevice> {
|
fn get_and_cache_devices(&mut self, adapter: &mut BluetoothAdapter) -> Vec<BluetoothDevice> {
|
||||||
let devices = adapter.get_devices().unwrap_or(vec![]);
|
let devices = adapter.get_devices().unwrap_or_default();
|
||||||
for device in &devices {
|
for device in &devices {
|
||||||
if let Ok(address) = device.get_address() {
|
if let Ok(address) = device.get_address() {
|
||||||
if !self.address_to_id.contains_key(&address) {
|
if !self.address_to_id.contains_key(&address) {
|
||||||
|
@ -617,11 +614,10 @@ impl BluetoothManager {
|
||||||
// Step 7.
|
// Step 7.
|
||||||
// Note: There are no requiredServiceUUIDS, we scan for all devices.
|
// Note: There are no requiredServiceUUIDS, we scan for all devices.
|
||||||
if let Ok(ref session) = adapter.create_discovery_session() {
|
if let Ok(ref session) = adapter.create_discovery_session() {
|
||||||
if session.start_discovery().is_ok() {
|
if session.start_discovery().is_ok() && !is_mock_adapter(&adapter) {
|
||||||
if !is_mock_adapter(&adapter) {
|
thread::sleep(Duration::from_millis(DISCOVERY_TIMEOUT_MS));
|
||||||
thread::sleep(Duration::from_millis(DISCOVERY_TIMEOUT_MS));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let _ = session.stop_discovery();
|
let _ = session.stop_discovery();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -629,10 +625,7 @@ impl BluetoothManager {
|
||||||
|
|
||||||
// Step 8.
|
// Step 8.
|
||||||
if !options.is_accepting_all_devices() {
|
if !options.is_accepting_all_devices() {
|
||||||
matched_devices = matched_devices
|
matched_devices.retain(|d| matches_filters(d, options.get_filters()));
|
||||||
.into_iter()
|
|
||||||
.filter(|d| matches_filters(d, options.get_filters()))
|
|
||||||
.collect();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 9.
|
// Step 9.
|
||||||
|
@ -686,9 +679,9 @@ impl BluetoothManager {
|
||||||
// TODO: Step 5.1.4: Use the exchange MTU procedure.
|
// TODO: Step 5.1.4: Use the exchange MTU procedure.
|
||||||
}
|
}
|
||||||
// Step 5.1.3.
|
// Step 5.1.3.
|
||||||
return Err(BluetoothError::Network);
|
Err(BluetoothError::Network)
|
||||||
},
|
},
|
||||||
None => return Err(BluetoothError::NotFound),
|
None => Err(BluetoothError::NotFound),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -709,9 +702,9 @@ impl BluetoothManager {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Err(BluetoothError::Network);
|
Err(BluetoothError::Network)
|
||||||
},
|
},
|
||||||
None => return Err(BluetoothError::NotFound),
|
None => Err(BluetoothError::NotFound),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -742,14 +735,14 @@ impl BluetoothManager {
|
||||||
}
|
}
|
||||||
let mut services = self.get_and_cache_gatt_services(&mut adapter, &id);
|
let mut services = self.get_and_cache_gatt_services(&mut adapter, &id);
|
||||||
if let Some(uuid) = uuid {
|
if let Some(uuid) = uuid {
|
||||||
services.retain(|ref e| e.get_uuid().unwrap_or(String::new()) == uuid);
|
services.retain(|e| e.get_uuid().unwrap_or_default() == uuid);
|
||||||
}
|
}
|
||||||
let mut services_vec = vec![];
|
let mut services_vec = vec![];
|
||||||
for service in services {
|
for service in services {
|
||||||
if service.is_primary().unwrap_or(false) {
|
if service.is_primary().unwrap_or(false) {
|
||||||
if let Ok(uuid) = service.get_uuid() {
|
if let Ok(uuid) = service.get_uuid() {
|
||||||
services_vec.push(BluetoothServiceMsg {
|
services_vec.push(BluetoothServiceMsg {
|
||||||
uuid: uuid,
|
uuid,
|
||||||
is_primary: true,
|
is_primary: true,
|
||||||
instance_id: service.get_id(),
|
instance_id: service.get_id(),
|
||||||
});
|
});
|
||||||
|
@ -761,7 +754,7 @@ impl BluetoothManager {
|
||||||
return Err(BluetoothError::NotFound);
|
return Err(BluetoothError::NotFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(BluetoothResponse::GetPrimaryServices(services_vec, single));
|
Ok(BluetoothResponse::GetPrimaryServices(services_vec, single))
|
||||||
},
|
},
|
||||||
GATTType::Characteristic => {
|
GATTType::Characteristic => {
|
||||||
// Step 5.
|
// Step 5.
|
||||||
|
@ -772,14 +765,14 @@ impl BluetoothManager {
|
||||||
let mut characteristics =
|
let mut characteristics =
|
||||||
self.get_and_cache_gatt_characteristics(&mut adapter, &id);
|
self.get_and_cache_gatt_characteristics(&mut adapter, &id);
|
||||||
if let Some(uuid) = uuid {
|
if let Some(uuid) = uuid {
|
||||||
characteristics.retain(|ref e| e.get_uuid().unwrap_or(String::new()) == uuid);
|
characteristics.retain(|e| e.get_uuid().unwrap_or_default() == uuid);
|
||||||
}
|
}
|
||||||
let mut characteristics_vec = vec![];
|
let mut characteristics_vec = vec![];
|
||||||
for characteristic in characteristics {
|
for characteristic in characteristics {
|
||||||
if let Ok(uuid) = characteristic.get_uuid() {
|
if let Ok(uuid) = characteristic.get_uuid() {
|
||||||
let properties = self.get_characteristic_properties(&characteristic);
|
let properties = self.get_characteristic_properties(&characteristic);
|
||||||
characteristics_vec.push(BluetoothCharacteristicMsg {
|
characteristics_vec.push(BluetoothCharacteristicMsg {
|
||||||
uuid: uuid,
|
uuid,
|
||||||
instance_id: characteristic.get_id(),
|
instance_id: characteristic.get_id(),
|
||||||
broadcast: properties.contains(Flags::BROADCAST),
|
broadcast: properties.contains(Flags::BROADCAST),
|
||||||
read: properties.contains(Flags::READ),
|
read: properties.contains(Flags::READ),
|
||||||
|
@ -801,10 +794,10 @@ impl BluetoothManager {
|
||||||
return Err(BluetoothError::NotFound);
|
return Err(BluetoothError::NotFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(BluetoothResponse::GetCharacteristics(
|
Ok(BluetoothResponse::GetCharacteristics(
|
||||||
characteristics_vec,
|
characteristics_vec,
|
||||||
single,
|
single,
|
||||||
));
|
))
|
||||||
},
|
},
|
||||||
GATTType::IncludedService => {
|
GATTType::IncludedService => {
|
||||||
// Step 5.
|
// Step 5.
|
||||||
|
@ -832,7 +825,7 @@ impl BluetoothManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let Some(uuid) = uuid {
|
if let Some(uuid) = uuid {
|
||||||
services_vec.retain(|ref s| s.uuid == uuid);
|
services_vec.retain(|s| s.uuid == uuid);
|
||||||
}
|
}
|
||||||
services_vec.retain(|s| !uuid_is_blocklisted(&s.uuid, Blocklist::All));
|
services_vec.retain(|s| !uuid_is_blocklisted(&s.uuid, Blocklist::All));
|
||||||
|
|
||||||
|
@ -841,7 +834,7 @@ impl BluetoothManager {
|
||||||
return Err(BluetoothError::NotFound);
|
return Err(BluetoothError::NotFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(BluetoothResponse::GetIncludedServices(services_vec, single));
|
Ok(BluetoothResponse::GetIncludedServices(services_vec, single))
|
||||||
},
|
},
|
||||||
GATTType::Descriptor => {
|
GATTType::Descriptor => {
|
||||||
// Step 5.
|
// Step 5.
|
||||||
|
@ -851,13 +844,13 @@ impl BluetoothManager {
|
||||||
// Step 6.
|
// Step 6.
|
||||||
let mut descriptors = self.get_and_cache_gatt_descriptors(&mut adapter, &id);
|
let mut descriptors = self.get_and_cache_gatt_descriptors(&mut adapter, &id);
|
||||||
if let Some(uuid) = uuid {
|
if let Some(uuid) = uuid {
|
||||||
descriptors.retain(|ref e| e.get_uuid().unwrap_or(String::new()) == uuid);
|
descriptors.retain(|e| e.get_uuid().unwrap_or_default() == uuid);
|
||||||
}
|
}
|
||||||
let mut descriptors_vec = vec![];
|
let mut descriptors_vec = vec![];
|
||||||
for descriptor in descriptors {
|
for descriptor in descriptors {
|
||||||
if let Ok(uuid) = descriptor.get_uuid() {
|
if let Ok(uuid) = descriptor.get_uuid() {
|
||||||
descriptors_vec.push(BluetoothDescriptorMsg {
|
descriptors_vec.push(BluetoothDescriptorMsg {
|
||||||
uuid: uuid,
|
uuid,
|
||||||
instance_id: descriptor.get_id(),
|
instance_id: descriptor.get_id(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -867,7 +860,7 @@ impl BluetoothManager {
|
||||||
if descriptors_vec.is_empty() {
|
if descriptors_vec.is_empty() {
|
||||||
return Err(BluetoothError::NotFound);
|
return Err(BluetoothError::NotFound);
|
||||||
}
|
}
|
||||||
return Ok(BluetoothResponse::GetDescriptors(descriptors_vec, single));
|
Ok(BluetoothResponse::GetDescriptors(descriptors_vec, single))
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -882,7 +875,7 @@ impl BluetoothManager {
|
||||||
// (Characteristic) Step 5.3.
|
// (Characteristic) Step 5.3.
|
||||||
let mut value = self
|
let mut value = self
|
||||||
.get_gatt_characteristic(&mut adapter, &id)
|
.get_gatt_characteristic(&mut adapter, &id)
|
||||||
.map(|c| c.read_value().unwrap_or(vec![]));
|
.map(|c| c.read_value().unwrap_or_default());
|
||||||
|
|
||||||
// (Characteristic) TODO: Step 5.4: Handle all the errors returned from the read_value call.
|
// (Characteristic) TODO: Step 5.4: Handle all the errors returned from the read_value call.
|
||||||
|
|
||||||
|
@ -890,7 +883,7 @@ impl BluetoothManager {
|
||||||
if value.is_none() {
|
if value.is_none() {
|
||||||
value = self
|
value = self
|
||||||
.get_gatt_descriptor(&mut adapter, &id)
|
.get_gatt_descriptor(&mut adapter, &id)
|
||||||
.map(|d| d.read_value().unwrap_or(vec![]));
|
.map(|d| d.read_value().unwrap_or_default());
|
||||||
}
|
}
|
||||||
|
|
||||||
// (Descriptor) TODO: Step 5.3: Handle all the errors returned from the read_value call.
|
// (Descriptor) TODO: Step 5.3: Handle all the errors returned from the read_value call.
|
||||||
|
@ -898,11 +891,11 @@ impl BluetoothManager {
|
||||||
match value {
|
match value {
|
||||||
// (Characteristic) Step 5.5.4.
|
// (Characteristic) Step 5.5.4.
|
||||||
// (Descriptor) Step 5.4.3.
|
// (Descriptor) Step 5.4.3.
|
||||||
Some(v) => return Ok(BluetoothResponse::ReadValue(v)),
|
Some(v) => Ok(BluetoothResponse::ReadValue(v)),
|
||||||
|
|
||||||
// (Characteristic) Step 4.
|
// (Characteristic) Step 4.
|
||||||
// (Descriptor) Step 4.
|
// (Descriptor) Step 4.
|
||||||
None => return Err(BluetoothError::InvalidState),
|
None => Err(BluetoothError::InvalidState),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -933,15 +926,15 @@ impl BluetoothManager {
|
||||||
Some(v) => match v {
|
Some(v) => match v {
|
||||||
// (Characteristic) Step 7.5.3.
|
// (Characteristic) Step 7.5.3.
|
||||||
// (Descriptor) Step 7.4.3.
|
// (Descriptor) Step 7.4.3.
|
||||||
Ok(_) => return Ok(BluetoothResponse::WriteValue(value)),
|
Ok(_) => Ok(BluetoothResponse::WriteValue(value)),
|
||||||
|
|
||||||
// (Characteristic) Step 7.1.
|
// (Characteristic) Step 7.1.
|
||||||
Err(_) => return Err(BluetoothError::NotSupported),
|
Err(_) => Err(BluetoothError::NotSupported),
|
||||||
},
|
},
|
||||||
|
|
||||||
// (Characteristic) Step 6.
|
// (Characteristic) Step 6.
|
||||||
// (Descriptor) Step 6.
|
// (Descriptor) Step 6.
|
||||||
None => return Err(BluetoothError::InvalidState),
|
None => Err(BluetoothError::InvalidState),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -969,14 +962,14 @@ impl BluetoothManager {
|
||||||
match result {
|
match result {
|
||||||
// (StartNotification) Step 11.
|
// (StartNotification) Step 11.
|
||||||
// (StopNotification) Step 5.
|
// (StopNotification) Step 5.
|
||||||
Ok(_) => return Ok(BluetoothResponse::EnableNotification(())),
|
Ok(_) => Ok(BluetoothResponse::EnableNotification(())),
|
||||||
|
|
||||||
// (StartNotification) Step 5.
|
// (StartNotification) Step 5.
|
||||||
Err(_) => return Err(BluetoothError::NotSupported),
|
Err(_) => Err(BluetoothError::NotSupported),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// (StartNotification) Step 4.
|
// (StartNotification) Step 4.
|
||||||
None => return Err(BluetoothError::InvalidState),
|
None => Err(BluetoothError::InvalidState),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -984,7 +977,7 @@ impl BluetoothManager {
|
||||||
fn watch_advertisements(&mut self, _device_id: String) -> BluetoothResponseResult {
|
fn watch_advertisements(&mut self, _device_id: String) -> BluetoothResponseResult {
|
||||||
// Step 2.
|
// Step 2.
|
||||||
// TODO: Implement this when supported in lower level
|
// TODO: Implement this when supported in lower level
|
||||||
return Err(BluetoothError::NotSupported);
|
Err(BluetoothError::NotSupported)
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetooth-getavailability
|
// https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetooth-getavailability
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue