| Index: chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc
|
| diff --git a/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc b/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc
|
| deleted file mode 100644
|
| index 91a875debd447c3ac603c5f5dcf266d2a488fc37..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc
|
| +++ /dev/null
|
| @@ -1,597 +0,0 @@
|
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.h"
|
| -
|
| -#include "ash/desktop_background/desktop_background_controller.h"
|
| -#include "ash/shell.h"
|
| -#include "base/rand_util.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/chromeos/camera_detector.h"
|
| -#include "chrome/browser/chromeos/login/existing_user_controller.h"
|
| -#include "chrome/browser/chromeos/login/managed/managed_user_creation_controller.h"
|
| -#include "chrome/browser/chromeos/login/managed/managed_user_creation_controller_new.h"
|
| -#include "chrome/browser/chromeos/login/managed/supervised_user_authentication.h"
|
| -#include "chrome/browser/chromeos/login/screens/error_screen.h"
|
| -#include "chrome/browser/chromeos/login/screens/screen_observer.h"
|
| -#include "chrome/browser/chromeos/login/signin_specifics.h"
|
| -#include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h"
|
| -#include "chrome/browser/chromeos/login/users/supervised_user_manager.h"
|
| -#include "chrome/browser/chromeos/login/wizard_controller.h"
|
| -#include "chrome/browser/supervised_user/supervised_user_constants.h"
|
| -#include "chrome/browser/supervised_user/supervised_user_shared_settings_service.h"
|
| -#include "chrome/browser/supervised_user/supervised_user_shared_settings_service_factory.h"
|
| -#include "chrome/browser/supervised_user/supervised_user_sync_service.h"
|
| -#include "chrome/browser/supervised_user/supervised_user_sync_service_factory.h"
|
| -#include "chromeos/login/auth/key.h"
|
| -#include "chromeos/login/auth/user_context.h"
|
| -#include "chromeos/network/network_state.h"
|
| -#include "components/user_manager/user_image/user_image.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "third_party/skia/include/core/SkBitmap.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/gfx/image/image_skia.h"
|
| -
|
| -namespace chromeos {
|
| -
|
| -namespace {
|
| -
|
| -// Key for (boolean) value that indicates that user already exists on device.
|
| -const char kUserExists[] = "exists";
|
| -// Key for value that indicates why user can not be imported.
|
| -const char kUserConflict[] = "conflict";
|
| -// User is already imported.
|
| -const char kUserConflictImported[] = "imported";
|
| -// There is another supervised user with same name.
|
| -const char kUserConflictName[] = "name";
|
| -
|
| -const char kUserNeedPassword[] = "needPassword";
|
| -
|
| -const char kAvatarURLKey[] = "avatarurl";
|
| -const char kRandomAvatarKey[] = "randomAvatar";
|
| -const char kNameOfIntroScreen[] = "intro";
|
| -const char kNameOfNewUserParametersScreen[] = "username";
|
| -
|
| -void ConfigureErrorScreen(ErrorScreen* screen,
|
| - const NetworkState* network,
|
| - const NetworkPortalDetector::CaptivePortalStatus status) {
|
| - switch (status) {
|
| - case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN:
|
| - case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE:
|
| - NOTREACHED();
|
| - break;
|
| - case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE:
|
| - screen->SetErrorState(ErrorScreen::ERROR_STATE_OFFLINE,
|
| - std::string());
|
| - break;
|
| - case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL:
|
| - screen->SetErrorState(ErrorScreen::ERROR_STATE_PORTAL,
|
| - network ? network->name() : std::string());
|
| - screen->FixCaptivePortal();
|
| - break;
|
| - case NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
|
| - screen->SetErrorState(ErrorScreen::ERROR_STATE_PROXY,
|
| - std::string());
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -LocallyManagedUserCreationScreen::LocallyManagedUserCreationScreen(
|
| - ScreenObserver* observer,
|
| - LocallyManagedUserCreationScreenHandler* actor)
|
| - : WizardScreen(observer),
|
| - weak_factory_(this),
|
| - actor_(actor),
|
| - on_error_screen_(false),
|
| - last_page_(kNameOfIntroScreen),
|
| - sync_service_(NULL),
|
| - image_decoder_(NULL),
|
| - apply_photo_after_decoding_(false),
|
| - selected_image_(0) {
|
| - DCHECK(actor_);
|
| - if (actor_)
|
| - actor_->SetDelegate(this);
|
| -}
|
| -
|
| -LocallyManagedUserCreationScreen::~LocallyManagedUserCreationScreen() {
|
| - CameraPresenceNotifier::GetInstance()->RemoveObserver(this);
|
| - if (sync_service_)
|
| - sync_service_->RemoveObserver(this);
|
| - if (actor_)
|
| - actor_->SetDelegate(NULL);
|
| - if (image_decoder_.get())
|
| - image_decoder_->set_delegate(NULL);
|
| - NetworkPortalDetector::Get()->RemoveObserver(this);
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::PrepareToShow() {
|
| - if (actor_)
|
| - actor_->PrepareToShow();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::Show() {
|
| - CameraPresenceNotifier::GetInstance()->AddObserver(this);
|
| - if (actor_) {
|
| - actor_->Show();
|
| - // TODO(antrim) : temorary hack (until upcoming hackaton). Should be
|
| - // removed once we have screens reworked.
|
| - if (on_error_screen_)
|
| - actor_->ShowPage(last_page_);
|
| - else
|
| - actor_->ShowIntroPage();
|
| - }
|
| -
|
| - if (!on_error_screen_)
|
| - NetworkPortalDetector::Get()->AddAndFireObserver(this);
|
| - on_error_screen_ = false;
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnPageSelected(const std::string& page) {
|
| - last_page_ = page;
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnPortalDetectionCompleted(
|
| - const NetworkState* network,
|
| - const NetworkPortalDetector::CaptivePortalState& state) {
|
| - if (state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) {
|
| - get_screen_observer()->HideErrorScreen(this);
|
| - } else {
|
| - on_error_screen_ = true;
|
| - ErrorScreen* screen = get_screen_observer()->GetErrorScreen();
|
| - ConfigureErrorScreen(screen, network, state.status);
|
| - screen->SetUIState(ErrorScreen::UI_STATE_LOCALLY_MANAGED);
|
| - get_screen_observer()->ShowErrorScreen();
|
| - }
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::
|
| - ShowManagerInconsistentStateErrorScreen() {
|
| - if (!actor_)
|
| - return;
|
| - actor_->ShowErrorPage(
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE_TITLE),
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE),
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_MANAGER_INCONSISTENT_STATE_BUTTON));
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::ShowInitialScreen() {
|
| - if (actor_)
|
| - actor_->ShowIntroPage();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::Hide() {
|
| - CameraPresenceNotifier::GetInstance()->RemoveObserver(this);
|
| - if (actor_)
|
| - actor_->Hide();
|
| - if (!on_error_screen_)
|
| - NetworkPortalDetector::Get()->RemoveObserver(this);
|
| -}
|
| -
|
| -std::string LocallyManagedUserCreationScreen::GetName() const {
|
| - return WizardController::kLocallyManagedUserCreationScreenName;
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::AbortFlow() {
|
| - controller_->CancelCreation();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::FinishFlow() {
|
| - controller_->FinishCreation();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::AuthenticateManager(
|
| - const std::string& manager_id,
|
| - const std::string& manager_password) {
|
| - // Make sure no two controllers exist at the same time.
|
| - controller_.reset();
|
| -
|
| - controller_.reset(new ManagedUserCreationControllerNew(this, manager_id));
|
| -
|
| - UserContext user_context(manager_id);
|
| - user_context.SetKey(Key(manager_password));
|
| - ExistingUserController::current_controller()->Login(user_context,
|
| - SigninSpecifics());
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::CreateManagedUser(
|
| - const base::string16& display_name,
|
| - const std::string& managed_user_password) {
|
| - DCHECK(controller_.get());
|
| - int image;
|
| - if (selected_image_ == User::kExternalImageIndex)
|
| - // TODO(dzhioev): crbug/249660
|
| - image = ManagedUserCreationController::kDummyAvatarIndex;
|
| - else
|
| - image = selected_image_;
|
| - controller_->StartCreation(display_name, managed_user_password, image);
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::ImportManagedUser(
|
| - const std::string& user_id) {
|
| - DCHECK(controller_.get());
|
| - DCHECK(existing_users_.get());
|
| - VLOG(1) << "Importing user " << user_id;
|
| - base::DictionaryValue* user_info;
|
| - if (!existing_users_->GetDictionary(user_id, &user_info)) {
|
| - LOG(ERROR) << "Can not import non-existing user " << user_id;
|
| - return;
|
| - }
|
| - base::string16 display_name;
|
| - std::string master_key;
|
| - std::string signature_key;
|
| - std::string encryption_key;
|
| - std::string avatar;
|
| - bool exists;
|
| - int avatar_index = ManagedUserCreationController::kDummyAvatarIndex;
|
| - user_info->GetString(SupervisedUserSyncService::kName, &display_name);
|
| - user_info->GetString(SupervisedUserSyncService::kMasterKey, &master_key);
|
| - user_info->GetString(SupervisedUserSyncService::kPasswordSignatureKey,
|
| - &signature_key);
|
| - user_info->GetString(SupervisedUserSyncService::kPasswordEncryptionKey,
|
| - &encryption_key);
|
| - user_info->GetString(SupervisedUserSyncService::kChromeOsAvatar, &avatar);
|
| - user_info->GetBoolean(kUserExists, &exists);
|
| -
|
| - // We should not get here with existing user selected, so just display error.
|
| - if (exists) {
|
| - actor_->ShowErrorPage(
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE),
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR),
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON));
|
| - return;
|
| - }
|
| -
|
| - SupervisedUserSyncService::GetAvatarIndex(avatar, &avatar_index);
|
| -
|
| - const base::DictionaryValue* password_data = NULL;
|
| - SupervisedUserSharedSettingsService* shared_settings_service =
|
| - SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext(
|
| - controller_->GetManagerProfile());
|
| - const base::Value* value = shared_settings_service->GetValue(
|
| - user_id, supervised_users::kChromeOSPasswordData);
|
| -
|
| - bool password_right_here = value && value->GetAsDictionary(&password_data) &&
|
| - !password_data->empty();
|
| -
|
| - if (password_right_here) {
|
| - controller_->StartImport(display_name,
|
| - avatar_index,
|
| - user_id,
|
| - master_key,
|
| - password_data,
|
| - encryption_key,
|
| - signature_key);
|
| - } else {
|
| - NOTREACHED() << " Oops, no password";
|
| - }
|
| -}
|
| -
|
| -// TODO(antrim): Code duplication with previous method will be removed once
|
| -// password sync is implemented.
|
| -void LocallyManagedUserCreationScreen::ImportManagedUserWithPassword(
|
| - const std::string& user_id,
|
| - const std::string& password) {
|
| - DCHECK(controller_.get());
|
| - DCHECK(existing_users_.get());
|
| - VLOG(1) << "Importing user " << user_id;
|
| - base::DictionaryValue* user_info;
|
| - if (!existing_users_->GetDictionary(user_id, &user_info)) {
|
| - LOG(ERROR) << "Can not import non-existing user " << user_id;
|
| - return;
|
| - }
|
| - base::string16 display_name;
|
| - std::string master_key;
|
| - std::string avatar;
|
| - bool exists;
|
| - int avatar_index = ManagedUserCreationController::kDummyAvatarIndex;
|
| - user_info->GetString(SupervisedUserSyncService::kName, &display_name);
|
| - user_info->GetString(SupervisedUserSyncService::kMasterKey, &master_key);
|
| - user_info->GetString(SupervisedUserSyncService::kChromeOsAvatar, &avatar);
|
| - user_info->GetBoolean(kUserExists, &exists);
|
| -
|
| - // We should not get here with existing user selected, so just display error.
|
| - if (exists) {
|
| - actor_->ShowErrorPage(
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE),
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR),
|
| - l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON));
|
| - return;
|
| - }
|
| -
|
| - SupervisedUserSyncService::GetAvatarIndex(avatar, &avatar_index);
|
| -
|
| - controller_->StartImport(display_name,
|
| - password,
|
| - avatar_index,
|
| - user_id,
|
| - master_key);
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnManagerLoginFailure() {
|
| - if (actor_)
|
| - actor_->ShowManagerPasswordError();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnManagerFullyAuthenticated(
|
| - Profile* manager_profile) {
|
| - DCHECK(controller_.get());
|
| - // For manager user, move desktop to locked container so that windows created
|
| - // during the user image picker step are below it.
|
| - ash::Shell::GetInstance()->
|
| - desktop_background_controller()->MoveDesktopToLockedContainer();
|
| -
|
| - controller_->SetManagerProfile(manager_profile);
|
| - if (actor_)
|
| - actor_->ShowUsernamePage();
|
| -
|
| - last_page_ = kNameOfNewUserParametersScreen;
|
| - CHECK(!sync_service_);
|
| - sync_service_ = SupervisedUserSyncServiceFactory::GetForProfile(
|
| - manager_profile);
|
| - sync_service_->AddObserver(this);
|
| - OnSupervisedUsersChanged();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnSupervisedUsersChanged() {
|
| - CHECK(sync_service_);
|
| - sync_service_->GetSupervisedUsersAsync(
|
| - base::Bind(&LocallyManagedUserCreationScreen::OnGetManagedUsers,
|
| - weak_factory_.GetWeakPtr()));
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnManagerCryptohomeAuthenticated() {
|
| - if (actor_) {
|
| - actor_->ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_AUTH_PROGRESS_MESSAGE));
|
| - }
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnActorDestroyed(
|
| - LocallyManagedUserCreationScreenHandler* actor) {
|
| - if (actor_ == actor)
|
| - actor_ = NULL;
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnCreationError(
|
| - ManagedUserCreationController::ErrorCode code) {
|
| - base::string16 title;
|
| - base::string16 message;
|
| - base::string16 button;
|
| - // TODO(antrim) : find out which errors do we really have.
|
| - // We might reuse some error messages from ordinary user flow.
|
| - switch (code) {
|
| - case ManagedUserCreationController::CRYPTOHOME_NO_MOUNT:
|
| - case ManagedUserCreationController::CRYPTOHOME_FAILED_MOUNT:
|
| - case ManagedUserCreationController::CRYPTOHOME_FAILED_TPM:
|
| - title = l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR_TITLE);
|
| - message = l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR);
|
| - button = l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_TPM_ERROR_BUTTON);
|
| - break;
|
| - case ManagedUserCreationController::CLOUD_SERVER_ERROR:
|
| - case ManagedUserCreationController::TOKEN_WRITE_FAILED:
|
| - title = l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_TITLE);
|
| - message = l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR);
|
| - button = l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_GENERIC_ERROR_BUTTON);
|
| - break;
|
| - case ManagedUserCreationController::NO_ERROR:
|
| - NOTREACHED();
|
| - }
|
| - if (actor_)
|
| - actor_->ShowErrorPage(title, message, button);
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnCreationTimeout() {
|
| - if (actor_) {
|
| - actor_->ShowStatusMessage(false /* error */, l10n_util::GetStringUTF16(
|
| - IDS_CREATE_LOCALLY_MANAGED_USER_CREATION_CREATION_TIMEOUT_MESSAGE));
|
| - }
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnLongCreationWarning() {
|
| - if (actor_) {
|
| - actor_->ShowStatusMessage(true /* progress */, l10n_util::GetStringUTF16(
|
| - IDS_PROFILES_CREATE_SUPERVISED_JUST_SIGNED_IN));
|
| - }
|
| -}
|
| -
|
| -bool LocallyManagedUserCreationScreen::FindUserByDisplayName(
|
| - const base::string16& display_name,
|
| - std::string *out_id) const {
|
| - if (!existing_users_.get())
|
| - return false;
|
| - for (base::DictionaryValue::Iterator it(*existing_users_.get());
|
| - !it.IsAtEnd(); it.Advance()) {
|
| - const base::DictionaryValue* user_info =
|
| - static_cast<const base::DictionaryValue*>(&it.value());
|
| - base::string16 user_display_name;
|
| - if (user_info->GetString(SupervisedUserSyncService::kName,
|
| - &user_display_name)) {
|
| - if (display_name == user_display_name) {
|
| - if (out_id)
|
| - *out_id = it.key();
|
| - return true;
|
| - }
|
| - }
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -// TODO(antrim) : this is an explicit code duplications with UserImageScreen.
|
| -// It should be removed by issue 251179.
|
| -
|
| -void LocallyManagedUserCreationScreen::ApplyPicture() {
|
| - std::string user_id = controller_->GetManagedUserId();
|
| - UserManager* user_manager = UserManager::Get();
|
| - UserImageManager* image_manager = user_manager->GetUserImageManager(user_id);
|
| - switch (selected_image_) {
|
| - case User::kExternalImageIndex:
|
| - // Photo decoding may not have been finished yet.
|
| - if (user_photo_.isNull()) {
|
| - apply_photo_after_decoding_ = true;
|
| - return;
|
| - }
|
| - image_manager->SaveUserImage(
|
| - user_manager::UserImage::CreateAndEncode(user_photo_));
|
| - break;
|
| - case User::kProfileImageIndex:
|
| - NOTREACHED() << "Supervised users have no profile pictures";
|
| - break;
|
| - default:
|
| - DCHECK(selected_image_ >= 0 && selected_image_ < kDefaultImagesCount);
|
| - image_manager->SaveUserDefaultImageIndex(selected_image_);
|
| - break;
|
| - }
|
| - // Proceed to tutorial.
|
| - actor_->ShowTutorialPage();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnCreationSuccess() {
|
| - ApplyPicture();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnCameraPresenceCheckDone(
|
| - bool is_camera_present) {
|
| - if (actor_)
|
| - actor_->SetCameraPresent(is_camera_present);
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnGetManagedUsers(
|
| - const base::DictionaryValue* users) {
|
| - // Copy for passing to WebUI, contains only id, name and avatar URL.
|
| - scoped_ptr<base::ListValue> ui_users(new base::ListValue());
|
| - SupervisedUserManager* supervised_user_manager =
|
| - UserManager::Get()->GetSupervisedUserManager();
|
| -
|
| - // Stored copy, contains all necessary information.
|
| - existing_users_.reset(new base::DictionaryValue());
|
| - for (base::DictionaryValue::Iterator it(*users); !it.IsAtEnd();
|
| - it.Advance()) {
|
| - // Copy that would be stored in this class.
|
| - base::DictionaryValue* local_copy =
|
| - static_cast<base::DictionaryValue*>(it.value().DeepCopy());
|
| - // Copy that would be passed to WebUI. It has some extra values for
|
| - // displaying, but does not contain sensitive data, such as master password.
|
| - base::DictionaryValue* ui_copy =
|
| - static_cast<base::DictionaryValue*>(new base::DictionaryValue());
|
| -
|
| - int avatar_index = ManagedUserCreationController::kDummyAvatarIndex;
|
| - std::string chromeos_avatar;
|
| - if (local_copy->GetString(SupervisedUserSyncService::kChromeOsAvatar,
|
| - &chromeos_avatar) &&
|
| - !chromeos_avatar.empty() &&
|
| - SupervisedUserSyncService::GetAvatarIndex(
|
| - chromeos_avatar, &avatar_index)) {
|
| - ui_copy->SetString(kAvatarURLKey, GetDefaultImageUrl(avatar_index));
|
| - } else {
|
| - int i = base::RandInt(kFirstDefaultImageIndex, kDefaultImagesCount - 1);
|
| - local_copy->SetString(
|
| - SupervisedUserSyncService::kChromeOsAvatar,
|
| - SupervisedUserSyncService::BuildAvatarString(i));
|
| - local_copy->SetBoolean(kRandomAvatarKey, true);
|
| - ui_copy->SetString(kAvatarURLKey, GetDefaultImageUrl(i));
|
| - }
|
| -
|
| - local_copy->SetBoolean(kUserExists, false);
|
| - ui_copy->SetBoolean(kUserExists, false);
|
| -
|
| - base::string16 display_name;
|
| - local_copy->GetString(SupervisedUserSyncService::kName, &display_name);
|
| -
|
| - if (supervised_user_manager->FindBySyncId(it.key())) {
|
| - local_copy->SetBoolean(kUserExists, true);
|
| - ui_copy->SetBoolean(kUserExists, true);
|
| - local_copy->SetString(kUserConflict, kUserConflictImported);
|
| - ui_copy->SetString(kUserConflict, kUserConflictImported);
|
| - } else if (supervised_user_manager->FindByDisplayName(display_name)) {
|
| - local_copy->SetBoolean(kUserExists, true);
|
| - ui_copy->SetBoolean(kUserExists, true);
|
| - local_copy->SetString(kUserConflict, kUserConflictName);
|
| - ui_copy->SetString(kUserConflict, kUserConflictName);
|
| - }
|
| - ui_copy->SetString(SupervisedUserSyncService::kName, display_name);
|
| -
|
| - std::string signature_key;
|
| - bool has_password =
|
| - local_copy->GetString(SupervisedUserSyncService::kPasswordSignatureKey,
|
| - &signature_key) &&
|
| - !signature_key.empty();
|
| -
|
| - ui_copy->SetBoolean(kUserNeedPassword, !has_password);
|
| - ui_copy->SetString("id", it.key());
|
| -
|
| - existing_users_->Set(it.key(), local_copy);
|
| - ui_users->Append(ui_copy);
|
| - }
|
| - actor_->ShowExistingManagedUsers(ui_users.get());
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnPhotoTaken(
|
| - const std::string& raw_data) {
|
| - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| - user_photo_ = gfx::ImageSkia();
|
| - if (image_decoder_.get())
|
| - image_decoder_->set_delegate(NULL);
|
| - image_decoder_ = new ImageDecoder(this, raw_data,
|
| - ImageDecoder::DEFAULT_CODEC);
|
| - scoped_refptr<base::MessageLoopProxy> task_runner =
|
| - content::BrowserThread::GetMessageLoopProxyForThread(
|
| - content::BrowserThread::UI);
|
| - image_decoder_->Start(task_runner);
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnImageDecoded(
|
| - const ImageDecoder* decoder,
|
| - const SkBitmap& decoded_image) {
|
| - DCHECK_EQ(image_decoder_.get(), decoder);
|
| - user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image);
|
| - if (apply_photo_after_decoding_)
|
| - ApplyPicture();
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnDecodeImageFailed(
|
| - const ImageDecoder* decoder) {
|
| - NOTREACHED() << "Failed to decode PNG image from WebUI";
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnImageSelected(
|
| - const std::string& image_type,
|
| - const std::string& image_url) {
|
| - if (image_url.empty())
|
| - return;
|
| - int user_image_index = User::kInvalidImageIndex;
|
| - if (image_type == "default" &&
|
| - IsDefaultImageUrl(image_url, &user_image_index)) {
|
| - selected_image_ = user_image_index;
|
| - } else if (image_type == "camera") {
|
| - selected_image_ = User::kExternalImageIndex;
|
| - } else {
|
| - NOTREACHED() << "Unexpected image type: " << image_type;
|
| - }
|
| -}
|
| -
|
| -void LocallyManagedUserCreationScreen::OnImageAccepted() {
|
| -}
|
| -
|
| -} // namespace chromeos
|
|
|