| 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/supervised/supervised_user_creation_scre
en.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/existing_user_controller.h" | 12 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| 13 #include "chrome/browser/chromeos/login/managed/managed_user_creation_controller
.h" | |
| 14 #include "chrome/browser/chromeos/login/managed/managed_user_creation_controller
_new.h" | |
| 15 #include "chrome/browser/chromeos/login/managed/supervised_user_authentication.h
" | |
| 16 #include "chrome/browser/chromeos/login/screens/error_screen.h" | 13 #include "chrome/browser/chromeos/login/screens/error_screen.h" |
| 17 #include "chrome/browser/chromeos/login/screens/screen_observer.h" | 14 #include "chrome/browser/chromeos/login/screens/screen_observer.h" |
| 18 #include "chrome/browser/chromeos/login/signin_specifics.h" | 15 #include "chrome/browser/chromeos/login/signin_specifics.h" |
| 16 #include "chrome/browser/chromeos/login/supervised/supervised_user_authenticatio
n.h" |
| 17 #include "chrome/browser/chromeos/login/supervised/supervised_user_creation_cont
roller.h" |
| 18 #include "chrome/browser/chromeos/login/supervised/supervised_user_creation_cont
roller_new.h" |
| 19 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" | 19 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" |
| 20 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h" | 20 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h" |
| 21 #include "chrome/browser/chromeos/login/wizard_controller.h" | 21 #include "chrome/browser/chromeos/login/wizard_controller.h" |
| 22 #include "chrome/browser/supervised_user/supervised_user_constants.h" | 22 #include "chrome/browser/supervised_user/supervised_user_constants.h" |
| 23 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service
.h" | 23 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service
.h" |
| 24 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service
_factory.h" | 24 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service
_factory.h" |
| 25 #include "chrome/browser/supervised_user/supervised_user_sync_service.h" | 25 #include "chrome/browser/supervised_user/supervised_user_sync_service.h" |
| 26 #include "chrome/browser/supervised_user/supervised_user_sync_service_factory.h" | 26 #include "chrome/browser/supervised_user/supervised_user_sync_service_factory.h" |
| 27 #include "chromeos/login/auth/key.h" | 27 #include "chromeos/login/auth/key.h" |
| 28 #include "chromeos/login/auth/user_context.h" | 28 #include "chromeos/login/auth/user_context.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 std::string()); | 76 std::string()); |
| 77 break; | 77 break; |
| 78 default: | 78 default: |
| 79 NOTREACHED(); | 79 NOTREACHED(); |
| 80 break; | 80 break; |
| 81 } | 81 } |
| 82 } | 82 } |
| 83 | 83 |
| 84 } // namespace | 84 } // namespace |
| 85 | 85 |
| 86 LocallyManagedUserCreationScreen::LocallyManagedUserCreationScreen( | 86 SupervisedUserCreationScreen::SupervisedUserCreationScreen( |
| 87 ScreenObserver* observer, | 87 ScreenObserver* observer, |
| 88 LocallyManagedUserCreationScreenHandler* actor) | 88 SupervisedUserCreationScreenHandler* actor) |
| 89 : WizardScreen(observer), | 89 : WizardScreen(observer), |
| 90 weak_factory_(this), | 90 weak_factory_(this), |
| 91 actor_(actor), | 91 actor_(actor), |
| 92 on_error_screen_(false), | 92 on_error_screen_(false), |
| 93 last_page_(kNameOfIntroScreen), | 93 last_page_(kNameOfIntroScreen), |
| 94 sync_service_(NULL), | 94 sync_service_(NULL), |
| 95 image_decoder_(NULL), | 95 image_decoder_(NULL), |
| 96 apply_photo_after_decoding_(false), | 96 apply_photo_after_decoding_(false), |
| 97 selected_image_(0) { | 97 selected_image_(0) { |
| 98 DCHECK(actor_); | 98 DCHECK(actor_); |
| 99 if (actor_) | 99 if (actor_) |
| 100 actor_->SetDelegate(this); | 100 actor_->SetDelegate(this); |
| 101 } | 101 } |
| 102 | 102 |
| 103 LocallyManagedUserCreationScreen::~LocallyManagedUserCreationScreen() { | 103 SupervisedUserCreationScreen::~SupervisedUserCreationScreen() { |
| 104 CameraPresenceNotifier::GetInstance()->RemoveObserver(this); | 104 CameraPresenceNotifier::GetInstance()->RemoveObserver(this); |
| 105 if (sync_service_) | 105 if (sync_service_) |
| 106 sync_service_->RemoveObserver(this); | 106 sync_service_->RemoveObserver(this); |
| 107 if (actor_) | 107 if (actor_) |
| 108 actor_->SetDelegate(NULL); | 108 actor_->SetDelegate(NULL); |
| 109 if (image_decoder_.get()) | 109 if (image_decoder_.get()) |
| 110 image_decoder_->set_delegate(NULL); | 110 image_decoder_->set_delegate(NULL); |
| 111 NetworkPortalDetector::Get()->RemoveObserver(this); | 111 NetworkPortalDetector::Get()->RemoveObserver(this); |
| 112 } | 112 } |
| 113 | 113 |
| 114 void LocallyManagedUserCreationScreen::PrepareToShow() { | 114 void SupervisedUserCreationScreen::PrepareToShow() { |
| 115 if (actor_) | 115 if (actor_) |
| 116 actor_->PrepareToShow(); | 116 actor_->PrepareToShow(); |
| 117 } | 117 } |
| 118 | 118 |
| 119 void LocallyManagedUserCreationScreen::Show() { | 119 void SupervisedUserCreationScreen::Show() { |
| 120 CameraPresenceNotifier::GetInstance()->AddObserver(this); | 120 CameraPresenceNotifier::GetInstance()->AddObserver(this); |
| 121 if (actor_) { | 121 if (actor_) { |
| 122 actor_->Show(); | 122 actor_->Show(); |
| 123 // TODO(antrim) : temorary hack (until upcoming hackaton). Should be | 123 // TODO(antrim) : temorary hack (until upcoming hackaton). Should be |
| 124 // removed once we have screens reworked. | 124 // removed once we have screens reworked. |
| 125 if (on_error_screen_) | 125 if (on_error_screen_) |
| 126 actor_->ShowPage(last_page_); | 126 actor_->ShowPage(last_page_); |
| 127 else | 127 else |
| 128 actor_->ShowIntroPage(); | 128 actor_->ShowIntroPage(); |
| 129 } | 129 } |
| 130 | 130 |
| 131 if (!on_error_screen_) | 131 if (!on_error_screen_) |
| 132 NetworkPortalDetector::Get()->AddAndFireObserver(this); | 132 NetworkPortalDetector::Get()->AddAndFireObserver(this); |
| 133 on_error_screen_ = false; | 133 on_error_screen_ = false; |
| 134 } | 134 } |
| 135 | 135 |
| 136 void LocallyManagedUserCreationScreen::OnPageSelected(const std::string& page) { | 136 void SupervisedUserCreationScreen::OnPageSelected(const std::string& page) { |
| 137 last_page_ = page; | 137 last_page_ = page; |
| 138 } | 138 } |
| 139 | 139 |
| 140 void LocallyManagedUserCreationScreen::OnPortalDetectionCompleted( | 140 void SupervisedUserCreationScreen::OnPortalDetectionCompleted( |
| 141 const NetworkState* network, | 141 const NetworkState* network, |
| 142 const NetworkPortalDetector::CaptivePortalState& state) { | 142 const NetworkPortalDetector::CaptivePortalState& state) { |
| 143 if (state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) { | 143 if (state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) { |
| 144 get_screen_observer()->HideErrorScreen(this); | 144 get_screen_observer()->HideErrorScreen(this); |
| 145 } else { | 145 } else { |
| 146 on_error_screen_ = true; | 146 on_error_screen_ = true; |
| 147 ErrorScreen* screen = get_screen_observer()->GetErrorScreen(); | 147 ErrorScreen* screen = get_screen_observer()->GetErrorScreen(); |
| 148 ConfigureErrorScreen(screen, network, state.status); | 148 ConfigureErrorScreen(screen, network, state.status); |
| 149 screen->SetUIState(ErrorScreen::UI_STATE_LOCALLY_MANAGED); | 149 screen->SetUIState(ErrorScreen::UI_STATE_SUPERVISED); |
| 150 get_screen_observer()->ShowErrorScreen(); | 150 get_screen_observer()->ShowErrorScreen(); |
| 151 } | 151 } |
| 152 } | 152 } |
| 153 | 153 |
| 154 void LocallyManagedUserCreationScreen:: | 154 void SupervisedUserCreationScreen::ShowManagerInconsistentStateErrorScreen() { |
| 155 ShowManagerInconsistentStateErrorScreen() { | |
| 156 if (!actor_) | 155 if (!actor_) |
| 157 return; | 156 return; |
| 158 actor_->ShowErrorPage( | 157 actor_->ShowErrorPage( |
| 159 l10n_util::GetStringUTF16( | 158 l10n_util::GetStringUTF16( |
| 160 IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE_TITLE), | 159 IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE_TITLE), |
| 161 l10n_util::GetStringUTF16( | 160 l10n_util::GetStringUTF16( |
| 162 IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE), | 161 IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE), |
| 163 l10n_util::GetStringUTF16( | 162 l10n_util::GetStringUTF16( |
| 164 IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE_BUTTON)); | 163 IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE_BUTTON)); |
| 165 } | 164 } |
| 166 | 165 |
| 167 void LocallyManagedUserCreationScreen::ShowInitialScreen() { | 166 void SupervisedUserCreationScreen::ShowInitialScreen() { |
| 168 if (actor_) | 167 if (actor_) |
| 169 actor_->ShowIntroPage(); | 168 actor_->ShowIntroPage(); |
| 170 } | 169 } |
| 171 | 170 |
| 172 void LocallyManagedUserCreationScreen::Hide() { | 171 void SupervisedUserCreationScreen::Hide() { |
| 173 CameraPresenceNotifier::GetInstance()->RemoveObserver(this); | 172 CameraPresenceNotifier::GetInstance()->RemoveObserver(this); |
| 174 if (actor_) | 173 if (actor_) |
| 175 actor_->Hide(); | 174 actor_->Hide(); |
| 176 if (!on_error_screen_) | 175 if (!on_error_screen_) |
| 177 NetworkPortalDetector::Get()->RemoveObserver(this); | 176 NetworkPortalDetector::Get()->RemoveObserver(this); |
| 178 } | 177 } |
| 179 | 178 |
| 180 std::string LocallyManagedUserCreationScreen::GetName() const { | 179 std::string SupervisedUserCreationScreen::GetName() const { |
| 181 return WizardController::kLocallyManagedUserCreationScreenName; | 180 return WizardController::kSupervisedUserCreationScreenName; |
| 182 } | 181 } |
| 183 | 182 |
| 184 void LocallyManagedUserCreationScreen::AbortFlow() { | 183 void SupervisedUserCreationScreen::AbortFlow() { |
| 185 controller_->CancelCreation(); | 184 controller_->CancelCreation(); |
| 186 } | 185 } |
| 187 | 186 |
| 188 void LocallyManagedUserCreationScreen::FinishFlow() { | 187 void SupervisedUserCreationScreen::FinishFlow() { |
| 189 controller_->FinishCreation(); | 188 controller_->FinishCreation(); |
| 190 } | 189 } |
| 191 | 190 |
| 192 void LocallyManagedUserCreationScreen::AuthenticateManager( | 191 void SupervisedUserCreationScreen::AuthenticateManager( |
| 193 const std::string& manager_id, | 192 const std::string& manager_id, |
| 194 const std::string& manager_password) { | 193 const std::string& manager_password) { |
| 195 // Make sure no two controllers exist at the same time. | 194 // Make sure no two controllers exist at the same time. |
| 196 controller_.reset(); | 195 controller_.reset(); |
| 197 | 196 |
| 198 controller_.reset(new ManagedUserCreationControllerNew(this, manager_id)); | 197 controller_.reset(new SupervisedUserCreationControllerNew(this, manager_id)); |
| 199 | 198 |
| 200 UserContext user_context(manager_id); | 199 UserContext user_context(manager_id); |
| 201 user_context.SetKey(Key(manager_password)); | 200 user_context.SetKey(Key(manager_password)); |
| 202 ExistingUserController::current_controller()->Login(user_context, | 201 ExistingUserController::current_controller()->Login(user_context, |
| 203 SigninSpecifics()); | 202 SigninSpecifics()); |
| 204 } | 203 } |
| 205 | 204 |
| 206 void LocallyManagedUserCreationScreen::CreateManagedUser( | 205 void SupervisedUserCreationScreen::CreateSupervisedUser( |
| 207 const base::string16& display_name, | 206 const base::string16& display_name, |
| 208 const std::string& managed_user_password) { | 207 const std::string& supervised_user_password) { |
| 209 DCHECK(controller_.get()); | 208 DCHECK(controller_.get()); |
| 210 int image; | 209 int image; |
| 211 if (selected_image_ == User::kExternalImageIndex) | 210 if (selected_image_ == User::kExternalImageIndex) |
| 212 // TODO(dzhioev): crbug/249660 | 211 // TODO(dzhioev): crbug/249660 |
| 213 image = ManagedUserCreationController::kDummyAvatarIndex; | 212 image = SupervisedUserCreationController::kDummyAvatarIndex; |
| 214 else | 213 else |
| 215 image = selected_image_; | 214 image = selected_image_; |
| 216 controller_->StartCreation(display_name, managed_user_password, image); | 215 controller_->StartCreation(display_name, supervised_user_password, image); |
| 217 } | 216 } |
| 218 | 217 |
| 219 void LocallyManagedUserCreationScreen::ImportManagedUser( | 218 void SupervisedUserCreationScreen::ImportSupervisedUser( |
| 220 const std::string& user_id) { | 219 const std::string& user_id) { |
| 221 DCHECK(controller_.get()); | 220 DCHECK(controller_.get()); |
| 222 DCHECK(existing_users_.get()); | 221 DCHECK(existing_users_.get()); |
| 223 VLOG(1) << "Importing user " << user_id; | 222 VLOG(1) << "Importing user " << user_id; |
| 224 base::DictionaryValue* user_info; | 223 base::DictionaryValue* user_info; |
| 225 if (!existing_users_->GetDictionary(user_id, &user_info)) { | 224 if (!existing_users_->GetDictionary(user_id, &user_info)) { |
| 226 LOG(ERROR) << "Can not import non-existing user " << user_id; | 225 LOG(ERROR) << "Can not import non-existing user " << user_id; |
| 227 return; | 226 return; |
| 228 } | 227 } |
| 229 base::string16 display_name; | 228 base::string16 display_name; |
| 230 std::string master_key; | 229 std::string master_key; |
| 231 std::string signature_key; | 230 std::string signature_key; |
| 232 std::string encryption_key; | 231 std::string encryption_key; |
| 233 std::string avatar; | 232 std::string avatar; |
| 234 bool exists; | 233 bool exists; |
| 235 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; | 234 int avatar_index = SupervisedUserCreationController::kDummyAvatarIndex; |
| 236 user_info->GetString(SupervisedUserSyncService::kName, &display_name); | 235 user_info->GetString(SupervisedUserSyncService::kName, &display_name); |
| 237 user_info->GetString(SupervisedUserSyncService::kMasterKey, &master_key); | 236 user_info->GetString(SupervisedUserSyncService::kMasterKey, &master_key); |
| 238 user_info->GetString(SupervisedUserSyncService::kPasswordSignatureKey, | 237 user_info->GetString(SupervisedUserSyncService::kPasswordSignatureKey, |
| 239 &signature_key); | 238 &signature_key); |
| 240 user_info->GetString(SupervisedUserSyncService::kPasswordEncryptionKey, | 239 user_info->GetString(SupervisedUserSyncService::kPasswordEncryptionKey, |
| 241 &encryption_key); | 240 &encryption_key); |
| 242 user_info->GetString(SupervisedUserSyncService::kChromeOsAvatar, &avatar); | 241 user_info->GetString(SupervisedUserSyncService::kChromeOsAvatar, &avatar); |
| 243 user_info->GetBoolean(kUserExists, &exists); | 242 user_info->GetBoolean(kUserExists, &exists); |
| 244 | 243 |
| 245 // We should not get here with existing user selected, so just display error. | 244 // We should not get here with existing user selected, so just display error. |
| (...skipping 28 matching lines...) Expand all Loading... |
| 274 password_data, | 273 password_data, |
| 275 encryption_key, | 274 encryption_key, |
| 276 signature_key); | 275 signature_key); |
| 277 } else { | 276 } else { |
| 278 NOTREACHED() << " Oops, no password"; | 277 NOTREACHED() << " Oops, no password"; |
| 279 } | 278 } |
| 280 } | 279 } |
| 281 | 280 |
| 282 // TODO(antrim): Code duplication with previous method will be removed once | 281 // TODO(antrim): Code duplication with previous method will be removed once |
| 283 // password sync is implemented. | 282 // password sync is implemented. |
| 284 void LocallyManagedUserCreationScreen::ImportManagedUserWithPassword( | 283 void SupervisedUserCreationScreen::ImportSupervisedUserWithPassword( |
| 285 const std::string& user_id, | 284 const std::string& user_id, |
| 286 const std::string& password) { | 285 const std::string& password) { |
| 287 DCHECK(controller_.get()); | 286 DCHECK(controller_.get()); |
| 288 DCHECK(existing_users_.get()); | 287 DCHECK(existing_users_.get()); |
| 289 VLOG(1) << "Importing user " << user_id; | 288 VLOG(1) << "Importing user " << user_id; |
| 290 base::DictionaryValue* user_info; | 289 base::DictionaryValue* user_info; |
| 291 if (!existing_users_->GetDictionary(user_id, &user_info)) { | 290 if (!existing_users_->GetDictionary(user_id, &user_info)) { |
| 292 LOG(ERROR) << "Can not import non-existing user " << user_id; | 291 LOG(ERROR) << "Can not import non-existing user " << user_id; |
| 293 return; | 292 return; |
| 294 } | 293 } |
| 295 base::string16 display_name; | 294 base::string16 display_name; |
| 296 std::string master_key; | 295 std::string master_key; |
| 297 std::string avatar; | 296 std::string avatar; |
| 298 bool exists; | 297 bool exists; |
| 299 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; | 298 int avatar_index = SupervisedUserCreationController::kDummyAvatarIndex; |
| 300 user_info->GetString(SupervisedUserSyncService::kName, &display_name); | 299 user_info->GetString(SupervisedUserSyncService::kName, &display_name); |
| 301 user_info->GetString(SupervisedUserSyncService::kMasterKey, &master_key); | 300 user_info->GetString(SupervisedUserSyncService::kMasterKey, &master_key); |
| 302 user_info->GetString(SupervisedUserSyncService::kChromeOsAvatar, &avatar); | 301 user_info->GetString(SupervisedUserSyncService::kChromeOsAvatar, &avatar); |
| 303 user_info->GetBoolean(kUserExists, &exists); | 302 user_info->GetBoolean(kUserExists, &exists); |
| 304 | 303 |
| 305 // We should not get here with existing user selected, so just display error. | 304 // We should not get here with existing user selected, so just display error. |
| 306 if (exists) { | 305 if (exists) { |
| 307 actor_->ShowErrorPage( | 306 actor_->ShowErrorPage( |
| 308 l10n_util::GetStringUTF16( | 307 l10n_util::GetStringUTF16( |
| 309 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE), | 308 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE), |
| 310 l10n_util::GetStringUTF16( | 309 l10n_util::GetStringUTF16( |
| 311 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR), | 310 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR), |
| 312 l10n_util::GetStringUTF16( | 311 l10n_util::GetStringUTF16( |
| 313 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON)); | 312 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON)); |
| 314 return; | 313 return; |
| 315 } | 314 } |
| 316 | 315 |
| 317 SupervisedUserSyncService::GetAvatarIndex(avatar, &avatar_index); | 316 SupervisedUserSyncService::GetAvatarIndex(avatar, &avatar_index); |
| 318 | 317 |
| 319 controller_->StartImport(display_name, | 318 controller_->StartImport(display_name, |
| 320 password, | 319 password, |
| 321 avatar_index, | 320 avatar_index, |
| 322 user_id, | 321 user_id, |
| 323 master_key); | 322 master_key); |
| 324 } | 323 } |
| 325 | 324 |
| 326 void LocallyManagedUserCreationScreen::OnManagerLoginFailure() { | 325 void SupervisedUserCreationScreen::OnManagerLoginFailure() { |
| 327 if (actor_) | 326 if (actor_) |
| 328 actor_->ShowManagerPasswordError(); | 327 actor_->ShowManagerPasswordError(); |
| 329 } | 328 } |
| 330 | 329 |
| 331 void LocallyManagedUserCreationScreen::OnManagerFullyAuthenticated( | 330 void SupervisedUserCreationScreen::OnManagerFullyAuthenticated( |
| 332 Profile* manager_profile) { | 331 Profile* manager_profile) { |
| 333 DCHECK(controller_.get()); | 332 DCHECK(controller_.get()); |
| 334 // For manager user, move desktop to locked container so that windows created | 333 // For manager user, move desktop to locked container so that windows created |
| 335 // during the user image picker step are below it. | 334 // during the user image picker step are below it. |
| 336 ash::Shell::GetInstance()-> | 335 ash::Shell::GetInstance()-> |
| 337 desktop_background_controller()->MoveDesktopToLockedContainer(); | 336 desktop_background_controller()->MoveDesktopToLockedContainer(); |
| 338 | 337 |
| 339 controller_->SetManagerProfile(manager_profile); | 338 controller_->SetManagerProfile(manager_profile); |
| 340 if (actor_) | 339 if (actor_) |
| 341 actor_->ShowUsernamePage(); | 340 actor_->ShowUsernamePage(); |
| 342 | 341 |
| 343 last_page_ = kNameOfNewUserParametersScreen; | 342 last_page_ = kNameOfNewUserParametersScreen; |
| 344 CHECK(!sync_service_); | 343 CHECK(!sync_service_); |
| 345 sync_service_ = SupervisedUserSyncServiceFactory::GetForProfile( | 344 sync_service_ = SupervisedUserSyncServiceFactory::GetForProfile( |
| 346 manager_profile); | 345 manager_profile); |
| 347 sync_service_->AddObserver(this); | 346 sync_service_->AddObserver(this); |
| 348 OnSupervisedUsersChanged(); | 347 OnSupervisedUsersChanged(); |
| 349 } | 348 } |
| 350 | 349 |
| 351 void LocallyManagedUserCreationScreen::OnSupervisedUsersChanged() { | 350 void SupervisedUserCreationScreen::OnSupervisedUsersChanged() { |
| 352 CHECK(sync_service_); | 351 CHECK(sync_service_); |
| 353 sync_service_->GetSupervisedUsersAsync( | 352 sync_service_->GetSupervisedUsersAsync( |
| 354 base::Bind(&LocallyManagedUserCreationScreen::OnGetManagedUsers, | 353 base::Bind(&SupervisedUserCreationScreen::OnGetSupervisedUsers, |
| 355 weak_factory_.GetWeakPtr())); | 354 weak_factory_.GetWeakPtr())); |
| 356 } | 355 } |
| 357 | 356 |
| 358 void LocallyManagedUserCreationScreen::OnManagerCryptohomeAuthenticated() { | 357 void SupervisedUserCreationScreen::OnManagerCryptohomeAuthenticated() { |
| 359 if (actor_) { | 358 if (actor_) { |
| 360 actor_->ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16( | 359 actor_->ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16( |
| 361 IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_AUTH_PROGRESS_MESSAGE)); | 360 IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_AUTH_PROGRESS_MESSAGE)); |
| 362 } | 361 } |
| 363 } | 362 } |
| 364 | 363 |
| 365 void LocallyManagedUserCreationScreen::OnActorDestroyed( | 364 void SupervisedUserCreationScreen::OnActorDestroyed( |
| 366 LocallyManagedUserCreationScreenHandler* actor) { | 365 SupervisedUserCreationScreenHandler* actor) { |
| 367 if (actor_ == actor) | 366 if (actor_ == actor) |
| 368 actor_ = NULL; | 367 actor_ = NULL; |
| 369 } | 368 } |
| 370 | 369 |
| 371 void LocallyManagedUserCreationScreen::OnCreationError( | 370 void SupervisedUserCreationScreen::OnCreationError( |
| 372 ManagedUserCreationController::ErrorCode code) { | 371 SupervisedUserCreationController::ErrorCode code) { |
| 373 base::string16 title; | 372 base::string16 title; |
| 374 base::string16 message; | 373 base::string16 message; |
| 375 base::string16 button; | 374 base::string16 button; |
| 376 // TODO(antrim) : find out which errors do we really have. | 375 // TODO(antrim) : find out which errors do we really have. |
| 377 // We might reuse some error messages from ordinary user flow. | 376 // We might reuse some error messages from ordinary user flow. |
| 378 switch (code) { | 377 switch (code) { |
| 379 case ManagedUserCreationController::CRYPTOHOME_NO_MOUNT: | 378 case SupervisedUserCreationController::CRYPTOHOME_NO_MOUNT: |
| 380 case ManagedUserCreationController::CRYPTOHOME_FAILED_MOUNT: | 379 case SupervisedUserCreationController::CRYPTOHOME_FAILED_MOUNT: |
| 381 case ManagedUserCreationController::CRYPTOHOME_FAILED_TPM: | 380 case SupervisedUserCreationController::CRYPTOHOME_FAILED_TPM: |
| 382 title = l10n_util::GetStringUTF16( | 381 title = l10n_util::GetStringUTF16( |
| 383 IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR_TITLE); | 382 IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR_TITLE); |
| 384 message = l10n_util::GetStringUTF16( | 383 message = l10n_util::GetStringUTF16( |
| 385 IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR); | 384 IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR); |
| 386 button = l10n_util::GetStringUTF16( | 385 button = l10n_util::GetStringUTF16( |
| 387 IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR_BUTTON); | 386 IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR_BUTTON); |
| 388 break; | 387 break; |
| 389 case ManagedUserCreationController::CLOUD_SERVER_ERROR: | 388 case SupervisedUserCreationController::CLOUD_SERVER_ERROR: |
| 390 case ManagedUserCreationController::TOKEN_WRITE_FAILED: | 389 case SupervisedUserCreationController::TOKEN_WRITE_FAILED: |
| 391 title = l10n_util::GetStringUTF16( | 390 title = l10n_util::GetStringUTF16( |
| 392 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE); | 391 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE); |
| 393 message = l10n_util::GetStringUTF16( | 392 message = l10n_util::GetStringUTF16( |
| 394 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR); | 393 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR); |
| 395 button = l10n_util::GetStringUTF16( | 394 button = l10n_util::GetStringUTF16( |
| 396 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON); | 395 IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON); |
| 397 break; | 396 break; |
| 398 case ManagedUserCreationController::NO_ERROR: | 397 case SupervisedUserCreationController::NO_ERROR: |
| 399 NOTREACHED(); | 398 NOTREACHED(); |
| 400 } | 399 } |
| 401 if (actor_) | 400 if (actor_) |
| 402 actor_->ShowErrorPage(title, message, button); | 401 actor_->ShowErrorPage(title, message, button); |
| 403 } | 402 } |
| 404 | 403 |
| 405 void LocallyManagedUserCreationScreen::OnCreationTimeout() { | 404 void SupervisedUserCreationScreen::OnCreationTimeout() { |
| 406 if (actor_) { | 405 if (actor_) { |
| 407 actor_->ShowStatusMessage(false /* error */, l10n_util::GetStringUTF16( | 406 actor_->ShowStatusMessage(false /* error */, l10n_util::GetStringUTF16( |
| 408 IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_CREATION_TIMEOUT_MESSAGE)); | 407 IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_CREATION_TIMEOUT_MESSAGE)); |
| 409 } | 408 } |
| 410 } | 409 } |
| 411 | 410 |
| 412 void LocallyManagedUserCreationScreen::OnLongCreationWarning() { | 411 void SupervisedUserCreationScreen::OnLongCreationWarning() { |
| 413 if (actor_) { | 412 if (actor_) { |
| 414 actor_->ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16( | 413 actor_->ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16( |
| 415 IDS_PROFILES_CREATE_SUPERVISED_JUST_SIGNED_IN)); | 414 IDS_PROFILES_CREATE_SUPERVISED_JUST_SIGNED_IN)); |
| 416 } | 415 } |
| 417 } | 416 } |
| 418 | 417 |
| 419 bool LocallyManagedUserCreationScreen::FindUserByDisplayName( | 418 bool SupervisedUserCreationScreen::FindUserByDisplayName( |
| 420 const base::string16& display_name, | 419 const base::string16& display_name, |
| 421 std::string *out_id) const { | 420 std::string *out_id) const { |
| 422 if (!existing_users_.get()) | 421 if (!existing_users_.get()) |
| 423 return false; | 422 return false; |
| 424 for (base::DictionaryValue::Iterator it(*existing_users_.get()); | 423 for (base::DictionaryValue::Iterator it(*existing_users_.get()); |
| 425 !it.IsAtEnd(); it.Advance()) { | 424 !it.IsAtEnd(); it.Advance()) { |
| 426 const base::DictionaryValue* user_info = | 425 const base::DictionaryValue* user_info = |
| 427 static_cast<const base::DictionaryValue*>(&it.value()); | 426 static_cast<const base::DictionaryValue*>(&it.value()); |
| 428 base::string16 user_display_name; | 427 base::string16 user_display_name; |
| 429 if (user_info->GetString(SupervisedUserSyncService::kName, | 428 if (user_info->GetString(SupervisedUserSyncService::kName, |
| 430 &user_display_name)) { | 429 &user_display_name)) { |
| 431 if (display_name == user_display_name) { | 430 if (display_name == user_display_name) { |
| 432 if (out_id) | 431 if (out_id) |
| 433 *out_id = it.key(); | 432 *out_id = it.key(); |
| 434 return true; | 433 return true; |
| 435 } | 434 } |
| 436 } | 435 } |
| 437 } | 436 } |
| 438 return false; | 437 return false; |
| 439 } | 438 } |
| 440 | 439 |
| 441 // TODO(antrim) : this is an explicit code duplications with UserImageScreen. | 440 // TODO(antrim) : this is an explicit code duplications with UserImageScreen. |
| 442 // It should be removed by issue 251179. | 441 // It should be removed by issue 251179. |
| 443 | 442 |
| 444 void LocallyManagedUserCreationScreen::ApplyPicture() { | 443 void SupervisedUserCreationScreen::ApplyPicture() { |
| 445 std::string user_id = controller_->GetManagedUserId(); | 444 std::string user_id = controller_->GetSupervisedUserId(); |
| 446 UserManager* user_manager = UserManager::Get(); | 445 UserManager* user_manager = UserManager::Get(); |
| 447 UserImageManager* image_manager = user_manager->GetUserImageManager(user_id); | 446 UserImageManager* image_manager = user_manager->GetUserImageManager(user_id); |
| 448 switch (selected_image_) { | 447 switch (selected_image_) { |
| 449 case User::kExternalImageIndex: | 448 case User::kExternalImageIndex: |
| 450 // Photo decoding may not have been finished yet. | 449 // Photo decoding may not have been finished yet. |
| 451 if (user_photo_.isNull()) { | 450 if (user_photo_.isNull()) { |
| 452 apply_photo_after_decoding_ = true; | 451 apply_photo_after_decoding_ = true; |
| 453 return; | 452 return; |
| 454 } | 453 } |
| 455 image_manager->SaveUserImage( | 454 image_manager->SaveUserImage( |
| 456 user_manager::UserImage::CreateAndEncode(user_photo_)); | 455 user_manager::UserImage::CreateAndEncode(user_photo_)); |
| 457 break; | 456 break; |
| 458 case User::kProfileImageIndex: | 457 case User::kProfileImageIndex: |
| 459 NOTREACHED() << "Supervised users have no profile pictures"; | 458 NOTREACHED() << "Supervised users have no profile pictures"; |
| 460 break; | 459 break; |
| 461 default: | 460 default: |
| 462 DCHECK(selected_image_ >= 0 && selected_image_ < kDefaultImagesCount); | 461 DCHECK(selected_image_ >= 0 && selected_image_ < kDefaultImagesCount); |
| 463 image_manager->SaveUserDefaultImageIndex(selected_image_); | 462 image_manager->SaveUserDefaultImageIndex(selected_image_); |
| 464 break; | 463 break; |
| 465 } | 464 } |
| 466 // Proceed to tutorial. | 465 // Proceed to tutorial. |
| 467 actor_->ShowTutorialPage(); | 466 actor_->ShowTutorialPage(); |
| 468 } | 467 } |
| 469 | 468 |
| 470 void LocallyManagedUserCreationScreen::OnCreationSuccess() { | 469 void SupervisedUserCreationScreen::OnCreationSuccess() { |
| 471 ApplyPicture(); | 470 ApplyPicture(); |
| 472 } | 471 } |
| 473 | 472 |
| 474 void LocallyManagedUserCreationScreen::OnCameraPresenceCheckDone( | 473 void SupervisedUserCreationScreen::OnCameraPresenceCheckDone( |
| 475 bool is_camera_present) { | 474 bool is_camera_present) { |
| 476 if (actor_) | 475 if (actor_) |
| 477 actor_->SetCameraPresent(is_camera_present); | 476 actor_->SetCameraPresent(is_camera_present); |
| 478 } | 477 } |
| 479 | 478 |
| 480 void LocallyManagedUserCreationScreen::OnGetManagedUsers( | 479 void SupervisedUserCreationScreen::OnGetSupervisedUsers( |
| 481 const base::DictionaryValue* users) { | 480 const base::DictionaryValue* users) { |
| 482 // Copy for passing to WebUI, contains only id, name and avatar URL. | 481 // Copy for passing to WebUI, contains only id, name and avatar URL. |
| 483 scoped_ptr<base::ListValue> ui_users(new base::ListValue()); | 482 scoped_ptr<base::ListValue> ui_users(new base::ListValue()); |
| 484 SupervisedUserManager* supervised_user_manager = | 483 SupervisedUserManager* supervised_user_manager = |
| 485 UserManager::Get()->GetSupervisedUserManager(); | 484 UserManager::Get()->GetSupervisedUserManager(); |
| 486 | 485 |
| 487 // Stored copy, contains all necessary information. | 486 // Stored copy, contains all necessary information. |
| 488 existing_users_.reset(new base::DictionaryValue()); | 487 existing_users_.reset(new base::DictionaryValue()); |
| 489 for (base::DictionaryValue::Iterator it(*users); !it.IsAtEnd(); | 488 for (base::DictionaryValue::Iterator it(*users); !it.IsAtEnd(); |
| 490 it.Advance()) { | 489 it.Advance()) { |
| 491 // Copy that would be stored in this class. | 490 // Copy that would be stored in this class. |
| 492 base::DictionaryValue* local_copy = | 491 base::DictionaryValue* local_copy = |
| 493 static_cast<base::DictionaryValue*>(it.value().DeepCopy()); | 492 static_cast<base::DictionaryValue*>(it.value().DeepCopy()); |
| 494 // Copy that would be passed to WebUI. It has some extra values for | 493 // Copy that would be passed to WebUI. It has some extra values for |
| 495 // displaying, but does not contain sensitive data, such as master password. | 494 // displaying, but does not contain sensitive data, such as master password. |
| 496 base::DictionaryValue* ui_copy = | 495 base::DictionaryValue* ui_copy = |
| 497 static_cast<base::DictionaryValue*>(new base::DictionaryValue()); | 496 static_cast<base::DictionaryValue*>(new base::DictionaryValue()); |
| 498 | 497 |
| 499 int avatar_index = ManagedUserCreationController::kDummyAvatarIndex; | 498 int avatar_index = SupervisedUserCreationController::kDummyAvatarIndex; |
| 500 std::string chromeos_avatar; | 499 std::string chromeos_avatar; |
| 501 if (local_copy->GetString(SupervisedUserSyncService::kChromeOsAvatar, | 500 if (local_copy->GetString(SupervisedUserSyncService::kChromeOsAvatar, |
| 502 &chromeos_avatar) && | 501 &chromeos_avatar) && |
| 503 !chromeos_avatar.empty() && | 502 !chromeos_avatar.empty() && |
| 504 SupervisedUserSyncService::GetAvatarIndex( | 503 SupervisedUserSyncService::GetAvatarIndex( |
| 505 chromeos_avatar, &avatar_index)) { | 504 chromeos_avatar, &avatar_index)) { |
| 506 ui_copy->SetString(kAvatarURLKey, GetDefaultImageUrl(avatar_index)); | 505 ui_copy->SetString(kAvatarURLKey, GetDefaultImageUrl(avatar_index)); |
| 507 } else { | 506 } else { |
| 508 int i = base::RandInt(kFirstDefaultImageIndex, kDefaultImagesCount - 1); | 507 int i = base::RandInt(kFirstDefaultImageIndex, kDefaultImagesCount - 1); |
| 509 local_copy->SetString( | 508 local_copy->SetString( |
| (...skipping 27 matching lines...) Expand all Loading... |
| 537 local_copy->GetString(SupervisedUserSyncService::kPasswordSignatureKey, | 536 local_copy->GetString(SupervisedUserSyncService::kPasswordSignatureKey, |
| 538 &signature_key) && | 537 &signature_key) && |
| 539 !signature_key.empty(); | 538 !signature_key.empty(); |
| 540 | 539 |
| 541 ui_copy->SetBoolean(kUserNeedPassword, !has_password); | 540 ui_copy->SetBoolean(kUserNeedPassword, !has_password); |
| 542 ui_copy->SetString("id", it.key()); | 541 ui_copy->SetString("id", it.key()); |
| 543 | 542 |
| 544 existing_users_->Set(it.key(), local_copy); | 543 existing_users_->Set(it.key(), local_copy); |
| 545 ui_users->Append(ui_copy); | 544 ui_users->Append(ui_copy); |
| 546 } | 545 } |
| 547 actor_->ShowExistingManagedUsers(ui_users.get()); | 546 actor_->ShowExistingSupervisedUsers(ui_users.get()); |
| 548 } | 547 } |
| 549 | 548 |
| 550 void LocallyManagedUserCreationScreen::OnPhotoTaken( | 549 void SupervisedUserCreationScreen::OnPhotoTaken( |
| 551 const std::string& raw_data) { | 550 const std::string& raw_data) { |
| 552 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 551 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 553 user_photo_ = gfx::ImageSkia(); | 552 user_photo_ = gfx::ImageSkia(); |
| 554 if (image_decoder_.get()) | 553 if (image_decoder_.get()) |
| 555 image_decoder_->set_delegate(NULL); | 554 image_decoder_->set_delegate(NULL); |
| 556 image_decoder_ = new ImageDecoder(this, raw_data, | 555 image_decoder_ = new ImageDecoder(this, raw_data, |
| 557 ImageDecoder::DEFAULT_CODEC); | 556 ImageDecoder::DEFAULT_CODEC); |
| 558 scoped_refptr<base::MessageLoopProxy> task_runner = | 557 scoped_refptr<base::MessageLoopProxy> task_runner = |
| 559 content::BrowserThread::GetMessageLoopProxyForThread( | 558 content::BrowserThread::GetMessageLoopProxyForThread( |
| 560 content::BrowserThread::UI); | 559 content::BrowserThread::UI); |
| 561 image_decoder_->Start(task_runner); | 560 image_decoder_->Start(task_runner); |
| 562 } | 561 } |
| 563 | 562 |
| 564 void LocallyManagedUserCreationScreen::OnImageDecoded( | 563 void SupervisedUserCreationScreen::OnImageDecoded( |
| 565 const ImageDecoder* decoder, | 564 const ImageDecoder* decoder, |
| 566 const SkBitmap& decoded_image) { | 565 const SkBitmap& decoded_image) { |
| 567 DCHECK_EQ(image_decoder_.get(), decoder); | 566 DCHECK_EQ(image_decoder_.get(), decoder); |
| 568 user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image); | 567 user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image); |
| 569 if (apply_photo_after_decoding_) | 568 if (apply_photo_after_decoding_) |
| 570 ApplyPicture(); | 569 ApplyPicture(); |
| 571 } | 570 } |
| 572 | 571 |
| 573 void LocallyManagedUserCreationScreen::OnDecodeImageFailed( | 572 void SupervisedUserCreationScreen::OnDecodeImageFailed( |
| 574 const ImageDecoder* decoder) { | 573 const ImageDecoder* decoder) { |
| 575 NOTREACHED() << "Failed to decode PNG image from WebUI"; | 574 NOTREACHED() << "Failed to decode PNG image from WebUI"; |
| 576 } | 575 } |
| 577 | 576 |
| 578 void LocallyManagedUserCreationScreen::OnImageSelected( | 577 void SupervisedUserCreationScreen::OnImageSelected( |
| 579 const std::string& image_type, | 578 const std::string& image_type, |
| 580 const std::string& image_url) { | 579 const std::string& image_url) { |
| 581 if (image_url.empty()) | 580 if (image_url.empty()) |
| 582 return; | 581 return; |
| 583 int user_image_index = User::kInvalidImageIndex; | 582 int user_image_index = User::kInvalidImageIndex; |
| 584 if (image_type == "default" && | 583 if (image_type == "default" && |
| 585 IsDefaultImageUrl(image_url, &user_image_index)) { | 584 IsDefaultImageUrl(image_url, &user_image_index)) { |
| 586 selected_image_ = user_image_index; | 585 selected_image_ = user_image_index; |
| 587 } else if (image_type == "camera") { | 586 } else if (image_type == "camera") { |
| 588 selected_image_ = User::kExternalImageIndex; | 587 selected_image_ = User::kExternalImageIndex; |
| 589 } else { | 588 } else { |
| 590 NOTREACHED() << "Unexpected image type: " << image_type; | 589 NOTREACHED() << "Unexpected image type: " << image_type; |
| 591 } | 590 } |
| 592 } | 591 } |
| 593 | 592 |
| 594 void LocallyManagedUserCreationScreen::OnImageAccepted() { | 593 void SupervisedUserCreationScreen::OnImageAccepted() { |
| 595 } | 594 } |
| 596 | 595 |
| 597 } // namespace chromeos | 596 } // namespace chromeos |
| OLD | NEW |