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

Side by Side Diff: chrome/browser/ui/webui/settings/chromeos/change_picture_handler.cc

Issue 2603423002: cros: Fix user image change crash (Closed)
Patch Set: rebase Created 3 years, 11 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/settings/chromeos/change_picture_handler.h" 5 #include "chrome/browser/ui/webui/settings/chromeos/change_picture_handler.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 } 75 }
76 76
77 // Time histogram suffix for profile image download. 77 // Time histogram suffix for profile image download.
78 const char kProfileDownloadReason[] = "Preferences"; 78 const char kProfileDownloadReason[] = "Preferences";
79 79
80 } // namespace 80 } // namespace
81 81
82 ChangePictureHandler::ChangePictureHandler() 82 ChangePictureHandler::ChangePictureHandler()
83 : previous_image_url_(url::kAboutBlankURL), 83 : previous_image_url_(url::kAboutBlankURL),
84 previous_image_index_(user_manager::User::USER_IMAGE_INVALID), 84 previous_image_index_(user_manager::User::USER_IMAGE_INVALID),
85 user_manager_observer_(this),
85 camera_observer_(this) { 86 camera_observer_(this) {
86 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); 87 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
87 media::SoundsManager* manager = media::SoundsManager::Get(); 88 media::SoundsManager* manager = media::SoundsManager::Get();
88 manager->Initialize(SOUND_OBJECT_DELETE, 89 manager->Initialize(SOUND_OBJECT_DELETE,
89 bundle.GetRawDataResource(IDR_SOUND_OBJECT_DELETE_WAV)); 90 bundle.GetRawDataResource(IDR_SOUND_OBJECT_DELETE_WAV));
90 manager->Initialize(SOUND_CAMERA_SNAP, 91 manager->Initialize(SOUND_CAMERA_SNAP,
91 bundle.GetRawDataResource(IDR_SOUND_CAMERA_SNAP_WAV)); 92 bundle.GetRawDataResource(IDR_SOUND_CAMERA_SNAP_WAV));
92 } 93 }
93 94
94 ChangePictureHandler::~ChangePictureHandler() { 95 ChangePictureHandler::~ChangePictureHandler() {
(...skipping 14 matching lines...) Expand all
109 web_ui()->RegisterMessageCallback( 110 web_ui()->RegisterMessageCallback(
110 "onChangePicturePageInitialized", 111 "onChangePicturePageInitialized",
111 base::Bind(&ChangePictureHandler::HandlePageInitialized, 112 base::Bind(&ChangePictureHandler::HandlePageInitialized,
112 base::Unretained(this))); 113 base::Unretained(this)));
113 web_ui()->RegisterMessageCallback( 114 web_ui()->RegisterMessageCallback(
114 "selectImage", base::Bind(&ChangePictureHandler::HandleSelectImage, 115 "selectImage", base::Bind(&ChangePictureHandler::HandleSelectImage,
115 base::Unretained(this))); 116 base::Unretained(this)));
116 } 117 }
117 118
118 void ChangePictureHandler::OnJavascriptAllowed() { 119 void ChangePictureHandler::OnJavascriptAllowed() {
119 user_manager::UserManager::Get()->AddObserver(this); 120 user_manager_observer_.Add(user_manager::UserManager::Get());
120
121 camera_observer_.Add(CameraPresenceNotifier::GetInstance()); 121 camera_observer_.Add(CameraPresenceNotifier::GetInstance());
122 } 122 }
123 123
124 void ChangePictureHandler::OnJavascriptDisallowed() { 124 void ChangePictureHandler::OnJavascriptDisallowed() {
125 user_manager::UserManager::Get()->RemoveObserver(this); 125 user_manager_observer_.Remove(user_manager::UserManager::Get());
126
127 camera_observer_.Remove(CameraPresenceNotifier::GetInstance()); 126 camera_observer_.Remove(CameraPresenceNotifier::GetInstance());
128 } 127 }
129 128
130 void ChangePictureHandler::SendDefaultImages() { 129 void ChangePictureHandler::SendDefaultImages() {
131 base::ListValue image_urls; 130 base::ListValue image_urls;
132 for (int i = default_user_image::kFirstDefaultImageIndex; 131 for (int i = default_user_image::kFirstDefaultImageIndex;
133 i < default_user_image::kDefaultImagesCount; ++i) { 132 i < default_user_image::kDefaultImagesCount; ++i) {
134 std::unique_ptr<base::DictionaryValue> image_data( 133 std::unique_ptr<base::DictionaryValue> image_data(
135 new base::DictionaryValue); 134 new base::DictionaryValue);
136 image_data->SetString("url", default_user_image::GetDefaultImageUrl(i)); 135 image_data->SetString("url", default_user_image::GetDefaultImageUrl(i));
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 Profile* profile = Profile::FromWebUI(web_ui()); 409 Profile* profile = Profile::FromWebUI(web_ui());
411 const user_manager::User* user = 410 const user_manager::User* user =
412 ProfileHelper::Get()->GetUserByProfile(profile); 411 ProfileHelper::Get()->GetUserByProfile(profile);
413 if (!user) 412 if (!user)
414 return user_manager::UserManager::Get()->GetActiveUser(); 413 return user_manager::UserManager::Get()->GetActiveUser();
415 return user; 414 return user;
416 } 415 }
417 416
418 } // namespace settings 417 } // namespace settings
419 } // namespace chromeos 418 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698