Chromium Code Reviews| 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); |
| } |