| 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/browser/image_decoder.h" | 5 #include "chrome/browser/image_decoder.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 if (!image.isNull() && !image.empty()) | 33 if (!image.isNull() && !image.empty()) |
| 34 success_callback.Run(image, request_id); | 34 success_callback.Run(image, request_id); |
| 35 else | 35 else |
| 36 fail_callback.Run(request_id); | 36 fail_callback.Run(request_id); |
| 37 } | 37 } |
| 38 | 38 |
| 39 void BindToBrowserConnector(service_manager::mojom::ConnectorRequest request) { | 39 void BindToBrowserConnector(service_manager::mojom::ConnectorRequest request) { |
| 40 if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { | 40 if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { |
| 41 content::BrowserThread::PostTask( | 41 content::BrowserThread::PostTask( |
| 42 content::BrowserThread::UI, FROM_HERE, | 42 content::BrowserThread::UI, FROM_HERE, |
| 43 base::Bind(&BindToBrowserConnector, base::Passed(&request))); | 43 base::BindOnce(&BindToBrowserConnector, base::Passed(&request))); |
| 44 return; | 44 return; |
| 45 } | 45 } |
| 46 | 46 |
| 47 content::ServiceManagerConnection::GetForProcess()->GetConnector() | 47 content::ServiceManagerConnection::GetForProcess()->GetConnector() |
| 48 ->BindConnectorRequest(std::move(request)); | 48 ->BindConnectorRequest(std::move(request)); |
| 49 } | 49 } |
| 50 | 50 |
| 51 void RunDecodeCallbackOnTaskRunner( | 51 void RunDecodeCallbackOnTaskRunner( |
| 52 const data_decoder::mojom::ImageDecoder::DecodeImageCallback& callback, | 52 const data_decoder::mojom::ImageDecoder::DecodeImageCallback& callback, |
| 53 scoped_refptr<base::SequencedTaskRunner> task_runner, | 53 scoped_refptr<base::SequencedTaskRunner> task_runner, |
| 54 const SkBitmap& image) { | 54 const SkBitmap& image) { |
| 55 task_runner->PostTask(FROM_HERE, base::Bind(callback, image)); | 55 task_runner->PostTask(FROM_HERE, base::BindOnce(callback, image)); |
| 56 } | 56 } |
| 57 | 57 |
| 58 void DecodeImage( | 58 void DecodeImage( |
| 59 std::vector<uint8_t> image_data, | 59 std::vector<uint8_t> image_data, |
| 60 data_decoder::mojom::ImageCodec codec, | 60 data_decoder::mojom::ImageCodec codec, |
| 61 bool shrink_to_fit, | 61 bool shrink_to_fit, |
| 62 const gfx::Size& desired_image_frame_size, | 62 const gfx::Size& desired_image_frame_size, |
| 63 const data_decoder::mojom::ImageDecoder::DecodeImageCallback& callback, | 63 const data_decoder::mojom::ImageDecoder::DecodeImageCallback& callback, |
| 64 scoped_refptr<base::SequencedTaskRunner> callback_task_runner) { | 64 scoped_refptr<base::SequencedTaskRunner> callback_task_runner) { |
| 65 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 65 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 base::Bind(&ImageDecoder::OnDecodeImageFailed, base::Unretained(this)), | 166 base::Bind(&ImageDecoder::OnDecodeImageFailed, base::Unretained(this)), |
| 167 base::Bind(&ImageDecoder::OnDecodeImageSucceeded, base::Unretained(this)), | 167 base::Bind(&ImageDecoder::OnDecodeImageSucceeded, base::Unretained(this)), |
| 168 request_id); | 168 request_id); |
| 169 | 169 |
| 170 // NOTE: There exist ImageDecoder consumers which implicitly rely on this | 170 // NOTE: There exist ImageDecoder consumers which implicitly rely on this |
| 171 // operation happening on a thread which always has a ThreadTaskRunnerHandle. | 171 // operation happening on a thread which always has a ThreadTaskRunnerHandle. |
| 172 // We arbitrarily use the IO thread here to match details of the legacy | 172 // We arbitrarily use the IO thread here to match details of the legacy |
| 173 // implementation. | 173 // implementation. |
| 174 content::BrowserThread::PostTask( | 174 content::BrowserThread::PostTask( |
| 175 content::BrowserThread::IO, FROM_HERE, | 175 content::BrowserThread::IO, FROM_HERE, |
| 176 base::Bind(&DecodeImage, base::Passed(&image_data), codec, shrink_to_fit, | 176 base::BindOnce(&DecodeImage, base::Passed(&image_data), codec, |
| 177 desired_image_frame_size, callback, | 177 shrink_to_fit, desired_image_frame_size, callback, |
| 178 make_scoped_refptr(image_request->task_runner()))); | 178 make_scoped_refptr(image_request->task_runner()))); |
| 179 } | 179 } |
| 180 | 180 |
| 181 // static | 181 // static |
| 182 void ImageDecoder::Cancel(ImageRequest* image_request) { | 182 void ImageDecoder::Cancel(ImageRequest* image_request) { |
| 183 DCHECK(image_request); | 183 DCHECK(image_request); |
| 184 ImageDecoder::GetInstance()->CancelImpl(image_request); | 184 ImageDecoder::GetInstance()->CancelImpl(image_request); |
| 185 } | 185 } |
| 186 | 186 |
| 187 void ImageDecoder::CancelImpl(ImageRequest* image_request) { | 187 void ImageDecoder::CancelImpl(ImageRequest* image_request) { |
| 188 base::AutoLock lock(map_lock_); | 188 base::AutoLock lock(map_lock_); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 auto it = image_request_id_map_.find(request_id); | 220 auto it = image_request_id_map_.find(request_id); |
| 221 if (it == image_request_id_map_.end()) | 221 if (it == image_request_id_map_.end()) |
| 222 return; | 222 return; |
| 223 image_request = it->second; | 223 image_request = it->second; |
| 224 image_request_id_map_.erase(it); | 224 image_request_id_map_.erase(it); |
| 225 } | 225 } |
| 226 | 226 |
| 227 DCHECK(image_request->task_runner()->RunsTasksOnCurrentThread()); | 227 DCHECK(image_request->task_runner()->RunsTasksOnCurrentThread()); |
| 228 image_request->OnDecodeImageFailed(); | 228 image_request->OnDecodeImageFailed(); |
| 229 } | 229 } |
| OLD | NEW |