- add sources.
[platform/framework/web/crosswalk.git] / src / webkit / child / fling_animator_impl_android.h
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 WebKit {
17 class WebGestureCurveTarget;
18 }
19
20 namespace webkit_glue {
21
22 class WEBKIT_CHILD_EXPORT FlingAnimatorImpl : public WebKit::WebGestureCurve {
23  public:
24   FlingAnimatorImpl();
25   virtual ~FlingAnimatorImpl();
26
27   static FlingAnimatorImpl* CreateAndroidGestureCurve(
28       const WebKit::WebFloatPoint& velocity,
29       const WebKit::WebSize&);
30
31   virtual bool apply(double time,
32                      WebKit::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_