Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / users / supervised_user_manager_impl.h
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 CHROME_BROWSER_CHROMEOS_LOGIN_USERS_SUPERVISED_USER_MANAGER_IMPL_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_USERS_SUPERVISED_USER_MANAGER_IMPL_H_
7
8 #include <vector>
9
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "chrome/browser/chromeos/login/supervised/supervised_user_authentication.h"
13 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h"
14
15 namespace chromeos {
16
17 class ChromeUserManagerImpl;
18 class CrosSettings;
19
20 // Implementation of the UserManager.
21 class SupervisedUserManagerImpl
22     : public SupervisedUserManager {
23  public:
24   virtual ~SupervisedUserManagerImpl();
25
26   virtual bool HasSupervisedUsers(const std::string& manager_id) const OVERRIDE;
27   virtual const user_manager::User* CreateUserRecord(
28       const std::string& manager_id,
29       const std::string& local_user_id,
30       const std::string& sync_user_id,
31       const base::string16& display_name) OVERRIDE;
32   virtual std::string GenerateUserId() OVERRIDE;
33   virtual const user_manager::User* FindByDisplayName(
34       const base::string16& display_name) const OVERRIDE;
35   virtual const user_manager::User* FindBySyncId(
36       const std::string& sync_id) const OVERRIDE;
37   virtual std::string GetUserSyncId(const std::string& user_id) const OVERRIDE;
38   virtual base::string16 GetManagerDisplayName(const std::string& user_id) const
39       OVERRIDE;
40   virtual std::string GetManagerUserId(const std::string& user_id) const
41       OVERRIDE;
42   virtual std::string GetManagerDisplayEmail(const std::string& user_id) const
43       OVERRIDE;
44   virtual void StartCreationTransaction(const base::string16& display_name)
45       OVERRIDE;
46   virtual void SetCreationTransactionUserId(const std::string& user_id)
47       OVERRIDE;
48   virtual void CommitCreationTransaction() OVERRIDE;
49   virtual SupervisedUserAuthentication* GetAuthentication() OVERRIDE;
50   virtual void GetPasswordInformation(const std::string& user_id,
51                                       base::DictionaryValue* result) OVERRIDE;
52   virtual void SetPasswordInformation(
53       const std::string& user_id,
54       const base::DictionaryValue* password_info) OVERRIDE;
55   virtual void LoadSupervisedUserToken(
56       Profile * profile,
57       const LoadTokenCallback& callback) OVERRIDE;
58   virtual void ConfigureSyncWithToken(
59       Profile* profile,
60       const std::string& token) OVERRIDE;
61
62  private:
63   friend class ChromeUserManagerImpl;
64   friend class UserManager;
65
66   explicit SupervisedUserManagerImpl(ChromeUserManagerImpl* owner);
67
68   // Returns true if there is non-committed user creation transaction.
69   bool HasFailedUserCreationTransaction();
70
71   // Attempts to clean up data that could be left from failed user creation.
72   void RollbackUserCreationTransaction();
73
74   void RemoveNonCryptohomeData(const std::string& user_id);
75
76   bool CheckForFirstRun(const std::string& user_id);
77
78   // Update name if this user is manager of some managed users.
79   void UpdateManagerName(const std::string& manager_id,
80                          const base::string16& new_display_name);
81
82   bool GetUserStringValue(const std::string& user_id,
83                           const char* key,
84                           std::string* out_value) const;
85
86   void SetUserStringValue(const std::string& user_id,
87                           const char* key,
88                           const std::string& value);
89
90   bool GetUserIntegerValue(const std::string& user_id,
91                            const char* key,
92                            int* out_value) const;
93
94   void SetUserIntegerValue(const std::string& user_id,
95                            const char* key,
96                            const int value);
97
98   bool GetUserBooleanValue(const std::string& user_id,
99                            const char* key,
100                            bool* out_value) const;
101
102   void SetUserBooleanValue(const std::string& user_id,
103                            const char* key,
104                            const bool value);
105
106   void CleanPref(const std::string& user_id,
107                  const char* key);
108
109   ChromeUserManagerImpl* owner_;
110
111   // Interface to the signed settings store.
112   CrosSettings* cros_settings_;
113
114   scoped_ptr<SupervisedUserAuthentication> authentication_;
115
116   DISALLOW_COPY_AND_ASSIGN(SupervisedUserManagerImpl);
117 };
118
119 }  // namespace chromeos
120
121 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_USERS_SUPERVISED_USER_MANAGER_IMPL_H_