content_view_render_view.h revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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 SetCurrentContentViewCore(JNIEnv* env, jobject obj,
30                                 jlong native_content_view_core);
31  void SurfaceCreated(JNIEnv* env, jobject obj);
32  void SurfaceDestroyed(JNIEnv* env, jobject obj);
33  void SurfaceChanged(JNIEnv* env, jobject obj,
34                      jint format, jint width, jint height, jobject surface);
35  jboolean Composite(JNIEnv* env, jobject obj);
36  jboolean CompositeToBitmap(JNIEnv* env, jobject obj, jobject java_bitmap);
37  void SetOverlayVideoMode(JNIEnv* env, jobject obj, bool enabled);
38
39  // CompositorClient ---------------------------------------------------------
40  virtual void ScheduleComposite() OVERRIDE;
41  virtual void OnSwapBuffersPosted() OVERRIDE;
42  virtual void OnSwapBuffersCompleted() OVERRIDE;
43
44 private:
45  virtual ~ContentViewRenderView();
46
47  void InitCompositor();
48
49  bool buffers_swapped_during_composite_;
50
51  base::android::ScopedJavaGlobalRef<jobject> java_obj_;
52
53  scoped_ptr<content::Compositor> compositor_;
54
55  gfx::NativeWindow root_window_;
56  int current_surface_format_;
57
58  DISALLOW_COPY_AND_ASSIGN(ContentViewRenderView);
59};
60
61
62
63}
64
65#endif  // CONTENT_BROWSER_ANDROID_CONTENT_VIEW_RENDER_VIEW_H_
66