Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3890)

Unified Diff: chrome/browser/android/banners/app_banner_manager_android.cc

Issue 2685363002: Update AppBannerManager & AppBannerManagerAndroid to request badge icon. (Closed)
Patch Set: Addressing comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/banners/app_banner_manager_android.cc
diff --git a/chrome/browser/android/banners/app_banner_manager_android.cc b/chrome/browser/android/banners/app_banner_manager_android.cc
index 9d0bff156b5fc44d03887cd125dde2cd50ce8f01..a391fd09b97b3c14709dc3c2721e8de534333c0d 100644
--- a/chrome/browser/android/banners/app_banner_manager_android.cc
+++ b/chrome/browser/android/banners/app_banner_manager_android.cc
@@ -106,14 +106,14 @@ bool AppBannerManagerAndroid::OnAppDetailsRetrieved(
native_app_data_.Reset(japp_data);
app_title_ = ConvertJavaStringToUTF16(env, japp_title);
native_app_package_ = ConvertJavaStringToUTF8(env, japp_package);
- icon_url_ = GURL(ConvertJavaStringToUTF8(env, jicon_url));
+ primary_icon_url_ = GURL(ConvertJavaStringToUTF8(env, jicon_url));
if (!CheckIfShouldShowBanner())
return false;
return ManifestIconDownloader::Download(
- web_contents(), icon_url_, GetIdealIconSizeInPx(),
- GetMinimumIconSizeInPx(),
+ web_contents(), primary_icon_url_, GetIdealPrimaryIconSizeInPx(),
+ GetMinimumPrimaryIconSizeInPx(),
base::Bind(&AppBannerManager::OnAppIconFetched, GetWeakPtr()));
}
@@ -126,6 +126,10 @@ void AppBannerManagerAndroid::RequestAppBanner(const GURL& validated_url,
AppBannerManager::RequestAppBanner(validated_url, is_debug_mode);
}
+int AppBannerManagerAndroid::GetIdealBadgeIconSizeInPx() {
+ return ShortcutHelper::GetIdealBadgeIconSizeInPx();
+}
+
std::string AppBannerManagerAndroid::GetAppIdentifier() {
return native_app_data_.is_null() ? AppBannerManager::GetAppIdentifier()
: native_app_package_;
@@ -136,11 +140,11 @@ std::string AppBannerManagerAndroid::GetBannerType() {
: "play";
}
-int AppBannerManagerAndroid::GetIdealIconSizeInPx() {
+int AppBannerManagerAndroid::GetIdealPrimaryIconSizeInPx() {
return ShortcutHelper::GetIdealHomescreenIconSizeInPx();
}
-int AppBannerManagerAndroid::GetMinimumIconSizeInPx() {
+int AppBannerManagerAndroid::GetMinimumPrimaryIconSizeInPx() {
return ShortcutHelper::GetMinimumHomescreenIconSizeInPx();
}
@@ -158,6 +162,19 @@ bool AppBannerManagerAndroid::IsWebAppInstalled(
manifest_url);
}
+InstallableParams AppBannerManagerAndroid::ParamsToPerformInstallableCheck() {
+ InstallableParams params =
+ AppBannerManager::ParamsToPerformInstallableCheck();
+
+ if (ChromeWebApkHost::CanInstallWebApk()) {
dominickn 2017/02/15 06:05:47 This is now called twice in this class. I actually
F 2017/02/15 20:05:43 Done.
+ params.ideal_badge_icon_size_in_px = GetIdealBadgeIconSizeInPx();
+ params.minimum_badge_icon_size_in_px = GetIdealBadgeIconSizeInPx();
+ params.fetch_valid_badge_icon = true;
+ }
+
+ return params;
+}
+
void AppBannerManagerAndroid::PerformInstallableCheck() {
// Check if the manifest prefers that we show a native app banner. If so, call
// to Java to verify the details.
@@ -184,6 +201,18 @@ void AppBannerManagerAndroid::PerformInstallableCheck() {
AppBannerManager::PerformInstallableCheck();
}
+void AppBannerManagerAndroid::OnDidPerformInstallableCheck(
+ const InstallableData& data) {
+ if (data.badge_icon && !data.badge_icon->drawsNothing()) {
+ DCHECK(!data.badge_icon_url.is_empty());
+
+ badge_icon_url_ = data.badge_icon_url;
+ badge_icon_.reset(new SkBitmap(*data.badge_icon));
+ }
+
+ AppBannerManager::OnDidPerformInstallableCheck(data);
+}
+
void AppBannerManagerAndroid::OnAppIconFetched(const SkBitmap& bitmap) {
if (bitmap.drawsNothing()) {
ReportStatus(web_contents(), NO_ICON_AVAILABLE);
@@ -193,7 +222,7 @@ void AppBannerManagerAndroid::OnAppIconFetched(const SkBitmap& bitmap) {
if (!is_active())
return;
- icon_.reset(new SkBitmap(bitmap));
+ primary_icon_.reset(new SkBitmap(bitmap));
SendBannerPromptRequest();
}
@@ -208,10 +237,11 @@ void AppBannerManagerAndroid::ShowBanner() {
DCHECK(contents);
if (native_app_data_.is_null()) {
+ // TODO(zpeng): Add badge to WebAPK installation flow.
if (AppBannerInfoBarDelegateAndroid::Create(
contents, GetWeakPtr(), app_title_,
- CreateShortcutInfo(manifest_url_, manifest_, icon_url_),
- std::move(icon_), event_request_id(),
+ CreateShortcutInfo(manifest_url_, manifest_, primary_icon_url_),
+ std::move(primary_icon_), event_request_id(),
webapk::INSTALL_SOURCE_BANNER)) {
RecordDidShowBanner("AppBanner.WebApp.Shown");
TrackDisplayEvent(DISPLAY_EVENT_WEB_APP_BANNER_CREATED);
@@ -221,7 +251,7 @@ void AppBannerManagerAndroid::ShowBanner() {
}
} else {
if (AppBannerInfoBarDelegateAndroid::Create(
- contents, app_title_, native_app_data_, std::move(icon_),
+ contents, app_title_, native_app_data_, std::move(primary_icon_),
native_app_package_, referrer_, event_request_id())) {
RecordDidShowBanner("AppBanner.NativeApp.Shown");
TrackDisplayEvent(DISPLAY_EVENT_NATIVE_APP_BANNER_CREATED);
@@ -264,7 +294,7 @@ bool AppBannerManagerAndroid::CanHandleNonWebApp(const std::string& platform,
ScopedJavaLocalRef<jstring> jreferrer(ConvertUTF8ToJavaString(env, referrer));
Java_AppBannerManager_fetchAppDetails(env, java_banner_manager_, jurl,
jpackage, jreferrer,
- GetIdealIconSizeInPx());
+ GetIdealPrimaryIconSizeInPx());
return true;
}
« no previous file with comments | « chrome/browser/android/banners/app_banner_manager_android.h ('k') | chrome/browser/banners/app_banner_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698