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

Side by Side Diff: chrome/browser/chromeos/login/users/avatar/user_image_loader.cc

Issue 1794323003: Make user_manager::UserImage non-copyable (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: just rebase Created 4 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/chromeos/login/users/avatar/user_image_loader.h" 5 #include "chrome/browser/chromeos/login/users/avatar/user_image_loader.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 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 const SkBitmap& image, 153 const SkBitmap& image,
154 const user_manager::UserImage::Bytes& image_bytes, 154 const user_manager::UserImage::Bytes& image_bytes,
155 bool image_bytes_regenerated) { 155 bool image_bytes_regenerated) {
156 SkBitmap final_image = image; 156 SkBitmap final_image = image;
157 // Make the SkBitmap immutable as we won't modify it. This is important 157 // Make the SkBitmap immutable as we won't modify it. This is important
158 // because otherwise it gets duplicated during painting, wasting memory. 158 // because otherwise it gets duplicated during painting, wasting memory.
159 final_image.setImmutable(); 159 final_image.setImmutable();
160 gfx::ImageSkia final_image_skia = 160 gfx::ImageSkia final_image_skia =
161 gfx::ImageSkia::CreateFrom1xBitmap(final_image); 161 gfx::ImageSkia::CreateFrom1xBitmap(final_image);
162 final_image_skia.MakeThreadSafe(); 162 final_image_skia.MakeThreadSafe();
163 user_manager::UserImage user_image(final_image_skia, image_bytes); 163 scoped_ptr<user_manager::UserImage> user_image(
164 user_image.set_file_path(image_info_.file_path); 164 new user_manager::UserImage(final_image_skia, image_bytes));
165 user_image->set_file_path(image_info_.file_path);
165 if (image_info_.image_codec == ImageDecoder::ROBUST_JPEG_CODEC || 166 if (image_info_.image_codec == ImageDecoder::ROBUST_JPEG_CODEC ||
166 image_bytes_regenerated) 167 image_bytes_regenerated)
167 user_image.MarkAsSafe(); 168 user_image->MarkAsSafe();
168 image_info_.loaded_cb.Run(user_image); 169 image_info_.loaded_cb.Run(std::move(user_image));
169 delete this; 170 delete this;
170 } 171 }
171 172
172 void UserImageRequest::OnDecodeImageFailed() { 173 void UserImageRequest::OnDecodeImageFailed() {
173 image_info_.loaded_cb.Run(user_manager::UserImage()); 174 image_info_.loaded_cb.Run(make_scoped_ptr(new user_manager::UserImage));
174 delete this; 175 delete this;
175 } 176 }
176 177
177 // Starts decoding the image with ImageDecoder for the image |data| if 178 // Starts decoding the image with ImageDecoder for the image |data| if
178 // |data_is_ready| is true. 179 // |data_is_ready| is true.
179 void DecodeImage( 180 void DecodeImage(
180 const ImageInfo& image_info, 181 const ImageInfo& image_info,
181 scoped_refptr<base::SequencedTaskRunner> background_task_runner, 182 scoped_refptr<base::SequencedTaskRunner> background_task_runner,
182 const std::string* data, 183 const std::string* data,
183 bool data_is_ready) { 184 bool data_is_ready) {
184 if (!data_is_ready) { 185 if (!data_is_ready) {
185 base::ThreadTaskRunnerHandle::Get()->PostTask( 186 base::ThreadTaskRunnerHandle::Get()->PostTask(
186 FROM_HERE, base::Bind(image_info.loaded_cb, user_manager::UserImage())); 187 FROM_HERE,
188 base::Bind(image_info.loaded_cb,
189 base::Passed(make_scoped_ptr(new user_manager::UserImage))));
187 return; 190 return;
188 } 191 }
189 192
190 UserImageRequest* image_request = 193 UserImageRequest* image_request =
191 new UserImageRequest(image_info, *data, background_task_runner); 194 new UserImageRequest(image_info, *data, background_task_runner);
192 ImageDecoder::StartWithOptions(image_request, *data, image_info.image_codec, 195 ImageDecoder::StartWithOptions(image_request, *data, image_info.image_codec,
193 false); 196 false);
194 } 197 }
195 198
196 } // namespace 199 } // namespace
(...skipping 19 matching lines...) Expand all
216 ImageDecoder::ImageCodec image_codec, 219 ImageDecoder::ImageCodec image_codec,
217 int pixels_per_side, 220 int pixels_per_side,
218 const LoadedCallback& loaded_cb) { 221 const LoadedCallback& loaded_cb) {
219 DecodeImage( 222 DecodeImage(
220 ImageInfo(base::FilePath(), pixels_per_side, image_codec, loaded_cb), 223 ImageInfo(base::FilePath(), pixels_per_side, image_codec, loaded_cb),
221 background_task_runner, data.get(), true /* data_is_ready */); 224 background_task_runner, data.get(), true /* data_is_ready */);
222 } 225 }
223 226
224 } // namespace user_image_loader 227 } // namespace user_image_loader
225 } // namespace chromeos 228 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698