1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 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 syncer::SyncErrorController::Observer {
public:
SyncErrorObserver(
Profile* profile,
AvatarButtonErrorController* avatar_button_error_controller);
~SyncErrorObserver() override;
// SyncErrorController::Observer:
void OnErrorChanged() override;
bool HasSyncError();
private:
syncer::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_
|