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:
Delan Azabani 2025-01-30 19:15:35 +08:00 committed by GitHub
parent 9eeb602f7a
commit 5e9de2cb61
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
70 changed files with 809 additions and 753 deletions

View file

@ -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),