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

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: Rename instance_ to image_decoder_instance_ for mac linker 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 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698