Index: chrome/browser/ui/views/profiles/new_avatar_button.h |
diff --git a/chrome/browser/ui/views/profiles/new_avatar_button.h b/chrome/browser/ui/views/profiles/new_avatar_button.h |
index 0811d6d990a8edcbdd2bdfad2bfb63c5b3cba59e..662d58dd5fd99acf1eb9484636163f2553a7e100 100644 |
--- a/chrome/browser/ui/views/profiles/new_avatar_button.h |
+++ b/chrome/browser/ui/views/profiles/new_avatar_button.h |
@@ -9,6 +9,7 @@ |
#include "chrome/browser/profiles/profile_attributes_storage.h" |
#include "chrome/browser/ui/views/profiles/avatar_button_style.h" |
#include "components/signin/core/browser/signin_error_controller.h" |
+#include "components/sync_driver/sync_error_controller.h" |
#include "ui/views/controls/button/label_button.h" |
class AvatarButtonDelegate; |
@@ -16,9 +17,38 @@ class Profile; |
// Avatar button that displays the active profile's name in the caption area. |
class NewAvatarButton : public views::LabelButton, |
- public ProfileAttributesStorage::Observer, |
- public SigninErrorController::Observer { |
+ public ProfileAttributesStorage::Observer { |
public: |
+ class SigninErrorObserver : public SigninErrorController::Observer { |
+ public: |
+ SigninErrorObserver(NewAvatarButton* parent_button, Profile* profile); |
+ ~SigninErrorObserver() override; |
+ |
+ private: |
+ // SigninErrorController::Observer: |
+ void OnErrorChanged() override; |
+ |
+ NewAvatarButton* parent_button_; |
+ Profile* profile_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SigninErrorObserver); |
+ }; |
+ |
+ class SyncErrorObserver : public SyncErrorController::Observer { |
+ public: |
+ SyncErrorObserver(NewAvatarButton* parent_button, Profile* profile); |
+ ~SyncErrorObserver() override; |
+ |
+ private: |
+ // SyncErrorController::Observer: |
+ void OnErrorChanged() override; |
+ |
+ NewAvatarButton* parent_button_; |
+ Profile* profile_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(SyncErrorObserver); |
+ }; |
+ |
NewAvatarButton(AvatarButtonDelegate* delegate, |
AvatarButtonStyle button_style, |
Profile* profile); |
@@ -31,6 +61,8 @@ class NewAvatarButton : public views::LabelButton, |
// Views |
void OnGestureEvent(ui::GestureEvent* event) override; |
+ void OnErrorChanged(); |
+ |
private: |
friend class ProfileChooserViewExtensionsTest; |
@@ -43,19 +75,19 @@ class NewAvatarButton : public views::LabelButton, |
void OnProfileSupervisedUserIdChanged( |
const base::FilePath& profile_path) override; |
- // SigninErrorController::Observer: |
- void OnErrorChanged() override; |
- |
// Called when the profile info cache has changed, which means we might |
// have to update the icon/text of the button. |
void Update(); |
+ SigninErrorObserver signin_error_observer_; |
+ SyncErrorObserver sync_error_observer_; |
+ |
AvatarButtonDelegate* delegate_; |
Profile* profile_; |
- // Whether the signed in profile has an authentication error. Used to display |
- // an error icon next to the button text. |
- bool has_auth_error_; |
+ // Whether the signed in profile has any authentication error or sync error. |
+ // Used to display an error icon next to the button text. |
+ bool has_error_; |
// The icon displayed instead of the profile name in the local profile case. |
// Different assets are used depending on the OS version. |