| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/user_manager/user.h" | 5 #include "components/user_manager/user.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/threading/thread_restrictions.h" | 10 #include "base/threading/thread_restrictions.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 | 30 |
| 31 // static | 31 // static |
| 32 bool User::TypeHasGaiaAccount(UserType user_type) { | 32 bool User::TypeHasGaiaAccount(UserType user_type) { |
| 33 return user_type == USER_TYPE_REGULAR || | 33 return user_type == USER_TYPE_REGULAR || |
| 34 user_type == USER_TYPE_CHILD; | 34 user_type == USER_TYPE_CHILD; |
| 35 } | 35 } |
| 36 | 36 |
| 37 // Also used for regular supervised users. | 37 // Also used for regular supervised users. |
| 38 class RegularUser : public User { | 38 class RegularUser : public User { |
| 39 public: | 39 public: |
| 40 explicit RegularUser(const std::string& email); | 40 explicit RegularUser(const UserID& user_id); |
| 41 ~RegularUser() override; | 41 ~RegularUser() override; |
| 42 | 42 |
| 43 // Overridden from User: | 43 // Overridden from User: |
| 44 UserType GetType() const override; | 44 UserType GetType() const override; |
| 45 bool CanSyncImage() const override; | 45 bool CanSyncImage() const override; |
| 46 void SetIsChild(bool is_child) override; | 46 void SetIsChild(bool is_child) override; |
| 47 | 47 |
| 48 private: | 48 private: |
| 49 bool is_child_; | 49 bool is_child_; |
| 50 | 50 |
| 51 DISALLOW_COPY_AND_ASSIGN(RegularUser); | 51 DISALLOW_COPY_AND_ASSIGN(RegularUser); |
| 52 }; | 52 }; |
| 53 | 53 |
| 54 class GuestUser : public User { | 54 class GuestUser : public User { |
| 55 public: | 55 public: |
| 56 GuestUser(); | 56 GuestUser(); |
| 57 ~GuestUser() override; | 57 ~GuestUser() override; |
| 58 | 58 |
| 59 // Overridden from User: | 59 // Overridden from User: |
| 60 UserType GetType() const override; | 60 UserType GetType() const override; |
| 61 | 61 |
| 62 private: | 62 private: |
| 63 DISALLOW_COPY_AND_ASSIGN(GuestUser); | 63 DISALLOW_COPY_AND_ASSIGN(GuestUser); |
| 64 }; | 64 }; |
| 65 | 65 |
| 66 class KioskAppUser : public User { | 66 class KioskAppUser : public User { |
| 67 public: | 67 public: |
| 68 explicit KioskAppUser(const std::string& app_id); | 68 explicit KioskAppUser(const UserID& app_id); |
| 69 ~KioskAppUser() override; | 69 ~KioskAppUser() override; |
| 70 | 70 |
| 71 // Overridden from User: | 71 // Overridden from User: |
| 72 UserType GetType() const override; | 72 UserType GetType() const override; |
| 73 | 73 |
| 74 private: | 74 private: |
| 75 DISALLOW_COPY_AND_ASSIGN(KioskAppUser); | 75 DISALLOW_COPY_AND_ASSIGN(KioskAppUser); |
| 76 }; | 76 }; |
| 77 | 77 |
| 78 class SupervisedUser : public User { | 78 class SupervisedUser : public User { |
| 79 public: | 79 public: |
| 80 explicit SupervisedUser(const std::string& username); | 80 explicit SupervisedUser(const UserID& user_id); |
| 81 ~SupervisedUser() override; | 81 ~SupervisedUser() override; |
| 82 | 82 |
| 83 // Overridden from User: | 83 // Overridden from User: |
| 84 UserType GetType() const override; | 84 UserType GetType() const override; |
| 85 std::string display_email() const override; | 85 std::string display_email() const override; |
| 86 | 86 |
| 87 private: | 87 private: |
| 88 DISALLOW_COPY_AND_ASSIGN(SupervisedUser); | 88 DISALLOW_COPY_AND_ASSIGN(SupervisedUser); |
| 89 }; | 89 }; |
| 90 | 90 |
| 91 class PublicAccountUser : public User { | 91 class PublicAccountUser : public User { |
| 92 public: | 92 public: |
| 93 explicit PublicAccountUser(const std::string& email); | 93 explicit PublicAccountUser(const UserID& user_id); |
| 94 ~PublicAccountUser() override; | 94 ~PublicAccountUser() override; |
| 95 | 95 |
| 96 // Overridden from User: | 96 // Overridden from User: |
| 97 UserType GetType() const override; | 97 UserType GetType() const override; |
| 98 | 98 |
| 99 private: | 99 private: |
| 100 DISALLOW_COPY_AND_ASSIGN(PublicAccountUser); | 100 DISALLOW_COPY_AND_ASSIGN(PublicAccountUser); |
| 101 }; | 101 }; |
| 102 | 102 |
| 103 std::string User::GetEmail() const { | 103 std::string User::GetEmail() const { |
| 104 return display_email(); | 104 return display_email(); |
| 105 } | 105 } |
| 106 | 106 |
| 107 base::string16 User::GetDisplayName() const { | 107 base::string16 User::GetDisplayName() const { |
| 108 // Fallback to the email account name in case display name haven't been set. | 108 // Fallback to the email account name in case display name haven't been set. |
| 109 return display_name_.empty() ? base::UTF8ToUTF16(GetAccountName(true)) | 109 return display_name_.empty() ? base::UTF8ToUTF16(GetAccountName(true)) |
| 110 : display_name_; | 110 : display_name_; |
| 111 } | 111 } |
| 112 | 112 |
| 113 base::string16 User::GetGivenName() const { | 113 base::string16 User::GetGivenName() const { |
| 114 return given_name_; | 114 return given_name_; |
| 115 } | 115 } |
| 116 | 116 |
| 117 const gfx::ImageSkia& User::GetImage() const { | 117 const gfx::ImageSkia& User::GetImage() const { |
| 118 return user_image_.image(); | 118 return user_image_.image(); |
| 119 } | 119 } |
| 120 | 120 |
| 121 UserID User::GetUserID() const { | 121 const UserID& User::GetUserID() const { |
| 122 return gaia::CanonicalizeEmail(gaia::SanitizeEmail(email())); | 122 return user_id_; |
| 123 //return UserID(std::string() /* gaia_id */, gaia::CanonicalizeEmail(gaia::San
itizeEmail(email()))); |
| 123 } | 124 } |
| 124 | 125 |
| 125 void User::SetIsChild(bool is_child) { | 126 void User::SetIsChild(bool is_child) { |
| 126 VLOG(1) << "Ignoring SetIsChild call with param " << is_child; | 127 VLOG(1) << "Ignoring SetIsChild call with param " << is_child; |
| 127 if (is_child) { | 128 if (is_child) { |
| 128 NOTREACHED() << "Calling SetIsChild(true) for base User class." | 129 NOTREACHED() << "Calling SetIsChild(true) for base User class." |
| 129 << "Base class cannot be set as child"; | 130 << "Base class cannot be set as child"; |
| 130 } | 131 } |
| 131 } | 132 } |
| 132 | 133 |
| 133 bool User::HasGaiaAccount() const { | 134 bool User::HasGaiaAccount() const { |
| 134 return TypeHasGaiaAccount(GetType()); | 135 return TypeHasGaiaAccount(GetType()); |
| 135 } | 136 } |
| 136 | 137 |
| 137 bool User::IsSupervised() const { | 138 bool User::IsSupervised() const { |
| 138 UserType type = GetType(); | 139 UserType type = GetType(); |
| 139 return type == USER_TYPE_SUPERVISED || | 140 return type == USER_TYPE_SUPERVISED || |
| 140 type == USER_TYPE_CHILD; | 141 type == USER_TYPE_CHILD; |
| 141 } | 142 } |
| 142 | 143 |
| 143 std::string User::GetAccountName(bool use_display_email) const { | 144 std::string User::GetAccountName(bool use_display_email) const { |
| 144 if (use_display_email && !display_email_.empty()) | 145 if (use_display_email && !display_email_.empty()) |
| 145 return GetUserName(display_email_); | 146 return GetUserName(display_email_); |
| 146 else | 147 else |
| 147 return GetUserName(email_); | 148 return GetUserName(user_id_.GetUserEmail()); |
| 148 } | 149 } |
| 149 | 150 |
| 150 bool User::HasDefaultImage() const { | 151 bool User::HasDefaultImage() const { |
| 151 return image_index_ >= 0 && image_index_ < kDefaultImagesCount; | 152 return image_index_ >= 0 && image_index_ < kDefaultImagesCount; |
| 152 } | 153 } |
| 153 | 154 |
| 154 bool User::CanSyncImage() const { | 155 bool User::CanSyncImage() const { |
| 155 return false; | 156 return false; |
| 156 } | 157 } |
| 157 | 158 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 168 } | 169 } |
| 169 | 170 |
| 170 bool User::is_logged_in() const { | 171 bool User::is_logged_in() const { |
| 171 return is_logged_in_; | 172 return is_logged_in_; |
| 172 } | 173 } |
| 173 | 174 |
| 174 bool User::is_active() const { | 175 bool User::is_active() const { |
| 175 return is_active_; | 176 return is_active_; |
| 176 } | 177 } |
| 177 | 178 |
| 178 User* User::CreateRegularUser(const std::string& email) { | 179 User* User::CreateRegularUser(const UserID& user_id) { |
| 179 return new RegularUser(email); | 180 return new RegularUser(user_id); |
| 180 } | 181 } |
| 181 | 182 |
| 182 User* User::CreateGuestUser() { | 183 User* User::CreateGuestUser() { |
| 183 return new GuestUser; | 184 return new GuestUser; |
| 184 } | 185 } |
| 185 | 186 |
| 186 User* User::CreateKioskAppUser(const std::string& kiosk_app_username) { | 187 User* User::CreateKioskAppUser(const UserID& user_id) { |
| 187 return new KioskAppUser(kiosk_app_username); | 188 return new KioskAppUser(user_id); |
| 188 } | 189 } |
| 189 | 190 |
| 190 User* User::CreateSupervisedUser(const std::string& username) { | 191 User* User::CreateSupervisedUser(const UserID& user_id) { |
| 191 return new SupervisedUser(username); | 192 return new SupervisedUser(user_id); |
| 192 } | 193 } |
| 193 | 194 |
| 194 User* User::CreatePublicAccountUser(const std::string& email) { | 195 User* User::CreatePublicAccountUser(const UserID& user_id) { |
| 195 return new PublicAccountUser(email); | 196 return new PublicAccountUser(user_id); |
| 196 } | 197 } |
| 197 | 198 |
| 198 User::User(const std::string& email) | 199 User::User(const UserID& user_id) |
| 199 : email_(email), | 200 : user_id_(user_id), |
| 200 oauth_token_status_(OAUTH_TOKEN_STATUS_UNKNOWN), | 201 oauth_token_status_(OAUTH_TOKEN_STATUS_UNKNOWN), |
| 201 force_online_signin_(false), | 202 force_online_signin_(false), |
| 202 image_index_(USER_IMAGE_INVALID), | 203 image_index_(USER_IMAGE_INVALID), |
| 203 image_is_stub_(false), | 204 image_is_stub_(false), |
| 204 image_is_loading_(false), | 205 image_is_loading_(false), |
| 205 can_lock_(false), | 206 can_lock_(false), |
| 206 is_logged_in_(false), | 207 is_logged_in_(false), |
| 207 is_active_(false), | 208 is_active_(false), |
| 208 profile_is_created_(false) { | 209 profile_is_created_(false) { |
| 209 } | 210 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 229 | 230 |
| 230 void User::SetStubImage(const UserImage& stub_user_image, | 231 void User::SetStubImage(const UserImage& stub_user_image, |
| 231 int image_index, | 232 int image_index, |
| 232 bool is_loading) { | 233 bool is_loading) { |
| 233 user_image_ = stub_user_image; | 234 user_image_ = stub_user_image; |
| 234 image_index_ = image_index; | 235 image_index_ = image_index; |
| 235 image_is_stub_ = true; | 236 image_is_stub_ = true; |
| 236 image_is_loading_ = is_loading; | 237 image_is_loading_ = is_loading; |
| 237 } | 238 } |
| 238 | 239 |
| 239 RegularUser::RegularUser(const std::string& email) | 240 RegularUser::RegularUser(const UserID& user_id) |
| 240 : User(email), is_child_(false) { | 241 : User(user_id), is_child_(false) { |
| 241 set_can_lock(true); | 242 set_can_lock(true); |
| 242 set_display_email(email); | 243 set_display_email(user_id.GetUserEmail()); |
| 243 } | 244 } |
| 244 | 245 |
| 245 RegularUser::~RegularUser() { | 246 RegularUser::~RegularUser() { |
| 246 } | 247 } |
| 247 | 248 |
| 248 UserType RegularUser::GetType() const { | 249 UserType RegularUser::GetType() const { |
| 249 return is_child_ ? user_manager::USER_TYPE_CHILD : | 250 return is_child_ ? user_manager::USER_TYPE_CHILD : |
| 250 user_manager::USER_TYPE_REGULAR; | 251 user_manager::USER_TYPE_REGULAR; |
| 251 } | 252 } |
| 252 | 253 |
| 253 bool RegularUser::CanSyncImage() const { | 254 bool RegularUser::CanSyncImage() const { |
| 254 return true; | 255 return true; |
| 255 } | 256 } |
| 256 | 257 |
| 257 void RegularUser::SetIsChild(bool is_child) { | 258 void RegularUser::SetIsChild(bool is_child) { |
| 258 VLOG(1) << "Setting user is child to " << is_child; | 259 VLOG(1) << "Setting user is child to " << is_child; |
| 259 is_child_ = is_child; | 260 is_child_ = is_child; |
| 260 } | 261 } |
| 261 | 262 |
| 262 GuestUser::GuestUser() : User(chromeos::login::kGuestUserName) { | 263 GuestUser::GuestUser() : User(chromeos::login::GetGuestUserID()) { |
| 263 set_display_email(std::string()); | 264 set_display_email(std::string()); |
| 264 } | 265 } |
| 265 | 266 |
| 266 GuestUser::~GuestUser() { | 267 GuestUser::~GuestUser() { |
| 267 } | 268 } |
| 268 | 269 |
| 269 UserType GuestUser::GetType() const { | 270 UserType GuestUser::GetType() const { |
| 270 return user_manager::USER_TYPE_GUEST; | 271 return user_manager::USER_TYPE_GUEST; |
| 271 } | 272 } |
| 272 | 273 |
| 273 KioskAppUser::KioskAppUser(const std::string& kiosk_app_username) | 274 KioskAppUser::KioskAppUser(const UserID& kiosk_app) |
| 274 : User(kiosk_app_username) { | 275 : User(kiosk_app) { |
| 275 set_display_email(kiosk_app_username); | 276 set_display_email(kiosk_app.GetUserEmail()); |
| 276 } | 277 } |
| 277 | 278 |
| 278 KioskAppUser::~KioskAppUser() { | 279 KioskAppUser::~KioskAppUser() { |
| 279 } | 280 } |
| 280 | 281 |
| 281 UserType KioskAppUser::GetType() const { | 282 UserType KioskAppUser::GetType() const { |
| 282 return user_manager::USER_TYPE_KIOSK_APP; | 283 return user_manager::USER_TYPE_KIOSK_APP; |
| 283 } | 284 } |
| 284 | 285 |
| 285 SupervisedUser::SupervisedUser(const std::string& username) : User(username) { | 286 SupervisedUser::SupervisedUser(const UserID& user_id) : User(user_id) { |
| 286 set_can_lock(true); | 287 set_can_lock(true); |
| 287 } | 288 } |
| 288 | 289 |
| 289 SupervisedUser::~SupervisedUser() { | 290 SupervisedUser::~SupervisedUser() { |
| 290 } | 291 } |
| 291 | 292 |
| 292 UserType SupervisedUser::GetType() const { | 293 UserType SupervisedUser::GetType() const { |
| 293 return user_manager::USER_TYPE_SUPERVISED; | 294 return user_manager::USER_TYPE_SUPERVISED; |
| 294 } | 295 } |
| 295 | 296 |
| 296 std::string SupervisedUser::display_email() const { | 297 std::string SupervisedUser::display_email() const { |
| 297 return base::UTF16ToUTF8(display_name()); | 298 return base::UTF16ToUTF8(display_name()); |
| 298 } | 299 } |
| 299 | 300 |
| 300 PublicAccountUser::PublicAccountUser(const std::string& email) : User(email) { | 301 PublicAccountUser::PublicAccountUser(const UserID& user_id) : User(user_id) { |
| 301 } | 302 } |
| 302 | 303 |
| 303 PublicAccountUser::~PublicAccountUser() { | 304 PublicAccountUser::~PublicAccountUser() { |
| 304 } | 305 } |
| 305 | 306 |
| 306 UserType PublicAccountUser::GetType() const { | 307 UserType PublicAccountUser::GetType() const { |
| 307 return user_manager::USER_TYPE_PUBLIC_ACCOUNT; | 308 return user_manager::USER_TYPE_PUBLIC_ACCOUNT; |
| 308 } | 309 } |
| 309 | 310 |
| 310 bool User::has_gaia_account() const { | 311 bool User::has_gaia_account() const { |
| 311 static_assert(user_manager::NUM_USER_TYPES == 7, | 312 static_assert(user_manager::NUM_USER_TYPES == 7, |
| 312 "NUM_USER_TYPES should equal 7"); | 313 "NUM_USER_TYPES should equal 7"); |
| 313 switch (GetType()) { | 314 switch (GetType()) { |
| 314 case user_manager::USER_TYPE_REGULAR: | 315 case user_manager::USER_TYPE_REGULAR: |
| 315 case user_manager::USER_TYPE_CHILD: | 316 case user_manager::USER_TYPE_CHILD: |
| 316 return true; | 317 return true; |
| 317 case user_manager::USER_TYPE_GUEST: | 318 case user_manager::USER_TYPE_GUEST: |
| 318 case user_manager::USER_TYPE_PUBLIC_ACCOUNT: | 319 case user_manager::USER_TYPE_PUBLIC_ACCOUNT: |
| 319 case user_manager::USER_TYPE_SUPERVISED: | 320 case user_manager::USER_TYPE_SUPERVISED: |
| 320 case user_manager::USER_TYPE_KIOSK_APP: | 321 case user_manager::USER_TYPE_KIOSK_APP: |
| 321 return false; | 322 return false; |
| 322 default: | 323 default: |
| 323 NOTREACHED(); | 324 NOTREACHED(); |
| 324 } | 325 } |
| 325 return false; | 326 return false; |
| 326 } | 327 } |
| 327 | 328 |
| 328 } // namespace user_manager | 329 } // namespace user_manager |
| OLD | NEW |