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

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

Issue 2503183003: Fix three causes of blank thumbnails [2nd land] (Closed)
Patch Set: Unapply conflict resolution since http://crrev.com/432312 got reverted 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 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698