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