| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/profiles/avatar_menu.h" | 5 #include "chrome/browser/profiles/avatar_menu.h" |
| 6 | 6 |
| 7 #include "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/i18n/case_conversion.h" | 9 #include "base/i18n/case_conversion.h" |
| 10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 #endif | 58 #endif |
| 59 profile_info_(profile_cache), | 59 profile_info_(profile_cache), |
| 60 observer_(observer), | 60 observer_(observer), |
| 61 browser_(browser) { | 61 browser_(browser) { |
| 62 DCHECK(profile_info_); | 62 DCHECK(profile_info_); |
| 63 // Don't DCHECK(browser_) so that unit tests can reuse this ctor. | 63 // Don't DCHECK(browser_) so that unit tests can reuse this ctor. |
| 64 | 64 |
| 65 ActiveBrowserChanged(browser_); | 65 ActiveBrowserChanged(browser_); |
| 66 | 66 |
| 67 // Register this as an observer of the info cache. | 67 // Register this as an observer of the info cache. |
| 68 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, | 68 g_browser_process->profile_manager()->GetProfileInfoCache().AddObserver(this); |
| 69 content::NotificationService::AllSources()); | |
| 70 | 69 |
| 71 #if defined(ENABLE_SUPERVISED_USERS) | 70 #if defined(ENABLE_SUPERVISED_USERS) |
| 72 // Register this as an observer of the SupervisedUserService to be notified | 71 // Register this as an observer of the SupervisedUserService to be notified |
| 73 // of changes to the custodian info. | 72 // of changes to the custodian info. |
| 74 if (browser_) { | 73 if (browser_) { |
| 75 supervised_user_observer_.Add( | 74 supervised_user_observer_.Add( |
| 76 SupervisedUserServiceFactory::GetForProfile(browser_->profile())); | 75 SupervisedUserServiceFactory::GetForProfile(browser_->profile())); |
| 77 } | 76 } |
| 78 #endif | 77 #endif |
| 79 } | 78 } |
| 80 | 79 |
| 81 AvatarMenu::~AvatarMenu() { | 80 AvatarMenu::~AvatarMenu() { |
| 81 g_browser_process->profile_manager()-> |
| 82 GetProfileInfoCache().RemoveObserver(this); |
| 82 } | 83 } |
| 83 | 84 |
| 84 AvatarMenu::Item::Item(size_t menu_index, | 85 AvatarMenu::Item::Item(size_t menu_index, |
| 85 size_t profile_index, | 86 size_t profile_index, |
| 86 const gfx::Image& icon) | 87 const gfx::Image& icon) |
| 87 : icon(icon), | 88 : icon(icon), |
| 88 active(false), | 89 active(false), |
| 89 signed_in(false), | 90 signed_in(false), |
| 90 signin_required(false), | 91 signin_required(false), |
| 91 menu_index(menu_index), | 92 menu_index(menu_index), |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 } | 246 } |
| 246 | 247 |
| 247 bool AvatarMenu::ShouldShowAddNewProfileLink() const { | 248 bool AvatarMenu::ShouldShowAddNewProfileLink() const { |
| 248 return menu_actions_->ShouldShowAddNewProfileLink(); | 249 return menu_actions_->ShouldShowAddNewProfileLink(); |
| 249 } | 250 } |
| 250 | 251 |
| 251 bool AvatarMenu::ShouldShowEditProfileLink() const { | 252 bool AvatarMenu::ShouldShowEditProfileLink() const { |
| 252 return menu_actions_->ShouldShowEditProfileLink(); | 253 return menu_actions_->ShouldShowEditProfileLink(); |
| 253 } | 254 } |
| 254 | 255 |
| 255 void AvatarMenu::Observe(int type, | 256 void AvatarMenu::OnProfileAdded(const base::FilePath& profile_path) { |
| 256 const content::NotificationSource& source, | 257 Update(); |
| 257 const content::NotificationDetails& details) { | 258 } |
| 258 DCHECK_EQ(chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, type); | 259 |
| 259 RebuildMenu(); | 260 void AvatarMenu::OnProfileWasRemoved(const base::FilePath& profile_path, |
| 260 if (observer_) | 261 const base::string16& profile_name) { |
| 261 observer_->OnAvatarMenuChanged(this); | 262 Update(); |
| 263 } |
| 264 |
| 265 void AvatarMenu::OnProfileNameChanged(const base::FilePath& profile_path, |
| 266 const base::string16& old_profile_name) { |
| 267 Update(); |
| 268 } |
| 269 |
| 270 void AvatarMenu::OnProfileUserNameChanged(const base::FilePath& profile_path) { |
| 271 Update(); |
| 272 } |
| 273 |
| 274 void AvatarMenu::OnProfileAvatarChanged(const base::FilePath& profile_path) { |
| 275 Update(); |
| 276 } |
| 277 |
| 278 void AvatarMenu::OnProfileHighResAvatarLoaded( |
| 279 const base::FilePath& profile_path) { |
| 280 Update(); |
| 281 } |
| 282 |
| 283 void AvatarMenu::OnProfileSigninRequiredChanged( |
| 284 const base::FilePath& profile_path) { |
| 285 Update(); |
| 262 } | 286 } |
| 263 | 287 |
| 264 #if defined(ENABLE_SUPERVISED_USERS) | 288 #if defined(ENABLE_SUPERVISED_USERS) |
| 265 void AvatarMenu::OnCustodianInfoChanged() { | 289 void AvatarMenu::OnCustodianInfoChanged() { |
| 266 RebuildMenu(); | 290 RebuildMenu(); |
| 267 if (observer_) | 291 if (observer_) |
| 268 observer_->OnAvatarMenuChanged(this); | 292 observer_->OnAvatarMenuChanged(this); |
| 269 } | 293 } |
| 270 #endif | 294 #endif |
| 295 |
| 296 void AvatarMenu::Update() { |
| 297 RebuildMenu(); |
| 298 if (observer_) |
| 299 observer_->OnAvatarMenuChanged(this); |
| 300 } |
| OLD | NEW |