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 b5a951545af9be41aa2c5886e690c3c99674cf40..b5d440f4260c78cbb75ab83f848154a25c817702 100644 |
--- a/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc |
+++ b/chrome/browser/android/webapps/add_to_homescreen_data_fetcher.cc |
@@ -55,12 +55,12 @@ GURL GetShortcutUrl(content::BrowserContext* browser_context, |
} |
InstallableParams ParamsToPerformInstallableCheck(int ideal_icon_size_in_dp, |
- int minimum_icon_size_in_dp) { |
- // TODO(hanxi): change check_installable to true for WebAPKs. |
+ int minimum_icon_size_in_dp, |
+ bool check_installable) { |
InstallableParams params; |
params.ideal_icon_size_in_dp = ideal_icon_size_in_dp; |
params.minimum_icon_size_in_dp = minimum_icon_size_in_dp; |
- params.check_installable = false; |
+ params.check_installable = check_installable; |
params.fetch_valid_icon = true; |
return params; |
} |
@@ -73,6 +73,7 @@ AddToHomescreenDataFetcher::AddToHomescreenDataFetcher( |
int minimum_icon_size_in_dp, |
int ideal_splash_image_size_in_dp, |
int minimum_splash_image_size_in_dp, |
+ bool check_installable, |
Observer* observer) |
: WebContentsObserver(web_contents), |
weak_observer_(observer), |
@@ -83,6 +84,8 @@ AddToHomescreenDataFetcher::AddToHomescreenDataFetcher( |
minimum_icon_size_in_dp_(minimum_icon_size_in_dp), |
ideal_splash_image_size_in_dp_(ideal_splash_image_size_in_dp), |
minimum_splash_image_size_in_dp_(minimum_splash_image_size_in_dp), |
+ check_installable_(check_installable), |
+ is_waiting_for_installable_check_(check_installable), |
is_waiting_for_web_application_info_(true), |
is_icon_saved_(false), |
is_ready_(false) { |
@@ -148,7 +151,8 @@ void AddToHomescreenDataFetcher::OnDidGetWebApplicationInfo( |
manager->GetData( |
ParamsToPerformInstallableCheck(ideal_icon_size_in_dp_, |
- minimum_icon_size_in_dp_), |
+ minimum_icon_size_in_dp_, |
+ check_installable_), |
base::Bind(&AddToHomescreenDataFetcher::OnDidPerformInstallableCheck, |
this)); |
} |
@@ -158,6 +162,11 @@ void AddToHomescreenDataFetcher::OnDidPerformInstallableCheck( |
if (!web_contents() || !weak_observer_) |
return; |
+ if (check_installable_) { |
+ is_waiting_for_installable_check_ = false; |
+ weak_observer_->OnDidDetermineWebApkCompatibility(data.is_installable); |
+ } |
+ |
if (!data.manifest.IsEmpty()) { |
content::RecordAction( |
base::UserMetricsAction("webapps.AddShortcut.Manifest")); |
@@ -173,8 +182,6 @@ void AddToHomescreenDataFetcher::OnDidPerformInstallableCheck( |
weak_observer_->OnUserTitleAvailable(shortcut_info_.user_title); |
if (data.icon) { |
- // TODO(hanxi): implement WebAPK path if shortcut_info_.url has a secure |
- // scheme and data.is_installable is true. |
shortcut_info_.icon_url = data.icon_url; |
// base::Bind copies the arguments internally, so it is safe to pass it |
@@ -223,6 +230,11 @@ void AddToHomescreenDataFetcher::FetchFavicon() { |
if (!web_contents() || !weak_observer_) |
return; |
+ if (check_installable_ && is_waiting_for_installable_check_) { |
+ is_waiting_for_installable_check_ = false; |
+ weak_observer_->OnDidDetermineWebApkCompatibility(false); |
+ } |
+ |
// Grab the best, largest icon we can find to represent this bookmark. |
// TODO(dfalcantara): Try combining with the new BookmarksHandler once its |
// rewrite is further along. |