| Index: chrome/browser/android/banners/app_banner_infobar_delegate_android.cc
|
| diff --git a/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc b/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc
|
| index 090e1f260a452ca9e831cda9ca0cc8cafcef5086..0c190b72a484ed1fdcd030072a2d368406b272e5 100644
|
| --- a/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc
|
| +++ b/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc
|
| @@ -53,18 +53,23 @@ bool AppBannerInfoBarDelegateAndroid::Create(
|
| std::unique_ptr<ShortcutInfo> shortcut_info,
|
| std::unique_ptr<SkBitmap> icon,
|
| int event_request_id,
|
| + bool can_use_webapk_install_flow,
|
| webapk::InstallSource webapk_install_source) {
|
| - bool is_webapk = ChromeWebApkHost::AreWebApkEnabled();
|
| + bool is_webapk_enabled = ChromeWebApkHost::AreWebApkEnabled();
|
| std::string webapk_package_name = "";
|
| const GURL& url = shortcut_info->url;
|
| - if (is_webapk)
|
| + if (is_webapk_enabled)
|
| webapk_package_name = ShortcutHelper::QueryWebApkPackage(url);
|
| bool is_webapk_already_installed = !webapk_package_name.empty();
|
| + // We continue the WebAPK flow if there is an associated WebAPK has been
|
| + // installed or WebAPKs are enabled and the install flow is available.
|
| + bool is_webapk = is_webapk_already_installed ? true
|
| + : is_webapk_enabled & can_use_webapk_install_flow;
|
| auto infobar_delegate =
|
| base::WrapUnique(new banners::AppBannerInfoBarDelegateAndroid(
|
| weak_manager, app_title, std::move(shortcut_info), std::move(icon),
|
| event_request_id, is_webapk, is_webapk_already_installed,
|
| - webapk_install_source));
|
| + webapk_package_name, webapk_install_source));
|
| auto raw_delegate = infobar_delegate.get();
|
| auto infobar = base::MakeUnique<AppBannerInfoBarAndroid>(
|
| std::move(infobar_delegate), url, is_webapk);
|
| @@ -220,6 +225,7 @@ AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid(
|
| int event_request_id,
|
| bool is_webapk,
|
| bool is_webapk_already_installed,
|
| + const std::string& webapk_package_name,
|
| webapk::InstallSource webapk_install_source)
|
| : weak_manager_(weak_manager),
|
| app_title_(app_title),
|
| @@ -229,6 +235,7 @@ AppBannerInfoBarDelegateAndroid::AppBannerInfoBarDelegateAndroid(
|
| has_user_interaction_(false),
|
| is_webapk_(is_webapk),
|
| is_webapk_already_installed_(is_webapk_already_installed),
|
| + webapk_package_name_(webapk_package_name),
|
| install_state_(INSTALL_NOT_STARTED),
|
| webapk_install_source_(webapk_install_source),
|
| weak_ptr_factory_(this) {
|
| @@ -322,6 +329,12 @@ bool AppBannerInfoBarDelegateAndroid::AcceptWebApk(
|
| webapk::TrackUserAction(webapk::USER_ACTION_INSTALLED_OPEN);
|
| SendBannerAccepted();
|
| return true;
|
| + } else if (is_webapk_already_installed_) {
|
| + // If a WebAPK has installed, but the |install_state_| hasn't changed
|
| + // yet, we updates the text of button on the banner, and return false to
|
| + // prevent the banner from disappear.
|
| + UpdateStateForInstalledWebAPK(webapk_package_name_);
|
| + return false;
|
| }
|
|
|
| // If the WebAPK is not installed and the "Add to Home Screen" button is
|
|
|