Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(987)

Unified Diff: chrome/browser/ui/app_list/apps_model_builder.cc

Issue 20656002: Add profile selector menu to app list. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove binary changes Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
« no previous file with comments | « chrome/browser/ui/app_list/apps_model_builder.h ('k') | chrome/browser/ui/app_list/apps_model_builder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698