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

Unified Diff: chrome/browser/extensions/tab_helper.cc

Issue 11886073: Use ImageLoader instead of ImageLoadingTracker (Part 12) (Closed) Base URL: https://git.chromium.org/chromium/src.git@Issue_163929
Patch Set: Address code review feedback Created 7 years, 11 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/tab_helper.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/tab_helper.cc
diff --git a/chrome/browser/extensions/tab_helper.cc b/chrome/browser/extensions/tab_helper.cc
index 88f85508404e5bcb67694bfd86b741c413a27e70..8fe31dd4c9c3cf4af65669cb6428e67581960061 100644
--- a/chrome/browser/extensions/tab_helper.cc
+++ b/chrome/browser/extensions/tab_helper.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/extensions/extension_action_manager.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
+#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/page_action_controller.h"
#include "chrome/browser/extensions/script_badge_controller.h"
#include "chrome/browser/extensions/script_bubble_controller.h"
@@ -82,7 +83,8 @@ TabHelper::TabHelper(content::WebContents* web_contents)
this)),
pending_web_app_action_(NONE),
script_executor_(new ScriptExecutor(web_contents,
- &script_execution_observers_)) {
+ &script_execution_observers_)),
+ ALLOW_THIS_IN_INITIALIZER_LIST(image_loader_ptr_factory_(this)) {
// The ActiveTabPermissionManager requires a session ID; ensure this
// WebContents has one.
SessionTabHelper::CreateForWebContents(web_contents);
@@ -432,18 +434,22 @@ const Extension* TabHelper::GetExtension(const std::string& extension_app_id) {
void TabHelper::UpdateExtensionAppIcon(const Extension* extension) {
extension_app_icon_.reset();
+ // Ensure previously enqueued callbacks are ignored.
+ image_loader_ptr_factory_.InvalidateWeakPtrs();
+ // Enqueue OnImageLoaded callback.
if (extension) {
- extension_app_image_loader_.reset(new ImageLoadingTracker(this));
- extension_app_image_loader_->LoadImage(
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents()->GetBrowserContext());
+ extensions::ImageLoader* loader = extensions::ImageLoader::Get(profile);
+ loader->LoadImageAsync(
extension,
extension->GetIconResource(extension_misc::EXTENSION_ICON_SMALLISH,
ExtensionIconSet::MATCH_EXACTLY),
gfx::Size(extension_misc::EXTENSION_ICON_SMALLISH,
extension_misc::EXTENSION_ICON_SMALLISH),
- ImageLoadingTracker::CACHE);
- } else {
- extension_app_image_loader_.reset(NULL);
+ base::Bind(&TabHelper::OnImageLoaded,
+ image_loader_ptr_factory_.GetWeakPtr()));
}
}
@@ -452,9 +458,7 @@ void TabHelper::SetAppIcon(const SkBitmap& app_icon) {
web_contents()->NotifyNavigationStateChanged(content::INVALIDATE_TYPE_TITLE);
}
-void TabHelper::OnImageLoaded(const gfx::Image& image,
- const std::string& extension_id,
- int index) {
+void TabHelper::OnImageLoaded(const gfx::Image& image) {
if (!image.IsEmpty()) {
extension_app_icon_ = *image.ToSkBitmap();
web_contents()->NotifyNavigationStateChanged(content::INVALIDATE_TYPE_TAB);
« no previous file with comments | « chrome/browser/extensions/tab_helper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698