user_image_screen_handler.cc revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/user_image_screen_handler.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/audio/sounds.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/metrics/histogram.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/chromeos/login/existing_user_controller.h" 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/ui/webui_login_display.h" 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/avatar/default_user_images.h" 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/user.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h" 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chromeos/audio/chromeos_sounds.h" 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "grit/browser_resources.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/data_url.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace { 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)const char kJsScreenPath[] = "login.UserImageScreen"; 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} // namespace 32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UserImageScreenHandler::UserImageScreenHandler() 36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) : BaseScreenHandler(kJsScreenPath), 37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) screen_(NULL), 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) show_on_init_(false), 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) is_ready_(false) { 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) media::SoundsManager* manager = media::SoundsManager::Get(); 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) manager->Initialize(SOUND_OBJECT_DELETE, 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bundle.GetRawDataResource(IDR_SOUND_OBJECT_DELETE_WAV)); 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) manager->Initialize(SOUND_CAMERA_SNAP, 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bundle.GetRawDataResource(IDR_SOUND_CAMERA_SNAP_WAV)); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UserImageScreenHandler::~UserImageScreenHandler() { 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (screen_) { 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen_->OnActorDestroyed(this); 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UserImageScreenHandler::Initialize() { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (show_on_init_) { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Show(); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show_on_init_ = false; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UserImageScreenHandler::SetDelegate( 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UserImageScreenActor::Delegate* screen) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen_ = screen; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UserImageScreenHandler::Show() { 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!page_is_ready()) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show_on_init_ = true; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen_show_time_ = base::Time::Now(); 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShowScreen(OobeUI::kScreenUserImagePicker, NULL); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // When shown, query camera presence. 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!screen_) 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return; 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (is_ready_) 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) screen_->OnScreenReady(); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UserImageScreenHandler::Hide() { 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UserImageScreenHandler::PrepareToShow() { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::DeclareLocalizedValues( 88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LocalizedValuesBuilder* builder) { 89effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch builder->Add("userImageScreenTitle", IDS_USER_IMAGE_SCREEN_TITLE); 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("userImageScreenDescription", 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_CHANGE_PICTURE_DIALOG_TEXT); 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("takePhoto", IDS_OPTIONS_CHANGE_PICTURE_TAKE_PHOTO); 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("discardPhoto", IDS_OPTIONS_CHANGE_PICTURE_DISCARD_PHOTO); 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("flipPhoto", IDS_OPTIONS_CHANGE_PICTURE_FLIP_PHOTO); 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("profilePhoto", IDS_IMAGE_SCREEN_PROFILE_PHOTO); 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("profilePhotoLoading", 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_IMAGE_SCREEN_PROFILE_LOADING_PHOTO); 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("okButtonText", IDS_OK); 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("authorCredit", IDS_OPTIONS_SET_WALLPAPER_AUTHOR_TEXT); 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("photoFromCamera", IDS_OPTIONS_CHANGE_PICTURE_PHOTO_FROM_CAMERA); 101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) builder->Add("photoFlippedAccessibleText", 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IDS_OPTIONS_PHOTO_FLIP_ACCESSIBLE_TEXT); 103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) builder->Add("photoFlippedBackAccessibleText", 104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) IDS_OPTIONS_PHOTO_FLIPBACK_ACCESSIBLE_TEXT); 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("photoCaptureAccessibleText", 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_PHOTO_CAPTURE_ACCESSIBLE_TEXT); 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("photoDiscardAccessibleText", 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_OPTIONS_PHOTO_DISCARD_ACCESSIBLE_TEXT); 10968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) builder->Add("syncingPreferences", IDS_IMAGE_SCREEN_SYNCING_PREFERENCES); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UserImageScreenHandler::RegisterMessages() { 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddCallback("getImages", &UserImageScreenHandler::HandleGetImages); 1143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) AddCallback("screenReady", &UserImageScreenHandler::HandleScreenReady); 115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddCallback("takePhoto", &UserImageScreenHandler::HandleTakePhoto); 116a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) AddCallback("discardPhoto", &UserImageScreenHandler::HandleDiscardPhoto); 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddCallback("photoTaken", &UserImageScreenHandler::HandlePhotoTaken); 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddCallback("selectImage", &UserImageScreenHandler::HandleSelectImage); 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddCallback("onUserImageAccepted", 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &UserImageScreenHandler::HandleImageAccepted); 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddCallback("onUserImageScreenShown", 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &UserImageScreenHandler::HandleScreenShown); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::SelectImage(int index) { 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (page_is_ready()) 127a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CallJS("setSelectedImage", GetDefaultImageUrl(index)); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UserImageScreenHandler::SendProfileImage(const std::string& data_url) { 131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (page_is_ready()) 132a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CallJS("setProfileImage", data_url); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UserImageScreenHandler::OnProfileImageAbsent() { 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (page_is_ready()) { 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::Value> null_value(base::Value::CreateNullValue()); 138a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CallJS("setProfileImage", *null_value); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// TODO(antrim) : It looks more like parameters for "Init" rather than callback. 143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::HandleGetImages() { 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::ListValue image_urls; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = kFirstDefaultImageIndex; i < kDefaultImagesCount; ++i) { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::DictionaryValue> image_data(new base::DictionaryValue); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) image_data->SetString("url", GetDefaultImageUrl(i)); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) image_data->SetString( 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "author", l10n_util::GetStringUTF16(kDefaultImageAuthorIDs[i])); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) image_data->SetString( 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "website", l10n_util::GetStringUTF16(kDefaultImageWebsiteIDs[i])); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) image_data->SetString("title", GetDefaultImageDescription(i)); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) image_urls.Append(image_data.release()); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 155a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CallJS("setDefaultImages", image_urls); 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!screen_) 157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return; 158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (screen_->selected_image() != User::kInvalidImageIndex) 159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SelectImage(screen_->selected_image()); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 161f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (screen_->profile_picture_data_url() != url::kAboutBlankURL) 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SendProfileImage(screen_->profile_picture_data_url()); 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) else if (screen_->profile_picture_absent()) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnProfileImageAbsent(); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void UserImageScreenHandler::HandleScreenReady() { 1683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) is_ready_ = true; 1693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (screen_) 1703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) screen_->OnScreenReady(); 1713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 1723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::HandlePhotoTaken(const std::string& image_url) { 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string mime_type, charset, raw_data; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!net::DataURL::Parse(GURL(image_url), &mime_type, &charset, &raw_data)) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ("image/png", mime_type); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (screen_) 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) screen_->OnPhotoTaken(raw_data); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void UserImageScreenHandler::HandleTakePhoto() { 184a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ash::PlaySystemSoundIfSpokenFeedback(SOUND_CAMERA_SNAP); 185a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 186a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 187a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void UserImageScreenHandler::HandleDiscardPhoto() { 188a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ash::PlaySystemSoundIfSpokenFeedback(SOUND_OBJECT_DELETE); 189a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::HandleSelectImage(const std::string& image_url, 1923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& image_type, 1933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool is_user_selection) { 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (screen_) 1953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) screen_->OnImageSelected(image_type, image_url, is_user_selection); 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::HandleImageAccepted() { 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (screen_) 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) screen_->OnImageAccepted(); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::HandleScreenShown() { 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(!screen_show_time_.is_null()); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::TimeDelta delta = base::Time::Now() - screen_show_time_; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VLOG(1) << "Screen load time: " << delta.InSecondsF(); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UMA_HISTOGRAM_TIMES("UserImage.ScreenIsShownTime", delta); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::SetCameraPresent(bool present) { 212a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CallJS("setCameraPresent", present); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void UserImageScreenHandler::HideCurtain() { 2163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CallJS("hideCurtain"); 2173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 2183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UserImageScreenHandler::SetProfilePictureEnabled(bool enabled) { 220a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CallJS("setProfilePictureEnabled", enabled); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 224