Chromium Code Reviews| Index: chrome/browser/ui/cocoa/profiles/avatar_base_controller.mm |
| diff --git a/chrome/browser/ui/cocoa/profiles/avatar_base_controller.mm b/chrome/browser/ui/cocoa/profiles/avatar_base_controller.mm |
| index f8f8dfb31898127295d6306352b280550bff2ce5..4ccc85d9cb7541e5eb8bcd57dd09d62b5bb55f81 100644 |
| --- a/chrome/browser/ui/cocoa/profiles/avatar_base_controller.mm |
| +++ b/chrome/browser/ui/cocoa/profiles/avatar_base_controller.mm |
| @@ -11,6 +11,7 @@ |
| #include "chrome/browser/profiles/profile_manager.h" |
| #include "chrome/browser/profiles/profile_metrics.h" |
| #include "chrome/browser/signin/signin_header_helper.h" |
| +#include "chrome/browser/profiles/profiles_state.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/browser_commands.h" |
| #include "chrome/browser/ui/browser_window.h" |
| @@ -18,6 +19,7 @@ |
| #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| #import "chrome/browser/ui/cocoa/profiles/avatar_menu_bubble_controller.h" |
| #import "chrome/browser/ui/cocoa/profiles/profile_chooser_controller.h" |
| +#include "components/signin/core/browser/signin_error_controller.h" |
| #include "components/signin/core/common/profile_management_switches.h" |
| #include "ui/base/resource/resource_bundle.h" |
| @@ -32,19 +34,34 @@ const CGFloat kMenuYOffsetAdjust = 1.0; |
| // yes, then the BrowserWindowController is notified to relayout the subviews, |
| // as the button needs to be repositioned. |
| - (void)updateAvatarButtonAndLayoutParent:(BOOL)layoutParent; |
|
groby-ooo-7-16
2014/06/17 17:13:27
nit: Please add a space between declaration and th
noms (inactive)
2014/06/17 18:12:44
Done.
|
| +// Displays an error icon if any accounts associated with this profile have an |
| +// auth error. |
| +- (void)updateErrorStatus:(BOOL)hasError; |
| @end |
| -class ProfileInfoUpdateObserver : public ProfileInfoCacheObserver { |
| +class ProfileInfoUpdateObserver : public ProfileInfoCacheObserver, |
| + public SigninErrorController::Observer { |
| public: |
| - ProfileInfoUpdateObserver(AvatarBaseController* avatarButton) |
| - : avatarButton_(avatarButton) { |
| + ProfileInfoUpdateObserver(Profile* profile, |
| + AvatarBaseController* avatarButton) |
|
groby-ooo-7-16
2014/06/17 17:13:27
nit: avatarController
noms (inactive)
2014/06/17 18:12:44
Done.
|
| + : profile_(profile), |
| + avatarButton_(avatarButton) { |
| g_browser_process->profile_manager()-> |
| GetProfileInfoCache().AddObserver(this); |
| + |
| + // Subscribe to authentication error changes so that the avatar button |
| + // can update itself. |
| + SigninErrorController* error = profiles::GetSigninErrorController(profile_); |
|
groby-ooo-7-16
2014/06/17 17:13:26
nit:errorController
noms (inactive)
2014/06/17 18:12:44
Done.
|
| + if (error) |
| + error->AddObserver(this); |
| } |
| virtual ~ProfileInfoUpdateObserver() { |
| g_browser_process->profile_manager()-> |
| GetProfileInfoCache().RemoveObserver(this); |
| + SigninErrorController* error = profiles::GetSigninErrorController(profile_); |
| + if (error) |
| + error->RemoveObserver(this); |
| } |
| // ProfileInfoCacheObserver: |
| @@ -69,7 +86,15 @@ class ProfileInfoUpdateObserver : public ProfileInfoCacheObserver { |
| [avatarButton_ updateAvatarButtonAndLayoutParent:YES]; |
| } |
| + // SigninErrorController::Observer: |
| + virtual void OnErrorChanged() OVERRIDE { |
| + SigninErrorController* error = profiles::GetSigninErrorController(profile_); |
| + if (error) |
| + [avatarButton_ updateErrorStatus:error->HasError()]; |
| + } |
| + |
| private: |
| + Profile* profile_; |
| AvatarBaseController* avatarButton_; // Weak; owns this. |
| DISALLOW_COPY_AND_ASSIGN(ProfileInfoUpdateObserver); |
| @@ -80,7 +105,8 @@ class ProfileInfoUpdateObserver : public ProfileInfoCacheObserver { |
| - (id)initWithBrowser:(Browser*)browser { |
| if ((self = [super init])) { |
| browser_ = browser; |
| - profileInfoObserver_.reset(new ProfileInfoUpdateObserver(self)); |
| + profileInfoObserver_.reset( |
| + new ProfileInfoUpdateObserver(browser_->profile(), self)); |
| } |
| return self; |
| } |
| @@ -170,6 +196,9 @@ class ProfileInfoUpdateObserver : public ProfileInfoCacheObserver { |
| NOTREACHED(); |
| } |
| +- (void)updateErrorStatus:(BOOL)hasError { |
| +} |
| + |
| - (BaseBubbleController*)menuController { |
| return menuController_; |
| } |