blob: 61735a804064917e11c9acd65df817caf62d8755 [file] [log] [blame]
// Copyright 2013 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/browser/renderer_host/input/mock_input_router_client.h"
#include "components/input/input_router.h"
#include "content/browser/scheduler/browser_ui_thread_scheduler.h"
#include "testing/gtest/include/gtest/gtest.h"
using blink::WebGestureEvent;
using blink::WebInputEvent;
using blink::WebMouseWheelEvent;
namespace content {
MockInputRouterClient::MockInputRouterClient()
: input_router_(nullptr),
filter_state_(blink::mojom::InputEventResultState::kNotConsumed),
filter_input_event_called_(false),
compositor_allowed_touch_action_(cc::TouchAction::kAuto) {}
MockInputRouterClient::~MockInputRouterClient() {}
blink::mojom::InputEventResultState MockInputRouterClient::FilterInputEvent(
const WebInputEvent& input_event,
const ui::LatencyInfo& latency_info) {
filter_input_event_called_ = true;
last_filter_event_ = input_event.Clone();
return filter_state_;
}
void MockInputRouterClient::IncrementInFlightEventCount() {
++in_flight_event_count_;
}
void MockInputRouterClient::DecrementInFlightEventCount(
blink::mojom::InputEventResultSource ack_source) {
--in_flight_event_count_;
}
void MockInputRouterClient::DidOverscroll(
blink::mojom::DidOverscrollParamsPtr params) {
overscroll_ = ui::DidOverscrollParams(
params->accumulated_overscroll, params->latest_overscroll_delta,
params->current_fling_velocity, params->causal_event_viewport_point,
params->overscroll_behavior);
}
void MockInputRouterClient::OnSetCompositorAllowedTouchAction(
cc::TouchAction compositor_allowed_touch_action) {
compositor_allowed_touch_action_ = compositor_allowed_touch_action;
}
void MockInputRouterClient::DidStartScrollingViewport() {}
void MockInputRouterClient::ForwardGestureEventWithLatencyInfo(
const blink::WebGestureEvent& gesture_event,
const ui::LatencyInfo& latency_info) {
if (input_router_) {
input::ScopedDispatchToRendererCallback dispatch_callback(
GetDispatchToRendererCallback());
input_router_->SendGestureEvent(
input::GestureEventWithLatencyInfo(gesture_event, latency_info),
dispatch_callback.callback);
}
if (gesture_event.SourceDevice() != blink::WebGestureDevice::kTouchpad)
return;
if (gesture_event.GetType() == WebInputEvent::Type::kGestureScrollBegin) {
is_wheel_scroll_in_progress_ = true;
} else if (gesture_event.GetType() ==
WebInputEvent::Type::kGestureScrollEnd) {
is_wheel_scroll_in_progress_ = false;
}
}
void MockInputRouterClient::ForwardWheelEventWithLatencyInfo(
const blink::WebMouseWheelEvent& wheel_event,
const ui::LatencyInfo& latency_info) {
if (input_router_) {
input::ScopedDispatchToRendererCallback dispatch_callback(
GetDispatchToRendererCallback());
input_router_->SendWheelEvent(
input::MouseWheelEventWithLatencyInfo(wheel_event, latency_info),
dispatch_callback.callback);
}
}
bool MockInputRouterClient::IsWheelScrollInProgress() {
return is_wheel_scroll_in_progress_;
}
bool MockInputRouterClient::IsAutoscrollInProgress() {
return false;
}
gfx::Size MockInputRouterClient::GetRootWidgetViewportSize() {
return gfx::Size(1920, 1080);
}
bool MockInputRouterClient::GetAndResetFilterEventCalled() {
bool filter_input_event_called = filter_input_event_called_;
filter_input_event_called_ = false;
return filter_input_event_called;
}
ui::DidOverscrollParams MockInputRouterClient::GetAndResetOverscroll() {
ui::DidOverscrollParams overscroll;
std::swap(overscroll_, overscroll);
return overscroll;
}
cc::TouchAction
MockInputRouterClient::GetAndResetCompositorAllowedTouchAction() {
cc::TouchAction allowed = compositor_allowed_touch_action_;
compositor_allowed_touch_action_ = cc::TouchAction::kAuto;
return allowed;
}
bool MockInputRouterClient::ProgressFlingOnFlingStart() {
return true;
}
bool MockInputRouterClient::ShouldUseMobileFlingCurve() {
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
return true;
#else
return false;
#endif
}
gfx::Vector2dF MockInputRouterClient::GetPixelsPerInch(
const gfx::PointF& position_in_screen) {
return gfx::Vector2dF(input::kDefaultPixelsPerInch,
input::kDefaultPixelsPerInch);
}
blink::mojom::WidgetInputHandler*
MockInputRouterClient::GetWidgetInputHandler() {
return &widget_input_handler_;
}
input::StylusInterface* MockInputRouterClient::GetStylusInterface() {
return render_widget_host_view_;
}
void MockInputRouterClient::OnStartStylusWriting() {
on_start_stylus_writing_called_ = true;
}
input::DispatchToRendererCallback
MockInputRouterClient::GetDispatchToRendererCallback() {
return base::DoNothing();
}
} // namespace content