• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef WEBKIT_CHILD_FLING_ANIMATOR_IMPL_ANDROID_H_
6 #define WEBKIT_CHILD_FLING_ANIMATOR_IMPL_ANDROID_H_
7 
8 #include "base/android/scoped_java_ref.h"
9 #include "third_party/WebKit/public/platform/WebFloatPoint.h"
10 #include "third_party/WebKit/public/platform/WebGestureCurve.h"
11 #include "third_party/WebKit/public/platform/WebSize.h"
12 #include "ui/gfx/point.h"
13 #include "ui/gfx/point_f.h"
14 #include "webkit/child/webkit_child_export.h"
15 
16 namespace blink {
17 class WebGestureCurveTarget;
18 }
19 
20 namespace webkit_glue {
21 
22 class WEBKIT_CHILD_EXPORT FlingAnimatorImpl : public blink::WebGestureCurve {
23  public:
24   FlingAnimatorImpl();
25   virtual ~FlingAnimatorImpl();
26 
27   static FlingAnimatorImpl* CreateAndroidGestureCurve(
28       const blink::WebFloatPoint& velocity,
29       const blink::WebSize&);
30 
31   virtual bool apply(double time,
32                      blink::WebGestureCurveTarget* target);
33 
34   static bool RegisterJni(JNIEnv*);
35 
36  private:
37   void StartFling(const gfx::PointF& velocity);
38   // Returns true if the animation is not yet finished.
39   bool UpdatePosition();
40   gfx::Point GetCurrentPosition();
41   float GetCurrentVelocity();
42   virtual void CancelFling();
43 
44   bool is_active_;
45 
46   // Java OverScroller instance and methods.
47   base::android::ScopedJavaGlobalRef<jobject> java_scroller_;
48 
49   gfx::Point last_position_;
50   gfx::PointF last_velocity_;
51   double last_time_;
52 
53   DISALLOW_COPY_AND_ASSIGN(FlingAnimatorImpl);
54 };
55 
56 } // namespace webkit_glue
57 
58 #endif // WEBKIT_CHILD_FLING_ANIMATOR_IMPL_ANDROID_H_
59