OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "chrome/browser/chromeos/login/managed/locally_managed_user_creation_sc
reen.h" | 5 #include "chrome/browser/chromeos/login/managed/locally_managed_user_creation_sc
reen.h" |
6 | 6 |
7 #include "ash/desktop_background/desktop_background_controller.h" | 7 #include "ash/desktop_background/desktop_background_controller.h" |
8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
9 #include "base/rand_util.h" | 9 #include "base/rand_util.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
11 #include "chrome/browser/chromeos/camera_detector.h" | 11 #include "chrome/browser/chromeos/camera_detector.h" |
12 #include "chrome/browser/chromeos/login/auth/key.h" | 12 #include "chrome/browser/chromeos/login/auth/key.h" |
13 #include "chrome/browser/chromeos/login/auth/user_context.h" | 13 #include "chrome/browser/chromeos/login/auth/user_context.h" |
14 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 14 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
15 #include "chrome/browser/chromeos/login/managed/managed_user_creation_controller
.h" | 15 #include "chrome/browser/chromeos/login/managed/managed_user_creation_controller
.h" |
16 #include "chrome/browser/chromeos/login/managed/managed_user_creation_controller
_new.h" | 16 #include "chrome/browser/chromeos/login/managed/managed_user_creation_controller
_new.h" |
17 #include "chrome/browser/chromeos/login/managed/managed_user_creation_controller
_old.h" | 17 #include "chrome/browser/chromeos/login/managed/managed_user_creation_controller
_old.h" |
18 #include "chrome/browser/chromeos/login/managed/supervised_user_authentication.h
" | 18 #include "chrome/browser/chromeos/login/managed/supervised_user_authentication.h
" |
19 #include "chrome/browser/chromeos/login/screens/error_screen.h" | 19 #include "chrome/browser/chromeos/login/screens/error_screen.h" |
20 #include "chrome/browser/chromeos/login/screens/screen_observer.h" | 20 #include "chrome/browser/chromeos/login/screens/screen_observer.h" |
21 #include "chrome/browser/chromeos/login/users/avatar/user_image.h" | 21 #include "chrome/browser/chromeos/login/users/avatar/user_image.h" |
22 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" | 22 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" |
23 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h" | 23 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h" |
24 #include "chrome/browser/chromeos/login/wizard_controller.h" | 24 #include "chrome/browser/chromeos/login/wizard_controller.h" |
25 #include "chrome/browser/managed_mode/managed_user_constants.h" | 25 #include "chrome/browser/supervised_user/supervised_user_constants.h" |
26 #include "chrome/browser/managed_mode/managed_user_shared_settings_service.h" | 26 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service
.h" |
27 #include "chrome/browser/managed_mode/managed_user_shared_settings_service_facto
ry.h" | 27 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service
_factory.h" |
28 #include "chrome/browser/managed_mode/managed_user_sync_service.h" | 28 #include "chrome/browser/supervised_user/supervised_user_sync_service.h" |
29 #include "chrome/browser/managed_mode/managed_user_sync_service_factory.h" | 29 #include "chrome/browser/supervised_user/supervised_user_sync_service_factory.h" |
30 #include "chromeos/network/network_state.h" | 30 #include "chromeos/network/network_state.h" |
31 #include "content/public/browser/browser_thread.h" | 31 #include "content/public/browser/browser_thread.h" |
32 #include "grit/generated_resources.h" | 32 #include "grit/generated_resources.h" |
33 #include "third_party/skia/include/core/SkBitmap.h" | 33 #include "third_party/skia/include/core/SkBitmap.h" |
34 #include "ui/base/l10n/l10n_util.h" | 34 #include "ui/base/l10n/l10n_util.h" |
35 #include "ui/gfx/image/image_skia.h" | 35 #include "ui/gfx/image/image_skia.h" |
36 | 36 |
37 namespace chromeos { | 37 namespace chromeos { |
38 | 38 |
39 namespace { | 39 namespace { |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 LOG(ERROR) << "Can not import non-existing user " << user_id; | 232 LOG(ERROR) << "Can not import non-existing user " << user_id; |
233 return; | 233 return; |
234 } | 234 } |
235 base::string16 display_name; | 235 base::string16 display_name; |
236 std::string master_key; | 236 std::string master_key; |
237 std::string signature_key; | 237 std::string signature_key; |
238 std::string encryption_key; | 238 std::string encryption_key; |
239 std::string avatar; | 239 std::string avatar; |
240 bool exists; | 240 bool exists; |
241 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; | 241 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; |
242 user_info->GetString(ManagedUserSyncService::kName, &display_name); | 242 user_info->GetString(SupervisedUserSyncService::kName, &display_name); |
243 user_info->GetString(ManagedUserSyncService::kMasterKey, &master_key); | 243 user_info->GetString(SupervisedUserSyncService::kMasterKey, &master_key); |
244 user_info->GetString(ManagedUserSyncService::kPasswordSignatureKey, | 244 user_info->GetString(SupervisedUserSyncService::kPasswordSignatureKey, |
245 &signature_key); | 245 &signature_key); |
246 user_info->GetString(ManagedUserSyncService::kPasswordEncryptionKey, | 246 user_info->GetString(SupervisedUserSyncService::kPasswordEncryptionKey, |
247 &encryption_key); | 247 &encryption_key); |
248 user_info->GetString(ManagedUserSyncService::kChromeOsAvatar, &avatar); | 248 user_info->GetString(SupervisedUserSyncService::kChromeOsAvatar, &avatar); |
249 user_info->GetBoolean(kUserExists, &exists); | 249 user_info->GetBoolean(kUserExists, &exists); |
250 | 250 |
251 // We should not get here with existing user selected, so just display error. | 251 // We should not get here with existing user selected, so just display error. |
252 if (exists) { | 252 if (exists) { |
253 actor_->ShowErrorPage( | 253 actor_->ShowErrorPage( |
254 l10n_util::GetStringUTF16( | 254 l10n_util::GetStringUTF16( |
255 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE), | 255 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE), |
256 l10n_util::GetStringUTF16( | 256 l10n_util::GetStringUTF16( |
257 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR), | 257 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR), |
258 l10n_util::GetStringUTF16( | 258 l10n_util::GetStringUTF16( |
259 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON)); | 259 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON)); |
260 return; | 260 return; |
261 } | 261 } |
262 | 262 |
263 ManagedUserSyncService::GetAvatarIndex(avatar, &avatar_index); | 263 SupervisedUserSyncService::GetAvatarIndex(avatar, &avatar_index); |
264 | 264 |
265 const base::DictionaryValue* password_data = NULL; | 265 const base::DictionaryValue* password_data = NULL; |
266 ManagedUserSharedSettingsService* shared_settings_service = | 266 SupervisedUserSharedSettingsService* shared_settings_service = |
267 ManagedUserSharedSettingsServiceFactory::GetForBrowserContext( | 267 SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext( |
268 controller_->GetManagerProfile()); | 268 controller_->GetManagerProfile()); |
269 const base::Value* value = shared_settings_service->GetValue( | 269 const base::Value* value = shared_settings_service->GetValue( |
270 user_id, managed_users::kChromeOSPasswordData); | 270 user_id, supervised_users::kChromeOSPasswordData); |
271 | 271 |
272 bool password_right_here = value && value->GetAsDictionary(&password_data) && | 272 bool password_right_here = value && value->GetAsDictionary(&password_data) && |
273 !password_data->empty(); | 273 !password_data->empty(); |
274 | 274 |
275 if (password_right_here) { | 275 if (password_right_here) { |
276 controller_->StartImport(display_name, | 276 controller_->StartImport(display_name, |
277 avatar_index, | 277 avatar_index, |
278 user_id, | 278 user_id, |
279 master_key, | 279 master_key, |
280 password_data, | 280 password_data, |
(...skipping 15 matching lines...) Expand all Loading... |
296 base::DictionaryValue* user_info; | 296 base::DictionaryValue* user_info; |
297 if (!existing_users_->GetDictionary(user_id, &user_info)) { | 297 if (!existing_users_->GetDictionary(user_id, &user_info)) { |
298 LOG(ERROR) << "Can not import non-existing user " << user_id; | 298 LOG(ERROR) << "Can not import non-existing user " << user_id; |
299 return; | 299 return; |
300 } | 300 } |
301 base::string16 display_name; | 301 base::string16 display_name; |
302 std::string master_key; | 302 std::string master_key; |
303 std::string avatar; | 303 std::string avatar; |
304 bool exists; | 304 bool exists; |
305 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; | 305 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; |
306 user_info->GetString(ManagedUserSyncService::kName, &display_name); | 306 user_info->GetString(SupervisedUserSyncService::kName, &display_name); |
307 user_info->GetString(ManagedUserSyncService::kMasterKey, &master_key); | 307 user_info->GetString(SupervisedUserSyncService::kMasterKey, &master_key); |
308 user_info->GetString(ManagedUserSyncService::kChromeOsAvatar, &avatar); | 308 user_info->GetString(SupervisedUserSyncService::kChromeOsAvatar, &avatar); |
309 user_info->GetBoolean(kUserExists, &exists); | 309 user_info->GetBoolean(kUserExists, &exists); |
310 | 310 |
311 // We should not get here with existing user selected, so just display error. | 311 // We should not get here with existing user selected, so just display error. |
312 if (exists) { | 312 if (exists) { |
313 actor_->ShowErrorPage( | 313 actor_->ShowErrorPage( |
314 l10n_util::GetStringUTF16( | 314 l10n_util::GetStringUTF16( |
315 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE), | 315 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE), |
316 l10n_util::GetStringUTF16( | 316 l10n_util::GetStringUTF16( |
317 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR), | 317 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR), |
318 l10n_util::GetStringUTF16( | 318 l10n_util::GetStringUTF16( |
319 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON)); | 319 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON)); |
320 return; | 320 return; |
321 } | 321 } |
322 | 322 |
323 ManagedUserSyncService::GetAvatarIndex(avatar, &avatar_index); | 323 SupervisedUserSyncService::GetAvatarIndex(avatar, &avatar_index); |
324 | 324 |
325 controller_->StartImport(display_name, | 325 controller_->StartImport(display_name, |
326 password, | 326 password, |
327 avatar_index, | 327 avatar_index, |
328 user_id, | 328 user_id, |
329 master_key); | 329 master_key); |
330 } | 330 } |
331 | 331 |
332 void LocallyManagedUserCreationScreen::OnManagerLoginFailure() { | 332 void LocallyManagedUserCreationScreen::OnManagerLoginFailure() { |
333 if (actor_) | 333 if (actor_) |
334 actor_->ShowManagerPasswordError(); | 334 actor_->ShowManagerPasswordError(); |
335 } | 335 } |
336 | 336 |
337 void LocallyManagedUserCreationScreen::OnManagerFullyAuthenticated( | 337 void LocallyManagedUserCreationScreen::OnManagerFullyAuthenticated( |
338 Profile* manager_profile) { | 338 Profile* manager_profile) { |
339 DCHECK(controller_.get()); | 339 DCHECK(controller_.get()); |
340 // For manager user, move desktop to locked container so that windows created | 340 // For manager user, move desktop to locked container so that windows created |
341 // during the user image picker step are below it. | 341 // during the user image picker step are below it. |
342 ash::Shell::GetInstance()-> | 342 ash::Shell::GetInstance()-> |
343 desktop_background_controller()->MoveDesktopToLockedContainer(); | 343 desktop_background_controller()->MoveDesktopToLockedContainer(); |
344 | 344 |
345 controller_->SetManagerProfile(manager_profile); | 345 controller_->SetManagerProfile(manager_profile); |
346 if (actor_) | 346 if (actor_) |
347 actor_->ShowUsernamePage(); | 347 actor_->ShowUsernamePage(); |
348 | 348 |
349 last_page_ = kNameOfNewUserParametersScreen; | 349 last_page_ = kNameOfNewUserParametersScreen; |
350 CHECK(!sync_service_); | 350 CHECK(!sync_service_); |
351 sync_service_ = ManagedUserSyncServiceFactory::GetForProfile(manager_profile); | 351 sync_service_ = SupervisedUserSyncServiceFactory::GetForProfile( |
| 352 manager_profile); |
352 sync_service_->AddObserver(this); | 353 sync_service_->AddObserver(this); |
353 OnManagedUsersChanged(); | 354 OnSupervisedUsersChanged(); |
354 } | 355 } |
355 | 356 |
356 void LocallyManagedUserCreationScreen::OnManagedUsersChanged() { | 357 void LocallyManagedUserCreationScreen::OnSupervisedUsersChanged() { |
357 CHECK(sync_service_); | 358 CHECK(sync_service_); |
358 sync_service_->GetManagedUsersAsync( | 359 sync_service_->GetSupervisedUsersAsync( |
359 base::Bind(&LocallyManagedUserCreationScreen::OnGetManagedUsers, | 360 base::Bind(&LocallyManagedUserCreationScreen::OnGetManagedUsers, |
360 weak_factory_.GetWeakPtr())); | 361 weak_factory_.GetWeakPtr())); |
361 } | 362 } |
362 | 363 |
363 void LocallyManagedUserCreationScreen::OnManagerCryptohomeAuthenticated() { | 364 void LocallyManagedUserCreationScreen::OnManagerCryptohomeAuthenticated() { |
364 if (actor_) { | 365 if (actor_) { |
365 actor_->ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16( | 366 actor_->ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16( |
366 IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_AUTH_PROGRESS_MESSAGE)); | 367 IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_AUTH_PROGRESS_MESSAGE)); |
367 } | 368 } |
368 } | 369 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 bool LocallyManagedUserCreationScreen::FindUserByDisplayName( | 425 bool LocallyManagedUserCreationScreen::FindUserByDisplayName( |
425 const base::string16& display_name, | 426 const base::string16& display_name, |
426 std::string *out_id) const { | 427 std::string *out_id) const { |
427 if (!existing_users_.get()) | 428 if (!existing_users_.get()) |
428 return false; | 429 return false; |
429 for (base::DictionaryValue::Iterator it(*existing_users_.get()); | 430 for (base::DictionaryValue::Iterator it(*existing_users_.get()); |
430 !it.IsAtEnd(); it.Advance()) { | 431 !it.IsAtEnd(); it.Advance()) { |
431 const base::DictionaryValue* user_info = | 432 const base::DictionaryValue* user_info = |
432 static_cast<const base::DictionaryValue*>(&it.value()); | 433 static_cast<const base::DictionaryValue*>(&it.value()); |
433 base::string16 user_display_name; | 434 base::string16 user_display_name; |
434 if (user_info->GetString(ManagedUserSyncService::kName, | 435 if (user_info->GetString(SupervisedUserSyncService::kName, |
435 &user_display_name)) { | 436 &user_display_name)) { |
436 if (display_name == user_display_name) { | 437 if (display_name == user_display_name) { |
437 if (out_id) | 438 if (out_id) |
438 *out_id = it.key(); | 439 *out_id = it.key(); |
439 return true; | 440 return true; |
440 } | 441 } |
441 } | 442 } |
442 } | 443 } |
443 return false; | 444 return false; |
444 } | 445 } |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 // Copy that would be stored in this class. | 496 // Copy that would be stored in this class. |
496 base::DictionaryValue* local_copy = | 497 base::DictionaryValue* local_copy = |
497 static_cast<base::DictionaryValue*>(it.value().DeepCopy()); | 498 static_cast<base::DictionaryValue*>(it.value().DeepCopy()); |
498 // Copy that would be passed to WebUI. It has some extra values for | 499 // Copy that would be passed to WebUI. It has some extra values for |
499 // displaying, but does not contain sensitive data, such as master password. | 500 // displaying, but does not contain sensitive data, such as master password. |
500 base::DictionaryValue* ui_copy = | 501 base::DictionaryValue* ui_copy = |
501 static_cast<base::DictionaryValue*>(new base::DictionaryValue()); | 502 static_cast<base::DictionaryValue*>(new base::DictionaryValue()); |
502 | 503 |
503 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; | 504 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; |
504 std::string chromeos_avatar; | 505 std::string chromeos_avatar; |
505 if (local_copy->GetString(ManagedUserSyncService::kChromeOsAvatar, | 506 if (local_copy->GetString(SupervisedUserSyncService::kChromeOsAvatar, |
506 &chromeos_avatar) && | 507 &chromeos_avatar) && |
507 !chromeos_avatar.empty() && | 508 !chromeos_avatar.empty() && |
508 ManagedUserSyncService::GetAvatarIndex( | 509 SupervisedUserSyncService::GetAvatarIndex( |
509 chromeos_avatar, &avatar_index)) { | 510 chromeos_avatar, &avatar_index)) { |
510 ui_copy->SetString(kAvatarURLKey, GetDefaultImageUrl(avatar_index)); | 511 ui_copy->SetString(kAvatarURLKey, GetDefaultImageUrl(avatar_index)); |
511 } else { | 512 } else { |
512 int i = base::RandInt(kFirstDefaultImageIndex, kDefaultImagesCount - 1); | 513 int i = base::RandInt(kFirstDefaultImageIndex, kDefaultImagesCount - 1); |
513 local_copy->SetString( | 514 local_copy->SetString( |
514 ManagedUserSyncService::kChromeOsAvatar, | 515 SupervisedUserSyncService::kChromeOsAvatar, |
515 ManagedUserSyncService::BuildAvatarString(i)); | 516 SupervisedUserSyncService::BuildAvatarString(i)); |
516 local_copy->SetBoolean(kRandomAvatarKey, true); | 517 local_copy->SetBoolean(kRandomAvatarKey, true); |
517 ui_copy->SetString(kAvatarURLKey, GetDefaultImageUrl(i)); | 518 ui_copy->SetString(kAvatarURLKey, GetDefaultImageUrl(i)); |
518 } | 519 } |
519 | 520 |
520 local_copy->SetBoolean(kUserExists, false); | 521 local_copy->SetBoolean(kUserExists, false); |
521 ui_copy->SetBoolean(kUserExists, false); | 522 ui_copy->SetBoolean(kUserExists, false); |
522 | 523 |
523 base::string16 display_name; | 524 base::string16 display_name; |
524 local_copy->GetString(ManagedUserSyncService::kName, &display_name); | 525 local_copy->GetString(SupervisedUserSyncService::kName, &display_name); |
525 | 526 |
526 if (supervised_user_manager->FindBySyncId(it.key())) { | 527 if (supervised_user_manager->FindBySyncId(it.key())) { |
527 local_copy->SetBoolean(kUserExists, true); | 528 local_copy->SetBoolean(kUserExists, true); |
528 ui_copy->SetBoolean(kUserExists, true); | 529 ui_copy->SetBoolean(kUserExists, true); |
529 local_copy->SetString(kUserConflict, kUserConflictImported); | 530 local_copy->SetString(kUserConflict, kUserConflictImported); |
530 ui_copy->SetString(kUserConflict, kUserConflictImported); | 531 ui_copy->SetString(kUserConflict, kUserConflictImported); |
531 } else if (supervised_user_manager->FindByDisplayName(display_name)) { | 532 } else if (supervised_user_manager->FindByDisplayName(display_name)) { |
532 local_copy->SetBoolean(kUserExists, true); | 533 local_copy->SetBoolean(kUserExists, true); |
533 ui_copy->SetBoolean(kUserExists, true); | 534 ui_copy->SetBoolean(kUserExists, true); |
534 local_copy->SetString(kUserConflict, kUserConflictName); | 535 local_copy->SetString(kUserConflict, kUserConflictName); |
535 ui_copy->SetString(kUserConflict, kUserConflictName); | 536 ui_copy->SetString(kUserConflict, kUserConflictName); |
536 } | 537 } |
537 ui_copy->SetString(ManagedUserSyncService::kName, display_name); | 538 ui_copy->SetString(SupervisedUserSyncService::kName, display_name); |
538 | 539 |
539 std::string signature_key; | 540 std::string signature_key; |
540 bool has_password = | 541 bool has_password = |
541 local_copy->GetString(ManagedUserSyncService::kPasswordSignatureKey, | 542 local_copy->GetString(SupervisedUserSyncService::kPasswordSignatureKey, |
542 &signature_key) && | 543 &signature_key) && |
543 !signature_key.empty(); | 544 !signature_key.empty(); |
544 | 545 |
545 ui_copy->SetBoolean(kUserNeedPassword, !has_password); | 546 ui_copy->SetBoolean(kUserNeedPassword, !has_password); |
546 ui_copy->SetString("id", it.key()); | 547 ui_copy->SetString("id", it.key()); |
547 | 548 |
548 existing_users_->Set(it.key(), local_copy); | 549 existing_users_->Set(it.key(), local_copy); |
549 ui_users->Append(ui_copy); | 550 ui_users->Append(ui_copy); |
550 } | 551 } |
551 actor_->ShowExistingManagedUsers(ui_users.get()); | 552 actor_->ShowExistingManagedUsers(ui_users.get()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 selected_image_ = User::kExternalImageIndex; | 593 selected_image_ = User::kExternalImageIndex; |
593 } else { | 594 } else { |
594 NOTREACHED() << "Unexpected image type: " << image_type; | 595 NOTREACHED() << "Unexpected image type: " << image_type; |
595 } | 596 } |
596 } | 597 } |
597 | 598 |
598 void LocallyManagedUserCreationScreen::OnImageAccepted() { | 599 void LocallyManagedUserCreationScreen::OnImageAccepted() { |
599 } | 600 } |
600 | 601 |
601 } // namespace chromeos | 602 } // namespace chromeos |
OLD | NEW |