| Index: chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc b/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc
|
| similarity index 65%
|
| copy from chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc
|
| copy to chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc
|
| index fc4a85d3a848c983a3e0c6734394ef53ee982502..8a523a347cf2d54cf21ecf68ebdab91579552c68 100644
|
| --- a/chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc
|
| +++ b/chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc
|
| @@ -1,8 +1,8 @@
|
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Copyright 2015 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/ui/webui/options/chromeos/change_picture_options_handler.h"
|
| +#include "chrome/browser/ui/webui/settings/chromeos/change_picture_handler.h"
|
|
|
| #include "ash/audio/sounds.h"
|
| #include "base/bind.h"
|
| @@ -45,7 +45,7 @@
|
| using content::BrowserThread;
|
|
|
| namespace chromeos {
|
| -namespace options {
|
| +namespace settings {
|
|
|
| namespace {
|
|
|
| @@ -76,15 +76,16 @@ const char kProfileDownloadReason[] = "Preferences";
|
|
|
| } // namespace
|
|
|
| -ChangePictureOptionsHandler::ChangePictureOptionsHandler()
|
| +ChangePictureHandler::ChangePictureHandler()
|
| : previous_image_url_(url::kAboutBlankURL),
|
| - previous_image_index_(user_manager::User::USER_IMAGE_INVALID) {
|
| + previous_image_index_(user_manager::User::USER_IMAGE_INVALID),
|
| + camera_observer_(this) {
|
| registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED,
|
| - content::NotificationService::AllSources());
|
| + content::NotificationService::AllSources());
|
| registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED,
|
| - content::NotificationService::AllSources());
|
| + content::NotificationService::AllSources());
|
| registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
|
| - content::NotificationService::AllSources());
|
| + content::NotificationService::AllSources());
|
|
|
| ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
|
| media::SoundsManager* manager = media::SoundsManager::Get();
|
| @@ -94,76 +95,34 @@ ChangePictureOptionsHandler::ChangePictureOptionsHandler()
|
| bundle.GetRawDataResource(IDR_SOUND_CAMERA_SNAP_WAV));
|
| }
|
|
|
| -ChangePictureOptionsHandler::~ChangePictureOptionsHandler() {
|
| - CameraPresenceNotifier::GetInstance()->RemoveObserver(this);
|
| +ChangePictureHandler::~ChangePictureHandler() {
|
| if (select_file_dialog_.get())
|
| select_file_dialog_->ListenerDestroyed();
|
| }
|
|
|
| -void ChangePictureOptionsHandler::GetLocalizedValues(
|
| - base::DictionaryValue* localized_strings) {
|
| - DCHECK(localized_strings);
|
| - localized_strings->SetString("changePicturePage",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TITLE));
|
| - localized_strings->SetString("changePicturePageDescription",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TEXT));
|
| - localized_strings->SetString("takePhoto",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_TAKE_PHOTO));
|
| - localized_strings->SetString("discardPhoto",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_DISCARD_PHOTO));
|
| - localized_strings->SetString("flipPhoto",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_FLIP_PHOTO));
|
| - localized_strings->SetString("chooseFile",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_CHOOSE_FILE));
|
| - localized_strings->SetString("profilePhoto",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PROFILE_PHOTO));
|
| - localized_strings->SetString("profilePhotoLoading",
|
| - l10n_util::GetStringUTF16(
|
| - IDS_OPTIONS_CHANGE_PICTURE_PROFILE_LOADING_PHOTO));
|
| - localized_strings->SetString("previewAltText",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PREVIEW_ALT));
|
| - localized_strings->SetString("authorCredit",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_SET_WALLPAPER_AUTHOR_TEXT));
|
| - localized_strings->SetString("photoFromCamera",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PHOTO_FROM_CAMERA));
|
| - localized_strings->SetString("photoFlippedAccessibleText",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_FLIP_ACCESSIBLE_TEXT));
|
| - localized_strings->SetString("photoFlippedBackAccessibleText",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_FLIPBACK_ACCESSIBLE_TEXT));
|
| - localized_strings->SetString("photoCaptureAccessibleText",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_CAPTURE_ACCESSIBLE_TEXT));
|
| - localized_strings->SetString("photoDiscardAccessibleText",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_DISCARD_ACCESSIBLE_TEXT));
|
| -}
|
| -
|
| -void ChangePictureOptionsHandler::RegisterMessages() {
|
| - web_ui()->RegisterMessageCallback("chooseFile",
|
| - base::Bind(&ChangePictureOptionsHandler::HandleChooseFile,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("takePhoto",
|
| - base::Bind(&ChangePictureOptionsHandler::HandleTakePhoto,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("photoTaken",
|
| - base::Bind(&ChangePictureOptionsHandler::HandlePhotoTaken,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("discardPhoto",
|
| - base::Bind(&ChangePictureOptionsHandler::HandleDiscardPhoto,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("onChangePicturePageShown",
|
| - base::Bind(&ChangePictureOptionsHandler::HandlePageShown,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("onChangePicturePageHidden",
|
| - base::Bind(&ChangePictureOptionsHandler::HandlePageHidden,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("onChangePicturePageInitialized",
|
| - base::Bind(&ChangePictureOptionsHandler::HandlePageInitialized,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("selectImage",
|
| - base::Bind(&ChangePictureOptionsHandler::HandleSelectImage,
|
| +void ChangePictureHandler::RegisterMessages() {
|
| + web_ui()->RegisterMessageCallback(
|
| + "chooseFile", base::Bind(&ChangePictureHandler::HandleChooseFile,
|
| + base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback(
|
| + "takePhoto", base::Bind(&ChangePictureHandler::HandleTakePhoto,
|
| + base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback(
|
| + "photoTaken", base::Bind(&ChangePictureHandler::HandlePhotoTaken,
|
| + base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback(
|
| + "discardPhoto", base::Bind(&ChangePictureHandler::HandleDiscardPhoto,
|
| + base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback(
|
| + "onChangePicturePageInitialized",
|
| + base::Bind(&ChangePictureHandler::HandlePageInitialized,
|
| base::Unretained(this)));
|
| + web_ui()->RegisterMessageCallback(
|
| + "selectImage", base::Bind(&ChangePictureHandler::HandleSelectImage,
|
| + base::Unretained(this)));
|
| }
|
|
|
| -void ChangePictureOptionsHandler::SendDefaultImages() {
|
| +void ChangePictureHandler::SendDefaultImages() {
|
| base::ListValue image_urls;
|
| for (int i = default_user_image::kFirstDefaultImageIndex;
|
| i < default_user_image::kDefaultImagesCount; ++i) {
|
| @@ -179,12 +138,11 @@ void ChangePictureOptionsHandler::SendDefaultImages() {
|
| default_user_image::GetDefaultImageDescription(i));
|
| image_urls.Append(image_data.release());
|
| }
|
| - web_ui()->CallJavascriptFunction("ChangePictureOptions.setDefaultImages",
|
| - image_urls);
|
| + web_ui()->CallJavascriptFunction(
|
| + "settings.ChangePicturePage.receiveDefaultImages", image_urls);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::HandleChooseFile(
|
| - const base::ListValue* args) {
|
| +void ChangePictureHandler::HandleChooseFile(const base::ListValue* args) {
|
| DCHECK(args && args->empty());
|
| select_file_dialog_ = ui::SelectFileDialog::Create(
|
| this, new ChromeSelectFilePolicy(web_ui()->GetWebContents()));
|
| @@ -197,33 +155,25 @@ void ChangePictureOptionsHandler::HandleChooseFile(
|
|
|
| // Static so we initialize it only once.
|
| CR_DEFINE_STATIC_LOCAL(ui::SelectFileDialog::FileTypeInfo, file_type_info,
|
| - (GetUserImageFileTypeInfo()));
|
| + (GetUserImageFileTypeInfo()));
|
|
|
| select_file_dialog_->SelectFile(
|
| ui::SelectFileDialog::SELECT_OPEN_FILE,
|
| - l10n_util::GetStringUTF16(IDS_DOWNLOAD_TITLE),
|
| - downloads_path,
|
| - &file_type_info,
|
| - 0,
|
| - FILE_PATH_LITERAL(""),
|
| - GetBrowserWindow(),
|
| - NULL);
|
| + l10n_util::GetStringUTF16(IDS_DOWNLOAD_TITLE), downloads_path,
|
| + &file_type_info, 0, FILE_PATH_LITERAL(""), GetBrowserWindow(), NULL);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::HandleTakePhoto(
|
| - const base::ListValue* args) {
|
| +void ChangePictureHandler::HandleTakePhoto(const base::ListValue* args) {
|
| DCHECK(args->empty());
|
| ash::PlaySystemSoundIfSpokenFeedback(SOUND_CAMERA_SNAP);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::HandleDiscardPhoto(
|
| - const base::ListValue* args) {
|
| +void ChangePictureHandler::HandleDiscardPhoto(const base::ListValue* args) {
|
| DCHECK(args->empty());
|
| ash::PlaySystemSoundIfSpokenFeedback(SOUND_OBJECT_DELETE);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::HandlePhotoTaken(
|
| - const base::ListValue* args) {
|
| +void ChangePictureHandler::HandlePhotoTaken(const base::ListValue* args) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| std::string image_url;
|
| if (!args || args->GetSize() != 1 || !args->GetString(0, &image_url))
|
| @@ -242,25 +192,19 @@ void ChangePictureOptionsHandler::HandlePhotoTaken(
|
| ImageDecoder::Start(this, raw_data);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::HandlePageInitialized(
|
| - const base::ListValue* args) {
|
| +void ChangePictureHandler::HandlePageInitialized(const base::ListValue* args) {
|
| DCHECK(args && args->empty());
|
| - SendDefaultImages();
|
| -}
|
|
|
| -void ChangePictureOptionsHandler::HandlePageShown(const base::ListValue* args) {
|
| - DCHECK(args && args->empty());
|
| + CameraPresenceNotifier* camera = CameraPresenceNotifier::GetInstance();
|
| + if (!camera_observer_.IsObserving(camera))
|
| + camera_observer_.Add(camera);
|
| +
|
| + SendDefaultImages();
|
| SendSelectedImage();
|
| UpdateProfileImage();
|
| - CameraPresenceNotifier::GetInstance()->AddObserver(this);
|
| -}
|
| -
|
| -void ChangePictureOptionsHandler::HandlePageHidden(
|
| - const base::ListValue* args) {
|
| - CameraPresenceNotifier::GetInstance()->RemoveObserver(this);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::SendSelectedImage() {
|
| +void ChangePictureHandler::SendSelectedImage() {
|
| const user_manager::User* user = GetUser();
|
| DCHECK(!user->email().empty());
|
|
|
| @@ -286,7 +230,7 @@ void ChangePictureOptionsHandler::SendSelectedImage() {
|
| base::StringValue image_url(
|
| default_user_image::GetDefaultImageUrl(previous_image_index_));
|
| web_ui()->CallJavascriptFunction(
|
| - "ChangePictureOptions.setSelectedImage", image_url);
|
| + "settings.ChangePicturePage.receiveSelectedImage", image_url);
|
| } else {
|
| // User has an old default image, so present it in the same manner as a
|
| // previous image from file.
|
| @@ -297,15 +241,15 @@ void ChangePictureOptionsHandler::SendSelectedImage() {
|
| }
|
| }
|
|
|
| -void ChangePictureOptionsHandler::SendProfileImage(const gfx::ImageSkia& image,
|
| - bool should_select) {
|
| +void ChangePictureHandler::SendProfileImage(const gfx::ImageSkia& image,
|
| + bool should_select) {
|
| base::StringValue data_url(webui::GetBitmapDataUrl(*image.bitmap()));
|
| base::FundamentalValue select(should_select);
|
| - web_ui()->CallJavascriptFunction("ChangePictureOptions.setProfileImage",
|
| - data_url, select);
|
| + web_ui()->CallJavascriptFunction(
|
| + "settings.ChangePicturePage.receiveProfileImage", data_url, select);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::UpdateProfileImage() {
|
| +void ChangePictureHandler::UpdateProfileImage() {
|
| UserImageManager* user_image_manager =
|
| ChromeUserManager::Get()->GetUserImageManager(GetUser()->GetAccountId());
|
| // If we have a downloaded profile image and haven't sent it in
|
| @@ -317,19 +261,17 @@ void ChangePictureOptionsHandler::UpdateProfileImage() {
|
| user_image_manager->DownloadProfileImage(kProfileDownloadReason);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::SendOldImage(const std::string& image_url) {
|
| +void ChangePictureHandler::SendOldImage(const std::string& image_url) {
|
| previous_image_url_ = image_url;
|
| base::StringValue url(image_url);
|
| - web_ui()->CallJavascriptFunction("ChangePictureOptions.setOldImage", url);
|
| + web_ui()->CallJavascriptFunction("settings.ChangePicturePage.receiveOldImage",
|
| + url);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::HandleSelectImage(
|
| - const base::ListValue* args) {
|
| +void ChangePictureHandler::HandleSelectImage(const base::ListValue* args) {
|
| std::string image_url;
|
| std::string image_type;
|
| - if (!args ||
|
| - args->GetSize() != 2 ||
|
| - !args->GetString(0, &image_url) ||
|
| + if (!args || args->GetSize() != 2 || !args->GetString(0, &image_url) ||
|
| !args->GetString(1, &image_type)) {
|
| NOTREACHED();
|
| return;
|
| @@ -394,9 +336,9 @@ void ChangePictureOptionsHandler::HandleSelectImage(
|
| ImageDecoder::Cancel(this);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::FileSelected(const base::FilePath& path,
|
| - int index,
|
| - void* params) {
|
| +void ChangePictureHandler::FileSelected(const base::FilePath& path,
|
| + int index,
|
| + void* params) {
|
| ChromeUserManager::Get()
|
| ->GetUserImageManager(GetUser()->GetAccountId())
|
| ->SaveUserImageFromFile(path);
|
| @@ -406,8 +348,7 @@ void ChangePictureOptionsHandler::FileSelected(const base::FilePath& path,
|
| VLOG(1) << "Selected image from file";
|
| }
|
|
|
| -void ChangePictureOptionsHandler::SetImageFromCamera(
|
| - const gfx::ImageSkia& photo) {
|
| +void ChangePictureHandler::SetImageFromCamera(const gfx::ImageSkia& photo) {
|
| ChromeUserManager::Get()
|
| ->GetUserImageManager(GetUser()->GetAccountId())
|
| ->SaveUserImage(user_manager::UserImage::CreateAndEncode(photo));
|
| @@ -417,19 +358,18 @@ void ChangePictureOptionsHandler::SetImageFromCamera(
|
| VLOG(1) << "Selected camera photo";
|
| }
|
|
|
| -void ChangePictureOptionsHandler::SetCameraPresent(bool present) {
|
| +void ChangePictureHandler::SetCameraPresent(bool present) {
|
| base::FundamentalValue present_value(present);
|
|
|
| - web_ui()->CallJavascriptFunction("ChangePictureOptions.setCameraPresent",
|
| - present_value);
|
| + web_ui()->CallJavascriptFunction(
|
| + "settings.ChangePicturePage.receiveCameraPresence", present_value);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::OnCameraPresenceCheckDone(
|
| - bool is_camera_present) {
|
| +void ChangePictureHandler::OnCameraPresenceCheckDone(bool is_camera_present) {
|
| SetCameraPresent(is_camera_present);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::Observe(
|
| +void ChangePictureHandler::Observe(
|
| int type,
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) {
|
| @@ -445,23 +385,22 @@ void ChangePictureOptionsHandler::Observe(
|
| }
|
| }
|
|
|
| -gfx::NativeWindow ChangePictureOptionsHandler::GetBrowserWindow() const {
|
| +gfx::NativeWindow ChangePictureHandler::GetBrowserWindow() const {
|
| Browser* browser =
|
| chrome::FindBrowserWithWebContents(web_ui()->GetWebContents());
|
| return browser->window()->GetNativeWindow();
|
| }
|
|
|
| -void ChangePictureOptionsHandler::OnImageDecoded(
|
| - const SkBitmap& decoded_image) {
|
| +void ChangePictureHandler::OnImageDecoded(const SkBitmap& decoded_image) {
|
| user_photo_ = gfx::ImageSkia::CreateFrom1xBitmap(decoded_image);
|
| SetImageFromCamera(user_photo_);
|
| }
|
|
|
| -void ChangePictureOptionsHandler::OnDecodeImageFailed() {
|
| +void ChangePictureHandler::OnDecodeImageFailed() {
|
| NOTREACHED() << "Failed to decode PNG image from WebUI";
|
| }
|
|
|
| -const user_manager::User* ChangePictureOptionsHandler::GetUser() const {
|
| +const user_manager::User* ChangePictureHandler::GetUser() const {
|
| Profile* profile = Profile::FromWebUI(web_ui());
|
| const user_manager::User* user =
|
| ProfileHelper::Get()->GetUserByProfile(profile);
|
| @@ -470,5 +409,5 @@ const user_manager::User* ChangePictureOptionsHandler::GetUser() const {
|
| return user;
|
| }
|
|
|
| -} // namespace options
|
| +} // namespace settings
|
| } // namespace chromeos
|
|
|