• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef ASH_SYSTEM_USER_USER_ACCOUNTS_DELEGATE_H_
6 #define ASH_SYSTEM_USER_USER_ACCOUNTS_DELEGATE_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include "ash/ash_export.h"
12 #include "base/macros.h"
13 #include "base/observer_list.h"
14 
15 namespace ash {
16 namespace tray {
17 
18 class ASH_EXPORT UserAccountsDelegate {
19  public:
20   class Observer {
21    public:
Observer()22     Observer() {}
~Observer()23     virtual ~Observer() {}
24 
25     // Called when the account list of user has been changed.
26     virtual void AccountListChanged() = 0;
27 
28    private:
29     DISALLOW_COPY_AND_ASSIGN(Observer);
30   };
31 
32   UserAccountsDelegate();
33   virtual ~UserAccountsDelegate();
34 
35   void AddObserver(Observer* observer);
36   void RemoveObserver(Observer* observer);
37 
38   // Returns the user's primary account's ID.
39   virtual std::string GetPrimaryAccountId() = 0;
40 
41   // Returns a list of the user's secondary accounts' IDs.
42   virtual std::vector<std::string> GetSecondaryAccountIds() = 0;
43 
44   // Returns display name for given |account_id|.
45   virtual std::string GetAccountDisplayName(const std::string& account_id) = 0;
46 
47   // Deletes given |account_id| from the list of user's account. Passing
48   // |account_id| that is not from list is no-op.
49   virtual void DeleteAccount(const std::string& account_id) = 0;
50 
51   // Launches a dialog which lets the user add a new account.
52   virtual void LaunchAddAccountDialog() = 0;
53 
54  protected:
55   void NotifyAccountListChanged();
56 
57  private:
58   ObserverList<Observer> observers_;
59 
60   DISALLOW_COPY_AND_ASSIGN(UserAccountsDelegate);
61 };
62 
63 }  // namespace tray
64 }  // namespace ash
65 
66 #endif  // ASH_SYSTEM_USER_USER_ACCOUNTS_DELEGATE_H_
67