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 |