| Index: chrome/browser/image_decoder.cc
|
| diff --git a/chrome/browser/image_decoder.cc b/chrome/browser/image_decoder.cc
|
| index 94b9c0d6b16bf73d69c057bb57418c6553cc7b34..6823dbcfd67f27f5a93af5d87b02e4656898b3d0 100644
|
| --- a/chrome/browser/image_decoder.cc
|
| +++ b/chrome/browser/image_decoder.cc
|
| @@ -16,6 +16,7 @@
|
| #include "services/image_decoder/public/cpp/decode.h"
|
| #include "services/service_manager/public/cpp/connector.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| +#include "ui/gfx/geometry/size.h"
|
|
|
| namespace {
|
|
|
| @@ -58,6 +59,7 @@ void DecodeImage(
|
| std::vector<uint8_t> image_data,
|
| image_decoder::mojom::ImageCodec codec,
|
| bool shrink_to_fit,
|
| + const gfx::Size& desired_image_frame_size,
|
| const image_decoder::mojom::ImageDecoder::DecodeImageCallback& callback,
|
| scoped_refptr<base::SequencedTaskRunner> callback_task_runner) {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
| @@ -68,9 +70,9 @@ void DecodeImage(
|
| BindToBrowserConnector(std::move(connector_request));
|
|
|
| image_decoder::Decode(connector.get(), image_data, codec, shrink_to_fit,
|
| - kMaxImageSizeInBytes,
|
| - base::Bind(&RunDecodeCallbackOnTaskRunner,
|
| - callback, callback_task_runner));
|
| + kMaxImageSizeInBytes, desired_image_frame_size,
|
| + base::Bind(&RunDecodeCallbackOnTaskRunner, callback,
|
| + callback_task_runner));
|
| }
|
|
|
| } // namespace
|
| @@ -100,7 +102,8 @@ ImageDecoder* ImageDecoder::GetInstance() {
|
| // static
|
| void ImageDecoder::Start(ImageRequest* image_request,
|
| std::vector<uint8_t> image_data) {
|
| - StartWithOptions(image_request, std::move(image_data), DEFAULT_CODEC, false);
|
| + StartWithOptions(image_request, std::move(image_data), DEFAULT_CODEC, false,
|
| + gfx::Size());
|
| }
|
|
|
| // static
|
| @@ -114,9 +117,11 @@ void ImageDecoder::Start(ImageRequest* image_request,
|
| void ImageDecoder::StartWithOptions(ImageRequest* image_request,
|
| std::vector<uint8_t> image_data,
|
| ImageCodec image_codec,
|
| - bool shrink_to_fit) {
|
| + bool shrink_to_fit,
|
| + const gfx::Size& desired_image_frame_size) {
|
| ImageDecoder::GetInstance()->StartWithOptionsImpl(
|
| - image_request, std::move(image_data), image_codec, shrink_to_fit);
|
| + image_request, std::move(image_data), image_codec, shrink_to_fit,
|
| + desired_image_frame_size);
|
| }
|
|
|
| // static
|
| @@ -126,15 +131,17 @@ void ImageDecoder::StartWithOptions(ImageRequest* image_request,
|
| bool shrink_to_fit) {
|
| StartWithOptions(image_request,
|
| std::vector<uint8_t>(image_data.begin(), image_data.end()),
|
| - image_codec, shrink_to_fit);
|
| + image_codec, shrink_to_fit, gfx::Size());
|
| }
|
|
|
| ImageDecoder::ImageDecoder() : image_request_id_counter_(0) {}
|
|
|
| -void ImageDecoder::StartWithOptionsImpl(ImageRequest* image_request,
|
| - std::vector<uint8_t> image_data,
|
| - ImageCodec image_codec,
|
| - bool shrink_to_fit) {
|
| +void ImageDecoder::StartWithOptionsImpl(
|
| + ImageRequest* image_request,
|
| + std::vector<uint8_t> image_data,
|
| + ImageCodec image_codec,
|
| + bool shrink_to_fit,
|
| + const gfx::Size& desired_image_frame_size) {
|
| DCHECK(image_request);
|
| DCHECK(image_request->task_runner());
|
|
|
| @@ -167,7 +174,8 @@ void ImageDecoder::StartWithOptionsImpl(ImageRequest* image_request,
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::IO, FROM_HERE,
|
| base::Bind(&DecodeImage, base::Passed(&image_data), codec, shrink_to_fit,
|
| - callback, make_scoped_refptr(image_request->task_runner())));
|
| + desired_image_frame_size, callback,
|
| + make_scoped_refptr(image_request->task_runner())));
|
| }
|
|
|
| // static
|
|
|