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