blob: cfc86725a79827f6bdc03cbe6f5cceb77473babb [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_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::ScopedDispatchToRendererCallback dispatch_callback(
base::DoNothing());
input_router_->SendTouchEvent(*touch_followup_event_,
dispatch_callback.callback);
}
if (gesture_followup_event_) {
input::ScopedDispatchToRendererCallback dispatch_callback(
base::DoNothing());
input_router_->SendGestureEvent(*gesture_followup_event_,
dispatch_callback.callback);
}
}
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