aboutsummaryrefslogtreecommitdiffstats
path: root/components/constellation/constellation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/constellation/constellation.rs')
-rw-r--r--components/constellation/constellation.rs31
1 files changed, 22 insertions, 9 deletions
diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs
index 5b4d244e746..82f55589686 100644
--- a/components/constellation/constellation.rs
+++ b/components/constellation/constellation.rs
@@ -4702,25 +4702,38 @@ where
WebDriverCommandMsg::CloseWebView(webview_id) => {
self.handle_close_top_level_browsing_context(webview_id);
},
- WebDriverCommandMsg::NewWebView(webview_id, sender, load_sender) => {
- let (chan, port) = match ipc::channel() {
+ WebDriverCommandMsg::NewWebView(
+ originating_webview_id,
+ response_sender,
+ load_status_sender,
+ ) => {
+ let (embedder_sender, receiver) = match ipc::channel() {
Ok(result) => result,
Err(error) => return warn!("Failed to create channel: {error:?}"),
};
- self.embedder_proxy
- .send(EmbedderMsg::AllowOpeningWebView(webview_id, chan));
- let (webview_id, viewport_details) = match port.recv() {
- Ok(Some((webview_id, viewport_details))) => (webview_id, viewport_details),
+ self.embedder_proxy.send(EmbedderMsg::AllowOpeningWebView(
+ originating_webview_id,
+ embedder_sender,
+ ));
+ let (new_webview_id, viewport_details) = match receiver.recv() {
+ Ok(Some((new_webview_id, viewport_details))) => {
+ (new_webview_id, viewport_details)
+ },
Ok(None) => return warn!("Embedder refused to allow opening webview"),
Err(error) => return warn!("Failed to receive webview id: {error:?}"),
};
self.handle_new_top_level_browsing_context(
ServoUrl::parse_with_base(None, "about:blank").expect("Infallible parse"),
- webview_id,
+ new_webview_id,
viewport_details,
- Some(load_sender),
+ Some(load_status_sender),
);
- let _ = sender.send(webview_id);
+ if let Err(error) = response_sender.send(new_webview_id) {
+ error!(
+ "WebDriverCommandMsg::NewWebView: IPC error when sending new_webview_id \
+ to webdriver server: {error}"
+ );
+ }
},
WebDriverCommandMsg::FocusWebView(webview_id) => {
self.handle_focus_web_view(webview_id);