| Index: chrome/browser/icon_loader.cc
|
| diff --git a/chrome/browser/icon_loader.cc b/chrome/browser/icon_loader.cc
|
| index 39919477640e6295c44c322b3f62171eea2c0556..44e50382cea7d598b08eb02251ecd29f893a90ef 100644
|
| --- a/chrome/browser/icon_loader.cc
|
| +++ b/chrome/browser/icon_loader.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/bind.h"
|
| +#include "chrome/browser/icon_manager.h"
|
| #include "content/public/browser/browser_thread.h"
|
|
|
| #if defined(TOOLKIT_GTK)
|
| @@ -14,10 +15,10 @@
|
|
|
| using content::BrowserThread;
|
|
|
| -IconLoader::IconLoader(const IconGroupID& group, IconSize size,
|
| +IconLoader::IconLoader(const base::FilePath& file_path, IconSize size,
|
| Delegate* delegate)
|
| : target_message_loop_(NULL),
|
| - group_(group),
|
| + file_path_(file_path),
|
| icon_size_(size),
|
| image_(NULL),
|
| delegate_(delegate) {
|
| @@ -34,13 +35,25 @@ void IconLoader::Start() {
|
| base::nix::DetectGtkTheme();
|
| #endif
|
|
|
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&IconLoader::ReadIcon, this));
|
| + BrowserThread::PostTaskAndReply(BrowserThread::FILE, FROM_HERE,
|
| + base::Bind(&IconLoader::ReadGroup, this),
|
| + base::Bind(&IconLoader::OnReadGroup, this));
|
| +}
|
| +
|
| +void IconLoader::ReadGroup() {
|
| + group_ = IconManager::ReadGroupIDFromFilepath(file_path_);
|
| +}
|
| +
|
| +void IconLoader::OnReadGroup() {
|
| + if (!delegate_->OnGroupLoaded(this, group_)) {
|
| + BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| + base::Bind(&IconLoader::ReadIcon, this));
|
| + }
|
| }
|
|
|
| void IconLoader::NotifyDelegate() {
|
| // If the delegate takes ownership of the Image, release it from the scoped
|
| // pointer.
|
| - if (delegate_->OnImageLoaded(this, image_.get()))
|
| + if (delegate_->OnImageLoaded(this, image_.get(), group_))
|
| ignore_result(image_.release()); // Can't ignore return value.
|
| }
|
|
|