| Index: chrome/browser/ui/avatar_button_error_controller.h
|
| diff --git a/chrome/browser/ui/avatar_button_error_controller.h b/chrome/browser/ui/avatar_button_error_controller.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a294522137049275463c8417128f15447785a9b5
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/avatar_button_error_controller.h
|
| @@ -0,0 +1,86 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CHROME_BROWSER_UI_AVATAR_BUTTON_ERROR_CONTROLLER_H_
|
| +#define CHROME_BROWSER_UI_AVATAR_BUTTON_ERROR_CONTROLLER_H_
|
| +
|
| +#include "chrome/browser/ui/avatar_button_error_controller_delegate.h"
|
| +#include "components/signin/core/browser/signin_error_controller.h"
|
| +#include "components/sync_driver/sync_error_controller.h"
|
| +
|
| +class Profile;
|
| +
|
| +// Keeps track of the signin and sync errors that should be exposed to the user
|
| +// in the avatar button.
|
| +class AvatarButtonErrorController {
|
| + public:
|
| + AvatarButtonErrorController(AvatarButtonErrorControllerDelegate* delegate,
|
| + Profile* profile);
|
| + ~AvatarButtonErrorController();
|
| +
|
| + bool HasAvatarError() { return has_signin_error_ || has_sync_error_; }
|
| +
|
| + private:
|
| + friend class SigninErrorObserver;
|
| + friend class SyncErrorObserver;
|
| +
|
| + // Observes signin errors and updates the error controller for the avatar
|
| + // button accordingly.
|
| + class SigninErrorObserver : public SigninErrorController::Observer {
|
| + public:
|
| + SigninErrorObserver(
|
| + Profile* profile,
|
| + AvatarButtonErrorController* avatar_button_error_controller);
|
| + ~SigninErrorObserver() override;
|
| +
|
| + // SigninErrorController::Observer:
|
| + void OnErrorChanged() override;
|
| +
|
| + bool HasSigninError();
|
| +
|
| + private:
|
| + Profile* profile_;
|
| + AvatarButtonErrorController* avatar_button_error_controller_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SigninErrorObserver);
|
| + };
|
| +
|
| + // Observes sync errors and updates the error controller for the avatar
|
| + // button accordingly.
|
| + class SyncErrorObserver : public SyncErrorController::Observer {
|
| + public:
|
| + SyncErrorObserver(
|
| + Profile* profile,
|
| + AvatarButtonErrorController* avatar_button_error_controller);
|
| + ~SyncErrorObserver() override;
|
| +
|
| + // SyncErrorController::Observer:
|
| + void OnErrorChanged() override;
|
| +
|
| + bool HasSyncError();
|
| +
|
| + private:
|
| + SyncErrorController* GetSyncErrorControllerIfNeeded();
|
| +
|
| + Profile* profile_;
|
| + AvatarButtonErrorController* avatar_button_error_controller_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SyncErrorObserver);
|
| + };
|
| +
|
| + void UpdateSigninError(bool has_signin_error);
|
| + void UpdateSyncError(bool has_sync_error);
|
| +
|
| + AvatarButtonErrorControllerDelegate* delegate_;
|
| +
|
| + SigninErrorObserver avatar_signin_error_controller_;
|
| + SyncErrorObserver avatar_sync_error_controller_;
|
| +
|
| + bool has_signin_error_;
|
| + bool has_sync_error_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(AvatarButtonErrorController);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_UI_AVATAR_BUTTON_ERROR_CONTROLLER_H_
|
|
|