| Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc
|
| ===================================================================
|
| --- chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc (revision 170518)
|
| +++ chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.cc (working copy)
|
| @@ -174,11 +174,7 @@
|
| chrome::NOTIFICATION_EXTENSION_UNLOADED,
|
| content::Source<Profile>(profile_));
|
| pref_change_registrar_.Init(profile_->GetPrefs());
|
| - pref_change_registrar_.Add(
|
| - prefs::kPinnedLauncherApps,
|
| - base::Bind(&ChromeLauncherControllerPerBrowser::
|
| - UpdateAppLaunchersFromPref,
|
| - base::Unretained(this)));
|
| + pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this);
|
| }
|
|
|
| ChromeLauncherControllerPerBrowser::~ChromeLauncherControllerPerBrowser() {
|
| @@ -233,20 +229,10 @@
|
| SetShelfAutoHideBehaviorFromPrefs();
|
| SetShelfAlignmentFromPrefs();
|
| PrefService* prefs = profile_->GetPrefs();
|
| - if (prefs->GetString(prefs::kShelfAlignmentLocal).empty()) {
|
| - pref_change_registrar_.Add(
|
| - prefs::kShelfAlignmentLocal,
|
| - base::Bind(&ChromeLauncherControllerPerBrowser::
|
| - 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(&ChromeLauncherControllerPerBrowser::
|
| - SetShelfAutoHideBehaviorFromPrefs,
|
| - base::Unretained(this)));
|
| - }
|
| ash::Shell::GetInstance()->AddShellObserver(this);
|
| }
|
| }
|
| @@ -802,6 +788,20 @@
|
| }
|
| }
|
|
|
| +void ChromeLauncherControllerPerBrowser::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 ChromeLauncherControllerPerBrowser::OnShelfAlignmentChanged() {
|
| const char* pref_value = NULL;
|
| // TODO(oshima): Support multiple displays.
|
| @@ -870,11 +870,7 @@
|
| }
|
| }
|
| }
|
| - pref_change_registrar_.Add(
|
| - prefs::kPinnedLauncherApps,
|
| - base::Bind(&ChromeLauncherControllerPerBrowser::
|
| - UpdateAppLaunchersFromPref,
|
| - base::Unretained(this)));
|
| + pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this);
|
| }
|
|
|
| ash::LauncherModel* ChromeLauncherControllerPerBrowser::model() {
|
|
|