Home | History | Annotate | Download | only in user
      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:
     22     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