| Index: chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc
|
| diff --git a/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc b/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc
|
| index e989d277320cc6fa501d9e74346637b49c19d8e9..46b0edff59d2879bac447d8f482b7a5d1a38e64a 100644
|
| --- a/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc
|
| +++ b/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/location.h"
|
| #include "base/strings/string16.h"
|
| #include "base/task/cancelable_task_tracker.h"
|
| +#include "chrome/browser/android/shortcut_helper.h"
|
| #include "chrome/browser/favicon/favicon_service_factory.h"
|
| #include "chrome/browser/manifest/manifest_icon_downloader.h"
|
| #include "chrome/browser/manifest/manifest_icon_selector.h"
|
| @@ -31,12 +32,10 @@
|
|
|
| using content::Manifest;
|
|
|
| -// Android's preferred icon size in DP is 48, as defined in
|
| -// http://developer.android.com/design/style/iconography.html
|
| -const int AddToHomescreenDataFetcher::kPreferredIconSizeInDp = 48;
|
| -
|
| AddToHomescreenDataFetcher::AddToHomescreenDataFetcher(
|
| content::WebContents* web_contents,
|
| + int ideal_splash_image_size_in_dp,
|
| + int ideal_icon_size_in_dp,
|
| Observer* observer)
|
| : WebContentsObserver(web_contents),
|
| weak_observer_(observer),
|
| @@ -46,9 +45,8 @@ AddToHomescreenDataFetcher::AddToHomescreenDataFetcher(
|
| icon_timeout_timer_(false, false),
|
| shortcut_info_(dom_distiller::url_utils::GetOriginalUrlFromDistillerUrl(
|
| web_contents->GetURL())),
|
| - preferred_icon_size_in_px_(kPreferredIconSizeInDp *
|
| - gfx::Screen::GetScreenFor(web_contents->GetNativeView())->
|
| - GetPrimaryDisplay().device_scale_factor()) {
|
| + ideal_splash_image_size_in_dp_(ideal_splash_image_size_in_dp),
|
| + ideal_icon_size_in_dp_(ideal_icon_size_in_dp) {
|
| // Send a message to the renderer to retrieve information about the page.
|
| is_waiting_for_web_application_info_ = true;
|
| Send(new ChromeViewMsg_GetWebApplicationInfo(routing_id()));
|
| @@ -110,7 +108,7 @@ void AddToHomescreenDataFetcher::OnDidGetManifest(
|
|
|
| GURL icon_src = ManifestIconSelector::FindBestMatchingIcon(
|
| manifest.icons,
|
| - kPreferredIconSizeInDp,
|
| + ideal_icon_size_in_dp_,
|
| gfx::Screen::GetScreenFor(web_contents()->GetNativeView()));
|
|
|
| // If fetching the Manifest icon fails, fallback to the best favicon
|
| @@ -118,12 +116,18 @@ void AddToHomescreenDataFetcher::OnDidGetManifest(
|
| if (!ManifestIconDownloader::Download(
|
| web_contents(),
|
| icon_src,
|
| - kPreferredIconSizeInDp,
|
| + ideal_icon_size_in_dp_,
|
| base::Bind(&AddToHomescreenDataFetcher::OnManifestIconFetched,
|
| this))) {
|
| FetchFavicon();
|
| }
|
|
|
| + // Save the splash screen URL for the later download.
|
| + splash_screen_url_ = ManifestIconSelector::FindBestMatchingIcon(
|
| + manifest.icons,
|
| + ideal_splash_image_size_in_dp_,
|
| + gfx::Screen::GetScreenFor(web_contents()->GetNativeView()));
|
| +
|
| weak_observer_->OnUserTitleAvailable(shortcut_info_.user_title);
|
|
|
| // Kick off a timeout for downloading the icon. If an icon isn't set within
|
| @@ -155,6 +159,15 @@ AddToHomescreenDataFetcher::~AddToHomescreenDataFetcher() {
|
| DCHECK(!weak_observer_);
|
| }
|
|
|
| +void AddToHomescreenDataFetcher::FetchSplashScreenImage(
|
| + const std::string& webapp_id) {
|
| + ShortcutHelper::FetchSplashScreenImage(
|
| + web_contents(),
|
| + splash_screen_url_,
|
| + ideal_splash_image_size_in_dp_,
|
| + webapp_id);
|
| +}
|
| +
|
| void AddToHomescreenDataFetcher::FetchFavicon() {
|
| if (!web_contents() || !weak_observer_) return;
|
|
|
| @@ -174,7 +187,10 @@ void AddToHomescreenDataFetcher::FetchFavicon() {
|
|
|
| // Using favicon if its size is not smaller than platform required size,
|
| // otherwise using the largest icon among all avaliable icons.
|
| - int threshold_to_get_any_largest_icon = preferred_icon_size_in_px_ - 1;
|
| + int ideal_icon_size_in_px = ideal_icon_size_in_dp_ *
|
| + gfx::Screen::GetScreenFor(web_contents()->GetNativeView())->
|
| + GetPrimaryDisplay().device_scale_factor();
|
| + int threshold_to_get_any_largest_icon = ideal_icon_size_in_px - 1;
|
| favicon_service->GetLargestRawFaviconForPageURL(
|
| shortcut_info_.url,
|
| icon_types,
|
|
|