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

Side by Side Diff: chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.cc

Issue 158953002: Spoken feedback sounds for user photo capture/discard at image picker added. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: PlaySystemSound... functions introduced according to latest changes. Created 6 years, 10 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 unified diff | Download patch
OLDNEW
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/ui/webui/options/chromeos/change_picture_options_handle r.h" 5 #include "chrome/browser/ui/webui/options/chromeos/change_picture_options_handle r.h"
6 6
7 #include "ash/audio/sounds.h"
7 #include "base/bind.h" 8 #include "base/bind.h"
8 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
9 #include "base/command_line.h" 10 #include "base/command_line.h"
10 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
11 #include "base/path_service.h" 12 #include "base/path_service.h"
12 #include "base/strings/string_util.h" 13 #include "base/strings/string_util.h"
13 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
14 #include "base/values.h" 15 #include "base/values.h"
15 #include "chrome/browser/chrome_notification_types.h" 16 #include "chrome/browser/chrome_notification_types.h"
16 #include "chrome/browser/chromeos/camera_detector.h" 17 #include "chrome/browser/chromeos/camera_detector.h"
17 #include "chrome/browser/chromeos/login/default_user_images.h" 18 #include "chrome/browser/chromeos/login/default_user_images.h"
18 #include "chrome/browser/chromeos/login/user_image.h" 19 #include "chrome/browser/chromeos/login/user_image.h"
19 #include "chrome/browser/chromeos/login/user_image_manager.h" 20 #include "chrome/browser/chromeos/login/user_image_manager.h"
20 #include "chrome/browser/chromeos/login/user_manager.h" 21 #include "chrome/browser/chromeos/login/user_manager.h"
21 #include "chrome/browser/ui/browser_finder.h" 22 #include "chrome/browser/ui/browser_finder.h"
22 #include "chrome/browser/ui/browser_window.h" 23 #include "chrome/browser/ui/browser_window.h"
23 #include "chrome/browser/ui/chrome_select_file_policy.h" 24 #include "chrome/browser/ui/chrome_select_file_policy.h"
24 #include "chrome/common/chrome_paths.h" 25 #include "chrome/common/chrome_paths.h"
25 #include "chrome/common/chrome_switches.h" 26 #include "chrome/common/chrome_switches.h"
26 #include "chrome/common/url_constants.h" 27 #include "chrome/common/url_constants.h"
28 #include "chromeos/audio/chromeos_sounds.h"
27 #include "content/public/browser/browser_thread.h" 29 #include "content/public/browser/browser_thread.h"
28 #include "content/public/browser/notification_service.h" 30 #include "content/public/browser/notification_service.h"
29 #include "content/public/browser/web_ui.h" 31 #include "content/public/browser/web_ui.h"
30 #include "content/public/common/url_constants.h" 32 #include "content/public/common/url_constants.h"
33 #include "grit/browser_resources.h"
31 #include "grit/generated_resources.h" 34 #include "grit/generated_resources.h"
32 #include "grit/theme_resources.h" 35 #include "grit/theme_resources.h"
33 #include "net/base/data_url.h" 36 #include "net/base/data_url.h"
34 #include "ui/base/l10n/l10n_util.h" 37 #include "ui/base/l10n/l10n_util.h"
35 #include "ui/base/resource/resource_bundle.h" 38 #include "ui/base/resource/resource_bundle.h"
36 #include "ui/base/webui/web_ui_util.h" 39 #include "ui/base/webui/web_ui_util.h"
37 #include "ui/views/widget/widget.h" 40 #include "ui/views/widget/widget.h"
38 #include "url/gurl.h" 41 #include "url/gurl.h"
39 42
40 using content::BrowserThread; 43 using content::BrowserThread;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 : previous_image_url_(content::kAboutBlankURL), 78 : previous_image_url_(content::kAboutBlankURL),
76 previous_image_index_(User::kInvalidImageIndex), 79 previous_image_index_(User::kInvalidImageIndex),
77 weak_factory_(this), 80 weak_factory_(this),
78 was_camera_present_(false) { 81 was_camera_present_(false) {
79 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED, 82 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED,
80 content::NotificationService::AllSources()); 83 content::NotificationService::AllSources());
81 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED, 84 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED,
82 content::NotificationService::AllSources()); 85 content::NotificationService::AllSources());
83 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, 86 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
84 content::NotificationService::AllSources()); 87 content::NotificationService::AllSources());
88
89 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
90 media::SoundsManager* manager = media::SoundsManager::Get();
91 manager->Initialize(SOUND_OBJECT_DELETE,
92 bundle.GetRawDataResource(IDR_SOUND_OBJECT_DELETE_WAV));
93 manager->Initialize(SOUND_CAMERA_SNAP,
94 bundle.GetRawDataResource(IDR_SOUND_CAMERA_SNAP_WAV));
85 } 95 }
86 96
87 ChangePictureOptionsHandler::~ChangePictureOptionsHandler() { 97 ChangePictureOptionsHandler::~ChangePictureOptionsHandler() {
88 if (select_file_dialog_.get()) 98 if (select_file_dialog_.get())
89 select_file_dialog_->ListenerDestroyed(); 99 select_file_dialog_->ListenerDestroyed();
90 if (image_decoder_.get()) 100 if (image_decoder_.get())
91 image_decoder_->set_delegate(NULL); 101 image_decoder_->set_delegate(NULL);
92 } 102 }
93 103
94 void ChangePictureOptionsHandler::GetLocalizedValues( 104 void ChangePictureOptionsHandler::GetLocalizedValues(
95 base::DictionaryValue* localized_strings) { 105 base::DictionaryValue* localized_strings) {
96 DCHECK(localized_strings); 106 DCHECK(localized_strings);
97 localized_strings->SetString("changePicturePage", 107 localized_strings->SetString("changePicturePage",
98 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TITLE)); 108 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TITLE));
99 localized_strings->SetString("changePicturePageDescription", 109 localized_strings->SetString("changePicturePageDescription",
100 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TEXT)); 110 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TEXT));
101 localized_strings->SetString("takePhoto", 111 localized_strings->SetString("takePhoto",
102 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_TAKE_PHOTO)); 112 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_TAKE_PHOTO));
113 localized_strings->SetString("discardPhoto",
114 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_DISCARD_PHOTO));
115 localized_strings->SetString("flipPhoto",
116 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_FLIP_PHOTO));
103 localized_strings->SetString("chooseFile", 117 localized_strings->SetString("chooseFile",
104 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_CHOOSE_FILE)); 118 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_CHOOSE_FILE));
105 localized_strings->SetString("profilePhoto", 119 localized_strings->SetString("profilePhoto",
106 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PROFILE_PHOTO)); 120 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PROFILE_PHOTO));
107 localized_strings->SetString("profilePhotoLoading", 121 localized_strings->SetString("profilePhotoLoading",
108 l10n_util::GetStringUTF16( 122 l10n_util::GetStringUTF16(
109 IDS_OPTIONS_CHANGE_PICTURE_PROFILE_LOADING_PHOTO)); 123 IDS_OPTIONS_CHANGE_PICTURE_PROFILE_LOADING_PHOTO));
110 localized_strings->SetString("previewAltText", 124 localized_strings->SetString("previewAltText",
111 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PREVIEW_ALT)); 125 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PREVIEW_ALT));
112 localized_strings->SetString("authorCredit", 126 localized_strings->SetString("authorCredit",
113 l10n_util::GetStringUTF16(IDS_OPTIONS_SET_WALLPAPER_AUTHOR_TEXT)); 127 l10n_util::GetStringUTF16(IDS_OPTIONS_SET_WALLPAPER_AUTHOR_TEXT));
114 localized_strings->SetString("photoFromCamera", 128 localized_strings->SetString("photoFromCamera",
115 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PHOTO_FROM_CAMERA)); 129 l10n_util::GetStringUTF16(IDS_OPTIONS_CHANGE_PICTURE_PHOTO_FROM_CAMERA));
130 localized_strings->SetString("photoFlippedAccessibleText",
131 l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_FLIP_ACCESSIBLE_TEXT));
132 localized_strings->SetString("photoFlippedBackAccessibleText",
133 l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_FLIPBACK_ACCESSIBLE_TEXT));
116 localized_strings->SetString("photoCaptureAccessibleText", 134 localized_strings->SetString("photoCaptureAccessibleText",
117 l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_CAPTURE_ACCESSIBLE_TEXT)); 135 l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_CAPTURE_ACCESSIBLE_TEXT));
118 localized_strings->SetString("photoDiscardAccessibleText", 136 localized_strings->SetString("photoDiscardAccessibleText",
119 l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_DISCARD_ACCESSIBLE_TEXT)); 137 l10n_util::GetStringUTF16(IDS_OPTIONS_PHOTO_DISCARD_ACCESSIBLE_TEXT));
120 } 138 }
121 139
122 void ChangePictureOptionsHandler::RegisterMessages() { 140 void ChangePictureOptionsHandler::RegisterMessages() {
123 web_ui()->RegisterMessageCallback("chooseFile", 141 web_ui()->RegisterMessageCallback("chooseFile",
124 base::Bind(&ChangePictureOptionsHandler::HandleChooseFile, 142 base::Bind(&ChangePictureOptionsHandler::HandleChooseFile,
125 base::Unretained(this))); 143 base::Unretained(this)));
144 web_ui()->RegisterMessageCallback("takePhoto",
145 base::Bind(&ChangePictureOptionsHandler::HandleTakePhoto,
146 base::Unretained(this)));
126 web_ui()->RegisterMessageCallback("photoTaken", 147 web_ui()->RegisterMessageCallback("photoTaken",
127 base::Bind(&ChangePictureOptionsHandler::HandlePhotoTaken, 148 base::Bind(&ChangePictureOptionsHandler::HandlePhotoTaken,
128 base::Unretained(this))); 149 base::Unretained(this)));
150 web_ui()->RegisterMessageCallback("discardPhoto",
151 base::Bind(&ChangePictureOptionsHandler::HandleDiscardPhoto,
152 base::Unretained(this)));
129 web_ui()->RegisterMessageCallback("checkCameraPresence", 153 web_ui()->RegisterMessageCallback("checkCameraPresence",
130 base::Bind(&ChangePictureOptionsHandler::HandleCheckCameraPresence, 154 base::Bind(&ChangePictureOptionsHandler::HandleCheckCameraPresence,
131 base::Unretained(this))); 155 base::Unretained(this)));
132 web_ui()->RegisterMessageCallback("onChangePicturePageShown", 156 web_ui()->RegisterMessageCallback("onChangePicturePageShown",
133 base::Bind(&ChangePictureOptionsHandler::HandlePageShown, 157 base::Bind(&ChangePictureOptionsHandler::HandlePageShown,
134 base::Unretained(this))); 158 base::Unretained(this)));
135 web_ui()->RegisterMessageCallback("onChangePicturePageInitialized", 159 web_ui()->RegisterMessageCallback("onChangePicturePageInitialized",
136 base::Bind(&ChangePictureOptionsHandler::HandlePageInitialized, 160 base::Bind(&ChangePictureOptionsHandler::HandlePageInitialized,
137 base::Unretained(this))); 161 base::Unretained(this)));
138 web_ui()->RegisterMessageCallback("selectImage", 162 web_ui()->RegisterMessageCallback("selectImage",
139 base::Bind(&ChangePictureOptionsHandler::HandleSelectImage, 163 base::Bind(&ChangePictureOptionsHandler::HandleSelectImage,
140 base::Unretained(this))); 164 base::Unretained(this)));
141 } 165 }
142 166
143 void ChangePictureOptionsHandler::SendDefaultImages() { 167 void ChangePictureOptionsHandler::SendDefaultImages() {
144 base::ListValue image_urls; 168 base::ListValue image_urls;
145 for (int i = kFirstDefaultImageIndex; i < kDefaultImagesCount; ++i) { 169 for (int i = kFirstDefaultImageIndex; i < kDefaultImagesCount; ++i) {
146 scoped_ptr<base::DictionaryValue> image_data(new base::DictionaryValue); 170 scoped_ptr<base::DictionaryValue> image_data(new base::DictionaryValue);
147 image_data->SetString("url", GetDefaultImageUrl(i)); 171 image_data->SetString("url", GetDefaultImageUrl(i));
148 image_data->SetString( 172 image_data->SetString(
149 "author", l10n_util::GetStringUTF16(kDefaultImageAuthorIDs[i])); 173 "author", l10n_util::GetStringUTF16(kDefaultImageAuthorIDs[i]));
150 image_data->SetString( 174 image_data->SetString(
151 "website", l10n_util::GetStringUTF16(kDefaultImageWebsiteIDs[i])); 175 "website", l10n_util::GetStringUTF16(kDefaultImageWebsiteIDs[i]));
176 image_data->SetString("title", GetDefaultImageDescription(i));
152 image_urls.Append(image_data.release()); 177 image_urls.Append(image_data.release());
153 } 178 }
154 web_ui()->CallJavascriptFunction("ChangePictureOptions.setDefaultImages", 179 web_ui()->CallJavascriptFunction("ChangePictureOptions.setDefaultImages",
155 image_urls); 180 image_urls);
156 } 181 }
157 182
158 void ChangePictureOptionsHandler::HandleChooseFile( 183 void ChangePictureOptionsHandler::HandleChooseFile(
159 const base::ListValue* args) { 184 const base::ListValue* args) {
160 DCHECK(args && args->empty()); 185 DCHECK(args && args->empty());
161 select_file_dialog_ = ui::SelectFileDialog::Create( 186 select_file_dialog_ = ui::SelectFileDialog::Create(
(...skipping 13 matching lines...) Expand all
175 ui::SelectFileDialog::SELECT_OPEN_FILE, 200 ui::SelectFileDialog::SELECT_OPEN_FILE,
176 l10n_util::GetStringUTF16(IDS_DOWNLOAD_TITLE), 201 l10n_util::GetStringUTF16(IDS_DOWNLOAD_TITLE),
177 downloads_path, 202 downloads_path,
178 &file_type_info, 203 &file_type_info,
179 0, 204 0,
180 FILE_PATH_LITERAL(""), 205 FILE_PATH_LITERAL(""),
181 GetBrowserWindow(), 206 GetBrowserWindow(),
182 NULL); 207 NULL);
183 } 208 }
184 209
210 void ChangePictureOptionsHandler::HandleTakePhoto(
211 const base::ListValue* args) {
212 DCHECK(args->empty());
213 ash::PlaySystemSoundIfSpokenFeedback(SOUND_CAMERA_SNAP);
214 }
215
216 void ChangePictureOptionsHandler::HandleDiscardPhoto(
217 const base::ListValue* args) {
218 DCHECK(args->empty());
219 ash::PlaySystemSoundIfSpokenFeedback(SOUND_OBJECT_DELETE);
220 }
221
185 void ChangePictureOptionsHandler::HandlePhotoTaken( 222 void ChangePictureOptionsHandler::HandlePhotoTaken(
186 const base::ListValue* args) { 223 const base::ListValue* args) {
187 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 224 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
188 std::string image_url; 225 std::string image_url;
189 if (!args || args->GetSize() != 1 || !args->GetString(0, &image_url)) 226 if (!args || args->GetSize() != 1 || !args->GetString(0, &image_url))
190 NOTREACHED(); 227 NOTREACHED();
191 DCHECK(!image_url.empty()); 228 DCHECK(!image_url.empty());
192 229
193 std::string mime_type, charset, raw_data; 230 std::string mime_type, charset, raw_data;
194 if (!net::DataURL::Parse(GURL(image_url), &mime_type, &charset, &raw_data)) 231 if (!net::DataURL::Parse(GURL(image_url), &mime_type, &charset, &raw_data))
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 User* ChangePictureOptionsHandler::GetUser() const { 476 User* ChangePictureOptionsHandler::GetUser() const {
440 Profile* profile = Profile::FromWebUI(web_ui()); 477 Profile* profile = Profile::FromWebUI(web_ui());
441 User* user = UserManager::Get()->GetUserByProfile(profile); 478 User* user = UserManager::Get()->GetUserByProfile(profile);
442 if (!user) 479 if (!user)
443 return UserManager::Get()->GetActiveUser(); 480 return UserManager::Get()->GetActiveUser();
444 return user; 481 return user;
445 } 482 }
446 483
447 } // namespace options 484 } // namespace options
448 } // namespace chromeos 485 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options/chromeos/change_picture_options_handler.h ('k') | chromeos/audio/chromeos_sounds.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698