content_view_render_view.h revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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_weak_ref.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 cc {
16class Layer;
17}
18
19namespace content {
20class Compositor;
21class LayerTreeBuildHelper;
22
23class ContentViewRenderView : public CompositorClient {
24 public:
25  // Registers the JNI methods for ContentViewRender.
26  static bool RegisterContentViewRenderView(JNIEnv* env);
27
28  ContentViewRenderView(JNIEnv* env,
29                        jobject obj,
30                        gfx::NativeWindow root_window);
31
32  // Methods called from Java via JNI -----------------------------------------
33  void Destroy(JNIEnv* env, jobject obj);
34  void SetCurrentContentViewCore(JNIEnv* env, jobject obj,
35                                 jlong native_content_view_core);
36  void SetLayerTreeBuildHelper(
37      JNIEnv* env, jobject obj, jlong native_build_helper);
38  void SurfaceCreated(JNIEnv* env, jobject obj);
39  void SurfaceDestroyed(JNIEnv* env, jobject obj);
40  void SurfaceChanged(JNIEnv* env, jobject obj,
41                      jint format, jint width, jint height, jobject surface);
42  jboolean Composite(JNIEnv* env, jobject obj);
43  void SetOverlayVideoMode(JNIEnv* env, jobject obj, bool enabled);
44
45  // CompositorClient implementation
46  virtual void Layout() OVERRIDE;
47  virtual void OnSwapBuffersCompleted(int pending_swap_buffers) OVERRIDE;
48
49 private:
50  virtual ~ContentViewRenderView();
51
52  void InitCompositor();
53
54  base::android::ScopedJavaGlobalRef<jobject> java_obj_;
55  scoped_ptr<LayerTreeBuildHelper> layer_tree_build_helper_;
56
57  scoped_ptr<content::Compositor> compositor_;
58
59  gfx::NativeWindow root_window_;
60  int current_surface_format_;
61
62  DISALLOW_COPY_AND_ASSIGN(ContentViewRenderView);
63};
64
65
66
67}
68
69#endif  // CONTENT_BROWSER_ANDROID_CONTENT_VIEW_RENDER_VIEW_H_
70