| 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 df810095174c07a2559b9178577d6536a06a1b1a..537b3769bb382b7b8e1288b2564d41739a3fab10 100644
|
| --- a/chrome/browser/android/compositor/tab_content_manager.cc
|
| +++ b/chrome/browser/android/compositor/tab_content_manager.cc
|
| @@ -20,7 +20,6 @@
|
| #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/android/content_view_core.h"
|
| #include "content/public/browser/readback_types.h"
|
| #include "content/public/browser/render_view_host.h"
|
| #include "content/public/browser/render_widget_host.h"
|
| @@ -45,43 +44,21 @@ namespace android {
|
|
|
| class TabContentManager::TabReadbackRequest {
|
| public:
|
| - TabReadbackRequest(jobject content_view_core,
|
| + TabReadbackRequest(content::WebContents* web_contents,
|
| float thumbnail_scale,
|
| const TabReadbackCallback& end_callback)
|
| : thumbnail_scale_(thumbnail_scale),
|
| end_callback_(end_callback),
|
| drop_after_readback_(false),
|
| weak_factory_(this) {
|
| - JNIEnv* env = base::android::AttachCurrentThread();
|
| - j_content_view_core_.Reset(env, content_view_core);
|
| - }
|
| -
|
| - virtual ~TabReadbackRequest() {}
|
| -
|
| - void Run() {
|
| - JNIEnv* env = base::android::AttachCurrentThread();
|
| + DCHECK(web_contents);
|
| content::ReadbackRequestCallback result_callback =
|
| base::Bind(&TabReadbackRequest::OnFinishGetTabThumbnailBitmap,
|
| weak_factory_.GetWeakPtr());
|
|
|
| - if (j_content_view_core_.is_null()) {
|
| - result_callback.Run(SkBitmap(), content::READBACK_FAILED);
|
| - return;
|
| - }
|
| -
|
| - content::ContentViewCore* view =
|
| - content::ContentViewCore::GetNativeContentViewCore(
|
| - env, j_content_view_core_.obj());
|
| -
|
| - if (!view) {
|
| - result_callback.Run(SkBitmap(), content::READBACK_FAILED);
|
| - return;
|
| - }
|
| -
|
| - DCHECK(view->GetWebContents());
|
| - content::RenderWidgetHost* rwh = view->GetWebContents()
|
| - ->GetRenderViewHost()
|
| - ->GetWidget();
|
| + content::RenderWidgetHost* rwh =
|
| + web_contents->GetRenderViewHost()->GetWidget();
|
| + DCHECK(rwh);
|
|
|
| SkColorType color_type = kN32_SkColorType;
|
| gfx::Rect src_rect = rwh->GetView()->GetViewBounds();
|
| @@ -90,9 +67,10 @@ class TabContentManager::TabReadbackRequest {
|
| rwh->CopyFromBackingStore(src_rect, dst_size, result_callback, color_type);
|
| }
|
|
|
| + virtual ~TabReadbackRequest() {}
|
| +
|
| void OnFinishGetTabThumbnailBitmap(const SkBitmap& bitmap,
|
| content::ReadbackResponse response) {
|
| - DCHECK(!j_content_view_core_.is_null());
|
| if (response != content::READBACK_SUCCESS || drop_after_readback_) {
|
| end_callback_.Run(0.f, SkBitmap());
|
| return;
|
| @@ -106,7 +84,6 @@ class TabContentManager::TabReadbackRequest {
|
| void SetToDropAfterReadback() { drop_after_readback_ = true; }
|
|
|
| private:
|
| - base::android::ScopedJavaGlobalRef<jobject> j_content_view_core_;
|
| const float thumbnail_scale_;
|
| TabReadbackCallback end_callback_;
|
| bool drop_after_readback_;
|
| @@ -234,23 +211,19 @@ jboolean TabContentManager::HasFullCachedThumbnail(
|
| void TabContentManager::CacheTab(JNIEnv* env,
|
| const JavaParamRef<jobject>& obj,
|
| const JavaParamRef<jobject>& tab,
|
| - const JavaParamRef<jobject>& content_view_core,
|
| jfloat thumbnail_scale) {
|
| TabAndroid* tab_android = TabAndroid::GetNativeTab(env, tab);
|
| DCHECK(tab_android);
|
| int tab_id = tab_android->GetAndroidId();
|
| GURL url = tab_android->GetURL();
|
|
|
| - content::ContentViewCore* view =
|
| - content::ContentViewCore::GetNativeContentViewCore(env,
|
| - content_view_core);
|
| + content::WebContents* web_contents = tab_android->web_contents();
|
| + DCHECK(web_contents);
|
|
|
| if (thumbnail_cache_->CheckAndUpdateThumbnailMetaData(tab_id, url)) {
|
| - if (!view ||
|
| - !view->GetWebContents()->GetRenderViewHost() ||
|
| - !view->GetWebContents()->GetRenderViewHost()->GetWidget() ||
|
| - !view->GetWebContents()
|
| - ->GetRenderViewHost()
|
| + if (!web_contents->GetRenderViewHost() ||
|
| + !web_contents->GetRenderViewHost()->GetWidget() ||
|
| + !web_contents->GetRenderViewHost()
|
| ->GetWidget()
|
| ->CanCopyFromBackingStore() ||
|
| pending_tab_readbacks_.find(tab_id) != pending_tab_readbacks_.end() ||
|
| @@ -262,11 +235,9 @@ void TabContentManager::CacheTab(JNIEnv* env,
|
| TabReadbackCallback readback_done_callback =
|
| base::Bind(&TabContentManager::PutThumbnailIntoCache,
|
| weak_factory_.GetWeakPtr(), tab_id);
|
| - std::unique_ptr<TabReadbackRequest> readback_request =
|
| - base::WrapUnique(new TabReadbackRequest(
|
| - content_view_core, thumbnail_scale, readback_done_callback));
|
| - pending_tab_readbacks_.set(tab_id, std::move(readback_request));
|
| - pending_tab_readbacks_.get(tab_id)->Run();
|
| + pending_tab_readbacks_.set(
|
| + tab_id, base::WrapUnique(new TabReadbackRequest(
|
| + web_contents, thumbnail_scale, readback_done_callback)));
|
| }
|
| }
|
|
|
|
|