summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui
diff options
context:
space:
mode:
authorfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-24 21:46:58 +0000
committerfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-24 21:46:58 +0000
commit6bd3f7249fb1d7328727d7ad0cf95e8ace145747 (patch)
tree99e6524b66297bf2d24453ab211cb465b6edb28b /chrome/browser/ui
parent3235b0e3e506ca36e450ccd8f9a86b5870882b06 (diff)
downloadchromium_src-6bd3f7249fb1d7328727d7ad0cf95e8ace145747.zip
chromium_src-6bd3f7249fb1d7328727d7ad0cf95e8ace145747.tar.gz
chromium_src-6bd3f7249fb1d7328727d7ad0cf95e8ace145747.tar.bz2
Revert 178405 - reinstating 178361 which was proven innocent of all charges by
http://build.chromium.org/p/chromium.win/builders/Win%20Aura%20Tests%20%283%29/builds/793 > Revert 178361 - suspected of introducing flake: > http://build.chromium.org/p/chromium.win/buildstatus?builder=Win%20Aura%20Tests%20%283%29&number=790 > http://build.chromium.org/p/chromium.win/buildstatus?builder=Win%20Aura%20Tests%20%283%29&number=791 > > > Use ImageLoader instead of ImageLoadingTracker (Part 9) > > > > BUG=163929 > > > > > > Review URL: https://chromiumcodereview.appspot.com/11886029 > > TBR=rpaquay@chromium.org > Review URL: https://codereview.chromium.org/12049055 TBR=fischman@chromium.org Review URL: https://codereview.chromium.org/12042091 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@178655 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui')
-rw-r--r--chrome/browser/ui/panels/panel.cc19
-rw-r--r--chrome/browser/ui/panels/panel.h15
-rw-r--r--chrome/browser/ui/views/panels/panel_stack_view.cc1
3 files changed, 16 insertions, 19 deletions
diff --git a/chrome/browser/ui/panels/panel.cc b/chrome/browser/ui/panels/panel.cc
index 6fe4d65..a785179 100644
--- a/chrome/browser/ui/panels/panel.cc
+++ b/chrome/browser/ui/panels/panel.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_system.h"
#include "chrome/browser/extensions/extension_tab_util.h"
+#include "chrome/browser/extensions/image_loader.h"
#include "chrome/browser/extensions/window_controller.h"
#include "chrome/browser/extensions/window_controller_list.h"
#include "chrome/browser/lifetime/application_lifetime.h"
@@ -149,7 +150,8 @@ Panel::Panel(const std::string& app_name,
native_panel_(NULL),
attention_mode_(USE_PANEL_ATTENTION),
expansion_state_(EXPANDED),
- command_updater_(this) {
+ command_updater_(this),
+ ALLOW_THIS_IN_INITIALIZER_LIST(image_loader_ptr_factory_(this)) {
}
Panel::~Panel() {
@@ -224,7 +226,8 @@ void Panel::InitCommandState() {
}
void Panel::OnNativePanelClosed() {
- app_icon_loader_.reset();
+ // Ensure previously enqueued OnImageLoaded callbacks are ignored.
+ image_loader_ptr_factory_.InvalidateWeakPtrs();
registrar_.RemoveAll();
manager()->OnPanelClosed(this);
DCHECK(!collection_);
@@ -829,24 +832,22 @@ void Panel::UpdateAppIcon() {
if (!extension)
return;
- app_icon_loader_.reset(new ImageLoadingTracker(this));
- app_icon_loader_->LoadImage(
+ extensions::ImageLoader* loader = extensions::ImageLoader::Get(profile());
+ loader->LoadImageAsync(
extension,
extension->GetIconResource(extension_misc::EXTENSION_ICON_SMALL,
ExtensionIconSet::MATCH_BIGGER),
gfx::Size(extension_misc::EXTENSION_ICON_SMALL,
extension_misc::EXTENSION_ICON_SMALL),
- ImageLoadingTracker::CACHE);
+ base::Bind(&Panel::OnImageLoaded,
+ image_loader_ptr_factory_.GetWeakPtr()));
}
-void Panel::OnImageLoaded(const gfx::Image& image,
- const std::string& extension_id,
- int index) {
+void Panel::OnImageLoaded(const gfx::Image& image) {
if (!image.IsEmpty()) {
app_icon_ = image;
native_panel_->UpdatePanelTitleBar();
}
- app_icon_loader_.reset();
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_PANEL_APP_ICON_LOADED,
diff --git a/chrome/browser/ui/panels/panel.h b/chrome/browser/ui/panels/panel.h
index 9819141..1e2fd5e 100644
--- a/chrome/browser/ui/panels/panel.h
+++ b/chrome/browser/ui/panels/panel.h
@@ -9,10 +9,10 @@
#include "base/gtest_prod_util.h"
#include "base/memory/scoped_ptr.h"
+#include "base/memory/weak_ptr.h"
#include "base/string16.h"
#include "chrome/browser/command_updater.h"
#include "chrome/browser/command_updater_delegate.h"
-#include "chrome/browser/extensions/image_loading_tracker.h"
#include "chrome/browser/sessions/session_id.h"
#include "chrome/browser/ui/base_window.h"
#include "chrome/browser/ui/panels/panel_constants.h"
@@ -50,8 +50,7 @@ class WindowController;
// other Panels. For example deleting a panel would rearrange other panels.
class Panel : public BaseWindow,
public CommandUpdaterDelegate,
- public content::NotificationObserver,
- public ImageLoadingTracker::Observer {
+ public content::NotificationObserver {
public:
enum ExpansionState {
// The panel is fully expanded with both title-bar and the client-area.
@@ -322,10 +321,7 @@ class Panel : public BaseWindow,
CUSTOM_MAX_SIZE
};
- // ImageLoadingTracker::Observer implementation.
- virtual void OnImageLoaded(const gfx::Image& image,
- const std::string& extension_id,
- int index) OVERRIDE;
+ void OnImageLoaded(const gfx::Image& image);
// Initialize state for all supported commands.
void InitCommandState();
@@ -390,12 +386,11 @@ class Panel : public BaseWindow,
scoped_ptr<extensions::WindowController> extension_window_controller_;
scoped_ptr<PanelHost> panel_host_;
- // Used for loading app_icon_.
- scoped_ptr<ImageLoadingTracker> app_icon_loader_;
-
// Icon showed in the task bar.
gfx::Image app_icon_;
+ base::WeakPtrFactory<Panel> image_loader_ptr_factory_;
+
DISALLOW_COPY_AND_ASSIGN(Panel);
};
diff --git a/chrome/browser/ui/views/panels/panel_stack_view.cc b/chrome/browser/ui/views/panels/panel_stack_view.cc
index 932a0e3..06cd0dd 100644
--- a/chrome/browser/ui/views/panels/panel_stack_view.cc
+++ b/chrome/browser/ui/views/panels/panel_stack_view.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/ui/panels/panel.h"
#include "chrome/browser/ui/panels/stacked_panel_collection.h"
#include "chrome/common/extensions/extension.h"
+#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/rect.h"
#include "ui/views/widget/widget.h"