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/ui/webui/chromeos/login/user_image_screen_handler.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/user_image_screen_handler.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/metrics/histogram_macros.h" | 11 #include "base/metrics/histogram_macros.h" |
12 #include "base/values.h" | 12 #include "base/values.h" |
13 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" | 13 #include "chrome/browser/chromeos/accessibility/accessibility_manager.h" |
14 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 14 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
15 #include "chrome/browser/chromeos/login/oobe_screen.h" | 15 #include "chrome/browser/chromeos/login/oobe_screen.h" |
16 #include "chrome/browser/chromeos/login/screens/user_image_model.h" | 16 #include "chrome/browser/chromeos/login/screens/user_image_screen.h" |
17 #include "chrome/browser/chromeos/login/ui/webui_login_display.h" | 17 #include "chrome/browser/chromeos/login/ui/webui_login_display.h" |
18 #include "chrome/browser/chromeos/login/users/default_user_image/default_user_im
ages.h" | 18 #include "chrome/browser/chromeos/login/users/default_user_image/default_user_im
ages.h" |
19 #include "chrome/common/chrome_switches.h" | 19 #include "chrome/common/chrome_switches.h" |
20 #include "chrome/common/url_constants.h" | 20 #include "chrome/common/url_constants.h" |
21 #include "chrome/grit/browser_resources.h" | 21 #include "chrome/grit/browser_resources.h" |
22 #include "chrome/grit/generated_resources.h" | 22 #include "chrome/grit/generated_resources.h" |
23 #include "chromeos/audio/chromeos_sounds.h" | 23 #include "chromeos/audio/chromeos_sounds.h" |
24 #include "components/login/localized_values_builder.h" | 24 #include "components/login/localized_values_builder.h" |
25 #include "components/strings/grit/components_strings.h" | 25 #include "components/strings/grit/components_strings.h" |
26 #include "components/user_manager/user.h" | 26 #include "components/user_manager/user.h" |
27 #include "media/audio/sounds/sounds_manager.h" | 27 #include "media/audio/sounds/sounds_manager.h" |
28 #include "net/base/data_url.h" | 28 #include "net/base/data_url.h" |
29 #include "ui/base/l10n/l10n_util.h" | 29 #include "ui/base/l10n/l10n_util.h" |
30 #include "ui/base/resource/resource_bundle.h" | 30 #include "ui/base/resource/resource_bundle.h" |
31 #include "url/gurl.h" | 31 #include "url/gurl.h" |
32 | 32 |
33 namespace { | 33 namespace { |
34 | 34 |
35 const char kJsScreenPath[] = "login.UserImageScreen"; | 35 const char kJsScreenPath[] = "login.UserImageScreen"; |
36 | 36 |
37 } // namespace | 37 } // namespace |
38 | 38 |
39 namespace chromeos { | 39 namespace chromeos { |
40 | 40 |
41 UserImageScreenHandler::UserImageScreenHandler() | 41 UserImageScreenHandler::UserImageScreenHandler() |
42 : BaseScreenHandler(kJsScreenPath), | 42 : BaseScreenHandler(kJsScreenPath) { |
43 model_(nullptr), | |
44 show_on_init_(false), | |
45 is_ready_(false) { | |
46 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 43 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
47 media::SoundsManager* manager = media::SoundsManager::Get(); | 44 media::SoundsManager* manager = media::SoundsManager::Get(); |
48 manager->Initialize(SOUND_OBJECT_DELETE, | 45 manager->Initialize(SOUND_OBJECT_DELETE, |
49 bundle.GetRawDataResource(IDR_SOUND_OBJECT_DELETE_WAV)); | 46 bundle.GetRawDataResource(IDR_SOUND_OBJECT_DELETE_WAV)); |
50 manager->Initialize(SOUND_CAMERA_SNAP, | 47 manager->Initialize(SOUND_CAMERA_SNAP, |
51 bundle.GetRawDataResource(IDR_SOUND_CAMERA_SNAP_WAV)); | 48 bundle.GetRawDataResource(IDR_SOUND_CAMERA_SNAP_WAV)); |
52 } | 49 } |
53 | 50 |
54 UserImageScreenHandler::~UserImageScreenHandler() { | 51 UserImageScreenHandler::~UserImageScreenHandler() { |
55 if (model_) | 52 if (screen_) |
56 model_->OnViewDestroyed(this); | 53 screen_->OnViewDestroyed(this); |
57 } | 54 } |
58 | 55 |
59 void UserImageScreenHandler::Initialize() { | 56 void UserImageScreenHandler::Initialize() { |
60 if (show_on_init_) { | 57 if (show_on_init_) { |
61 Show(); | 58 Show(); |
62 show_on_init_ = false; | 59 show_on_init_ = false; |
63 } | 60 } |
64 } | 61 } |
65 | 62 |
66 void UserImageScreenHandler::Bind(UserImageModel& model) { | 63 void UserImageScreenHandler::Bind(UserImageScreen* screen) { |
67 model_ = &model; | 64 screen_ = screen; |
68 BaseScreenHandler::SetBaseScreen(model_); | 65 BaseScreenHandler::SetBaseScreen(screen_); |
69 } | 66 } |
70 | 67 |
71 void UserImageScreenHandler::Unbind() { | 68 void UserImageScreenHandler::Unbind() { |
72 model_ = nullptr; | 69 screen_ = nullptr; |
73 BaseScreenHandler::SetBaseScreen(nullptr); | 70 BaseScreenHandler::SetBaseScreen(nullptr); |
74 } | 71 } |
75 | 72 |
76 void UserImageScreenHandler::Show() { | 73 void UserImageScreenHandler::Show() { |
77 if (!page_is_ready()) { | 74 if (!page_is_ready()) { |
78 show_on_init_ = true; | 75 show_on_init_ = true; |
79 return; | 76 return; |
80 } | 77 } |
81 screen_show_time_ = base::Time::Now(); | 78 screen_show_time_ = base::Time::Now(); |
82 ShowScreen(OobeScreen::SCREEN_USER_IMAGE_PICKER); | 79 ShowScreen(OobeScreen::SCREEN_USER_IMAGE_PICKER); |
83 | 80 |
84 // When shown, query camera presence. | 81 // When shown, query camera presence. |
85 if (model_ && is_ready_) | 82 if (screen_ && is_ready_) |
86 model_->OnScreenReady(); | 83 screen_->OnScreenReady(); |
87 } | 84 } |
88 | 85 |
89 void UserImageScreenHandler::Hide() { | 86 void UserImageScreenHandler::Hide() { |
90 } | 87 } |
91 | 88 |
92 void UserImageScreenHandler::DeclareLocalizedValues( | 89 void UserImageScreenHandler::DeclareLocalizedValues( |
93 ::login::LocalizedValuesBuilder* builder) { | 90 ::login::LocalizedValuesBuilder* builder) { |
94 builder->Add("userImageScreenTitle", IDS_USER_IMAGE_SCREEN_TITLE); | 91 builder->Add("userImageScreenTitle", IDS_USER_IMAGE_SCREEN_TITLE); |
95 builder->Add("userImageScreenDescription", | 92 builder->Add("userImageScreenDescription", |
96 IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TEXT); | 93 IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TEXT); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 default_user_image::kDefaultImageWebsiteIDs[i])); | 140 default_user_image::kDefaultImageWebsiteIDs[i])); |
144 image_data->SetString("title", | 141 image_data->SetString("title", |
145 default_user_image::GetDefaultImageDescription(i)); | 142 default_user_image::GetDefaultImageDescription(i)); |
146 image_urls.Append(std::move(image_data)); | 143 image_urls.Append(std::move(image_data)); |
147 } | 144 } |
148 CallJS("setDefaultImages", image_urls); | 145 CallJS("setDefaultImages", image_urls); |
149 } | 146 } |
150 | 147 |
151 void UserImageScreenHandler::HandleScreenReady() { | 148 void UserImageScreenHandler::HandleScreenReady() { |
152 is_ready_ = true; | 149 is_ready_ = true; |
153 if (model_) | 150 if (screen_) |
154 model_->OnScreenReady(); | 151 screen_->OnScreenReady(); |
155 } | 152 } |
156 | 153 |
157 void UserImageScreenHandler::HandlePhotoTaken(const std::string& image_url) { | 154 void UserImageScreenHandler::HandlePhotoTaken(const std::string& image_url) { |
158 std::string mime_type, charset, raw_data; | 155 std::string mime_type, charset, raw_data; |
159 if (!net::DataURL::Parse(GURL(image_url), &mime_type, &charset, &raw_data)) | 156 if (!net::DataURL::Parse(GURL(image_url), &mime_type, &charset, &raw_data)) |
160 NOTREACHED(); | 157 NOTREACHED(); |
161 DCHECK_EQ("image/png", mime_type); | 158 DCHECK_EQ("image/png", mime_type); |
162 | 159 |
163 if (model_) | 160 if (screen_) |
164 model_->OnPhotoTaken(raw_data); | 161 screen_->OnPhotoTaken(raw_data); |
165 } | 162 } |
166 | 163 |
167 void UserImageScreenHandler::HandleTakePhoto() { | 164 void UserImageScreenHandler::HandleTakePhoto() { |
168 AccessibilityManager::Get()->PlayEarcon( | 165 AccessibilityManager::Get()->PlayEarcon( |
169 SOUND_CAMERA_SNAP, PlaySoundOption::SPOKEN_FEEDBACK_ENABLED); | 166 SOUND_CAMERA_SNAP, PlaySoundOption::SPOKEN_FEEDBACK_ENABLED); |
170 } | 167 } |
171 | 168 |
172 void UserImageScreenHandler::HandleDiscardPhoto() { | 169 void UserImageScreenHandler::HandleDiscardPhoto() { |
173 AccessibilityManager::Get()->PlayEarcon( | 170 AccessibilityManager::Get()->PlayEarcon( |
174 SOUND_OBJECT_DELETE, PlaySoundOption::SPOKEN_FEEDBACK_ENABLED); | 171 SOUND_OBJECT_DELETE, PlaySoundOption::SPOKEN_FEEDBACK_ENABLED); |
175 } | 172 } |
176 | 173 |
177 void UserImageScreenHandler::HandleSelectImage(const std::string& image_url, | 174 void UserImageScreenHandler::HandleSelectImage(const std::string& image_url, |
178 const std::string& image_type, | 175 const std::string& image_type, |
179 bool is_user_selection) { | 176 bool is_user_selection) { |
180 if (model_) | 177 if (screen_) |
181 model_->OnImageSelected(image_type, image_url, is_user_selection); | 178 screen_->OnImageSelected(image_type, image_url, is_user_selection); |
182 } | 179 } |
183 | 180 |
184 void UserImageScreenHandler::HandleImageAccepted() { | 181 void UserImageScreenHandler::HandleImageAccepted() { |
185 if (model_) | 182 if (screen_) |
186 model_->OnImageAccepted(); | 183 screen_->OnImageAccepted(); |
187 } | 184 } |
188 | 185 |
189 void UserImageScreenHandler::HandleScreenShown() { | 186 void UserImageScreenHandler::HandleScreenShown() { |
190 DCHECK(!screen_show_time_.is_null()); | 187 DCHECK(!screen_show_time_.is_null()); |
191 | 188 |
192 base::TimeDelta delta = base::Time::Now() - screen_show_time_; | 189 base::TimeDelta delta = base::Time::Now() - screen_show_time_; |
193 VLOG(1) << "Screen load time: " << delta.InSecondsF(); | 190 VLOG(1) << "Screen load time: " << delta.InSecondsF(); |
194 UMA_HISTOGRAM_TIMES("UserImage.ScreenIsShownTime", delta); | 191 UMA_HISTOGRAM_TIMES("UserImage.ScreenIsShownTime", delta); |
195 } | 192 } |
196 | 193 |
197 void UserImageScreenHandler::HideCurtain() { | 194 void UserImageScreenHandler::HideCurtain() { |
198 CallJS("hideCurtain"); | 195 CallJS("hideCurtain"); |
199 } | 196 } |
200 | 197 |
201 } // namespace chromeos | 198 } // namespace chromeos |
OLD | NEW |