| 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..08a9190e3f8113c419aad8d8dcd7105c4e54e400 100644
|
| --- a/chrome/browser/ui/app_list/apps_model_builder.cc
|
| +++ b/chrome/browser/ui/app_list/apps_model_builder.cc
|
| @@ -59,8 +59,9 @@ AppsModelBuilder::AppsModelBuilder(Profile* profile,
|
| model_(model),
|
| highlighted_app_pending_(false),
|
| ignore_changes_(false),
|
| - tracker_(extensions::InstallTrackerFactory::GetForProfile(profile_)) {
|
| + tracker_(NULL) {
|
| model_->AddObserver(this);
|
| + SwitchProfile(profile);
|
| }
|
|
|
| AppsModelBuilder::~AppsModelBuilder() {
|
| @@ -68,16 +69,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 +163,23 @@ void AppsModelBuilder::AddApps(const ExtensionSet* extensions, Apps* apps) {
|
| }
|
| }
|
|
|
| +void AppsModelBuilder::SwitchProfile(Profile* profile) {
|
| + 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();
|
|
|