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
17namespace gpu {
18class GLInProcessContext;
19}
20
21struct ANativeWindow;
22
23namespace mojo {
24
25class 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_
66