mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Synchronize dispatch_actions
in WebDriver (#36932)
Implement missing synchronization in `dispatch_actions` of `WebDriver`. https://w3c.github.io/webdriver/#dispatching-actions > The user agent event loop has spun enough times to process the DOM events generated by the last invocation of the >[dispatch tick actions](https://w3c.github.io/webdriver/#dfn-dispatch-tick-actions) steps. - Add a way for `ScriptThread` to notify `WebDriver` about the completion of input commands. - Add a `webdriver_id` field for `InputEvent`. `ScriptThread` uses it to distinguish WebDriver events and sends notification. Tests: `./mach test-wpt --product servodriver -r tests\wpt\tests\webdriver\tests\classic\element_click\events.py` pass if `hit_testing` pass. Check [issue](https://github.com/servo/servo/issues/36676#issuecomment-2882917136) cc: @xiaochengh --------- Signed-off-by: batu_hoang <longvatrong111@gmail.com> Signed-off-by: Martin Robinson <mrobinson@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
3a527d784b
commit
f52fa9b672
13 changed files with 471 additions and 140 deletions
|
@ -537,31 +537,31 @@ impl RunningAppState {
|
|||
/// Register a mouse movement.
|
||||
pub fn mouse_move(&self, x: f32, y: f32) {
|
||||
self.active_webview()
|
||||
.notify_input_event(InputEvent::MouseMove(MouseMoveEvent {
|
||||
point: Point2D::new(x, y),
|
||||
}));
|
||||
.notify_input_event(InputEvent::MouseMove(MouseMoveEvent::new(Point2D::new(
|
||||
x, y,
|
||||
))));
|
||||
self.perform_updates();
|
||||
}
|
||||
|
||||
/// Register a mouse button press.
|
||||
pub fn mouse_down(&self, x: f32, y: f32, button: MouseButton) {
|
||||
self.active_webview()
|
||||
.notify_input_event(InputEvent::MouseButton(MouseButtonEvent {
|
||||
action: MouseButtonAction::Down,
|
||||
.notify_input_event(InputEvent::MouseButton(MouseButtonEvent::new(
|
||||
MouseButtonAction::Down,
|
||||
button,
|
||||
point: Point2D::new(x, y),
|
||||
}));
|
||||
Point2D::new(x, y),
|
||||
)));
|
||||
self.perform_updates();
|
||||
}
|
||||
|
||||
/// Register a mouse button release.
|
||||
pub fn mouse_up(&self, x: f32, y: f32, button: MouseButton) {
|
||||
self.active_webview()
|
||||
.notify_input_event(InputEvent::MouseButton(MouseButtonEvent {
|
||||
action: MouseButtonAction::Up,
|
||||
.notify_input_event(InputEvent::MouseButton(MouseButtonEvent::new(
|
||||
MouseButtonAction::Up,
|
||||
button,
|
||||
point: Point2D::new(x, y),
|
||||
}));
|
||||
Point2D::new(x, y),
|
||||
)));
|
||||
self.perform_updates();
|
||||
}
|
||||
|
||||
|
@ -589,11 +589,11 @@ impl RunningAppState {
|
|||
/// Perform a click.
|
||||
pub fn click(&self, x: f32, y: f32) {
|
||||
self.active_webview()
|
||||
.notify_input_event(InputEvent::MouseButton(MouseButtonEvent {
|
||||
action: MouseButtonAction::Click,
|
||||
button: MouseButton::Left,
|
||||
point: Point2D::new(x, y),
|
||||
}));
|
||||
.notify_input_event(InputEvent::MouseButton(MouseButtonEvent::new(
|
||||
MouseButtonAction::Click,
|
||||
MouseButton::Left,
|
||||
Point2D::new(x, y),
|
||||
)));
|
||||
self.perform_updates();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue