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

Side by Side Diff: chrome/utility/chrome_content_utility_client.cc

Issue 931993002: Make image_decoder a Leaky LazyInstance (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Get rid of IDMap Created 5 years, 9 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/utility/chrome_content_utility_client.h" 5 #include "chrome/utility/chrome_content_utility_client.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 decoded_image.reset(); 222 decoded_image.reset();
223 LOG(ERROR) << "Decoded image too large for IPC message"; 223 LOG(ERROR) << "Decoded image too large for IPC message";
224 } 224 }
225 } 225 }
226 226
227 return decoded_image; 227 return decoded_image;
228 } 228 }
229 229
230 // static 230 // static
231 void ChromeContentUtilityClient::DecodeImageAndSend( 231 void ChromeContentUtilityClient::DecodeImageAndSend(
232 const std::vector<unsigned char>& encoded_data, bool shrink_to_fit){ 232 const std::vector<unsigned char>& encoded_data, bool shrink_to_fit, int id){
dcheng 2015/03/23 11:52:09 Nit: space between ) and {.
Theresa 2015/03/23 17:33:11 Done.
233 SkBitmap decoded_image = DecodeImage(encoded_data, shrink_to_fit); 233 SkBitmap decoded_image = DecodeImage(encoded_data, shrink_to_fit);
234 234
235 if (decoded_image.empty()) { 235 if (decoded_image.empty()) {
236 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); 236 Send(new ChromeUtilityHostMsg_DecodeImage_Failed(id));
237 } else { 237 } else {
238 Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(decoded_image)); 238 Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(decoded_image, id));
239 } 239 }
240 ReleaseProcessIfNeeded(); 240 ReleaseProcessIfNeeded();
241 } 241 }
242 242
243 void ChromeContentUtilityClient::OnDecodeImage( 243 void ChromeContentUtilityClient::OnDecodeImage(
244 const std::vector<unsigned char>& encoded_data, bool shrink_to_fit) { 244 const std::vector<unsigned char>& encoded_data, bool shrink_to_fit, int id){
dcheng 2015/03/23 11:52:09 Ditto.
Theresa 2015/03/23 17:33:10 Done.
Theresa 2015/03/23 17:33:11 Done.
245 DecodeImageAndSend(encoded_data, shrink_to_fit); 245 DecodeImageAndSend(encoded_data, shrink_to_fit, id);
246 } 246 }
247 247
248 #if defined(OS_CHROMEOS) 248 #if defined(OS_CHROMEOS)
249 void ChromeContentUtilityClient::OnCreateZipFile( 249 void ChromeContentUtilityClient::OnCreateZipFile(
250 const base::FilePath& src_dir, 250 const base::FilePath& src_dir,
251 const std::vector<base::FilePath>& src_relative_paths, 251 const std::vector<base::FilePath>& src_relative_paths,
252 const base::FileDescriptor& dest_fd) { 252 const base::FileDescriptor& dest_fd) {
253 // dest_fd should be closed in the function. See ipc/ipc_message_util.h for 253 // dest_fd should be closed in the function. See ipc/ipc_message_util.h for
254 // details. 254 // details.
255 base::ScopedFD fd_closer(dest_fd.fd); 255 base::ScopedFD fd_closer(dest_fd.fd);
(...skipping 15 matching lines...) Expand all
271 271
272 if (succeeded) 272 if (succeeded)
273 Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded()); 273 Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded());
274 else 274 else
275 Send(new ChromeUtilityHostMsg_CreateZipFile_Failed()); 275 Send(new ChromeUtilityHostMsg_CreateZipFile_Failed());
276 ReleaseProcessIfNeeded(); 276 ReleaseProcessIfNeeded();
277 } 277 }
278 #endif // defined(OS_CHROMEOS) 278 #endif // defined(OS_CHROMEOS)
279 279
280 void ChromeContentUtilityClient::OnRobustJPEGDecodeImage( 280 void ChromeContentUtilityClient::OnRobustJPEGDecodeImage(
281 const std::vector<unsigned char>& encoded_data) { 281 const std::vector<unsigned char>& encoded_data, int id) {
282 // Our robust jpeg decoding is using IJG libjpeg. 282 // Our robust jpeg decoding is using IJG libjpeg.
283 if (gfx::JPEGCodec::JpegLibraryVariant() == gfx::JPEGCodec::IJG_LIBJPEG && 283 if (gfx::JPEGCodec::JpegLibraryVariant() == gfx::JPEGCodec::IJG_LIBJPEG &&
284 !encoded_data.empty()) { 284 !encoded_data.empty()) {
285 scoped_ptr<SkBitmap> decoded_image(gfx::JPEGCodec::Decode( 285 scoped_ptr<SkBitmap> decoded_image(gfx::JPEGCodec::Decode(
286 &encoded_data[0], encoded_data.size())); 286 &encoded_data[0], encoded_data.size()));
287 if (!decoded_image.get() || decoded_image->empty()) { 287 if (!decoded_image.get() || decoded_image->empty()) {
288 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); 288 Send(new ChromeUtilityHostMsg_DecodeImage_Failed(id));
289 } else { 289 } else {
290 Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(*decoded_image)); 290 Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(*decoded_image, id));
291 } 291 }
292 } else { 292 } else {
293 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); 293 Send(new ChromeUtilityHostMsg_DecodeImage_Failed(id));
294 } 294 }
295 ReleaseProcessIfNeeded(); 295 ReleaseProcessIfNeeded();
296 } 296 }
297 297
298 void ChromeContentUtilityClient::OnParseJSON(const std::string& json) { 298 void ChromeContentUtilityClient::OnParseJSON(const std::string& json) {
299 int error_code; 299 int error_code;
300 std::string error; 300 std::string error;
301 base::Value* value = base::JSONReader::ReadAndReturnError( 301 base::Value* value = base::JSONReader::ReadAndReturnError(
302 json, base::JSON_PARSE_RFC, &error_code, &error); 302 json, base::JSON_PARSE_RFC, &error_code, &error);
303 if (value) { 303 if (value) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 const std::string& mime_type, int64 total_size, bool get_attached_images) { 365 const std::string& mime_type, int64 total_size, bool get_attached_images) {
366 // Only one IPCDataSource may be created and added to the list of handlers. 366 // Only one IPCDataSource may be created and added to the list of handlers.
367 metadata::IPCDataSource* source = new metadata::IPCDataSource(total_size); 367 metadata::IPCDataSource* source = new metadata::IPCDataSource(total_size);
368 handlers_.push_back(source); 368 handlers_.push_back(source);
369 369
370 metadata::MediaMetadataParser* parser = new metadata::MediaMetadataParser( 370 metadata::MediaMetadataParser* parser = new metadata::MediaMetadataParser(
371 source, mime_type, get_attached_images); 371 source, mime_type, get_attached_images);
372 parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser))); 372 parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser)));
373 } 373 }
374 #endif 374 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698