mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Include WebViewId
into EmbedderMsg variants where possible (#35211)
`EmbedderMsg` was previously paired with an implicit `Option<WebViewId>`, even though almost all variants were either always `Some` or always `None`, depending on whether there was a `WebView involved. This patch adds the `WebViewId` to as many `EmbedderMsg` variants as possible, so we can call their associated `WebView` delegate methods without needing to check and unwrap the `Option`. In many cases, this required more changes to plumb through the `WebViewId`. Notably, all `Request`s now explicitly need a `WebView` or not, in order to ensure that it is passed when appropriate. Signed-off-by: Delan Azabani <dazabani@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
9eeb602f7a
commit
5e9de2cb61
70 changed files with 809 additions and 753 deletions
|
@ -19,6 +19,7 @@ use std::string::String;
|
|||
use std::thread;
|
||||
use std::time::Duration;
|
||||
|
||||
use base::id::WebViewId;
|
||||
use bitflags::bitflags;
|
||||
use bluetooth_traits::blocklist::{uuid_is_blocklisted, Blocklist};
|
||||
use bluetooth_traits::scanfilter::{
|
||||
|
@ -387,6 +388,7 @@ impl BluetoothManager {
|
|||
|
||||
fn select_device(
|
||||
&mut self,
|
||||
webview_id: WebViewId,
|
||||
devices: Vec<BluetoothDevice>,
|
||||
adapter: &BluetoothAdapter,
|
||||
) -> Option<String> {
|
||||
|
@ -408,11 +410,12 @@ impl BluetoothManager {
|
|||
}
|
||||
|
||||
let (ipc_sender, ipc_receiver) = ipc::channel().expect("Failed to create IPC channel!");
|
||||
let msg = (
|
||||
None,
|
||||
EmbedderMsg::GetSelectedBluetoothDevice(dialog_rows, ipc_sender),
|
||||
);
|
||||
self.embedder_proxy.send(msg);
|
||||
self.embedder_proxy
|
||||
.send(EmbedderMsg::GetSelectedBluetoothDevice(
|
||||
webview_id,
|
||||
dialog_rows,
|
||||
ipc_sender,
|
||||
));
|
||||
|
||||
match ipc_receiver.recv() {
|
||||
Ok(result) => result,
|
||||
|
@ -628,7 +631,7 @@ impl BluetoothManager {
|
|||
}
|
||||
|
||||
// Step 9.
|
||||
if let Some(address) = self.select_device(matched_devices, &adapter) {
|
||||
if let Some(address) = self.select_device(options.webview_id(), matched_devices, &adapter) {
|
||||
let device_id = match self.address_to_id.get(&address) {
|
||||
Some(id) => id.clone(),
|
||||
None => return Err(BluetoothError::NotFound),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue