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 15 namespace cc { 16 class Layer; 17 } 18 19 namespace content { 20 class Compositor; 21 class LayerTreeBuildHelper; 22 23 class 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