| Index: chrome/utility/media_galleries/image_metadata_extractor.cc
|
| diff --git a/chrome/utility/media_galleries/image_metadata_extractor.cc b/chrome/utility/media_galleries/image_metadata_extractor.cc
|
| index 2b5fbfb684ae15bcfc65d8deb60ba0020c3213da..6e537e35ce1f22fa5f0db6301cfe27d1e7e1421f 100644
|
| --- a/chrome/utility/media_galleries/image_metadata_extractor.cc
|
| +++ b/chrome/utility/media_galleries/image_metadata_extractor.cc
|
| @@ -28,10 +28,13 @@ namespace {
|
|
|
| const size_t kMaxBufferSize = 50 * 1024 * 1024; // Arbitrary maximum of 50MB.
|
|
|
| +typedef base::Callback<void(const scoped_refptr<net::DrainableIOBuffer>&)>
|
| + GotImageCallback;
|
| +
|
| void FinishGetImageBytes(
|
| - net::DrainableIOBuffer* buffer,
|
| + const scoped_refptr<net::DrainableIOBuffer>& buffer,
|
| media::DataSource* source,
|
| - const base::Callback<void(net::DrainableIOBuffer*)>& callback,
|
| + const GotImageCallback& callback,
|
| int bytes_read) {
|
| if (bytes_read == media::DataSource::kReadError) {
|
| callback.Run(NULL);
|
| @@ -41,20 +44,22 @@ void FinishGetImageBytes(
|
| buffer->DidConsume(bytes_read);
|
| // Didn't get the whole file. Continue reading to get the rest.
|
| if (buffer->BytesRemaining() > 0) {
|
| - source->Read(0, buffer->BytesRemaining(),
|
| - reinterpret_cast<uint8*>(buffer->data()),
|
| - base::Bind(&FinishGetImageBytes, make_scoped_refptr(buffer),
|
| - base::Unretained(source), callback));
|
| + source->Read(
|
| + 0,
|
| + buffer->BytesRemaining(),
|
| + reinterpret_cast<uint8*>(buffer->data()),
|
| + base::Bind(
|
| + &FinishGetImageBytes, buffer, base::Unretained(source), callback));
|
| return;
|
| }
|
|
|
| buffer->SetOffset(0);
|
| - callback.Run(make_scoped_refptr(buffer));
|
| + callback.Run(buffer);
|
| }
|
|
|
| void GetImageBytes(
|
| media::DataSource* source,
|
| - const base::Callback<void(net::DrainableIOBuffer*)>& callback) {
|
| + const GotImageCallback& callback) {
|
| int64 size64 = 0;
|
| if (!source->GetSize(&size64) ||
|
| base::saturated_cast<size_t>(size64) > kMaxBufferSize) {
|
| @@ -383,8 +388,9 @@ int ImageMetadataExtractor::iso_equivalent() const {
|
| }
|
|
|
| void ImageMetadataExtractor::FinishExtraction(
|
| - const DoneCallback& callback, net::DrainableIOBuffer* buffer) {
|
| - if (!buffer) {
|
| + const DoneCallback& callback,
|
| + const scoped_refptr<net::DrainableIOBuffer>& buffer) {
|
| + if (!buffer.get()) {
|
| callback.Run(false);
|
| return;
|
| }
|
|
|