| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "content/test/mock_render_input_router.h" |
| |
| #include "base/task/single_thread_task_runner.h" |
| #include "components/input/mock_input_router.h" |
| |
| namespace content { |
| |
| MockRenderInputRouter::MockRenderInputRouter( |
| input::RenderInputRouterClient* host, |
| std::unique_ptr<input::FlingSchedulerBase> fling_scheduler, |
| input::RenderInputRouterDelegate* delegate, |
| scoped_refptr<base::SingleThreadTaskRunner> task_runner) |
| : input::RenderInputRouter(host, |
| std::move(fling_scheduler), |
| delegate, |
| std::move(task_runner)) { |
| acked_touch_event_type_ = blink::WebInputEvent::Type::kUndefined; |
| mock_widget_input_handler_ = std::make_unique<MockWidgetInputHandler>(); |
| } |
| |
| MockRenderInputRouter::~MockRenderInputRouter() = default; |
| |
| void MockRenderInputRouter::OnTouchEventAck( |
| const input::TouchEventWithLatencyInfo& event, |
| blink::mojom::InputEventResultSource ack_source, |
| blink::mojom::InputEventResultState ack_result) { |
| // Sniff touch acks. |
| acked_touch_event_type_ = event.event.GetType(); |
| RenderInputRouter::OnTouchEventAck(event, ack_source, ack_result); |
| } |
| |
| void MockRenderInputRouter::SetupForInputRouterTest() { |
| input_router_ = std::make_unique<input::MockInputRouter>(this); |
| } |
| |
| void MockRenderInputRouter::ForwardTouchEventWithLatencyInfo( |
| const blink::WebTouchEvent& touch_event, |
| const ui::LatencyInfo& ui_latency) { |
| RenderInputRouter::ForwardTouchEventWithLatencyInfo(touch_event, ui_latency); |
| SetLastWheelOrTouchEventLatencyInfo(ui::LatencyInfo(ui_latency)); |
| last_forwarded_touch_event_ = touch_event; |
| } |
| |
| void MockRenderInputRouter::ForwardGestureEventWithLatencyInfo( |
| const blink::WebGestureEvent& gesture_event, |
| const ui::LatencyInfo& ui_latency) { |
| RenderInputRouter::ForwardGestureEventWithLatencyInfo(gesture_event, |
| ui_latency); |
| last_forwarded_gesture_event_ = gesture_event; |
| } |
| |
| std::optional<WebGestureEvent> |
| MockRenderInputRouter::GetAndResetLastForwardedGestureEvent() { |
| std::optional<WebGestureEvent> ret; |
| last_forwarded_gesture_event_.swap(ret); |
| return ret; |
| } |
| |
| std::optional<WebTouchEvent> |
| MockRenderInputRouter::GetAndResetLastForwardedTouchEvent() { |
| std::optional<WebTouchEvent> ret; |
| last_forwarded_touch_event_.swap(ret); |
| return ret; |
| } |
| |
| MockWidgetInputHandler::MessageVector |
| MockRenderInputRouter::GetAndResetDispatchedMessages() { |
| return mock_widget_input_handler_->GetAndResetDispatchedMessages(); |
| } |
| |
| blink::mojom::WidgetInputHandler* |
| MockRenderInputRouter::GetWidgetInputHandler() { |
| return mock_widget_input_handler_.get(); |
| } |
| |
| } // namespace content |