OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/android/compositor/compositor_view.h" | 5 #include "chrome/browser/android/compositor/compositor_view.h" |
6 | 6 |
7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
8 #include <android/native_window_jni.h> | 8 #include <android/native_window_jni.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "ui/android/window_android.h" | 37 #include "ui/android/window_android.h" |
38 #include "ui/gfx/android/java_bitmap.h" | 38 #include "ui/gfx/android/java_bitmap.h" |
39 | 39 |
40 using base::android::JavaParamRef; | 40 using base::android::JavaParamRef; |
41 | 41 |
42 namespace android { | 42 namespace android { |
43 | 43 |
44 jlong Init(JNIEnv* env, | 44 jlong Init(JNIEnv* env, |
45 const JavaParamRef<jobject>& obj, | 45 const JavaParamRef<jobject>& obj, |
46 jboolean low_mem_device, | 46 jboolean low_mem_device, |
47 jlong native_window_android, | 47 jlong native_view_root, |
48 const JavaParamRef<jobject>& jlayer_title_cache, | 48 const JavaParamRef<jobject>& jlayer_title_cache, |
49 const JavaParamRef<jobject>& jtab_content_manager) { | 49 const JavaParamRef<jobject>& jtab_content_manager) { |
50 CompositorView* view; | 50 CompositorView* view; |
51 ui::WindowAndroid* window_android = | 51 ui::ViewRoot* view_root = reinterpret_cast<ui::ViewRoot*>(native_view_root); |
52 reinterpret_cast<ui::WindowAndroid*>(native_window_android); | |
53 LayerTitleCache* layer_title_cache = | 52 LayerTitleCache* layer_title_cache = |
54 LayerTitleCache::FromJavaObject(jlayer_title_cache); | 53 LayerTitleCache::FromJavaObject(jlayer_title_cache); |
55 TabContentManager* tab_content_manager = | 54 TabContentManager* tab_content_manager = |
56 TabContentManager::FromJavaObject(jtab_content_manager); | 55 TabContentManager::FromJavaObject(jtab_content_manager); |
57 | 56 |
58 DCHECK(tab_content_manager); | 57 DCHECK(tab_content_manager); |
59 | 58 |
60 // TODO(clholgat): Remove the compositor tabstrip flag. | 59 // TODO(clholgat): Remove the compositor tabstrip flag. |
61 view = new CompositorView(env, obj, low_mem_device, window_android, | 60 view = new CompositorView(env, obj, low_mem_device, view_root, |
62 tab_content_manager); | 61 tab_content_manager); |
63 | 62 |
64 ui::UIResourceProvider* ui_resource_provider = view->GetUIResourceProvider(); | 63 ui::UIResourceProvider* ui_resource_provider = view->GetUIResourceProvider(); |
65 // TODO(dtrainor): Pass the ResourceManager on the Java side to the tree | 64 // TODO(dtrainor): Pass the ResourceManager on the Java side to the tree |
66 // builders instead. | 65 // builders instead. |
67 if (layer_title_cache) | 66 if (layer_title_cache) |
68 layer_title_cache->SetResourceManager(view->GetResourceManager()); | 67 layer_title_cache->SetResourceManager(view->GetResourceManager()); |
69 if (tab_content_manager) | 68 if (tab_content_manager) |
70 tab_content_manager->SetUIResourceProvider(ui_resource_provider); | 69 tab_content_manager->SetUIResourceProvider(ui_resource_provider); |
71 | 70 |
72 return reinterpret_cast<intptr_t>(view); | 71 return reinterpret_cast<intptr_t>(view); |
73 } | 72 } |
74 | 73 |
75 CompositorView::CompositorView(JNIEnv* env, | 74 CompositorView::CompositorView(JNIEnv* env, |
76 jobject obj, | 75 jobject obj, |
77 jboolean low_mem_device, | 76 jboolean low_mem_device, |
78 ui::WindowAndroid* window_android, | 77 ui::ViewRoot* view_root, |
79 TabContentManager* tab_content_manager) | 78 TabContentManager* tab_content_manager) |
80 : tab_content_manager_(tab_content_manager), | 79 : tab_content_manager_(tab_content_manager), |
81 root_layer_(cc::SolidColorLayer::Create()), | 80 root_layer_(cc::SolidColorLayer::Create()), |
82 scene_layer_(nullptr), | 81 scene_layer_(nullptr), |
83 current_surface_format_(0), | 82 current_surface_format_(0), |
84 content_width_(0), | 83 content_width_(0), |
85 content_height_(0), | 84 content_height_(0), |
86 overlay_video_mode_(false), | 85 overlay_video_mode_(false), |
87 weak_factory_(this) { | 86 weak_factory_(this) { |
88 content::BrowserChildProcessObserver::Add(this); | 87 content::BrowserChildProcessObserver::Add(this); |
89 obj_.Reset(env, obj); | 88 obj_.Reset(env, obj); |
90 compositor_.reset(content::Compositor::Create(this, window_android)); | 89 compositor_.reset(content::Compositor::Create(this, view_root)); |
91 | 90 |
92 root_layer_->SetIsDrawable(true); | 91 root_layer_->SetIsDrawable(true); |
93 root_layer_->SetBackgroundColor(SK_ColorWHITE); | 92 root_layer_->SetBackgroundColor(SK_ColorWHITE); |
94 } | 93 } |
95 | 94 |
96 CompositorView::~CompositorView() { | 95 CompositorView::~CompositorView() { |
97 content::BrowserChildProcessObserver::Remove(this); | 96 content::BrowserChildProcessObserver::Remove(this); |
98 tab_content_manager_->OnUIResourcesWereEvicted(); | 97 tab_content_manager_->OnUIResourcesWereEvicted(); |
99 | 98 |
100 // Explicitly reset these scoped_ptrs here because otherwise we callbacks will | 99 // Explicitly reset these scoped_ptrs here because otherwise we callbacks will |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 // The Android TERMINATION_STATUS_OOM_PROTECTED hack causes us to never go | 252 // The Android TERMINATION_STATUS_OOM_PROTECTED hack causes us to never go |
254 // through here but through BrowserChildProcessHostDisconnected() instead. | 253 // through here but through BrowserChildProcessHostDisconnected() instead. |
255 } | 254 } |
256 | 255 |
257 // Register native methods | 256 // Register native methods |
258 bool RegisterCompositorView(JNIEnv* env) { | 257 bool RegisterCompositorView(JNIEnv* env) { |
259 return RegisterNativesImpl(env); | 258 return RegisterNativesImpl(env); |
260 } | 259 } |
261 | 260 |
262 } // namespace android | 261 } // namespace android |
OLD | NEW |