0
Files
src/content/test/mock_render_input_router.cc
Aman Verma 3c0517dbb2 [4/n] Introduce RenderInputRouterClient and move InputRouterClient
implementation to RenderInputRouter.

This CL refactors input handling interfaces by moving InputRouterClient
interface's implementation to RenderInputRouter completely from
RenderWidgetHostImpl, which would allow RenderInputRouter to handle
touch input events with InputVizard. RenderInputRouterClient is also
introduced which would be passing the repsonsiblity of handling
non-touch input events to RenderWidgetHostImpl in the browser, since
these are not going to be handled on VizCompositor thread with
InputVizard.

Doc Link:
https://docs.google.com/document/d/1dgbvnRChsvfMpXceQ24UbTdFwJpmk5VIl7WXHwExAC4/edit?tab=t.0#heading=h.7wb78gd5w8i0

Bug: b:331420891
Change-Id: I6669f8457bcb7ccf7db639325e6f23fc1c2785f3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5636652
Auto-Submit: Aman Verma <amanvr@google.com>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Commit-Queue: Aman Verma <amanvr@google.com>
Cr-Commit-Position: refs/heads/main@{#1320247}
2024-06-27 11:50:21 +00:00

72 lines
2.5 KiB
C++

// 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 "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));
}
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;
}
MockWidgetInputHandler::MessageVector
MockRenderInputRouter::GetAndResetDispatchedMessages() {
return mock_widget_input_handler_->GetAndResetDispatchedMessages();
}
blink::mojom::WidgetInputHandler*
MockRenderInputRouter::GetWidgetInputHandler() {
return mock_widget_input_handler_.get();
}
} // namespace content