OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 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 CHROME_BROWSER_ANDROID_COMPOSITOR_COMPOSITOR_VIEW_H_ |
| 6 #define CHROME_BROWSER_ANDROID_COMPOSITOR_COMPOSITOR_VIEW_H_ |
| 7 |
| 8 #include <jni.h> |
| 9 |
| 10 #include "base/android/jni_android.h" |
| 11 #include "base/android/scoped_java_ref.h" |
| 12 #include "base/containers/scoped_ptr_hash_map.h" |
| 13 #include "base/memory/weak_ptr.h" |
| 14 #include "cc/layers/layer_lists.h" |
| 15 #include "cc/resources/ui_resource_client.h" |
| 16 #include "content/public/browser/android/compositor_client.h" |
| 17 #include "content/public/browser/browser_child_process_observer.h" |
| 18 #include "third_party/skia/include/core/SkColor.h" |
| 19 |
| 20 class DecorationBackground; |
| 21 class DecorationCounter; |
| 22 class SkBitmap; |
| 23 class TabLayerContainer; |
| 24 |
| 25 namespace cc { |
| 26 class Layer; |
| 27 class SolidColorLayer; |
| 28 class TextureLayer; |
| 29 class UIResourceBitmap; |
| 30 } |
| 31 |
| 32 namespace gfx { |
| 33 class JavaBitmap; |
| 34 } |
| 35 |
| 36 namespace content { |
| 37 class Compositor; |
| 38 } |
| 39 |
| 40 namespace ui { |
| 41 class WindowAndroid; |
| 42 class ResourceManager; |
| 43 class UIResourceProvider; |
| 44 } |
| 45 |
| 46 namespace chrome { |
| 47 namespace android { |
| 48 |
| 49 class LayerTitleCache; |
| 50 class SceneLayer; |
| 51 class TabContentManager; |
| 52 class ToolbarLayer; |
| 53 |
| 54 class CompositorView : public content::CompositorClient, |
| 55 public content::BrowserChildProcessObserver { |
| 56 public: |
| 57 CompositorView(JNIEnv* env, |
| 58 jobject obj, |
| 59 jint empty_background_color, |
| 60 jboolean low_mem_device, |
| 61 ui::WindowAndroid* window_android, |
| 62 LayerTitleCache* layer_title_cache, |
| 63 TabContentManager* tab_content_manager); |
| 64 |
| 65 void Destroy(JNIEnv* env, jobject object); |
| 66 |
| 67 ui::ResourceManager* GetResourceManager(); |
| 68 base::android::ScopedJavaLocalRef<jobject> GetResourceManager(JNIEnv* env, |
| 69 jobject jobj); |
| 70 void SetNeedsComposite(JNIEnv* env, jobject object); |
| 71 void FinalizeLayers(JNIEnv* env, jobject jobj); |
| 72 void SetLayoutViewport(JNIEnv* env, |
| 73 jobject object, |
| 74 jfloat x, |
| 75 jfloat y, |
| 76 jfloat width, |
| 77 jfloat height, |
| 78 jfloat visible_x_offset, |
| 79 jfloat visible_y_offset, |
| 80 jfloat overdraw_bottom_height, |
| 81 jfloat dp_to_pixel); |
| 82 void UpdateToolbarLayer(JNIEnv* env, |
| 83 jobject object, |
| 84 jint toolbar_resource_id, |
| 85 jint progress_resource_id, |
| 86 jfloat top_offset, |
| 87 bool visible); |
| 88 |
| 89 void SurfaceCreated(JNIEnv* env, jobject object); |
| 90 void SurfaceDestroyed(JNIEnv* env, jobject object); |
| 91 void SurfaceChanged(JNIEnv* env, |
| 92 jobject object, |
| 93 jint format, |
| 94 jint width, |
| 95 jint height, |
| 96 jobject surface); |
| 97 |
| 98 void SetOverlayVideoMode(JNIEnv* env, jobject object, bool enabled); |
| 99 void SetSceneLayer(JNIEnv* env, jobject object, jobject jscene_layer); |
| 100 |
| 101 // CompositorClient implementation: |
| 102 void Layout() override; |
| 103 void OnSwapBuffersCompleted(int pending_swap_buffers) override; |
| 104 ui::UIResourceProvider* GetUIResourceProvider(); |
| 105 |
| 106 private: |
| 107 ~CompositorView() override; |
| 108 |
| 109 // content::BrowserChildProcessObserver implementation: |
| 110 void BrowserChildProcessHostDisconnected( |
| 111 const content::ChildProcessData& data) override; |
| 112 void BrowserChildProcessCrashed(const content::ChildProcessData& data, |
| 113 int exit_code) override; |
| 114 |
| 115 void SetBackground(bool visible, SkColor color); |
| 116 |
| 117 int GetUsableContentHeight(); |
| 118 |
| 119 base::android::ScopedJavaGlobalRef<jobject> obj_; |
| 120 scoped_ptr<content::Compositor> compositor_; |
| 121 LayerTitleCache* layer_title_cache_; |
| 122 TabContentManager* tab_content_manager_; |
| 123 |
| 124 scoped_refptr<cc::SolidColorLayer> root_layer_; |
| 125 scoped_refptr<ToolbarLayer> toolbar_layer_; |
| 126 SceneLayer* scene_layer_; |
| 127 scoped_refptr<cc::Layer> scene_layer_layer_; |
| 128 |
| 129 int current_surface_format_; |
| 130 int content_width_; |
| 131 int content_height_; |
| 132 int overdraw_bottom_height_; |
| 133 bool overlay_video_mode_; |
| 134 SkColor empty_background_color_; |
| 135 |
| 136 base::WeakPtrFactory<CompositorView> weak_factory_; |
| 137 |
| 138 DISALLOW_COPY_AND_ASSIGN(CompositorView); |
| 139 }; |
| 140 |
| 141 bool RegisterCompositorView(JNIEnv* env); |
| 142 |
| 143 } // namespace android |
| 144 } // namespace chrome |
| 145 |
| 146 #endif // CHROME_BROWSER_ANDROID_COMPOSITOR_COMPOSITOR_VIEW_H_ |
OLD | NEW |