Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc |
=================================================================== |
--- chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc (revision 170518) |
+++ chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.cc (working copy) |
@@ -173,10 +173,7 @@ |
chrome::NOTIFICATION_EXTENSION_UNLOADED, |
content::Source<Profile>(profile_)); |
pref_change_registrar_.Init(profile_->GetPrefs()); |
- pref_change_registrar_.Add( |
- prefs::kPinnedLauncherApps, |
- base::Bind(&ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref, |
- base::Unretained(this))); |
+ pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this); |
} |
ChromeLauncherControllerPerApp::~ChromeLauncherControllerPerApp() { |
@@ -230,20 +227,10 @@ |
SetShelfAutoHideBehaviorFromPrefs(); |
SetShelfAlignmentFromPrefs(); |
PrefService* prefs = profile_->GetPrefs(); |
- if (prefs->GetString(prefs::kShelfAlignmentLocal).empty()) { |
- pref_change_registrar_.Add( |
- prefs::kShelfAlignmentLocal, |
- base::Bind( |
- &ChromeLauncherControllerPerApp::SetShelfAlignmentFromPrefs, |
- base::Unretained(this))); |
+ if (prefs->GetString(prefs::kShelfAlignmentLocal).empty() || |
+ prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) { |
+ prefs->AddObserver(this); |
} |
- if (prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) { |
- pref_change_registrar_.Add( |
- prefs::kShelfAutoHideBehaviorLocal, |
- base::Bind(&ChromeLauncherControllerPerApp:: |
- SetShelfAutoHideBehaviorFromPrefs, |
- base::Unretained(this))); |
- } |
ash::Shell::GetInstance()->AddShellObserver(this); |
} |
} |
@@ -796,6 +783,20 @@ |
} |
} |
+void ChromeLauncherControllerPerApp::OnPreferenceChanged( |
+ PrefServiceBase* service, |
+ const std::string& pref_name) { |
+ if (pref_name == prefs::kPinnedLauncherApps) { |
+ UpdateAppLaunchersFromPref(); |
+ } else if (pref_name == prefs::kShelfAlignmentLocal) { |
+ SetShelfAlignmentFromPrefs(); |
+ } else if (pref_name == prefs::kShelfAutoHideBehaviorLocal) { |
+ SetShelfAutoHideBehaviorFromPrefs(); |
+ } else { |
+ NOTREACHED() << "Unexpected pref change for " << pref_name; |
+ } |
+} |
+ |
void ChromeLauncherControllerPerApp::OnShelfAlignmentChanged() { |
const char* pref_value = NULL; |
// TODO(oshima): Support multiple displays. |
@@ -864,10 +865,7 @@ |
} |
} |
} |
- pref_change_registrar_.Add( |
- prefs::kPinnedLauncherApps, |
- base::Bind(&ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref, |
- base::Unretained(this))); |
+ pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this); |
} |
ash::LauncherModel* ChromeLauncherControllerPerApp::model() { |