blob: 5aef6d007034971d29bafefa24be5df0037da689 [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 "content/browser/scheduler/browser_ui_thread_scheduler.h"
#include "content/common/input/input_router.h"
#include "testing/gtest/include/gtest/gtest.h"
using blink::WebGestureEvent;
using blink::WebInputEvent;
using blink::WebMouseWheelEvent;
namespace content {
MockInputRouterClient::MockInputRouterClient()
: input_router_(nullptr),
in_flight_event_count_(0),
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::NotifyUISchedulerOfGestureEventUpdate(
blink::WebInputEvent::Type gesture_event) {}
void MockInputRouterClient::DidOverscroll(
const ui::DidOverscrollParams& params) {
overscroll_ = params;
}
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_router_->SendGestureEvent(
input::GestureEventWithLatencyInfo(gesture_event, latency_info));
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_router_->SendWheelEvent(
input::MouseWheelEventWithLatencyInfo(wheel_event, latency_info));
}
}
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::NeedsBeginFrameForFlingProgress() {
return false;
}
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);
}
} // namespace content