190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/renderer/gpu/input_handler_wrapper.h" 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/message_loop/message_loop_proxy.h" 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/renderer/gpu/input_event_filter.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "content/renderer/gpu/input_handler_manager.h" 10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/Platform.h" 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace content { 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)InputHandlerWrapper::InputHandlerWrapper( 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) InputHandlerManager* input_handler_manager, 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int routing_id, 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const scoped_refptr<base::MessageLoopProxy>& main_loop, 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const base::WeakPtr<cc::InputHandler>& input_handler, 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const base::WeakPtr<RenderViewImpl>& render_view_impl) 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : input_handler_manager_(input_handler_manager), 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) routing_id_(routing_id), 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) input_handler_proxy_(input_handler.get()), 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) main_loop_(main_loop), 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) render_view_impl_(render_view_impl) { 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) input_handler_proxy_.SetClient(this); 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)InputHandlerWrapper::~InputHandlerWrapper() { 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) input_handler_proxy_.SetClient(NULL); 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void InputHandlerWrapper::TransferActiveWheelFlingAnimation( 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const WebKit::WebActiveWheelFlingParameters& params) { 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) main_loop_->PostTask( 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FROM_HERE, 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Bind(&RenderViewImpl::TransferActiveWheelFlingAnimation, 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) render_view_impl_, 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) params)); 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void InputHandlerWrapper::WillShutdown() { 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) input_handler_manager_->RemoveInputHandler(routing_id_); 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)WebKit::WebGestureCurve* InputHandlerWrapper::CreateFlingAnimationCurve( 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int deviceSource, 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const WebKit::WebFloatPoint& velocity, 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const WebKit::WebSize& cumulative_scroll) { 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return WebKit::Platform::current()->createFlingAnimationCurve( 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) deviceSource, velocity, cumulative_scroll); 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 539ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochvoid InputHandlerWrapper::DidOverscroll(const cc::DidOverscrollParams& params) { 549ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch input_handler_manager_->DidOverscroll(routing_id_, params); 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace content 58