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

Side by Side Diff: chrome/utility/media_galleries/image_metadata_extractor.cc

Issue 1548153002: Switch to standard integer types in chrome/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/media_galleries/image_metadata_extractor.h" 5 #include "chrome/utility/media_galleries/image_metadata_extractor.h"
6 6
7 extern "C" { 7 extern "C" {
8 #include <libexif/exif-data.h> 8 #include <libexif/exif-data.h>
9 #include <libexif/exif-loader.h> 9 #include <libexif/exif-loader.h>
10 } // extern "C" 10 } // extern "C"
11 #include <stddef.h>
12 #include <stdint.h>
11 13
12 #include "base/bind.h" 14 #include "base/bind.h"
13 #include "base/callback.h" 15 #include "base/callback.h"
14 #include "base/files/file_path.h" 16 #include "base/files/file_path.h"
15 #include "base/lazy_instance.h" 17 #include "base/lazy_instance.h"
18 #include "base/macros.h"
16 #include "base/memory/ref_counted.h" 19 #include "base/memory/ref_counted.h"
17 #include "base/numerics/safe_conversions.h" 20 #include "base/numerics/safe_conversions.h"
18 #include "base/path_service.h" 21 #include "base/path_service.h"
19 #include "base/scoped_native_library.h" 22 #include "base/scoped_native_library.h"
20 #include "base/strings/string_number_conversions.h" 23 #include "base/strings/string_number_conversions.h"
24 #include "build/build_config.h"
21 #include "content/public/common/content_paths.h" 25 #include "content/public/common/content_paths.h"
22 #include "media/base/data_source.h" 26 #include "media/base/data_source.h"
23 #include "net/base/io_buffer.h" 27 #include "net/base/io_buffer.h"
24 28
25 namespace metadata { 29 namespace metadata {
26 30
27 namespace { 31 namespace {
28 32
29 const size_t kMaxBufferSize = 50 * 1024 * 1024; // Arbitrary maximum of 50MB. 33 const size_t kMaxBufferSize = 50 * 1024 * 1024; // Arbitrary maximum of 50MB.
30 34
31 typedef base::Callback<void(const scoped_refptr<net::DrainableIOBuffer>&)> 35 typedef base::Callback<void(const scoped_refptr<net::DrainableIOBuffer>&)>
32 GotImageCallback; 36 GotImageCallback;
33 37
34 void FinishGetImageBytes( 38 void FinishGetImageBytes(
35 const scoped_refptr<net::DrainableIOBuffer>& buffer, 39 const scoped_refptr<net::DrainableIOBuffer>& buffer,
36 media::DataSource* source, 40 media::DataSource* source,
37 const GotImageCallback& callback, 41 const GotImageCallback& callback,
38 int bytes_read) { 42 int bytes_read) {
39 if (bytes_read == media::DataSource::kReadError) { 43 if (bytes_read == media::DataSource::kReadError) {
40 callback.Run(NULL); 44 callback.Run(NULL);
41 return; 45 return;
42 } 46 }
43 47
44 buffer->DidConsume(bytes_read); 48 buffer->DidConsume(bytes_read);
45 // Didn't get the whole file. Continue reading to get the rest. 49 // Didn't get the whole file. Continue reading to get the rest.
46 if (buffer->BytesRemaining() > 0) { 50 if (buffer->BytesRemaining() > 0) {
47 source->Read( 51 source->Read(0, buffer->BytesRemaining(),
48 0, 52 reinterpret_cast<uint8_t*>(buffer->data()),
49 buffer->BytesRemaining(), 53 base::Bind(&FinishGetImageBytes, buffer,
50 reinterpret_cast<uint8*>(buffer->data()), 54 base::Unretained(source), callback));
51 base::Bind(
52 &FinishGetImageBytes, buffer, base::Unretained(source), callback));
53 return; 55 return;
54 } 56 }
55 57
56 buffer->SetOffset(0); 58 buffer->SetOffset(0);
57 callback.Run(buffer); 59 callback.Run(buffer);
58 } 60 }
59 61
60 void GetImageBytes( 62 void GetImageBytes(
61 media::DataSource* source, 63 media::DataSource* source,
62 const GotImageCallback& callback) { 64 const GotImageCallback& callback) {
63 int64 size64 = 0; 65 int64_t size64 = 0;
64 if (!source->GetSize(&size64) || 66 if (!source->GetSize(&size64) ||
65 base::saturated_cast<size_t>(size64) > kMaxBufferSize) { 67 base::saturated_cast<size_t>(size64) > kMaxBufferSize) {
66 return callback.Run(NULL); 68 return callback.Run(NULL);
67 } 69 }
68 int size = base::checked_cast<int>(size64); 70 int size = base::checked_cast<int>(size64);
69 71
70 scoped_refptr<net::DrainableIOBuffer> buffer( 72 scoped_refptr<net::DrainableIOBuffer> buffer(
71 new net::DrainableIOBuffer(new net::IOBuffer(size), size)); 73 new net::DrainableIOBuffer(new net::IOBuffer(size), size));
72 source->Read(0, buffer->BytesRemaining(), 74 source->Read(0, buffer->BytesRemaining(),
73 reinterpret_cast<uint8*>(buffer->data()), 75 reinterpret_cast<uint8_t*>(buffer->data()),
74 base::Bind(&FinishGetImageBytes, buffer, 76 base::Bind(&FinishGetImageBytes, buffer,
75 base::Unretained(source), callback)); 77 base::Unretained(source), callback));
76 } 78 }
77 79
78 class ExifFunctions { 80 class ExifFunctions {
79 public: 81 public:
80 ExifFunctions() : exif_loader_write_func_(NULL), 82 ExifFunctions() : exif_loader_write_func_(NULL),
81 exif_loader_new_func_(NULL), 83 exif_loader_new_func_(NULL),
82 exif_loader_unref_func_(NULL), 84 exif_loader_unref_func_(NULL),
83 exif_loader_get_data_func_(NULL), 85 exif_loader_get_data_func_(NULL),
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 &iso_equivalent_); 456 &iso_equivalent_);
455 457
456 g_exif_lib.Get().ExifDataFree(data); 458 g_exif_lib.Get().ExifDataFree(data);
457 459
458 extracted_ = true; 460 extracted_ = true;
459 461
460 callback.Run(true); 462 callback.Run(true);
461 } 463 }
462 464
463 } // namespace metadata 465 } // namespace metadata
OLDNEW
« no previous file with comments | « chrome/utility/media_galleries/image_metadata_extractor.h ('k') | chrome/utility/media_galleries/ipc_data_source.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698