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 |