Index: chrome/browser/android/webapps/add_to_homescreen_manager.cc |
diff --git a/chrome/browser/android/webapps/add_to_homescreen_manager.cc b/chrome/browser/android/webapps/add_to_homescreen_manager.cc |
index d7e5929cce20b287d60081bf160abd4bde2a3244..63972125122204e2be072ac8905c613d708f2a87 100644 |
--- a/chrome/browser/android/webapps/add_to_homescreen_manager.cc |
+++ b/chrome/browser/android/webapps/add_to_homescreen_manager.cc |
@@ -8,8 +8,10 @@ |
#include "base/android/jni_string.h" |
#include "base/guid.h" |
#include "base/location.h" |
+#include "base/memory/ptr_util.h" |
#include "base/strings/string16.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "chrome/browser/android/banners/app_banner_infobar_delegate_android.h" |
#include "chrome/browser/android/shortcut_helper.h" |
#include "chrome/browser/android/webapk/chrome_webapk_host.h" |
#include "chrome/browser/banners/app_banner_settings_helper.h" |
@@ -33,7 +35,8 @@ jlong InitializeAndStart(JNIEnv* env, |
} |
AddToHomescreenManager::AddToHomescreenManager(JNIEnv* env, jobject obj) |
- : add_shortcut_pending_(false) { |
+ : add_shortcut_pending_(false), |
+ is_webapk_compatible_(false) { |
java_ref_.Reset(env, obj); |
} |
@@ -129,13 +132,15 @@ void AddToHomescreenManager::RecordAddToHomescreen() { |
void AddToHomescreenManager::OnDidDetermineWebApkCompatibility( |
bool is_webapk_compatible) { |
- // TODO(pkotwicz): Select whether to use dialog or not based on |
- // |is_webapk_compatible|. |
- ShowDialog(); |
+ is_webapk_compatible_ = is_webapk_compatible; |
+ if (!is_webapk_compatible) |
+ ShowDialog(); |
} |
void AddToHomescreenManager::OnUserTitleAvailable( |
const base::string16& user_title) { |
+ if (is_webapk_compatible_) |
+ return; |
JNIEnv* env = base::android::AttachCurrentThread(); |
ScopedJavaLocalRef<jstring> j_user_title = |
base::android::ConvertUTF16ToJavaString(env, user_title); |
@@ -146,6 +151,11 @@ void AddToHomescreenManager::OnUserTitleAvailable( |
void AddToHomescreenManager::OnDataAvailable(const ShortcutInfo& info, |
const SkBitmap& icon) { |
+ if (is_webapk_compatible_) { |
+ CreateInfoBarForWebAPK(info, icon); |
+ return; |
+ } |
+ |
JNIEnv* env = base::android::AttachCurrentThread(); |
ScopedJavaLocalRef<jobject> java_bitmap; |
if (icon.getSize()) |
@@ -157,6 +167,15 @@ void AddToHomescreenManager::OnDataAvailable(const ShortcutInfo& info, |
AddShortcut(info, icon); |
} |
+void AddToHomescreenManager::CreateInfoBarForWebAPK(const ShortcutInfo& info, |
+ const SkBitmap& icon) { |
+ banners::AppBannerInfoBarDelegateAndroid::Create( |
+ data_fetcher_->web_contents(), nullptr, info.user_title, |
+ base::MakeUnique<ShortcutInfo>(info), base::MakeUnique<SkBitmap>(icon), |
+ -1 /* event_request_id */, true /* is_webapk */, |
+ true /* start_install_webapk */); |
+} |
+ |
SkBitmap AddToHomescreenManager::FinalizeLauncherIconInBackground( |
const SkBitmap& bitmap, |
const GURL& url, |