Index: chrome/browser/ui/app_list/search/webstore/webstore_result.cc |
diff --git a/chrome/browser/ui/app_list/search/webstore/webstore_result.cc b/chrome/browser/ui/app_list/search/webstore/webstore_result.cc |
index 50dea34a92b0e08943f2aa622feaf3130c7ade8b..accad910caba51f40f197a0b906e0a66ca81e368 100644 |
--- a/chrome/browser/ui/app_list/search/webstore/webstore_result.cc |
+++ b/chrome/browser/ui/app_list/search/webstore/webstore_result.cc |
@@ -74,7 +74,8 @@ WebstoreResult::WebstoreResult(Profile* profile, |
icon_url_(icon_url), |
weak_factory_(this), |
controller_(controller), |
- install_tracker_(NULL), |
+ install_tracker_( |
+ extensions::InstallTrackerFactory::GetForProfile(profile)), |
extension_registry_(NULL) { |
set_id(extensions::Extension::GetBaseURLFromExtensionId(app_id_).spec()); |
set_relevance(0.0); // What is the right value to use? |
@@ -82,6 +83,7 @@ WebstoreResult::WebstoreResult(Profile* profile, |
set_title(base::UTF8ToUTF16(localized_name_)); |
SetDefaultDetails(); |
+ SetInitialState(); |
UpdateActions(); |
icon_ = gfx::ImageSkia( |
@@ -124,6 +126,15 @@ scoped_ptr<ChromeSearchResult> WebstoreResult::Duplicate() { |
profile_, app_id_, localized_name_, icon_url_, controller_)).Pass(); |
} |
+void WebstoreResult::SetInitialState() { |
+ const extensions::InstallTracker::InstallProgressData* install_data = |
+ install_tracker_->GetActiveInstall(app_id_); |
+ if (install_data) { |
+ SetPercentDownloaded(install_data->percent_downloaded); |
+ SetIsInstalling(true); |
+ } |
+} |
+ |
void WebstoreResult::UpdateActions() { |
Actions actions; |
@@ -219,9 +230,8 @@ void WebstoreResult::LaunchCallback(extensions::webstore_install::Result result, |
} |
void WebstoreResult::StartObserving() { |
- DCHECK(!install_tracker_ && !extension_registry_); |
+ DCHECK(!extension_registry_); |
- install_tracker_ = extensions::InstallTrackerFactory::GetForProfile(profile_); |
install_tracker_->AddObserver(this); |
extension_registry_ = extensions::ExtensionRegistry::Get(profile_); |
@@ -258,10 +268,10 @@ void WebstoreResult::OnExtensionWillBeInstalled( |
return; |
SetIsInstalling(false); |
+ UpdateActions(); |
if (extensions::util::IsExtensionInstalledPermanently(extension->id(), |
profile_)) { |
- UpdateActions(); |
NotifyItemInstalled(); |
} |
} |