Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / mojo / services / native_viewport / platform_viewport_android.h
1 // Copyright 2013 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 MOJO_SERVICES_NATIVE_VIEWPORT_PLATFORM_VIEWPORT_ANDROID_H_
6 #define MOJO_SERVICES_NATIVE_VIEWPORT_PLATFORM_VIEWPORT_ANDROID_H_
7
8 #include "base/android/jni_weak_ref.h"
9 #include "base/android/scoped_java_ref.h"
10 #include "base/memory/weak_ptr.h"
11 #include "mojo/services/native_viewport/platform_viewport.h"
12 #include "ui/events/event_constants.h"
13 #include "ui/gfx/rect.h"
14 #include "ui/gfx/sequential_id_generator.h"
15 #include "ui/gfx/size.h"
16
17 namespace gpu {
18 class GLInProcessContext;
19 }
20
21 struct ANativeWindow;
22
23 namespace mojo {
24
25 class PlatformViewportAndroid : public PlatformViewport {
26  public:
27   static bool Register(JNIEnv* env);
28
29   explicit PlatformViewportAndroid(Delegate* delegate);
30   virtual ~PlatformViewportAndroid();
31
32   void Destroy(JNIEnv* env, jobject obj);
33   void SurfaceCreated(JNIEnv* env, jobject obj, jobject jsurface);
34   void SurfaceDestroyed(JNIEnv* env, jobject obj);
35   void SurfaceSetSize(JNIEnv* env, jobject obj, jint width, jint height);
36   bool TouchEvent(JNIEnv* env, jobject obj, jint pointer_id, jint action,
37                   jfloat x, jfloat y, jlong time_ms);
38
39  private:
40   // Overridden from PlatformViewport:
41   virtual void Init(const gfx::Rect& bounds) OVERRIDE;
42   virtual void Show() OVERRIDE;
43   virtual void Hide() OVERRIDE;
44   virtual void Close() OVERRIDE;
45   virtual gfx::Size GetSize() OVERRIDE;
46   virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE;
47   virtual void SetCapture() OVERRIDE;
48   virtual void ReleaseCapture() OVERRIDE;
49
50   void ReleaseWindow();
51
52   Delegate* delegate_;
53   ANativeWindow* window_;
54   gfx::Rect bounds_;
55   ui::SequentialIDGenerator id_generator_;
56
57   base::WeakPtrFactory<PlatformViewportAndroid> weak_factory_;
58
59   DISALLOW_COPY_AND_ASSIGN(PlatformViewportAndroid);
60 };
61
62
63 }  // namespace mojo
64
65 #endif  // MOJO_SERVICES_NATIVE_VIEWPORT_PLATFORM_VIEWPORT_ANDROID_H_