content_view_render_view.h revision f2477e01787aa58f445919b809d89e252beef54f
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 CONTENT_BROWSER_ANDROID_CONTENT_VIEW_RENDER_VIEW_H_
6#define CONTENT_BROWSER_ANDROID_CONTENT_VIEW_RENDER_VIEW_H_
7
8#include "base/android/jni_helper.h"
9#include "base/logging.h"
10#include "base/memory/scoped_ptr.h"
11#include "base/memory/weak_ptr.h"
12#include "content/public/browser/android/compositor_client.h"
13#include "ui/gfx/native_widget_types.h"
14
15namespace content {
16class Compositor;
17
18class ContentViewRenderView : public CompositorClient {
19 public:
20  // Registers the JNI methods for ContentViewRender.
21  static bool RegisterContentViewRenderView(JNIEnv* env);
22
23  ContentViewRenderView(JNIEnv* env,
24                        jobject obj,
25                        gfx::NativeWindow root_window);
26
27  // Methods called from Java via JNI -----------------------------------------
28  void Destroy(JNIEnv* env, jobject obj);
29  void SetCurrentContentView(JNIEnv* env, jobject obj, int native_content_view);
30  void SurfaceCreated(JNIEnv* env, jobject obj, jobject jsurface);
31  void SurfaceDestroyed(JNIEnv* env, jobject obj);
32  void SurfaceSetSize(JNIEnv* env, jobject obj, jint width, jint height);
33  jboolean Composite(JNIEnv* env, jobject obj);
34  jboolean CompositeToBitmap(JNIEnv* env, jobject obj, jobject java_bitmap);
35
36  // CompositorClient ---------------------------------------------------------
37  virtual void ScheduleComposite() OVERRIDE;
38  virtual void OnSwapBuffersPosted() OVERRIDE;
39  virtual void OnSwapBuffersCompleted() OVERRIDE;
40
41 private:
42  virtual ~ContentViewRenderView();
43
44  void InitCompositor();
45
46  bool buffers_swapped_during_composite_;
47
48  base::android::ScopedJavaGlobalRef<jobject> java_obj_;
49
50  scoped_ptr<content::Compositor> compositor_;
51
52  gfx::NativeWindow root_window_;
53
54  DISALLOW_COPY_AND_ASSIGN(ContentViewRenderView);
55};
56
57
58
59}
60
61#endif  // CONTENT_BROWSER_ANDROID_CONTENT_VIEW_RENDER_VIEW_H_
62