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

Unified Diff: chrome/browser/chromeos/login/managed/locally_managed_user_creation_screen.cc

Issue 393343002: Rename "managed (mode|user)" to "supervised user" (part 7) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: more alphabetize (and rebase again) Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698