15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_BROWSER_ANDROID_CONTENT_VIEW_RENDER_VIEW_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_ANDROID_CONTENT_VIEW_RENDER_VIEW_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/android/jni_weak_ref.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h" 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/memory/scoped_ptr.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/weak_ptr.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "content/public/browser/android/compositor_client.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/gfx/native_widget_types.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace cc { 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass Layer; 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass Compositor; 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass LayerTreeBuildHelper; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass ContentViewRenderView : public CompositorClient { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Registers the JNI methods for ContentViewRender. 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static bool RegisterContentViewRenderView(JNIEnv* env); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ContentViewRenderView(JNIEnv* env, 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) jobject obj, 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gfx::NativeWindow root_window); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Methods called from Java via JNI ----------------------------------------- 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Destroy(JNIEnv* env, jobject obj); 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void SetCurrentContentViewCore(JNIEnv* env, jobject obj, 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch jlong native_content_view_core); 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu void SetLayerTreeBuildHelper( 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu JNIEnv* env, jobject obj, jlong native_build_helper); 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SurfaceCreated(JNIEnv* env, jobject obj); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SurfaceDestroyed(JNIEnv* env, jobject obj); 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SurfaceChanged(JNIEnv* env, jobject obj, 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) jint format, jint width, jint height, jobject surface); 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) jboolean Composite(JNIEnv* env, jobject obj); 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SetOverlayVideoMode(JNIEnv* env, jobject obj, bool enabled); 4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // CompositorClient implementation 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void Layout() OVERRIDE; 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void OnSwapBuffersCompleted(int pending_swap_buffers) OVERRIDE; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~ContentViewRenderView(); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void InitCompositor(); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) base::android::ScopedJavaGlobalRef<jobject> java_obj_; 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu scoped_ptr<LayerTreeBuildHelper> layer_tree_build_helper_; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) scoped_ptr<content::Compositor> compositor_; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) gfx::NativeWindow root_window_; 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int current_surface_format_; 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ContentViewRenderView); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CONTENT_BROWSER_ANDROID_CONTENT_VIEW_RENDER_VIEW_H_ 70