Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Side by Side Diff: chrome/browser/chromeos/login/users/user.cc

Issue 398753004: [cros] Move User class to user_manager component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 #include "chrome/browser/chromeos/login/users/user.h"
6
7 #include "base/logging.h"
8 #include "base/strings/stringprintf.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "base/threading/thread_restrictions.h"
11 #include "chrome/browser/chromeos/login/users/user_manager.h"
12 #include "chromeos/login/user_names.h"
13 #include "components/user_manager/user_image/default_user_images.h"
14 #include "google_apis/gaia/gaia_auth_util.h"
15 #include "grit/theme_resources.h"
16 #include "ui/base/resource/resource_bundle.h"
17
18 namespace chromeos {
19
20 namespace {
21
22 // Returns account name portion of an email.
23 std::string GetUserName(const std::string& email) {
24 std::string::size_type i = email.find('@');
25 if (i == 0 || i == std::string::npos) {
26 return email;
27 }
28 return email.substr(0, i);
29 }
30
31 } // namespace
32
33 const int User::kExternalImageIndex;
34 const int User::kProfileImageIndex;
35 const int User::kInvalidImageIndex;
36
37 class RegularUser : public User {
38 public:
39 explicit RegularUser(const std::string& email);
40 virtual ~RegularUser();
41
42 // Overridden from User:
43 virtual user_manager::UserType GetType() const OVERRIDE;
44 virtual bool CanSyncImage() const OVERRIDE;
45
46 private:
47 DISALLOW_COPY_AND_ASSIGN(RegularUser);
48 };
49
50 class GuestUser : public User {
51 public:
52 GuestUser();
53 virtual ~GuestUser();
54
55 // Overridden from User:
56 virtual user_manager::UserType GetType() const OVERRIDE;
57
58 private:
59 DISALLOW_COPY_AND_ASSIGN(GuestUser);
60 };
61
62 class KioskAppUser : public User {
63 public:
64 explicit KioskAppUser(const std::string& app_id);
65 virtual ~KioskAppUser();
66
67 // Overridden from User:
68 virtual user_manager::UserType GetType() const OVERRIDE;
69
70 private:
71 DISALLOW_COPY_AND_ASSIGN(KioskAppUser);
72 };
73
74 class SupervisedUser : public User {
75 public:
76 explicit SupervisedUser(const std::string& username);
77 virtual ~SupervisedUser();
78
79 // Overridden from User:
80 virtual user_manager::UserType GetType() const OVERRIDE;
81 virtual std::string display_email() const OVERRIDE;
82
83 private:
84 DISALLOW_COPY_AND_ASSIGN(SupervisedUser);
85 };
86
87 class RetailModeUser : public User {
88 public:
89 RetailModeUser();
90 virtual ~RetailModeUser();
91
92 // Overridden from User:
93 virtual user_manager::UserType GetType() const OVERRIDE;
94
95 private:
96 DISALLOW_COPY_AND_ASSIGN(RetailModeUser);
97 };
98
99 class PublicAccountUser : public User {
100 public:
101 explicit PublicAccountUser(const std::string& email);
102 virtual ~PublicAccountUser();
103
104 // Overridden from User:
105 virtual user_manager::UserType GetType() const OVERRIDE;
106
107 private:
108 DISALLOW_COPY_AND_ASSIGN(PublicAccountUser);
109 };
110
111 std::string User::GetEmail() const {
112 return display_email();
113 }
114
115 base::string16 User::GetDisplayName() const {
116 // Fallback to the email account name in case display name haven't been set.
117 return display_name_.empty() ?
118 base::UTF8ToUTF16(GetAccountName(true)) :
119 display_name_;
120 }
121
122 base::string16 User::GetGivenName() const {
123 return given_name_;
124 }
125
126 const gfx::ImageSkia& User::GetImage() const {
127 return user_image_.image();
128 }
129
130 std::string User::GetUserID() const {
131 return gaia::CanonicalizeEmail(gaia::SanitizeEmail(email()));
132 }
133
134 std::string User::GetAccountName(bool use_display_email) const {
135 if (use_display_email && !display_email_.empty())
136 return GetUserName(display_email_);
137 else
138 return GetUserName(email_);
139 }
140
141 bool User::HasDefaultImage() const {
142 return image_index_ >= 0 && image_index_ < user_manager::kDefaultImagesCount;
143 }
144
145 bool User::CanSyncImage() const {
146 return false;
147 }
148
149 std::string User::display_email() const {
150 return display_email_;
151 }
152
153 bool User::can_lock() const {
154 return can_lock_;
155 }
156
157 std::string User::username_hash() const {
158 return username_hash_;
159 }
160
161 bool User::is_logged_in() const {
162 return is_logged_in_;
163 }
164
165 bool User::is_active() const {
166 return is_active_;
167 }
168
169 User* User::CreateRegularUser(const std::string& email) {
170 return new RegularUser(email);
171 }
172
173 User* User::CreateGuestUser() {
174 return new GuestUser;
175 }
176
177 User* User::CreateKioskAppUser(const std::string& kiosk_app_username) {
178 return new KioskAppUser(kiosk_app_username);
179 }
180
181 User* User::CreateSupervisedUser(const std::string& username) {
182 return new SupervisedUser(username);
183 }
184
185 User* User::CreateRetailModeUser() {
186 return new RetailModeUser;
187 }
188
189 User* User::CreatePublicAccountUser(const std::string& email) {
190 return new PublicAccountUser(email);
191 }
192
193 User::User(const std::string& email)
194 : email_(email),
195 oauth_token_status_(OAUTH_TOKEN_STATUS_UNKNOWN),
196 force_online_signin_(false),
197 image_index_(kInvalidImageIndex),
198 image_is_stub_(false),
199 image_is_loading_(false),
200 can_lock_(false),
201 is_logged_in_(false),
202 is_active_(false),
203 profile_is_created_(false) {
204 }
205
206 User::~User() {}
207
208 void User::SetAccountLocale(const std::string& resolved_account_locale) {
209 account_locale_.reset(new std::string(resolved_account_locale));
210 }
211
212 void User::SetImage(const user_manager::UserImage& user_image,
213 int image_index) {
214 user_image_ = user_image;
215 image_index_ = image_index;
216 image_is_stub_ = false;
217 image_is_loading_ = false;
218 DCHECK(HasDefaultImage() || user_image.has_raw_image());
219 }
220
221 void User::SetImageURL(const GURL& image_url) {
222 user_image_.set_url(image_url);
223 }
224
225 void User::SetStubImage(int image_index, bool is_loading) {
226 user_image_ = user_manager::UserImage(
227 *ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
228 IDR_PROFILE_PICTURE_LOADING));
229 image_index_ = image_index;
230 image_is_stub_ = true;
231 image_is_loading_ = is_loading;
232 }
233
234 RegularUser::RegularUser(const std::string& email) : User(email) {
235 set_can_lock(true);
236 set_display_email(email);
237 }
238
239 RegularUser::~RegularUser() {}
240
241 user_manager::UserType RegularUser::GetType() const {
242 return user_manager::USER_TYPE_REGULAR;
243 }
244
245 bool RegularUser::CanSyncImage() const {
246 return true;
247 }
248
249 GuestUser::GuestUser() : User(chromeos::login::kGuestUserName) {
250 set_display_email(std::string());
251 }
252
253 GuestUser::~GuestUser() {}
254
255 user_manager::UserType GuestUser::GetType() const {
256 return user_manager::USER_TYPE_GUEST;
257 }
258
259 KioskAppUser::KioskAppUser(const std::string& kiosk_app_username)
260 : User(kiosk_app_username) {
261 set_display_email(kiosk_app_username);
262 }
263
264 KioskAppUser::~KioskAppUser() {}
265
266 user_manager::UserType KioskAppUser::GetType() const {
267 return user_manager::USER_TYPE_KIOSK_APP;
268 }
269
270 SupervisedUser::SupervisedUser(const std::string& username)
271 : User(username) {
272 set_can_lock(true);
273 }
274
275 SupervisedUser::~SupervisedUser() {}
276
277 user_manager::UserType SupervisedUser::GetType() const {
278 return user_manager::USER_TYPE_SUPERVISED;
279 }
280
281 std::string SupervisedUser::display_email() const {
282 return base::UTF16ToUTF8(display_name());
283 }
284
285 RetailModeUser::RetailModeUser() : User(chromeos::login::kRetailModeUserName) {
286 set_display_email(std::string());
287 }
288
289 RetailModeUser::~RetailModeUser() {}
290
291 user_manager::UserType RetailModeUser::GetType() const {
292 return user_manager::USER_TYPE_RETAIL_MODE;
293 }
294
295 PublicAccountUser::PublicAccountUser(const std::string& email) : User(email) {
296 }
297
298 PublicAccountUser::~PublicAccountUser() {}
299
300 user_manager::UserType PublicAccountUser::GetType() const {
301 return user_manager::USER_TYPE_PUBLIC_ACCOUNT;
302 }
303
304 bool User::has_gaia_account() const {
305 COMPILE_ASSERT(user_manager::NUM_USER_TYPES == 6, num_user_types_unexpected);
306 switch (GetType()) {
307 case user_manager::USER_TYPE_REGULAR:
308 return true;
309 case user_manager::USER_TYPE_GUEST:
310 case user_manager::USER_TYPE_RETAIL_MODE:
311 case user_manager::USER_TYPE_PUBLIC_ACCOUNT:
312 case user_manager::USER_TYPE_SUPERVISED:
313 case user_manager::USER_TYPE_KIOSK_APP:
314 return false;
315 default:
316 NOTREACHED();
317 }
318 return false;
319 }
320
321 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/users/user.h ('k') | chrome/browser/chromeos/login/users/user_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698