| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/tab_content_manager.h" | 5 #include "chrome/browser/android/compositor/tab_content_manager.h" |
| 6 | 6 |
| 7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 const JavaParamRef<jobject>& tab, | 210 const JavaParamRef<jobject>& tab, |
| 211 jfloat thumbnail_scale) { | 211 jfloat thumbnail_scale) { |
| 212 TabAndroid* tab_android = TabAndroid::GetNativeTab(env, tab); | 212 TabAndroid* tab_android = TabAndroid::GetNativeTab(env, tab); |
| 213 DCHECK(tab_android); | 213 DCHECK(tab_android); |
| 214 int tab_id = tab_android->GetAndroidId(); | 214 int tab_id = tab_android->GetAndroidId(); |
| 215 GURL url = tab_android->GetURL(); | 215 GURL url = tab_android->GetURL(); |
| 216 | 216 |
| 217 content::WebContents* web_contents = tab_android->web_contents(); | 217 content::WebContents* web_contents = tab_android->web_contents(); |
| 218 DCHECK(web_contents); | 218 DCHECK(web_contents); |
| 219 | 219 |
| 220 if (pending_tab_readbacks_.find(tab_id) != pending_tab_readbacks_.end()) | 220 if (!web_contents->GetRenderViewHost() || |
| 221 !web_contents->GetRenderViewHost()->GetWidget() || |
| 222 !web_contents->GetRenderViewHost() |
| 223 ->GetWidget() |
| 224 ->CanCopyFromBackingStore() || |
| 225 pending_tab_readbacks_.find(tab_id) != pending_tab_readbacks_.end() || |
| 226 pending_tab_readbacks_.size() >= kMaxReadbacks) { |
| 221 return; | 227 return; |
| 228 } |
| 222 | 229 |
| 223 if (thumbnail_cache_->CheckAndUpdateThumbnailMetaData(tab_id, url)) { | 230 if (thumbnail_cache_->CheckAndUpdateThumbnailMetaData(tab_id, url)) { |
| 224 if (!web_contents->GetRenderViewHost() || | |
| 225 !web_contents->GetRenderViewHost()->GetWidget() || | |
| 226 !web_contents->GetRenderViewHost() | |
| 227 ->GetWidget() | |
| 228 ->CanCopyFromBackingStore() || | |
| 229 pending_tab_readbacks_.size() >= kMaxReadbacks) { | |
| 230 thumbnail_cache_->Remove(tab_id); | |
| 231 return; | |
| 232 } | |
| 233 | |
| 234 TabReadbackCallback readback_done_callback = | 231 TabReadbackCallback readback_done_callback = |
| 235 base::Bind(&TabContentManager::PutThumbnailIntoCache, | 232 base::Bind(&TabContentManager::PutThumbnailIntoCache, |
| 236 weak_factory_.GetWeakPtr(), tab_id); | 233 weak_factory_.GetWeakPtr(), tab_id); |
| 237 pending_tab_readbacks_.set( | 234 pending_tab_readbacks_.set( |
| 238 tab_id, base::MakeUnique<TabReadbackRequest>( | 235 tab_id, base::MakeUnique<TabReadbackRequest>( |
| 239 web_contents, thumbnail_scale, readback_done_callback)); | 236 web_contents, thumbnail_scale, readback_done_callback)); |
| 240 } | 237 } |
| 241 } | 238 } |
| 242 | 239 |
| 243 void TabContentManager::CacheTabWithBitmap(JNIEnv* env, | 240 void TabContentManager::CacheTabWithBitmap(JNIEnv* env, |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 jint write_queue_max_size, | 337 jint write_queue_max_size, |
| 341 jboolean use_approximation_thumbnail) { | 338 jboolean use_approximation_thumbnail) { |
| 342 TabContentManager* manager = new TabContentManager( | 339 TabContentManager* manager = new TabContentManager( |
| 343 env, obj, default_cache_size, approximation_cache_size, | 340 env, obj, default_cache_size, approximation_cache_size, |
| 344 compression_queue_max_size, write_queue_max_size, | 341 compression_queue_max_size, write_queue_max_size, |
| 345 use_approximation_thumbnail); | 342 use_approximation_thumbnail); |
| 346 return reinterpret_cast<intptr_t>(manager); | 343 return reinterpret_cast<intptr_t>(manager); |
| 347 } | 344 } |
| 348 | 345 |
| 349 } // namespace android | 346 } // namespace android |
| OLD | NEW |