Chromium Code Reviews| Index: chrome/browser/ui/app_list/apps_model_builder.cc |
| diff --git a/chrome/browser/ui/app_list/apps_model_builder.cc b/chrome/browser/ui/app_list/apps_model_builder.cc |
| index b662b4537f18f1e81c044f4cd06ae4d4126915d1..ee8e559ae7c80cb09780f5c3bf3609045d8e221b 100644 |
| --- a/chrome/browser/ui/app_list/apps_model_builder.cc |
| +++ b/chrome/browser/ui/app_list/apps_model_builder.cc |
| @@ -59,8 +59,10 @@ AppsModelBuilder::AppsModelBuilder(Profile* profile, |
| model_(model), |
| highlighted_app_pending_(false), |
| ignore_changes_(false), |
| - tracker_(extensions::InstallTrackerFactory::GetForProfile(profile_)) { |
| + tracker_(NULL) { |
| model_->AddObserver(this); |
| + // Build the model. |
| + SwitchProfile(profile); |
| } |
| AppsModelBuilder::~AppsModelBuilder() { |
| @@ -68,16 +70,6 @@ AppsModelBuilder::~AppsModelBuilder() { |
| model_->RemoveObserver(this); |
| } |
| -void AppsModelBuilder::Build() { |
| - DCHECK(model_ && model_->item_count() == 0); |
| - |
| - PopulateApps(); |
| - UpdateHighlight(); |
| - |
| - // Start observing after model is built. |
| - tracker_->AddObserver(this); |
| -} |
| - |
| void AppsModelBuilder::OnBeginExtensionInstall( |
| const std::string& extension_id, |
| const std::string& extension_name, |
| @@ -172,6 +164,23 @@ void AppsModelBuilder::AddApps(const ExtensionSet* extensions, Apps* apps) { |
| } |
| } |
| +void AppsModelBuilder::SwitchProfile(Profile* profile) { |
|
xiyuan
2013/09/11 05:01:49
nit: return early if profile_ == profile
calamity
2013/09/13 18:02:35
Done.
|
| + profile_ = profile; |
| + model_->DeleteAll(); |
| + if (tracker_) |
| + tracker_->RemoveObserver(this); |
| + |
| + tracker_ = extensions::InstallTrackerFactory::GetForProfile(profile_); |
| + |
| + DCHECK(model_ && model_->item_count() == 0); |
| + |
| + PopulateApps(); |
| + UpdateHighlight(); |
| + |
| + // Start observing after model is built. |
| + tracker_->AddObserver(this); |
| +} |
| + |
| void AppsModelBuilder::PopulateApps() { |
| ExtensionService* service = |
| extensions::ExtensionSystem::Get(profile_)->extension_service(); |