Home | History | Annotate | Download | only in child
      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