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