| Index: chrome/browser/android/compositor/tab_content_manager.cc
|
| diff --git a/chrome/browser/android/compositor/tab_content_manager.cc b/chrome/browser/android/compositor/tab_content_manager.cc
|
| index a516fdb6e0946b0c0a544440fdbfb6e2df69c4a8..505c84323cf71ca2485b2c288ef1deb54851c536 100644
|
| --- a/chrome/browser/android/compositor/tab_content_manager.cc
|
| +++ b/chrome/browser/android/compositor/tab_content_manager.cc
|
| @@ -20,7 +20,9 @@
|
| #include "chrome/browser/android/compositor/layer/thumbnail_layer.h"
|
| #include "chrome/browser/android/tab_android.h"
|
| #include "chrome/browser/android/thumbnail/thumbnail.h"
|
| +#include "content/public/browser/interstitial_page.h"
|
| #include "content/public/browser/readback_types.h"
|
| +#include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/render_view_host.h"
|
| #include "content/public/browser/render_widget_host.h"
|
| #include "content/public/browser/render_widget_host_view.h"
|
| @@ -45,22 +47,18 @@ namespace android {
|
|
|
| class TabContentManager::TabReadbackRequest {
|
| public:
|
| - TabReadbackRequest(content::WebContents* web_contents,
|
| + TabReadbackRequest(content::RenderWidgetHost* rwh,
|
| float thumbnail_scale,
|
| const TabReadbackCallback& end_callback)
|
| : thumbnail_scale_(thumbnail_scale),
|
| end_callback_(end_callback),
|
| drop_after_readback_(false),
|
| weak_factory_(this) {
|
| - DCHECK(web_contents);
|
| + DCHECK(rwh);
|
| content::ReadbackRequestCallback result_callback =
|
| base::Bind(&TabReadbackRequest::OnFinishGetTabThumbnailBitmap,
|
| weak_factory_.GetWeakPtr());
|
|
|
| - content::RenderWidgetHost* rwh =
|
| - web_contents->GetRenderViewHost()->GetWidget();
|
| - DCHECK(rwh);
|
| -
|
| SkColorType color_type = kN32_SkColorType;
|
| gfx::Rect src_rect = rwh->GetView()->GetViewBounds();
|
| gfx::Size dst_size(
|
| @@ -217,11 +215,17 @@ void TabContentManager::CacheTab(JNIEnv* env,
|
| content::WebContents* web_contents = tab_android->web_contents();
|
| DCHECK(web_contents);
|
|
|
| - if (!web_contents->GetRenderViewHost() ||
|
| - !web_contents->GetRenderViewHost()->GetWidget() ||
|
| - !web_contents->GetRenderViewHost()
|
| - ->GetWidget()
|
| - ->CanCopyFromBackingStore() ||
|
| + content::RenderViewHost* rvh = web_contents->GetRenderViewHost();
|
| + if (web_contents->ShowingInterstitialPage()) {
|
| + if (!web_contents->GetInterstitialPage()->GetMainFrame())
|
| + return;
|
| +
|
| + rvh = web_contents->GetInterstitialPage()->GetMainFrame()->
|
| + GetRenderViewHost();
|
| + }
|
| +
|
| + if (!rvh || !rvh->GetWidget() ||
|
| + !rvh->GetWidget()->CanCopyFromBackingStore() ||
|
| pending_tab_readbacks_.find(tab_id) != pending_tab_readbacks_.end() ||
|
| pending_tab_readbacks_.size() >= kMaxReadbacks) {
|
| return;
|
| @@ -232,7 +236,7 @@ void TabContentManager::CacheTab(JNIEnv* env,
|
| base::Bind(&TabContentManager::PutThumbnailIntoCache,
|
| weak_factory_.GetWeakPtr(), tab_id);
|
| pending_tab_readbacks_[tab_id] = base::MakeUnique<TabReadbackRequest>(
|
| - web_contents, thumbnail_scale, readback_done_callback);
|
| + rvh->GetWidget(), thumbnail_scale, readback_done_callback);
|
| }
|
| }
|
|
|
|
|