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_; |
} |