| 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 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 decoded_image.reset(); | 201 decoded_image.reset(); |
| 202 LOG(ERROR) << "Decoded image too large for IPC message"; | 202 LOG(ERROR) << "Decoded image too large for IPC message"; |
| 203 } | 203 } |
| 204 } | 204 } |
| 205 | 205 |
| 206 return decoded_image; | 206 return decoded_image; |
| 207 } | 207 } |
| 208 | 208 |
| 209 // static | 209 // static |
| 210 void ChromeContentUtilityClient::DecodeImageAndSend( | 210 void ChromeContentUtilityClient::DecodeImageAndSend( |
| 211 const std::vector<unsigned char>& encoded_data, bool shrink_to_fit){ | 211 const std::vector<unsigned char>& encoded_data, bool shrink_to_fit, int id){ |
| 212 SkBitmap decoded_image = DecodeImage(encoded_data, shrink_to_fit); | 212 SkBitmap decoded_image = DecodeImage(encoded_data, shrink_to_fit); |
| 213 | 213 |
| 214 if (decoded_image.empty()) { | 214 if (decoded_image.empty()) { |
| 215 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); | 215 Send(new ChromeUtilityHostMsg_DecodeImage_Failed(id)); |
| 216 } else { | 216 } else { |
| 217 Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(decoded_image)); | 217 Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(decoded_image, id)); |
| 218 } | 218 } |
| 219 ReleaseProcessIfNeeded(); | 219 ReleaseProcessIfNeeded(); |
| 220 } | 220 } |
| 221 | 221 |
| 222 void ChromeContentUtilityClient::OnDecodeImage( | 222 void ChromeContentUtilityClient::OnDecodeImage( |
| 223 const std::vector<unsigned char>& encoded_data, bool shrink_to_fit) { | 223 const std::vector<unsigned char>& encoded_data, bool shrink_to_fit, int id){ |
| 224 DecodeImageAndSend(encoded_data, shrink_to_fit); | 224 DecodeImageAndSend(encoded_data, shrink_to_fit, id); |
| 225 } | 225 } |
| 226 | 226 |
| 227 #if defined(OS_CHROMEOS) | 227 #if defined(OS_CHROMEOS) |
| 228 void ChromeContentUtilityClient::OnCreateZipFile( | 228 void ChromeContentUtilityClient::OnCreateZipFile( |
| 229 const base::FilePath& src_dir, | 229 const base::FilePath& src_dir, |
| 230 const std::vector<base::FilePath>& src_relative_paths, | 230 const std::vector<base::FilePath>& src_relative_paths, |
| 231 const base::FileDescriptor& dest_fd) { | 231 const base::FileDescriptor& dest_fd) { |
| 232 // dest_fd should be closed in the function. See ipc/ipc_message_util.h for | 232 // dest_fd should be closed in the function. See ipc/ipc_message_util.h for |
| 233 // details. | 233 // details. |
| 234 base::ScopedFD fd_closer(dest_fd.fd); | 234 base::ScopedFD fd_closer(dest_fd.fd); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 250 | 250 |
| 251 if (succeeded) | 251 if (succeeded) |
| 252 Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded()); | 252 Send(new ChromeUtilityHostMsg_CreateZipFile_Succeeded()); |
| 253 else | 253 else |
| 254 Send(new ChromeUtilityHostMsg_CreateZipFile_Failed()); | 254 Send(new ChromeUtilityHostMsg_CreateZipFile_Failed()); |
| 255 ReleaseProcessIfNeeded(); | 255 ReleaseProcessIfNeeded(); |
| 256 } | 256 } |
| 257 #endif // defined(OS_CHROMEOS) | 257 #endif // defined(OS_CHROMEOS) |
| 258 | 258 |
| 259 void ChromeContentUtilityClient::OnRobustJPEGDecodeImage( | 259 void ChromeContentUtilityClient::OnRobustJPEGDecodeImage( |
| 260 const std::vector<unsigned char>& encoded_data) { | 260 const std::vector<unsigned char>& encoded_data, int id) { |
| 261 // Our robust jpeg decoding is using IJG libjpeg. | 261 // Our robust jpeg decoding is using IJG libjpeg. |
| 262 if (gfx::JPEGCodec::JpegLibraryVariant() == gfx::JPEGCodec::IJG_LIBJPEG && | 262 if (gfx::JPEGCodec::JpegLibraryVariant() == gfx::JPEGCodec::IJG_LIBJPEG && |
| 263 !encoded_data.empty()) { | 263 !encoded_data.empty()) { |
| 264 scoped_ptr<SkBitmap> decoded_image(gfx::JPEGCodec::Decode( | 264 scoped_ptr<SkBitmap> decoded_image(gfx::JPEGCodec::Decode( |
| 265 &encoded_data[0], encoded_data.size())); | 265 &encoded_data[0], encoded_data.size())); |
| 266 if (!decoded_image.get() || decoded_image->empty()) { | 266 if (!decoded_image.get() || decoded_image->empty()) { |
| 267 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); | 267 Send(new ChromeUtilityHostMsg_DecodeImage_Failed(id)); |
| 268 } else { | 268 } else { |
| 269 Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(*decoded_image)); | 269 Send(new ChromeUtilityHostMsg_DecodeImage_Succeeded(*decoded_image, id)); |
| 270 } | 270 } |
| 271 } else { | 271 } else { |
| 272 Send(new ChromeUtilityHostMsg_DecodeImage_Failed()); | 272 Send(new ChromeUtilityHostMsg_DecodeImage_Failed(id)); |
| 273 } | 273 } |
| 274 ReleaseProcessIfNeeded(); | 274 ReleaseProcessIfNeeded(); |
| 275 } | 275 } |
| 276 | 276 |
| 277 void ChromeContentUtilityClient::OnParseJSON(const std::string& json) { | 277 void ChromeContentUtilityClient::OnParseJSON(const std::string& json) { |
| 278 int error_code; | 278 int error_code; |
| 279 std::string error; | 279 std::string error; |
| 280 base::Value* value = base::JSONReader::ReadAndReturnError( | 280 base::Value* value = base::JSONReader::ReadAndReturnError( |
| 281 json, base::JSON_PARSE_RFC, &error_code, &error); | 281 json, base::JSON_PARSE_RFC, &error_code, &error); |
| 282 if (value) { | 282 if (value) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 const std::string& mime_type, int64 total_size, bool get_attached_images) { | 344 const std::string& mime_type, int64 total_size, bool get_attached_images) { |
| 345 // Only one IPCDataSource may be created and added to the list of handlers. | 345 // Only one IPCDataSource may be created and added to the list of handlers. |
| 346 metadata::IPCDataSource* source = new metadata::IPCDataSource(total_size); | 346 metadata::IPCDataSource* source = new metadata::IPCDataSource(total_size); |
| 347 handlers_.push_back(source); | 347 handlers_.push_back(source); |
| 348 | 348 |
| 349 metadata::MediaMetadataParser* parser = new metadata::MediaMetadataParser( | 349 metadata::MediaMetadataParser* parser = new metadata::MediaMetadataParser( |
| 350 source, mime_type, get_attached_images); | 350 source, mime_type, get_attached_images); |
| 351 parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser))); | 351 parser->Start(base::Bind(&FinishParseMediaMetadata, base::Owned(parser))); |
| 352 } | 352 } |
| 353 #endif | 353 #endif |
| OLD | NEW |