Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |