| Index: blimp/client/input/blimp_input_handler_wrapper.cc
|
| diff --git a/blimp/client/input/blimp_input_handler_wrapper.cc b/blimp/client/input/blimp_input_handler_wrapper.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dbd6fe752ec794ab33b4d025566f5b33e0c085a7
|
| --- /dev/null
|
| +++ b/blimp/client/input/blimp_input_handler_wrapper.cc
|
| @@ -0,0 +1,97 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "blimp/client/input/blimp_input_handler_wrapper.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/location.h"
|
| +#include "base/logging.h"
|
| +#include "blimp/client/input/blimp_input_manager.h"
|
| +#include "ui/events/gestures/blink/web_gesture_curve_impl.h"
|
| +
|
| +namespace blimp {
|
| +
|
| +BlimpInputHandlerWrapper::BlimpInputHandlerWrapper(
|
| + scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
|
| + const base::WeakPtr<BlimpInputManager> input_manager_weak_ptr,
|
| + cc::InputHandler* input_handler)
|
| + : main_task_runner_(main_task_runner),
|
| + input_manager_weak_ptr_(input_manager_weak_ptr) {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| + DCHECK(input_handler);
|
| + input_handler_proxy_.reset(
|
| + new ui::InputHandlerProxy(input_handler, this));
|
| +}
|
| +
|
| +BlimpInputHandlerWrapper::~BlimpInputHandlerWrapper() {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| +
|
| + // The input handler proxy must have been shutdown by the cc::InputHandler
|
| + // before the InputHandlerWrapper is destroyed.
|
| + DCHECK(!input_handler_proxy_);
|
| +}
|
| +
|
| +void BlimpInputHandlerWrapper::HandleWebInputEvent(
|
| + const blink::WebInputEvent& input_event) {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| +
|
| + // We might not have the input handler proxy anymore.
|
| + if (!input_handler_proxy_)
|
| + return;
|
| +
|
| + ui::InputHandlerProxy::EventDisposition disposition =
|
| + input_handler_proxy_->HandleInputEvent(input_event);
|
| +
|
| + bool consumed = disposition == ui::InputHandlerProxy::DID_NOT_HANDLE;
|
| +
|
| + main_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&BlimpInputManager::DidHandleWebInputEvent,
|
| + input_manager_weak_ptr_, input_event, consumed));
|
| +}
|
| +
|
| +void BlimpInputHandlerWrapper::WillShutdown() {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| +
|
| + input_handler_proxy_.reset();
|
| +}
|
| +
|
| +void BlimpInputHandlerWrapper::TransferActiveWheelFlingAnimation(
|
| + const blink::WebActiveWheelFlingParameters& params) {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| +
|
| + NOTIMPLEMENTED() <<
|
| + "Transferring Fling Animations to the engine is not supported";
|
| +}
|
| +
|
| +blink::WebGestureCurve* BlimpInputHandlerWrapper::CreateFlingAnimationCurve(
|
| + blink::WebGestureDevice device_source,
|
| + const blink::WebFloatPoint& velocity,
|
| + const blink::WebSize& cumulative_scroll) {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| +
|
| + return ui::WebGestureCurveImpl::CreateFromDefaultPlatformCurve(
|
| + gfx::Vector2dF(velocity.x, velocity.y),
|
| + gfx::Vector2dF(cumulative_scroll.width,
|
| + cumulative_scroll.height),
|
| + false /* on_main_thread */).release();
|
| +}
|
| +
|
| +void BlimpInputHandlerWrapper::DidOverscroll(
|
| + const gfx::Vector2dF& accumulated_overscroll,
|
| + const gfx::Vector2dF& latest_overscroll_delta,
|
| + const gfx::Vector2dF& current_fling_velocity,
|
| + const gfx::PointF& causal_event_viewport_point) {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| +}
|
| +
|
| +void BlimpInputHandlerWrapper::DidStopFlinging() {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| +}
|
| +
|
| +void BlimpInputHandlerWrapper::DidAnimateForInput() {
|
| + DCHECK(compositor_thread_checker_.CalledOnValidThread());
|
| +}
|
| +
|
| +} // namespace blimp
|
|
|