158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/browser/renderer_host/input/mock_input_ack_handler.h" 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/browser/renderer_host/input/input_router.h" 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)using base::TimeDelta; 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebGestureEvent; 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebInputEvent; 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMouseEvent; 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMouseWheelEvent; 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebTouchEvent; 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebTouchPoint; 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace content { 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)MockInputAckHandler::MockInputAckHandler() 21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) : input_router_(NULL), 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ack_count_(0), 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) unexpected_event_ack_called_(false), 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ack_event_type_(WebInputEvent::Undefined), 25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ack_state_(INPUT_EVENT_ACK_STATE_UNKNOWN) { 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)MockInputAckHandler::~MockInputAckHandler() {} 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void MockInputAckHandler::OnKeyboardEventAck( 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const NativeWebKeyboardEvent& event, 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) InputEventAckState ack_result) { 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) VLOG(1) << __FUNCTION__ << " called!"; 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) acked_key_event_ = event; 35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) RecordAckCalled(event.type, ack_result); 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void MockInputAckHandler::OnWheelEventAck( 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const MouseWheelEventWithLatencyInfo& event, 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) InputEventAckState ack_result) { 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) VLOG(1) << __FUNCTION__ << " called!"; 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) acked_wheel_event_ = event.event; 43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) RecordAckCalled(event.event.type, ack_result); 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void MockInputAckHandler::OnTouchEventAck( 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const TouchEventWithLatencyInfo& event, 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) InputEventAckState ack_result) { 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) VLOG(1) << __FUNCTION__ << " called!"; 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) acked_touch_event_ = event; 51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) RecordAckCalled(event.event.type, ack_result); 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (touch_followup_event_) 5368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) input_router_->SendTouchEvent(*touch_followup_event_); 5468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (gesture_followup_event_) 5568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) input_router_->SendGestureEvent(*gesture_followup_event_); 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void MockInputAckHandler::OnGestureEventAck( 594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const GestureEventWithLatencyInfo& event, 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) InputEventAckState ack_result) { 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) VLOG(1) << __FUNCTION__ << " called!"; 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) acked_gesture_event_ = event.event; 63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) RecordAckCalled(event.event.type, ack_result); 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void MockInputAckHandler::OnUnexpectedEventAck(UnexpectedEventAckType type) { 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) VLOG(1) << __FUNCTION__ << " called!"; 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) unexpected_event_ack_called_ = true; 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)size_t MockInputAckHandler::GetAndResetAckCount() { 724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) size_t ack_count = ack_count_; 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ack_count_ = 0; 744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return ack_count; 7558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 77010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void MockInputAckHandler::RecordAckCalled(blink::WebInputEvent::Type type, 78010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) InputEventAckState ack_result) { 79010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ack_event_type_ = type; 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ++ack_count_; 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) ack_state_ = ack_result; 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace content 85