1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
// 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.
#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_MOCK_INPUT_ROUTER_CLIENT_H_
#define CONTENT_BROWSER_RENDERER_HOST_INPUT_MOCK_INPUT_ROUTER_CLIENT_H_
#include <stddef.h>
#include <memory>
#include "base/memory/raw_ptr.h"
#include "components/input/fling_controller.h"
#include "components/input/input_router.h"
#include "components/input/input_router_client.h"
#include "content/browser/renderer_host/input/mock_render_widget_host_view_for_stylus_writing.h"
#include "content/browser/scheduler/browser_ui_thread_scheduler.h"
#include "content/test/mock_widget_input_handler.h"
#include "ui/events/blink/did_overscroll_params.h"
namespace content {
class MockInputRouterClient : public input::InputRouterClient,
public input::FlingControllerSchedulerClient {
public:
MockInputRouterClient();
~MockInputRouterClient() override;
// InputRouterClient
blink::mojom::InputEventResultState FilterInputEvent(
const blink::WebInputEvent& input_event,
const ui::LatencyInfo& latency_info) override;
void IncrementInFlightEventCount() override;
void DecrementInFlightEventCount(
blink::mojom::InputEventResultSource ack_source) override;
void DidOverscroll(blink::mojom::DidOverscrollParamsPtr params) override;
void OnSetCompositorAllowedTouchAction(cc::TouchAction touch_action) override;
void DidStartScrollingViewport() override;
void ForwardWheelEventWithLatencyInfo(
const blink::WebMouseWheelEvent& wheel_event,
const ui::LatencyInfo& latency_info) override;
void ForwardGestureEventWithLatencyInfo(
const blink::WebGestureEvent& gesture_event,
const ui::LatencyInfo& latency_info) override;
bool IsWheelScrollInProgress() override;
bool IsAutoscrollInProgress() override;
void SetMouseCapture(bool capture) override {}
void SetAutoscrollSelectionActiveInMainFrame(
bool autoscroll_selection) override {}
void RequestMouseLock(
bool user_gesture,
bool unadjusted_movement,
blink::mojom::WidgetInputHandlerHost::RequestMouseLockCallback response)
override {}
gfx::Size GetRootWidgetViewportSize() override;
void OnInvalidInputEventSource() override {}
blink::mojom::WidgetInputHandler* GetWidgetInputHandler() override;
void OnImeCancelComposition() override {}
void OnImeCompositionRangeChanged(
const gfx::Range& range,
const std::optional<std::vector<gfx::Rect>>& character_bounds) override {}
input::StylusInterface* GetStylusInterface() override;
void OnStartStylusWriting() override;
input::DispatchToRendererCallback GetDispatchToRendererCallback() override;
bool GetAndResetFilterEventCalled();
ui::DidOverscrollParams GetAndResetOverscroll();
cc::TouchAction GetAndResetCompositorAllowedTouchAction();
void set_input_router(input::InputRouter* input_router) {
input_router_ = input_router;
}
void set_filter_state(blink::mojom::InputEventResultState filter_state) {
filter_state_ = filter_state;
}
int in_flight_event_count() const {
return in_flight_event_count_;
}
blink::WebInputEvent::Type last_in_flight_event_type() const {
return last_filter_event()->GetType();
}
void set_allow_send_event(bool allow) {
filter_state_ = blink::mojom::InputEventResultState::kNoConsumerExists;
}
const blink::WebInputEvent* last_filter_event() const {
return last_filter_event_.get();
}
bool on_start_stylus_writing_called() const {
return on_start_stylus_writing_called_;
}
MockWidgetInputHandler::MessageVector GetAndResetDispatchedMessages() {
return widget_input_handler_.GetAndResetDispatchedMessages();
}
void set_render_widget_host_view(
MockRenderWidgetHostViewForStylusWriting* view) {
render_widget_host_view_ = view;
}
// FlingControllerSchedulerClient
void ScheduleFlingProgress(
base::WeakPtr<input::FlingController> fling_controller) override {}
void DidStopFlingingOnBrowser(
base::WeakPtr<input::FlingController> fling_controller) override {}
bool NeedsBeginFrameForFlingProgress() override;
bool ShouldUseMobileFlingCurve() override;
gfx::Vector2dF GetPixelsPerInch(
const gfx::PointF& position_in_screen) override;
private:
raw_ptr<input::InputRouter, DanglingUntriaged> input_router_;
int in_flight_event_count_ = 0;
blink::mojom::InputEventResultState filter_state_;
bool filter_input_event_called_;
std::unique_ptr<blink::WebInputEvent> last_filter_event_;
ui::DidOverscrollParams overscroll_;
cc::TouchAction compositor_allowed_touch_action_;
bool is_wheel_scroll_in_progress_ = false;
MockWidgetInputHandler widget_input_handler_;
raw_ptr<MockRenderWidgetHostViewForStylusWriting> render_widget_host_view_;
bool on_start_stylus_writing_called_ = false;
};
} // namespace content
#endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_MOCK_INPUT_ROUTER_CLIENT_H_
|