Index: chrome/browser/android/vr_shell/vr_shell.h |
diff --git a/chrome/browser/android/vr_shell/vr_shell.h b/chrome/browser/android/vr_shell/vr_shell.h |
index 4fcff02aca8e683e1b218bd9d2cd14a4118cbffa..5eadd56c9459287b34c4aec2fa6cc91e5889f850 100644 |
--- a/chrome/browser/android/vr_shell/vr_shell.h |
+++ b/chrome/browser/android/vr_shell/vr_shell.h |
@@ -12,6 +12,45 @@ |
#include "base/macros.h" |
#include "third_party/gvr-android-sdk/src/ndk-beta/include/vr/gvr/capi/include/gvr.h" |
#include "third_party/gvr-android-sdk/src/ndk-beta/include/vr/gvr/capi/include/gvr_types.h" |
+#include "base/memory/weak_ptr.h" |
+#include "cc/layers/layer_collections.h" |
+#include "cc/resources/ui_resource_client.h" |
+#include "content/public/browser/android/compositor_client.h" |
+#include "content/public/browser/browser_child_process_observer.h" |
+#include "third_party/skia/include/core/SkColor.h" |
+ |
+class DecorationBackground; |
+class DecorationCounter; |
+class SkBitmap; |
+class TabLayerContainer; |
+ |
+namespace cc { |
+class Layer; |
+class SolidColorLayer; |
+class TextureLayer; |
+class UIResourceBitmap; |
+} |
+ |
+namespace content { |
+class Compositor; |
+class RenderWidgetHostViewAndroid; |
+} |
+ |
+namespace ui { |
+class WindowAndroid; |
+class ResourceManager; |
+class UIResourceProvider; |
+class ViewAndroid; |
+} |
+namespace chrome { |
+namespace android { |
+ |
+class LayerTitleCache; |
+class SceneLayer; |
+class TabContentManager; |
+class ToolbarLayer; |
+} |
+} |
namespace vr_shell { |
@@ -27,9 +66,13 @@ class ContentRect { |
int content_texture_handle; |
}; |
-class VrShell { |
+class VrShell : public content::CompositorClient, |
+ public content::BrowserChildProcessObserver { |
public: |
- VrShell(JNIEnv* env, jobject obj); |
+ VrShell(JNIEnv* env, |
+ jobject obj, |
+ jboolean low_mem_device, |
+ ui::WindowAndroid* window_android); |
void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); |
@@ -43,13 +86,44 @@ class VrShell { |
void OnPause(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); |
void OnResume(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj); |
+ // CompositorClient implementation: |
+ void UpdateLayerTreeHost() override; |
+ void OnSwapBuffersCompleted(int pending_swap_buffers) override; |
+ ui::UIResourceProvider* GetUIResourceProvider(); |
+ |
+ void OnWebContentsReady( |
+ JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& object, |
+ const base::android::JavaParamRef<jobject>& jweb_contents); |
+ |
+ void SurfaceCreated(JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& object); |
+ void SurfaceDestroyed(JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& object); |
+ void SurfaceChanged(JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& object, |
+ jint format, |
+ jint width, |
+ jint height, |
+ const base::android::JavaParamRef<jobject>& surface); |
+ void SetNeedsComposite(JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& object); |
+ |
private: |
- ~VrShell(); |
+ ~VrShell() override; |
void DrawEye(const gvr::Mat4f& view_matrix, |
const gvr::BufferViewport& params); |
void DrawContentRect(); |
+ void AddContentLayer(); |
+ |
+ // content::BrowserChildProcessObserver implementation: |
+ void BrowserChildProcessHostDisconnected( |
+ const content::ChildProcessData& data) override; |
+ void BrowserChildProcessCrashed(const content::ChildProcessData& data, |
+ int exit_code) override; |
+ |
std::unique_ptr<ContentRect> content_rect_; |
std::unique_ptr<gvr::GvrApi> gvr_api_; |
std::unique_ptr<gvr::BufferViewportList> buffer_viewport_list_; |
@@ -66,6 +140,15 @@ class VrShell { |
std::unique_ptr<VrShellRenderer> vr_shell_renderer_; |
base::android::ScopedJavaGlobalRef<jobject> j_vr_shell_; |
+ std::unique_ptr<content::Compositor> compositor_; |
+ |
+ scoped_refptr<cc::SolidColorLayer> root_layer_; |
+ |
+ int current_surface_format_; |
+ int content_width_; |
+ int content_height_; |
+ |
+ base::WeakPtrFactory<VrShell> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(VrShell); |
}; |