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

Unified Diff: chrome/browser/android/webapk/webapk_update_data_fetcher.cc

Issue 2921623004: Support badge icon in WebAPK update components (Closed)
Patch Set: Support badge icon in WebAPK update components Created 3 years, 6 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/webapk/webapk_update_data_fetcher.cc
diff --git a/chrome/browser/android/webapk/webapk_update_data_fetcher.cc b/chrome/browser/android/webapk/webapk_update_data_fetcher.cc
index 69f626329dbb8f4210c7c302615a1a4b29af0491..514e369a6c01992db5e1654de475ca84b970e01b 100644
--- a/chrome/browser/android/webapk/webapk_update_data_fetcher.cc
+++ b/chrome/browser/android/webapk/webapk_update_data_fetcher.cc
@@ -114,8 +114,13 @@ void WebApkUpdateDataFetcher::FetchInstallableData() {
ShortcutHelper::GetIdealHomescreenIconSizeInPx();
params.minimum_primary_icon_size_in_px =
ShortcutHelper::GetMinimumHomescreenIconSizeInPx();
+ params.ideal_badge_icon_size_in_px =
+ ShortcutHelper::GetIdealBadgeIconSizeInPx();
+ params.minimum_badge_icon_size_in_px =
+ ShortcutHelper::GetIdealBadgeIconSizeInPx();
params.check_installable = true;
params.fetch_valid_primary_icon = true;
+ params.fetch_valid_badge_icon = true;
InstallableManager::CreateForWebContents(web_contents());
InstallableManager* installable_manager =
InstallableManager::FromWebContents(web_contents());
@@ -150,31 +155,57 @@ void WebApkUpdateDataFetcher::OnDidGetInstallableData(
info_.UpdateFromManifest(data.manifest);
info_.manifest_url = data.manifest_url;
info_.best_primary_icon_url = data.primary_icon_url;
- best_primary_icon_ = *data.primary_icon;
+ primary_icon_ = *data.primary_icon;
+
+ if (data.badge_icon && !data.badge_icon->drawsNothing()) {
+ info_.best_badge_icon_url = data.badge_icon_url;
+ badge_icon_ = *data.badge_icon;
+ }
Profile* profile =
Profile::FromBrowserContext(web_contents()->GetBrowserContext());
WebApkIconHasher::DownloadAndComputeMurmur2Hash(
- profile->GetRequestContext(), data.primary_icon_url,
- base::Bind(&WebApkUpdateDataFetcher::OnGotIconMurmur2Hash,
+ profile->GetRequestContext(), info_.best_primary_icon_url,
+ base::Bind(&WebApkUpdateDataFetcher::OnGotPrimaryIconMurmur2Hash,
weak_ptr_factory_.GetWeakPtr()));
}
-void WebApkUpdateDataFetcher::OnGotIconMurmur2Hash(
- const std::string& best_primary_icon_murmur2_hash) {
- if (best_primary_icon_murmur2_hash.empty()) {
+void WebApkUpdateDataFetcher::OnGotPrimaryIconMurmur2Hash(
+ const std::string& primary_icon_murmur2_hash) {
+ if (primary_icon_murmur2_hash.empty()) {
OnWebManifestNotWebApkCompatible();
return;
}
- OnDataAvailable(info_, best_primary_icon_murmur2_hash, best_primary_icon_);
+ if (!info_.best_badge_icon_url.is_empty() &&
+ info_.best_badge_icon_url != info_.best_primary_icon_url) {
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents()->GetBrowserContext());
+
+ WebApkIconHasher::DownloadAndComputeMurmur2Hash(
+ profile->GetRequestContext(), info_.best_primary_icon_url,
pkotwicz 2017/06/07 21:22:23 Shouldn't this be |best_badge_icon_url|?
F 2017/06/08 20:01:13 Done.
+ base::Bind(&WebApkUpdateDataFetcher::OnDataAvailable,
+ weak_ptr_factory_.GetWeakPtr(), info_, primary_icon_,
+ primary_icon_murmur2_hash, true, badge_icon_));
+ } else {
+ OnDataAvailable(info_, primary_icon_, primary_icon_murmur2_hash, false,
+ badge_icon_, "");
+ }
}
void WebApkUpdateDataFetcher::OnDataAvailable(
const ShortcutInfo& info,
- const std::string& best_primary_icon_murmur2_hash,
- const SkBitmap& best_primary_icon) {
+ const SkBitmap& primary_icon,
+ const std::string& primary_icon_murmur2_hash,
+ bool did_fetch_badge_icon,
+ const SkBitmap& badge_icon,
+ const std::string& badge_icon_murmur2_hash) {
pkotwicz 2017/06/07 21:22:23 Can we use |info_|, |primary_icon_| and |badge_ico
F 2017/06/08 20:01:13 Done.
+ if (did_fetch_badge_icon && badge_icon_murmur2_hash.empty()) {
+ OnWebManifestNotWebApkCompatible();
+ return;
+ }
+
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> java_url =
@@ -185,22 +216,31 @@ void WebApkUpdateDataFetcher::OnDataAvailable(
base::android::ConvertUTF16ToJavaString(env, info.name);
ScopedJavaLocalRef<jstring> java_short_name =
base::android::ConvertUTF16ToJavaString(env, info.short_name);
- ScopedJavaLocalRef<jstring> java_best_primary_icon_url =
+ ScopedJavaLocalRef<jstring> java_primary_icon_url =
base::android::ConvertUTF8ToJavaString(env,
info.best_primary_icon_url.spec());
- ScopedJavaLocalRef<jstring> java_best_primary_icon_murmur2_hash =
+ ScopedJavaLocalRef<jstring> java_primary_icon_murmur2_hash =
base::android::ConvertUTF8ToJavaString(env,
- best_primary_icon_murmur2_hash);
- ScopedJavaLocalRef<jobject> java_best_primary_icon =
- gfx::ConvertToJavaBitmap(&best_primary_icon);
-
+ primary_icon_murmur2_hash);
+ ScopedJavaLocalRef<jobject> java_primary_icon =
+ gfx::ConvertToJavaBitmap(&primary_icon);
+ ScopedJavaLocalRef<jstring> java_badge_icon_url =
+ base::android::ConvertUTF8ToJavaString(env,
+ info.best_badge_icon_url.spec());
+ ScopedJavaLocalRef<jstring> java_badge_icon_murmur2_hash =
+ base::android::ConvertUTF8ToJavaString(env,
+ badge_icon_murmur2_hash);
+ ScopedJavaLocalRef<jobject> java_badge_icon;
+ if (!badge_icon.drawsNothing())
+ java_badge_icon = gfx::ConvertToJavaBitmap(&badge_icon);
ScopedJavaLocalRef<jobjectArray> java_icon_urls =
base::android::ToJavaArrayOfStrings(env, info.icon_urls);
Java_WebApkUpdateDataFetcher_onDataAvailable(
env, java_ref_, java_url, java_scope, java_name, java_short_name,
- java_best_primary_icon_url, java_best_primary_icon_murmur2_hash,
- java_best_primary_icon, java_icon_urls, info.display, info.orientation,
+ java_primary_icon_url, java_primary_icon_murmur2_hash,
+ java_primary_icon, java_badge_icon_url, java_badge_icon_murmur2_hash,
+ java_badge_icon, java_icon_urls, info.display, info.orientation,
info.theme_color, info.background_color);
}

Powered by Google App Engine
This is Rietveld 408576698