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..e65bdd9b3d98ca23eefa561233377a7a8a412c1b 100644 |
| --- a/chrome/browser/ui/app_list/apps_model_builder.cc |
| +++ b/chrome/browser/ui/app_list/apps_model_builder.cc |
| @@ -54,13 +54,15 @@ bool ShouldDisplayInAppLauncher(Profile* profile, |
| AppsModelBuilder::AppsModelBuilder(Profile* profile, |
| app_list::AppListModel::Apps* model, |
| AppListControllerDelegate* controller) |
| - : profile_(profile), |
| + : profile_(NULL), |
| controller_(controller), |
| 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,25 @@ void AppsModelBuilder::AddApps(const ExtensionSet* extensions, Apps* apps) { |
| } |
| } |
| +void AppsModelBuilder::SwitchProfile(Profile* profile) { |
| + if (profile_ == profile) |
| + return; |
|
tapted
2013/09/13 23:12:17
nit: blank line after early return
calamity
2013/09/16 19:45:26
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(); |