Index: chrome/browser/android/compositor/compositor_view.h |
diff --git a/chrome/browser/android/compositor/compositor_view.h b/chrome/browser/android/compositor/compositor_view.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e88325f1b9bdae4190657df71a7d881e764198fe |
--- /dev/null |
+++ b/chrome/browser/android/compositor/compositor_view.h |
@@ -0,0 +1,146 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_ANDROID_COMPOSITOR_COMPOSITOR_VIEW_H_ |
+#define CHROME_BROWSER_ANDROID_COMPOSITOR_COMPOSITOR_VIEW_H_ |
+ |
+#include <jni.h> |
+ |
+#include "base/android/jni_android.h" |
+#include "base/android/scoped_java_ref.h" |
+#include "base/containers/scoped_ptr_hash_map.h" |
+#include "base/memory/weak_ptr.h" |
+#include "cc/layers/layer_lists.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 gfx { |
+class JavaBitmap; |
+} |
+ |
+namespace content { |
+class Compositor; |
+} |
+ |
+namespace ui { |
+class WindowAndroid; |
+class ResourceManager; |
+class UIResourceProvider; |
+} |
+ |
+namespace chrome { |
+namespace android { |
+ |
+class LayerTitleCache; |
+class SceneLayer; |
+class TabContentManager; |
+class ToolbarLayer; |
+ |
+class CompositorView : public content::CompositorClient, |
+ public content::BrowserChildProcessObserver { |
+ public: |
+ CompositorView(JNIEnv* env, |
+ jobject obj, |
+ jint empty_background_color, |
+ jboolean low_mem_device, |
+ ui::WindowAndroid* window_android, |
+ LayerTitleCache* layer_title_cache, |
+ TabContentManager* tab_content_manager); |
+ |
+ void Destroy(JNIEnv* env, jobject object); |
+ |
+ ui::ResourceManager* GetResourceManager(); |
+ base::android::ScopedJavaLocalRef<jobject> GetResourceManager(JNIEnv* env, |
+ jobject jobj); |
+ void SetNeedsComposite(JNIEnv* env, jobject object); |
+ void FinalizeLayers(JNIEnv* env, jobject jobj); |
+ void SetLayoutViewport(JNIEnv* env, |
+ jobject object, |
+ jfloat x, |
+ jfloat y, |
+ jfloat width, |
+ jfloat height, |
+ jfloat visible_x_offset, |
+ jfloat visible_y_offset, |
+ jfloat overdraw_bottom_height, |
+ jfloat dp_to_pixel); |
+ void UpdateToolbarLayer(JNIEnv* env, |
+ jobject object, |
+ jint toolbar_resource_id, |
+ jint progress_resource_id, |
+ jfloat top_offset, |
+ bool visible); |
+ |
+ void SurfaceCreated(JNIEnv* env, jobject object); |
+ void SurfaceDestroyed(JNIEnv* env, jobject object); |
+ void SurfaceChanged(JNIEnv* env, |
+ jobject object, |
+ jint format, |
+ jint width, |
+ jint height, |
+ jobject surface); |
+ |
+ void SetOverlayVideoMode(JNIEnv* env, jobject object, bool enabled); |
+ void SetSceneLayer(JNIEnv* env, jobject object, jobject jscene_layer); |
+ |
+ // CompositorClient implementation: |
+ void Layout() override; |
+ void OnSwapBuffersCompleted(int pending_swap_buffers) override; |
+ ui::UIResourceProvider* GetUIResourceProvider(); |
+ |
+ private: |
+ ~CompositorView() override; |
+ |
+ // content::BrowserChildProcessObserver implementation: |
+ void BrowserChildProcessHostDisconnected( |
+ const content::ChildProcessData& data) override; |
+ void BrowserChildProcessCrashed(const content::ChildProcessData& data, |
+ int exit_code) override; |
+ |
+ void SetBackground(bool visible, SkColor color); |
+ |
+ int GetUsableContentHeight(); |
+ |
+ base::android::ScopedJavaGlobalRef<jobject> obj_; |
+ scoped_ptr<content::Compositor> compositor_; |
+ LayerTitleCache* layer_title_cache_; |
+ TabContentManager* tab_content_manager_; |
+ |
+ scoped_refptr<cc::SolidColorLayer> root_layer_; |
+ scoped_refptr<ToolbarLayer> toolbar_layer_; |
+ SceneLayer* scene_layer_; |
+ scoped_refptr<cc::Layer> scene_layer_layer_; |
+ |
+ int current_surface_format_; |
+ int content_width_; |
+ int content_height_; |
+ int overdraw_bottom_height_; |
+ bool overlay_video_mode_; |
+ SkColor empty_background_color_; |
+ |
+ base::WeakPtrFactory<CompositorView> weak_factory_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(CompositorView); |
+}; |
+ |
+bool RegisterCompositorView(JNIEnv* env); |
+ |
+} // namespace android |
+} // namespace chrome |
+ |
+#endif // CHROME_BROWSER_ANDROID_COMPOSITOR_COMPOSITOR_VIEW_H_ |