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
content / browser / renderer_host / input / mock_input_disposition_handler.cc [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_disposition_handler.h"
#include "base/functional/bind.h"
#include "components/input/input_router.h"
#include "testing/gtest/include/gtest/gtest.h"
using blink::WebInputEvent;
namespace content {
MockInputDispositionHandler::MockInputDispositionHandler()
: input_router_(nullptr),
ack_count_(0),
ack_event_type_(WebInputEvent::Type::kUndefined),
ack_state_(blink::mojom::InputEventResultState::kUnknown) {}
MockInputDispositionHandler::~MockInputDispositionHandler() {}
input::InputRouter::KeyboardEventCallback
MockInputDispositionHandler::CreateKeyboardEventCallback() {
return base::BindOnce(&MockInputDispositionHandler::OnKeyboardEventAck,
base::Unretained(this));
}
input::InputRouter::MouseEventCallback
MockInputDispositionHandler::CreateMouseEventCallback() {
return base::BindOnce(&MockInputDispositionHandler::OnMouseEventAck,
base::Unretained(this));
}
void MockInputDispositionHandler::OnWheelEventAck(
const input::MouseWheelEventWithLatencyInfo& event,
blink::mojom::InputEventResultSource ack_source,
blink::mojom::InputEventResultState ack_result) {
VLOG(1) << __FUNCTION__ << " called!";
acked_wheel_event_ = event.event;
acked_wheel_event_state_ = ack_result;
RecordAckCalled(event.event.GetType(), ack_result);
}
void MockInputDispositionHandler::OnTouchEventAck(
const input::TouchEventWithLatencyInfo& event,
blink::mojom::InputEventResultSource ack_source,
blink::mojom::InputEventResultState ack_result) {
VLOG(1) << __FUNCTION__ << " called!";
acked_touch_event_ = event;
RecordAckCalled(event.event.GetType(), ack_result);
if (touch_followup_event_)
input_router_->SendTouchEvent(*touch_followup_event_);
if (gesture_followup_event_)
input_router_->SendGestureEvent(*gesture_followup_event_);
}
void MockInputDispositionHandler::OnGestureEventAck(
const input::GestureEventWithLatencyInfo& event,
blink::mojom::InputEventResultSource ack_source,
blink::mojom::InputEventResultState ack_result) {
VLOG(1) << __FUNCTION__ << " called!";
acked_gesture_event_ = event.event;
RecordAckCalled(event.event.GetType(), ack_result);
}
size_t MockInputDispositionHandler::GetAndResetAckCount() {
size_t ack_count = ack_count_;
ack_count_ = 0;
return ack_count;
}
void MockInputDispositionHandler::RecordAckCalled(
blink::WebInputEvent::Type type,
blink::mojom::InputEventResultState ack_result) {
ack_event_type_ = type;
++ack_count_;
ack_state_ = ack_result;
}
void MockInputDispositionHandler::OnKeyboardEventAck(
const input::NativeWebKeyboardEventWithLatencyInfo& event,
blink::mojom::InputEventResultSource ack_source,
blink::mojom::InputEventResultState ack_result) {
VLOG(1) << __FUNCTION__ << " called!";
acked_key_event_ =
std::make_unique<input::NativeWebKeyboardEvent>(event.event);
RecordAckCalled(event.event.GetType(), ack_result);
}
void MockInputDispositionHandler::OnMouseEventAck(
const input::MouseEventWithLatencyInfo& event,
blink::mojom::InputEventResultSource ack_source,
blink::mojom::InputEventResultState ack_result) {
VLOG(1) << __FUNCTION__ << " called!";
acked_mouse_event_ = event.event;
RecordAckCalled(event.event.GetType(), ack_result);
}
} // namespace content