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 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CC_TEST_MOCK_INPUT_HANDLER_H_
#define CC_TEST_MOCK_INPUT_HANDLER_H_
#include <memory>
#include "base/memory/weak_ptr.h"
#include "cc/input/browser_controls_offset_tag_modifications.h"
#include "cc/input/browser_controls_state.h"
#include "cc/input/event_listener_properties.h"
#include "cc/input/input_handler.h"
#include "cc/input/scroll_elasticity_helper.h"
#include "cc/input/scroll_state.h"
#include "cc/metrics/events_metrics_manager.h"
#include "cc/paint/element_id.h"
#include "cc/test/fake_compositor_delegate_for_input.h"
#include "cc/trees/latency_info_swap_promise_monitor.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "ui/events/types/scroll_input_type.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/vector2d_f.h"
namespace cc {
class MockInputHandler : public InputHandler {
public:
MockInputHandler();
MockInputHandler(const MockInputHandler&) = delete;
MockInputHandler& operator=(const MockInputHandler&) = delete;
~MockInputHandler() override;
base::WeakPtr<InputHandler> AsWeakPtr() override {
return weak_ptr_factory_.GetWeakPtr();
}
MOCK_METHOD2(PinchGestureBegin,
void(const gfx::Point& anchor, ui::ScrollInputType type));
MOCK_METHOD2(PinchGestureUpdate,
void(float magnify_delta, const gfx::Point& anchor));
MOCK_METHOD1(PinchGestureEnd, void(const gfx::Point& anchor));
MOCK_METHOD0(SetNeedsAnimateInput, void());
MOCK_METHOD2(ScrollBegin,
ScrollStatus(ScrollState*, ui::ScrollInputType type));
MOCK_METHOD2(RootScrollBegin,
ScrollStatus(ScrollState*, ui::ScrollInputType type));
MOCK_METHOD2(ScrollUpdate,
InputHandlerScrollResult(ScrollState, base::TimeDelta));
MOCK_METHOD1(ScrollEnd, void(bool));
MOCK_METHOD2(RecordScrollBegin,
void(ui::ScrollInputType type, ScrollBeginThreadState state));
MOCK_METHOD1(RecordScrollEnd, void(ui::ScrollInputType type));
MOCK_METHOD1(HitTest, PointerResultType(const gfx::PointF& mouse_position));
MOCK_METHOD2(MouseDown,
InputHandlerPointerResult(const gfx::PointF& mouse_position,
const bool shift_modifier));
MOCK_METHOD1(MouseUp,
InputHandlerPointerResult(const gfx::PointF& mouse_position));
MOCK_METHOD1(SetIsHandlingTouchSequence, void(bool));
void NotifyInputEvent(bool is_fling) override {}
std::unique_ptr<LatencyInfoSwapPromiseMonitor>
CreateLatencyInfoSwapPromiseMonitor(ui::LatencyInfo* latency) override {
return nullptr;
}
std::unique_ptr<EventsMetricsManager::ScopedMonitor>
GetScopedEventMetricsMonitor(
EventsMetricsManager::ScopedMonitor::DoneCallback) override {
return nullptr;
}
ScrollElasticityHelper* CreateScrollElasticityHelper() override {
return nullptr;
}
void DestroyScrollElasticityHelper() override {}
bool GetScrollOffsetForLayer(ElementId element_id,
gfx::PointF* offset) override {
return false;
}
bool ScrollLayerTo(ElementId element_id, const gfx::PointF& offset) override {
return false;
}
void BindToClient(InputHandlerClient* client) override {}
void MouseLeave() override {}
MOCK_METHOD1(FindFrameElementIdAtPoint, ElementId(const gfx::PointF&));
InputHandlerPointerResult MouseMoveAt(
const gfx::Point& mouse_position) override {
return InputHandlerPointerResult();
}
MOCK_CONST_METHOD1(GetEventListenerProperties,
EventListenerProperties(EventListenerClass event_class));
MOCK_METHOD2(EventListenerTypeForTouchStartOrMoveAt,
InputHandler::TouchStartOrMoveEventListenerType(
const gfx::Point& point,
TouchAction* touch_action));
MOCK_CONST_METHOD1(HasBlockingWheelEventHandlerAt, bool(const gfx::Point&));
MOCK_METHOD0(RequestUpdateForSynchronousInputHandler, void());
MOCK_METHOD1(SetSynchronousInputHandlerRootScrollOffset,
void(const gfx::PointF& root_offset));
bool IsCurrentlyScrollingViewport() const override {
return is_scrolling_root_;
}
void set_is_scrolling_root(bool is) { is_scrolling_root_ = is; }
MOCK_METHOD4(GetSnapFlingInfoAndSetAnimatingSnapTarget,
bool(const gfx::Vector2dF& current_delta,
const gfx::Vector2dF& natural_displacement,
gfx::PointF* initial_offset,
gfx::PointF* target_offset));
MOCK_METHOD1(ScrollEndForSnapFling, void(bool));
bool ScrollbarScrollIsActive() override { return false; }
void SetDeferBeginMainFrame(bool defer_begin_main_frame) const override {}
MOCK_METHOD4(
UpdateBrowserControlsState,
void(BrowserControlsState constraints,
BrowserControlsState current,
bool animate,
base::optional_ref<const BrowserControlsOffsetTagModifications>
offset_tag_modifications));
private:
bool is_scrolling_root_ = true;
base::WeakPtrFactory<MockInputHandler> weak_ptr_factory_{this};
};
} // namespace cc
#endif // CC_TEST_MOCK_INPUT_HANDLER_H_
|