Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(281)

Side by Side Diff: chrome/browser/android/compositor/tab_content_manager.cc

Issue 2503363003: Fix three causes of blank thumbnails [2nd land] (Closed)
Patch Set: Rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 const JavaParamRef<jobject>& tab, 214 const JavaParamRef<jobject>& tab,
215 jfloat thumbnail_scale) { 215 jfloat thumbnail_scale) {
216 TabAndroid* tab_android = TabAndroid::GetNativeTab(env, tab); 216 TabAndroid* tab_android = TabAndroid::GetNativeTab(env, tab);
217 DCHECK(tab_android); 217 DCHECK(tab_android);
218 int tab_id = tab_android->GetAndroidId(); 218 int tab_id = tab_android->GetAndroidId();
219 GURL url = tab_android->GetURL(); 219 GURL url = tab_android->GetURL();
220 220
221 content::WebContents* web_contents = tab_android->web_contents(); 221 content::WebContents* web_contents = tab_android->web_contents();
222 DCHECK(web_contents); 222 DCHECK(web_contents);
223 223
224 if (!web_contents->GetRenderViewHost() ||
225 !web_contents->GetRenderViewHost()->GetWidget() ||
226 !web_contents->GetRenderViewHost()
227 ->GetWidget()
228 ->CanCopyFromBackingStore() ||
229 pending_tab_readbacks_.find(tab_id) != pending_tab_readbacks_.end() ||
230 pending_tab_readbacks_.size() >= kMaxReadbacks) {
231 return;
232 }
233
224 if (thumbnail_cache_->CheckAndUpdateThumbnailMetaData(tab_id, url)) { 234 if (thumbnail_cache_->CheckAndUpdateThumbnailMetaData(tab_id, url)) {
225 if (!web_contents->GetRenderViewHost() ||
226 !web_contents->GetRenderViewHost()->GetWidget() ||
227 !web_contents->GetRenderViewHost()
228 ->GetWidget()
229 ->CanCopyFromBackingStore() ||
230 pending_tab_readbacks_.find(tab_id) != pending_tab_readbacks_.end() ||
231 pending_tab_readbacks_.size() >= kMaxReadbacks) {
232 thumbnail_cache_->Remove(tab_id);
233 return;
234 }
235
236 TabReadbackCallback readback_done_callback = 235 TabReadbackCallback readback_done_callback =
237 base::Bind(&TabContentManager::PutThumbnailIntoCache, 236 base::Bind(&TabContentManager::PutThumbnailIntoCache,
238 weak_factory_.GetWeakPtr(), tab_id); 237 weak_factory_.GetWeakPtr(), tab_id);
239 pending_tab_readbacks_.set( 238 pending_tab_readbacks_.set(
240 tab_id, base::MakeUnique<TabReadbackRequest>( 239 tab_id, base::MakeUnique<TabReadbackRequest>(
241 web_contents, thumbnail_scale, readback_done_callback)); 240 web_contents, thumbnail_scale, readback_done_callback));
242 } 241 }
243 } 242 }
244 243
245 void TabContentManager::CacheTabWithBitmap(JNIEnv* env, 244 void TabContentManager::CacheTabWithBitmap(JNIEnv* env,
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 jint write_queue_max_size, 341 jint write_queue_max_size,
343 jboolean use_approximation_thumbnail) { 342 jboolean use_approximation_thumbnail) {
344 TabContentManager* manager = new TabContentManager( 343 TabContentManager* manager = new TabContentManager(
345 env, obj, default_cache_size, approximation_cache_size, 344 env, obj, default_cache_size, approximation_cache_size,
346 compression_queue_max_size, write_queue_max_size, 345 compression_queue_max_size, write_queue_max_size,
347 use_approximation_thumbnail); 346 use_approximation_thumbnail);
348 return reinterpret_cast<intptr_t>(manager); 347 return reinterpret_cast<intptr_t>(manager);
349 } 348 }
350 349
351 } // namespace android 350 } // namespace android
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698