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/android/webapps/add_to_homescreen_data_fetcher.h" | 5 #include "chrome/browser/android/webapps/add_to_homescreen_data_fetcher.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 background_task_runner_.get(), FROM_HERE, | 290 background_task_runner_.get(), FROM_HERE, |
291 base::Bind(&AddToHomescreenDataFetcher:: | 291 base::Bind(&AddToHomescreenDataFetcher:: |
292 CreateLauncherIconFromFaviconInBackground, | 292 CreateLauncherIconFromFaviconInBackground, |
293 base::Unretained(this), bitmap_result), | 293 base::Unretained(this), bitmap_result), |
294 base::Bind(&AddToHomescreenDataFetcher::NotifyObserver, | 294 base::Bind(&AddToHomescreenDataFetcher::NotifyObserver, |
295 base::RetainedRef(this))); | 295 base::RetainedRef(this))); |
296 } | 296 } |
297 | 297 |
298 SkBitmap AddToHomescreenDataFetcher::CreateLauncherIconFromFaviconInBackground( | 298 SkBitmap AddToHomescreenDataFetcher::CreateLauncherIconFromFaviconInBackground( |
299 const favicon_base::FaviconRawBitmapResult& bitmap_result) { | 299 const favicon_base::FaviconRawBitmapResult& bitmap_result) { |
300 DCHECK(content::BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); | 300 base::ThreadRestrictions::AssertIOAllowed(); |
301 | 301 |
302 SkBitmap raw_icon; | 302 SkBitmap raw_icon; |
303 if (bitmap_result.is_valid()) { | 303 if (bitmap_result.is_valid()) { |
304 gfx::PNGCodec::Decode(bitmap_result.bitmap_data->front(), | 304 gfx::PNGCodec::Decode(bitmap_result.bitmap_data->front(), |
305 bitmap_result.bitmap_data->size(), &raw_icon); | 305 bitmap_result.bitmap_data->size(), &raw_icon); |
306 } | 306 } |
307 | 307 |
308 shortcut_info_.best_primary_icon_url = bitmap_result.icon_url; | 308 shortcut_info_.best_primary_icon_url = bitmap_result.icon_url; |
309 return CreateLauncherIconInBackground(raw_icon); | 309 return CreateLauncherIconInBackground(raw_icon); |
310 } | 310 } |
311 | 311 |
312 void AddToHomescreenDataFetcher::CreateLauncherIcon(const SkBitmap& raw_icon) { | 312 void AddToHomescreenDataFetcher::CreateLauncherIcon(const SkBitmap& raw_icon) { |
313 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 313 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
314 base::PostTaskAndReplyWithResult( | 314 base::PostTaskAndReplyWithResult( |
315 background_task_runner_.get(), FROM_HERE, | 315 background_task_runner_.get(), FROM_HERE, |
316 base::Bind(&AddToHomescreenDataFetcher::CreateLauncherIconInBackground, | 316 base::Bind(&AddToHomescreenDataFetcher::CreateLauncherIconInBackground, |
317 base::Unretained(this), raw_icon), | 317 base::Unretained(this), raw_icon), |
318 base::Bind(&AddToHomescreenDataFetcher::NotifyObserver, | 318 base::Bind(&AddToHomescreenDataFetcher::NotifyObserver, |
319 base::RetainedRef(this))); | 319 base::RetainedRef(this))); |
320 } | 320 } |
321 | 321 |
322 SkBitmap AddToHomescreenDataFetcher::CreateLauncherIconInBackground( | 322 SkBitmap AddToHomescreenDataFetcher::CreateLauncherIconInBackground( |
323 const SkBitmap& raw_icon) { | 323 const SkBitmap& raw_icon) { |
324 DCHECK(content::BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); | 324 base::ThreadRestrictions::AssertIOAllowed(); |
325 | 325 |
326 SkBitmap primary_icon; | 326 SkBitmap primary_icon; |
327 bool is_generated = false; | 327 bool is_generated = false; |
328 if (weak_observer_) { | 328 if (weak_observer_) { |
329 primary_icon = weak_observer_->FinalizeLauncherIconInBackground( | 329 primary_icon = weak_observer_->FinalizeLauncherIconInBackground( |
330 raw_icon, shortcut_info_.url, &is_generated); | 330 raw_icon, shortcut_info_.url, &is_generated); |
331 } | 331 } |
332 | 332 |
333 if (is_generated) | 333 if (is_generated) |
334 shortcut_info_.best_primary_icon_url = GURL(); | 334 shortcut_info_.best_primary_icon_url = GURL(); |
335 | 335 |
336 return primary_icon; | 336 return primary_icon; |
337 } | 337 } |
338 | 338 |
339 void AddToHomescreenDataFetcher::NotifyObserver(const SkBitmap& primary_icon) { | 339 void AddToHomescreenDataFetcher::NotifyObserver(const SkBitmap& primary_icon) { |
340 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 340 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
341 if (!web_contents() || !weak_observer_ || is_icon_saved_) | 341 if (!web_contents() || !weak_observer_ || is_icon_saved_) |
342 return; | 342 return; |
343 | 343 |
344 is_icon_saved_ = true; | 344 is_icon_saved_ = true; |
345 primary_icon_ = primary_icon; | 345 primary_icon_ = primary_icon; |
346 is_ready_ = true; | 346 is_ready_ = true; |
347 weak_observer_->OnDataAvailable(shortcut_info_, primary_icon_, badge_icon_); | 347 weak_observer_->OnDataAvailable(shortcut_info_, primary_icon_, badge_icon_); |
348 } | 348 } |
OLD | NEW |