| 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..30022cd3a62ccacf3ce438962fd5531d9e2ee6a2 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,26 @@ void AppsModelBuilder::AddApps(const ExtensionSet* extensions, Apps* apps) {
|
| }
|
| }
|
|
|
| +void AppsModelBuilder::SwitchProfile(Profile* profile) {
|
| + if (profile_ == profile)
|
| + return;
|
| +
|
| + 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();
|
|
|