mirror of
https://github.com/servo/servo.git
synced 2025-09-27 23:30:08 +01:00
Webdriver: Send Keys use webview::notify_input_event
(#37911)
Previously, we SendKeys will be forwarded to constellation by the embedder. Now we use webview.notify_input_event, which will send WebDriverCommandMsg::ForwardInputEvent for the KeyboardEvent and CompositionEvent. Fixes: part of https://github.com/servo/servo/issues/37370 --------- Signed-off-by: PotatoCP <kenzieradityatirtarahardja18@gmail.com>
This commit is contained in:
parent
f88dd2a12c
commit
a475175949
4 changed files with 32 additions and 47 deletions
|
@ -16,6 +16,7 @@ use constellation_traits::EmbedderToConstellationMessage;
|
|||
use crossbeam_channel::unbounded;
|
||||
use euclid::{Point2D, Vector2D};
|
||||
use ipc_channel::ipc;
|
||||
use keyboard_types::webdriver::Event as WebDriverInputEvent;
|
||||
use log::{info, trace, warn};
|
||||
use net::protocols::ProtocolRegistry;
|
||||
use servo::config::opts::Opts;
|
||||
|
@ -26,7 +27,7 @@ use servo::user_content_manager::{UserContentManager, UserScript};
|
|||
use servo::webrender_api::ScrollLocation;
|
||||
use servo::webrender_api::units::DeviceIntSize;
|
||||
use servo::{
|
||||
EventLoopWaker, InputEvent, KeyboardEvent, MouseButtonEvent, MouseMoveEvent,
|
||||
EventLoopWaker, ImeEvent, InputEvent, KeyboardEvent, MouseButtonEvent, MouseMoveEvent,
|
||||
WebDriverCommandMsg, WebDriverScriptCommand, WebDriverUserPromptAction, WheelDelta, WheelEvent,
|
||||
WheelMode,
|
||||
};
|
||||
|
@ -476,8 +477,25 @@ impl App {
|
|||
}
|
||||
},
|
||||
// Key events don't need hit test so can be forwarded to constellation for now
|
||||
WebDriverCommandMsg::SendKeys(..) => {
|
||||
running_state.forward_webdriver_command(msg);
|
||||
WebDriverCommandMsg::SendKeys(webview_id, webdriver_input_events) => {
|
||||
let Some(webview) = running_state.webview_by_id(webview_id) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
for event in webdriver_input_events {
|
||||
match event {
|
||||
WebDriverInputEvent::Keyboard(event) => {
|
||||
webview.notify_input_event(InputEvent::Keyboard(
|
||||
KeyboardEvent::new(event),
|
||||
));
|
||||
},
|
||||
WebDriverInputEvent::Composition(event) => {
|
||||
webview.notify_input_event(InputEvent::Ime(ImeEvent::Composition(
|
||||
event,
|
||||
)));
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
WebDriverCommandMsg::KeyboardAction(webview_id, key_event, msg_id) => {
|
||||
// TODO: We should do processing like in `headed_window:handle_keyboard_input`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue