mirror of
https://github.com/servo/servo.git
synced 2025-08-07 22:45:34 +01:00
webdriver: Move NewWebView
, FocusWebView
, GetWindowSize
, and SetWindowSize
to servoshell (#37555)
Follow up to: https://github.com/servo/servo/pull/36714 Moving webdriver [context commands](https://www.w3.org/TR/webdriver2/#contexts) to be handled in embedder: - [x] New Window command - `WebdriverCommandMsg::NewWebView` - [x] Switch To Window command - `WebdriverCommandMsg::FocusWebView` - [x] Resizing commands cc: @xiaochengh --------- Signed-off-by: batu_hoang <longvatrong111@gmail.com>
This commit is contained in:
parent
5ea003752a
commit
d970584332
8 changed files with 148 additions and 97 deletions
|
@ -4542,41 +4542,11 @@ where
|
|||
WebDriverCommandMsg::CloseWebView(..) => {
|
||||
unreachable!("This command should be send directly to the embedder.");
|
||||
},
|
||||
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(
|
||||
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"),
|
||||
new_webview_id,
|
||||
viewport_details,
|
||||
Some(load_status_sender),
|
||||
);
|
||||
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::NewWebView(..) => {
|
||||
unreachable!("This command should be send directly to the embedder.");
|
||||
},
|
||||
WebDriverCommandMsg::FocusWebView(webview_id) => {
|
||||
self.handle_focus_web_view(webview_id);
|
||||
WebDriverCommandMsg::FocusWebView(..) => {
|
||||
unreachable!("This command should be send directly to the embedder.");
|
||||
},
|
||||
WebDriverCommandMsg::IsWebViewOpen(..) => {
|
||||
unreachable!("This command should be send directly to the embedder.");
|
||||
|
@ -4585,7 +4555,10 @@ where
|
|||
let is_open = self.browsing_contexts.contains_key(&browsing_context_id);
|
||||
let _ = response_sender.send(is_open);
|
||||
},
|
||||
WebDriverCommandMsg::GetWindowSize(webview_id, response_sender) => {
|
||||
WebDriverCommandMsg::GetWindowSize(..) => {
|
||||
unreachable!("This command should be send directly to the embedder.");
|
||||
},
|
||||
WebDriverCommandMsg::GetViewportSize(webview_id, response_sender) => {
|
||||
let browsing_context_id = BrowsingContextId::from(webview_id);
|
||||
let size = self
|
||||
.browsing_contexts
|
||||
|
@ -4594,10 +4567,8 @@ where
|
|||
.unwrap_or_default();
|
||||
let _ = response_sender.send(size);
|
||||
},
|
||||
WebDriverCommandMsg::SetWindowSize(webview_id, size, response_sender) => {
|
||||
self.webdriver.resize_channel = Some(response_sender);
|
||||
self.embedder_proxy
|
||||
.send(EmbedderMsg::ResizeTo(webview_id, size));
|
||||
WebDriverCommandMsg::SetWindowSize(..) => {
|
||||
unreachable!("This command should be send directly to the embedder.");
|
||||
},
|
||||
WebDriverCommandMsg::LoadUrl(webview_id, url, response_sender) => {
|
||||
let load_data = LoadData::new(
|
||||
|
@ -4767,6 +4738,9 @@ where
|
|||
response_sender,
|
||||
));
|
||||
},
|
||||
_ => {
|
||||
warn!("Unhandled WebDriver command: {:?}", msg);
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue