OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/ui/app_list/arc/arc_app_icon.h" | 5 #include "chrome/browser/ui/app_list/arc/arc_app_icon.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
11 #include "base/files/file_util.h" | 11 #include "base/files/file_util.h" |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/memory/ptr_util.h" |
13 #include "base/task_runner_util.h" | 14 #include "base/task_runner_util.h" |
14 #include "chrome/browser/image_decoder.h" | 15 #include "chrome/browser/image_decoder.h" |
15 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" | 16 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" |
16 #include "content/public/browser/browser_thread.h" | 17 #include "content/public/browser/browser_thread.h" |
17 #include "extensions/grit/extensions_browser_resources.h" | 18 #include "extensions/grit/extensions_browser_resources.h" |
18 #include "ui/base/resource/resource_bundle.h" | 19 #include "ui/base/resource/resource_bundle.h" |
19 #include "ui/gfx/codec/png_codec.h" | 20 #include "ui/gfx/codec/png_codec.h" |
20 #include "ui/gfx/geometry/size.h" | 21 #include "ui/gfx/geometry/size.h" |
21 #include "ui/gfx/image/image_skia_operations.h" | 22 #include "ui/gfx/image/image_skia_operations.h" |
22 #include "ui/gfx/image/image_skia_source.h" | 23 #include "ui/gfx/image/image_skia_source.h" |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 214 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
214 ArcAppListPrefs* prefs = ArcAppListPrefs::Get(context_); | 215 ArcAppListPrefs* prefs = ArcAppListPrefs::Get(context_); |
215 | 216 |
216 // ArcAppListPrefs notifies ArcAppModelBuilder via Observer when icon is ready | 217 // ArcAppListPrefs notifies ArcAppModelBuilder via Observer when icon is ready |
217 // and ArcAppModelBuilder refreshes the icon of the corresponding item by | 218 // and ArcAppModelBuilder refreshes the icon of the corresponding item by |
218 // calling LoadScaleFactor. | 219 // calling LoadScaleFactor. |
219 prefs->RequestIcon(app_id_, scale_factor); | 220 prefs->RequestIcon(app_id_, scale_factor); |
220 } | 221 } |
221 | 222 |
222 // static | 223 // static |
223 scoped_ptr<ArcAppIcon::ReadResult> ArcAppIcon::ReadOnFileThread( | 224 std::unique_ptr<ArcAppIcon::ReadResult> ArcAppIcon::ReadOnFileThread( |
224 ui::ScaleFactor scale_factor, | 225 ui::ScaleFactor scale_factor, |
225 const base::FilePath& path) { | 226 const base::FilePath& path) { |
226 DCHECK(content::BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); | 227 DCHECK(content::BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); |
227 DCHECK(!path.empty()); | 228 DCHECK(!path.empty()); |
228 | 229 |
229 if (!base::PathExists(path)) | 230 if (!base::PathExists(path)) |
230 return make_scoped_ptr(new ArcAppIcon::ReadResult( | 231 return base::WrapUnique(new ArcAppIcon::ReadResult( |
231 ArcAppIcon::ReadResult::Status::REQUEST_TO_INSTALL, scale_factor)); | 232 ArcAppIcon::ReadResult::Status::REQUEST_TO_INSTALL, scale_factor)); |
232 | 233 |
233 // Read the file from disk. | 234 // Read the file from disk. |
234 std::string unsafe_icon_data; | 235 std::string unsafe_icon_data; |
235 if (!base::ReadFileToString(path, &unsafe_icon_data)) { | 236 if (!base::ReadFileToString(path, &unsafe_icon_data)) { |
236 VLOG(2) << "Failed to read an ARC icon from file " << path.MaybeAsASCII(); | 237 VLOG(2) << "Failed to read an ARC icon from file " << path.MaybeAsASCII(); |
237 return make_scoped_ptr(new ArcAppIcon::ReadResult( | 238 return base::WrapUnique(new ArcAppIcon::ReadResult( |
238 ArcAppIcon::ReadResult::Status::FAIL, scale_factor)); | 239 ArcAppIcon::ReadResult::Status::FAIL, scale_factor)); |
239 } | 240 } |
240 | 241 |
241 return make_scoped_ptr(new ArcAppIcon::ReadResult(scale_factor, | 242 return base::WrapUnique( |
242 unsafe_icon_data)); | 243 new ArcAppIcon::ReadResult(scale_factor, unsafe_icon_data)); |
243 } | 244 } |
244 | 245 |
245 void ArcAppIcon::OnIconRead(scoped_ptr<ArcAppIcon::ReadResult> read_result) { | 246 void ArcAppIcon::OnIconRead( |
| 247 std::unique_ptr<ArcAppIcon::ReadResult> read_result) { |
246 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 248 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
247 | 249 |
248 switch (read_result->status) { | 250 switch (read_result->status) { |
249 case ReadResult::Status::OK: | 251 case ReadResult::Status::OK: |
250 decode_requests_.push_back( | 252 decode_requests_.push_back( |
251 new DecodeRequest(weak_ptr_factory_.GetWeakPtr(), | 253 new DecodeRequest(weak_ptr_factory_.GetWeakPtr(), |
252 resource_size_in_dip_, | 254 resource_size_in_dip_, |
253 read_result->scale_factor)); | 255 read_result->scale_factor)); |
254 if (disable_safe_decoding) { | 256 if (disable_safe_decoding) { |
255 SkBitmap bitmap; | 257 SkBitmap bitmap; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 | 299 |
298 void ArcAppIcon::DiscardDecodeRequest(DecodeRequest* request) { | 300 void ArcAppIcon::DiscardDecodeRequest(DecodeRequest* request) { |
299 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 301 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
300 | 302 |
301 ScopedVector<DecodeRequest>::iterator it = std::find(decode_requests_.begin(), | 303 ScopedVector<DecodeRequest>::iterator it = std::find(decode_requests_.begin(), |
302 decode_requests_.end(), | 304 decode_requests_.end(), |
303 request); | 305 request); |
304 CHECK(it != decode_requests_.end()); | 306 CHECK(it != decode_requests_.end()); |
305 decode_requests_.erase(it); | 307 decode_requests_.erase(it); |
306 } | 308 } |
OLD | NEW |