Commit 5152d9f1 authored by Ella Ge's avatar Ella Ge Committed by Commit Bot

[LargeSplash:3]Make WebApk update fetch splash icon

This CL replaces fetching the badge icon with fetching splash icon in
WebApk update.

With This CL, webapk will request update if the splash icon is changed.

Bug: 1043271
Change-Id: Ia297e7cc20fdacd652262fdb9101717526e1a341
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2037819
Commit-Queue: Ella Ge <eirage@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Reviewed-by: default avatarPeter Kotwicz <pkotwicz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#744868}
parent 9fb2070c
...@@ -33,10 +33,10 @@ public class WebApkUpdateDataFetcher extends EmptyTabObserver { ...@@ -33,10 +33,10 @@ public class WebApkUpdateDataFetcher extends EmptyTabObserver {
* @param fetchedInfo The fetched Web Manifest data. * @param fetchedInfo The fetched Web Manifest data.
* @param primaryIconUrl The icon URL in {@link fetchedInfo#iconUrlToMurmur2HashMap()} best * @param primaryIconUrl The icon URL in {@link fetchedInfo#iconUrlToMurmur2HashMap()} best
* suited for use as the launcher icon on this device. * suited for use as the launcher icon on this device.
* @param badgeIconUrl The icon URL in {@link fetchedInfo#iconUrlToMurmur2HashMap()} best * @param splashIconUrl The icon URL in {@link fetchedInfo#iconUrlToMurmur2HashMap()} best
* suited for use as the badge icon on this device. * suited for use as the splash icon on this device.
*/ */
void onGotManifestData(WebApkInfo fetchedInfo, String primaryIconUrl, String badgeIconUrl); void onGotManifestData(WebApkInfo fetchedInfo, String primaryIconUrl, String splashIconUrl);
} }
/** /**
...@@ -106,8 +106,8 @@ public class WebApkUpdateDataFetcher extends EmptyTabObserver { ...@@ -106,8 +106,8 @@ public class WebApkUpdateDataFetcher extends EmptyTabObserver {
@CalledByNative @CalledByNative
protected void onDataAvailable(String manifestStartUrl, String scopeUrl, String name, protected void onDataAvailable(String manifestStartUrl, String scopeUrl, String name,
String shortName, String primaryIconUrl, String primaryIconMurmur2Hash, String shortName, String primaryIconUrl, String primaryIconMurmur2Hash,
Bitmap primaryIconBitmap, boolean isPrimaryIconMaskable, String badgeIconUrl, Bitmap primaryIconBitmap, boolean isPrimaryIconMaskable, String splashIconUrl,
String badgeIconMurmur2Hash, Bitmap badgeIconBitmap, String[] iconUrls, String splashIconMurmur2Hash, Bitmap splashIconBitmap, String[] iconUrls,
@WebDisplayMode int displayMode, int orientation, long themeColor, long backgroundColor, @WebDisplayMode int displayMode, int orientation, long themeColor, long backgroundColor,
String shareAction, String shareParamsTitle, String shareParamsText, String shareAction, String shareParamsTitle, String shareParamsText,
boolean isShareMethodPost, boolean isShareEncTypeMultipart, boolean isShareMethodPost, boolean isShareEncTypeMultipart,
...@@ -119,8 +119,8 @@ public class WebApkUpdateDataFetcher extends EmptyTabObserver { ...@@ -119,8 +119,8 @@ public class WebApkUpdateDataFetcher extends EmptyTabObserver {
String murmur2Hash = null; String murmur2Hash = null;
if (iconUrl.equals(primaryIconUrl)) { if (iconUrl.equals(primaryIconUrl)) {
murmur2Hash = primaryIconMurmur2Hash; murmur2Hash = primaryIconMurmur2Hash;
} else if (iconUrl.equals(badgeIconUrl)) { } else if (iconUrl.equals(splashIconUrl)) {
murmur2Hash = badgeIconMurmur2Hash; murmur2Hash = splashIconMurmur2Hash;
} }
iconUrlToMurmur2HashMap.put(iconUrl, murmur2Hash); iconUrlToMurmur2HashMap.put(iconUrl, murmur2Hash);
} }
...@@ -141,14 +141,15 @@ public class WebApkUpdateDataFetcher extends EmptyTabObserver { ...@@ -141,14 +141,15 @@ public class WebApkUpdateDataFetcher extends EmptyTabObserver {
int defaultBackgroundColor = SplashLayout.getDefaultBackgroundColor(appContext); int defaultBackgroundColor = SplashLayout.getDefaultBackgroundColor(appContext);
WebApkInfo info = WebApkInfo.create(mOldInfo.url(), scopeUrl, WebApkInfo info = WebApkInfo.create(mOldInfo.url(), scopeUrl,
new WebappIcon(primaryIconBitmap), new WebappIcon(badgeIconBitmap), null, name, new WebappIcon(primaryIconBitmap), null /* badgeIcon*/,
shortName, displayMode, orientation, mOldInfo.source(), themeColor, backgroundColor, new WebappIcon(splashIconBitmap), name, shortName, displayMode, orientation,
defaultBackgroundColor, isPrimaryIconMaskable, false /* isSplashIconMaskable */, mOldInfo.source(), themeColor, backgroundColor, defaultBackgroundColor,
isPrimaryIconMaskable, false /* isSplashIconMaskable */,
mOldInfo.webApkPackageName(), mOldInfo.shellApkVersion(), mOldInfo.manifestUrl(), mOldInfo.webApkPackageName(), mOldInfo.shellApkVersion(), mOldInfo.manifestUrl(),
manifestStartUrl, WebApkDistributor.BROWSER, iconUrlToMurmur2HashMap, shareTarget, manifestStartUrl, WebApkDistributor.BROWSER, iconUrlToMurmur2HashMap, shareTarget,
mOldInfo.shouldForceNavigation(), mOldInfo.isSplashProvidedByWebApk(), null, mOldInfo.shouldForceNavigation(), mOldInfo.isSplashProvidedByWebApk(), null,
shortcutItems, mOldInfo.webApkVersionCode()); shortcutItems, mOldInfo.webApkVersionCode());
mObserver.onGotManifestData(info, primaryIconUrl, badgeIconUrl); mObserver.onGotManifestData(info, primaryIconUrl, splashIconUrl);
} }
@NativeMethods @NativeMethods
......
...@@ -112,8 +112,8 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -112,8 +112,8 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
} }
@Override @Override
public void onGotManifestData(WebApkInfo fetchedInfo, String primaryIconUrl, public void onGotManifestData(
String badgeIconUrl) { WebApkInfo fetchedInfo, String primaryIconUrl, String splashIconUrl) {
mStorage.updateTimeOfLastCheckForUpdatedWebManifest(); mStorage.updateTimeOfLastCheckForUpdatedWebManifest();
if (mUpdateFailureHandler != null) { if (mUpdateFailureHandler != null) {
mUpdateFailureHandler.removeCallbacksAndMessages(null); mUpdateFailureHandler.removeCallbacksAndMessages(null);
...@@ -121,7 +121,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -121,7 +121,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
boolean gotManifest = (fetchedInfo != null); boolean gotManifest = (fetchedInfo != null);
@WebApkUpdateReason @WebApkUpdateReason
int updateReason = needsUpdate(mInfo, fetchedInfo, primaryIconUrl, badgeIconUrl); int updateReason = needsUpdate(mInfo, fetchedInfo, primaryIconUrl, splashIconUrl);
boolean needsUpgrade = (updateReason != WebApkUpdateReason.NONE); boolean needsUpgrade = (updateReason != WebApkUpdateReason.NONE);
if (mStorage.shouldForceUpdate() && needsUpgrade) { if (mStorage.shouldForceUpdate() && needsUpgrade) {
updateReason = WebApkUpdateReason.MANUALLY_TRIGGERED; updateReason = WebApkUpdateReason.MANUALLY_TRIGGERED;
...@@ -157,7 +157,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -157,7 +157,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
recordUpdate(mStorage, WebApkInstallResult.FAILURE, false /* relaxUpdates*/); recordUpdate(mStorage, WebApkInstallResult.FAILURE, false /* relaxUpdates*/);
if (fetchedInfo != null) { if (fetchedInfo != null) {
buildUpdateRequestAndSchedule(fetchedInfo, primaryIconUrl, badgeIconUrl, buildUpdateRequestAndSchedule(fetchedInfo, primaryIconUrl, splashIconUrl,
false /* isManifestStale */, updateReason); false /* isManifestStale */, updateReason);
return; return;
} }
...@@ -165,7 +165,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -165,7 +165,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
// Tell the server that the our version of the Web Manifest might be stale and to ignore // Tell the server that the our version of the Web Manifest might be stale and to ignore
// our Web Manifest data if the server's Web Manifest data is newer. This scenario can // our Web Manifest data if the server's Web Manifest data is newer. This scenario can
// occur if the Web Manifest is temporarily unreachable. // occur if the Web Manifest is temporarily unreachable.
buildUpdateRequestAndSchedule(mInfo, "" /* primaryIconUrl */, "" /* badgeIconUrl */, buildUpdateRequestAndSchedule(mInfo, "" /* primaryIconUrl */, "" /* splashIconUrl */,
true /* isManifestStale */, updateReason); true /* isManifestStale */, updateReason);
} }
...@@ -178,7 +178,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -178,7 +178,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
/** Builds proto to send to the WebAPK server. */ /** Builds proto to send to the WebAPK server. */
private void buildUpdateRequestAndSchedule(WebApkInfo info, String primaryIconUrl, private void buildUpdateRequestAndSchedule(WebApkInfo info, String primaryIconUrl,
String badgeIconUrl, boolean isManifestStale, @WebApkUpdateReason int updateReason) { String splashIconUrl, boolean isManifestStale, @WebApkUpdateReason int updateReason) {
Callback<Boolean> callback = (success) -> { Callback<Boolean> callback = (success) -> {
if (!success) { if (!success) {
onFinishedUpdate(mStorage, WebApkInstallResult.FAILURE, false /* relaxUpdates*/); onFinishedUpdate(mStorage, WebApkInstallResult.FAILURE, false /* relaxUpdates*/);
...@@ -187,7 +187,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -187,7 +187,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
scheduleUpdate(); scheduleUpdate();
}; };
String updateRequestPath = mStorage.createAndSetUpdateRequestFilePath(info); String updateRequestPath = mStorage.createAndSetUpdateRequestFilePath(info);
storeWebApkUpdateRequestToFile(updateRequestPath, info, primaryIconUrl, badgeIconUrl, storeWebApkUpdateRequestToFile(updateRequestPath, info, primaryIconUrl, splashIconUrl,
isManifestStale, updateReason, callback); isManifestStale, updateReason, callback);
} }
...@@ -333,31 +333,31 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -333,31 +333,31 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
* @param fetchedInfo Fetched data for Web Manifest. * @param fetchedInfo Fetched data for Web Manifest.
* @param primaryIconUrl The icon URL in {@link fetchedInfo#iconUrlToMurmur2HashMap()} best * @param primaryIconUrl The icon URL in {@link fetchedInfo#iconUrlToMurmur2HashMap()} best
* suited for use as the launcher icon on this device. * suited for use as the launcher icon on this device.
* @param badgeIconUrl The icon URL in {@link fetchedInfo#iconUrlToMurmur2HashMap()} best * @param splashIconUrl The icon URL in {@link fetchedInfo#iconUrlToMurmur2HashMap()} best
* suited for use as the badge icon on this device. * suited for use as the splash icon on this device.
* @return reason that an update is needed or {@link WebApkUpdateReason#NONE} if an update is * @return reason that an update is needed or {@link WebApkUpdateReason#NONE} if an update is
* not needed. * not needed.
*/ */
private static @WebApkUpdateReason int needsUpdate(WebApkInfo oldInfo, WebApkInfo fetchedInfo, private static @WebApkUpdateReason int needsUpdate(WebApkInfo oldInfo, WebApkInfo fetchedInfo,
String primaryIconUrl, String badgeIconUrl) { String primaryIconUrl, String splashIconUrl) {
if (isShellApkVersionOutOfDate(oldInfo)) return WebApkUpdateReason.OLD_SHELL_APK; if (isShellApkVersionOutOfDate(oldInfo)) return WebApkUpdateReason.OLD_SHELL_APK;
if (fetchedInfo == null) return WebApkUpdateReason.NONE; if (fetchedInfo == null) return WebApkUpdateReason.NONE;
// We should have computed the Murmur2 hashes for the bitmaps at the primary icon URL and // We should have computed the Murmur2 hashes for the bitmaps at the primary icon URL and
// the badge icon for {@link fetchedInfo} (but not the other icon URLs.) // the splash icon for {@link fetchedInfo} (but not the other icon URLs.)
String fetchedPrimaryIconMurmur2Hash = fetchedInfo.iconUrlToMurmur2HashMap() String fetchedPrimaryIconMurmur2Hash = fetchedInfo.iconUrlToMurmur2HashMap()
.get(primaryIconUrl); .get(primaryIconUrl);
String primaryIconMurmur2Hash = findMurmur2HashForUrlIgnoringFragment( String primaryIconMurmur2Hash = findMurmur2HashForUrlIgnoringFragment(
oldInfo.iconUrlToMurmur2HashMap(), primaryIconUrl); oldInfo.iconUrlToMurmur2HashMap(), primaryIconUrl);
String fetchedBadgeIconMurmur2Hash = fetchedInfo.iconUrlToMurmur2HashMap() String fetchedSplashIconMurmur2Hash =
.get(badgeIconUrl); fetchedInfo.iconUrlToMurmur2HashMap().get(splashIconUrl);
String badgeIconMurmur2Hash = findMurmur2HashForUrlIgnoringFragment( String splashIconMurmur2Hash = findMurmur2HashForUrlIgnoringFragment(
oldInfo.iconUrlToMurmur2HashMap(), badgeIconUrl); oldInfo.iconUrlToMurmur2HashMap(), splashIconUrl);
if (!TextUtils.equals(primaryIconMurmur2Hash, fetchedPrimaryIconMurmur2Hash)) { if (!TextUtils.equals(primaryIconMurmur2Hash, fetchedPrimaryIconMurmur2Hash)) {
return WebApkUpdateReason.PRIMARY_ICON_HASH_DIFFERS; return WebApkUpdateReason.PRIMARY_ICON_HASH_DIFFERS;
} else if (!TextUtils.equals(badgeIconMurmur2Hash, fetchedBadgeIconMurmur2Hash)) { } else if (!TextUtils.equals(splashIconMurmur2Hash, fetchedSplashIconMurmur2Hash)) {
return WebApkUpdateReason.BADGE_ICON_HASH_DIFFERS; return WebApkUpdateReason.SPLASH_ICON_HASH_DIFFERS;
} else if (!UrlUtilities.urlsMatchIgnoringFragments( } else if (!UrlUtilities.urlsMatchIgnoringFragments(
oldInfo.scopeUrl(), fetchedInfo.scopeUrl())) { oldInfo.scopeUrl(), fetchedInfo.scopeUrl())) {
return WebApkUpdateReason.SCOPE_DIFFERS; return WebApkUpdateReason.SCOPE_DIFFERS;
...@@ -402,7 +402,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -402,7 +402,7 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
} }
protected void storeWebApkUpdateRequestToFile(String updateRequestPath, WebApkInfo info, protected void storeWebApkUpdateRequestToFile(String updateRequestPath, WebApkInfo info,
String primaryIconUrl, String badgeIconUrl, boolean isManifestStale, String primaryIconUrl, String splashIconUrl, boolean isManifestStale,
@WebApkUpdateReason int updateReason, Callback<Boolean> callback) { @WebApkUpdateReason int updateReason, Callback<Boolean> callback) {
int versionCode = info.webApkVersionCode(); int versionCode = info.webApkVersionCode();
int size = info.iconUrlToMurmur2HashMap().size(); int size = info.iconUrlToMurmur2HashMap().size();
...@@ -425,8 +425,8 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -425,8 +425,8 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
WebApkUpdateManagerJni.get().storeWebApkUpdateRequestToFile(updateRequestPath, WebApkUpdateManagerJni.get().storeWebApkUpdateRequestToFile(updateRequestPath,
info.manifestStartUrl(), info.scopeUrl(), info.name(), info.shortName(), info.manifestStartUrl(), info.scopeUrl(), info.name(), info.shortName(),
primaryIconUrl, info.icon().bitmap(), info.isIconAdaptive(), badgeIconUrl, primaryIconUrl, info.icon().bitmap(), info.isIconAdaptive(), splashIconUrl,
info.badgeIcon().bitmap(), iconUrls, iconHashes, info.displayMode(), info.splashIcon().bitmap(), iconUrls, iconHashes, info.displayMode(),
info.orientation(), info.toolbarColor(), info.backgroundColor(), info.orientation(), info.toolbarColor(), info.backgroundColor(),
info.shareTarget().getAction(), info.shareTarget().getParamTitle(), info.shareTarget().getAction(), info.shareTarget().getParamTitle(),
info.shareTarget().getParamText(), info.shareTarget().isShareMethodPost(), info.shareTarget().getParamText(), info.shareTarget().isShareMethodPost(),
...@@ -439,8 +439,8 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De ...@@ -439,8 +439,8 @@ public class WebApkUpdateManager implements WebApkUpdateDataFetcher.Observer, De
interface Natives { interface Natives {
public void storeWebApkUpdateRequestToFile(String updateRequestPath, String startUrl, public void storeWebApkUpdateRequestToFile(String updateRequestPath, String startUrl,
String scope, String name, String shortName, String primaryIconUrl, String scope, String name, String shortName, String primaryIconUrl,
Bitmap primaryIcon, boolean isPrimaryIconMaskable, String badgeIconUrl, Bitmap primaryIcon, boolean isPrimaryIconMaskable, String splashIconUrl,
Bitmap badgeIcon, String[] iconUrls, String[] iconHashes, Bitmap splashIcon, String[] iconUrls, String[] iconHashes,
@WebDisplayMode int displayMode, int orientation, long themeColor, @WebDisplayMode int displayMode, int orientation, long themeColor,
long backgroundColor, String shareTargetAction, String shareTargetParamTitle, long backgroundColor, String shareTargetAction, String shareTargetParamTitle,
String shareTargetParamText, boolean shareTargetParamIsMethodPost, String shareTargetParamText, boolean shareTargetParamIsMethodPost,
......
...@@ -74,7 +74,7 @@ public class WebApkUpdateDataFetcherTest { ...@@ -74,7 +74,7 @@ public class WebApkUpdateDataFetcherTest {
@Override @Override
public void onGotManifestData( public void onGotManifestData(
WebApkInfo fetchedInfo, String primaryIconUrl, String badgeIconUrl) { WebApkInfo fetchedInfo, String primaryIconUrl, String splashIconUrl) {
Assert.assertNull(mName); Assert.assertNull(mName);
mWebApkCompatible = true; mWebApkCompatible = true;
mName = fetchedInfo.name(); mName = fetchedInfo.name();
......
...@@ -93,15 +93,15 @@ public class WebApkUpdateManagerTest { ...@@ -93,15 +93,15 @@ public class WebApkUpdateManagerTest {
} }
@Override @Override
public void onGotManifestData(WebApkInfo fetchedInfo, String primaryIconUrl, public void onGotManifestData(
String badgeIconUrl) { WebApkInfo fetchedInfo, String primaryIconUrl, String splashIconUrl) {
super.onGotManifestData(fetchedInfo, primaryIconUrl, badgeIconUrl); super.onGotManifestData(fetchedInfo, primaryIconUrl, splashIconUrl);
mWaiter.notifyCalled(); mWaiter.notifyCalled();
} }
@Override @Override
protected void storeWebApkUpdateRequestToFile(String updateRequestPath, WebApkInfo info, protected void storeWebApkUpdateRequestToFile(String updateRequestPath, WebApkInfo info,
String primaryIconUrl, String badgeIconUrl, boolean isManifestStale, String primaryIconUrl, String splashIconUrl, boolean isManifestStale,
@WebApkUpdateReason int updateReason, Callback<Boolean> callback) { @WebApkUpdateReason int updateReason, Callback<Boolean> callback) {
mNeedsUpdate = true; mNeedsUpdate = true;
} }
......
...@@ -127,7 +127,6 @@ struct ShortcutInfo { ...@@ -127,7 +127,6 @@ struct ShortcutInfo {
int minimum_splash_image_size_in_px; int minimum_splash_image_size_in_px;
GURL splash_image_url; GURL splash_image_url;
GURL best_primary_icon_url; GURL best_primary_icon_url;
GURL best_badge_icon_url;
std::vector<std::string> icon_urls; std::vector<std::string> icon_urls;
base::Optional<ShareTarget> share_target; base::Optional<ShareTarget> share_target;
......
...@@ -49,6 +49,7 @@ message WebApk { ...@@ -49,6 +49,7 @@ message WebApk {
MANUALLY_TRIGGERED = 14; MANUALLY_TRIGGERED = 14;
PRIMARY_ICON_MASKABLE_DIFFERS = 15; PRIMARY_ICON_MASKABLE_DIFFERS = 15;
SHORTCUTS_DIFFER = 16; SHORTCUTS_DIFFER = 16;
SPLASH_ICON_HASH_DIFFERS = 17;
} }
// Package name of the WebAPK. // Package name of the WebAPK.
......
...@@ -127,6 +127,8 @@ webapk::WebApk_UpdateReason ConvertUpdateReasonToProtoEnum( ...@@ -127,6 +127,8 @@ webapk::WebApk_UpdateReason ConvertUpdateReasonToProtoEnum(
return webapk::WebApk::PRIMARY_ICON_MASKABLE_DIFFERS; return webapk::WebApk::PRIMARY_ICON_MASKABLE_DIFFERS;
case WebApkUpdateReason::BADGE_ICON_HASH_DIFFERS: case WebApkUpdateReason::BADGE_ICON_HASH_DIFFERS:
return webapk::WebApk::BADGE_ICON_HASH_DIFFERS; return webapk::WebApk::BADGE_ICON_HASH_DIFFERS;
case WebApkUpdateReason::SPLASH_ICON_HASH_DIFFERS:
return webapk::WebApk::SPLASH_ICON_HASH_DIFFERS;
case WebApkUpdateReason::SCOPE_DIFFERS: case WebApkUpdateReason::SCOPE_DIFFERS:
return webapk::WebApk::SCOPE_DIFFERS; return webapk::WebApk::SCOPE_DIFFERS;
case WebApkUpdateReason::START_URL_DIFFERS: case WebApkUpdateReason::START_URL_DIFFERS:
...@@ -339,7 +341,7 @@ bool StoreUpdateRequestToFileInBackground( ...@@ -339,7 +341,7 @@ bool StoreUpdateRequestToFileInBackground(
const ShortcutInfo& shortcut_info, const ShortcutInfo& shortcut_info,
const SkBitmap& primary_icon, const SkBitmap& primary_icon,
bool is_primary_icon_maskable, bool is_primary_icon_maskable,
const SkBitmap& badge_icon, const SkBitmap& splash_icon,
const std::string& package_name, const std::string& package_name,
const std::string& version, const std::string& version,
std::map<std::string, WebApkIconHasher::Icon> icon_url_to_murmur2_hash, std::map<std::string, WebApkIconHasher::Icon> icon_url_to_murmur2_hash,
...@@ -348,10 +350,8 @@ bool StoreUpdateRequestToFileInBackground( ...@@ -348,10 +350,8 @@ bool StoreUpdateRequestToFileInBackground(
base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
base::BlockingType::MAY_BLOCK); base::BlockingType::MAY_BLOCK);
// TODO(crbug.com/1043271): Passing an empty SkBitmap for now as webapk update
// does not include splash_icon image yet.
std::unique_ptr<std::string> proto = BuildProtoInBackground( std::unique_ptr<std::string> proto = BuildProtoInBackground(
shortcut_info, primary_icon, is_primary_icon_maskable, SkBitmap(), shortcut_info, primary_icon, is_primary_icon_maskable, splash_icon,
package_name, version, std::move(icon_url_to_murmur2_hash), package_name, version, std::move(icon_url_to_murmur2_hash),
is_manifest_stale, update_reason); is_manifest_stale, update_reason);
...@@ -464,7 +464,7 @@ void WebApkInstaller::StoreUpdateRequestToFile( ...@@ -464,7 +464,7 @@ void WebApkInstaller::StoreUpdateRequestToFile(
const ShortcutInfo& shortcut_info, const ShortcutInfo& shortcut_info,
const SkBitmap& primary_icon, const SkBitmap& primary_icon,
bool is_primary_icon_maskable, bool is_primary_icon_maskable,
const SkBitmap& badge_icon, const SkBitmap& splash_icon,
const std::string& package_name, const std::string& package_name,
const std::string& version, const std::string& version,
std::map<std::string, WebApkIconHasher::Icon> icon_url_to_murmur2_hash, std::map<std::string, WebApkIconHasher::Icon> icon_url_to_murmur2_hash,
...@@ -475,7 +475,7 @@ void WebApkInstaller::StoreUpdateRequestToFile( ...@@ -475,7 +475,7 @@ void WebApkInstaller::StoreUpdateRequestToFile(
GetBackgroundTaskRunner().get(), FROM_HERE, GetBackgroundTaskRunner().get(), FROM_HERE,
base::BindOnce(&StoreUpdateRequestToFileInBackground, update_request_path, base::BindOnce(&StoreUpdateRequestToFileInBackground, update_request_path,
shortcut_info, primary_icon, is_primary_icon_maskable, shortcut_info, primary_icon, is_primary_icon_maskable,
badge_icon, package_name, version, splash_icon, package_name, version,
std::move(icon_url_to_murmur2_hash), is_manifest_stale, std::move(icon_url_to_murmur2_hash), is_manifest_stale,
update_reason), update_reason),
std::move(callback)); std::move(callback));
......
...@@ -15,6 +15,7 @@ enum class WebApkUpdateReason { ...@@ -15,6 +15,7 @@ enum class WebApkUpdateReason {
PRIMARY_ICON_HASH_DIFFERS, PRIMARY_ICON_HASH_DIFFERS,
PRIMARY_ICON_MASKABLE_DIFFERS, PRIMARY_ICON_MASKABLE_DIFFERS,
BADGE_ICON_HASH_DIFFERS, BADGE_ICON_HASH_DIFFERS,
SPLASH_ICON_HASH_DIFFERS,
SCOPE_DIFFERS, SCOPE_DIFFERS,
START_URL_DIFFERS, START_URL_DIFFERS,
SHORT_NAME_DIFFERS, SHORT_NAME_DIFFERS,
......
...@@ -116,7 +116,7 @@ void WebApkUpdateDataFetcher::FetchInstallableData() { ...@@ -116,7 +116,7 @@ void WebApkUpdateDataFetcher::FetchInstallableData() {
ShortcutHelper::DoesAndroidSupportMaskableIcons(); ShortcutHelper::DoesAndroidSupportMaskableIcons();
params.has_worker = true; params.has_worker = true;
params.valid_primary_icon = true; params.valid_primary_icon = true;
params.valid_badge_icon = true; params.valid_splash_icon = true;
params.wait_for_worker = true; params.wait_for_worker = true;
InstallableManager* installable_manager = InstallableManager* installable_manager =
InstallableManager::FromWebContents(web_contents()); InstallableManager::FromWebContents(web_contents());
...@@ -153,14 +153,14 @@ void WebApkUpdateDataFetcher::OnDidGetInstallableData( ...@@ -153,14 +153,14 @@ void WebApkUpdateDataFetcher::OnDidGetInstallableData(
primary_icon_ = *data.primary_icon; primary_icon_ = *data.primary_icon;
is_primary_icon_maskable_ = data.has_maskable_primary_icon; is_primary_icon_maskable_ = data.has_maskable_primary_icon;
if (data.badge_icon && !data.badge_icon->drawsNothing()) { if (data.splash_icon && !data.splash_icon->drawsNothing()) {
info_.best_badge_icon_url = data.badge_icon_url; info_.splash_image_url = data.splash_icon_url;
badge_icon_ = *data.badge_icon; splash_icon_ = *data.splash_icon;
} }
std::set<GURL> urls{info_.best_primary_icon_url}; std::set<GURL> urls{info_.best_primary_icon_url};
if (!info_.best_badge_icon_url.is_empty()) if (!info_.splash_image_url.is_empty())
urls.insert(info_.best_badge_icon_url); urls.insert(info_.splash_image_url);
for (const auto& shortcut_url : info_.best_shortcut_icon_urls) { for (const auto& shortcut_url : info_.best_shortcut_icon_urls) {
if (shortcut_url.is_valid()) if (shortcut_url.is_valid())
...@@ -203,15 +203,15 @@ void WebApkUpdateDataFetcher::OnGotIconMurmur2Hashes( ...@@ -203,15 +203,15 @@ void WebApkUpdateDataFetcher::OnGotIconMurmur2Hashes(
ScopedJavaLocalRef<jobject> java_primary_icon = ScopedJavaLocalRef<jobject> java_primary_icon =
gfx::ConvertToJavaBitmap(&primary_icon_); gfx::ConvertToJavaBitmap(&primary_icon_);
jboolean java_is_primary_icon_maskable = is_primary_icon_maskable_; jboolean java_is_primary_icon_maskable = is_primary_icon_maskable_;
ScopedJavaLocalRef<jstring> java_badge_icon_url = ScopedJavaLocalRef<jstring> java_splash_icon_url =
base::android::ConvertUTF8ToJavaString(env, base::android::ConvertUTF8ToJavaString(env,
info_.best_badge_icon_url.spec()); info_.splash_image_url.spec());
ScopedJavaLocalRef<jstring> java_badge_icon_murmur2_hash = ScopedJavaLocalRef<jstring> java_splash_icon_murmur2_hash =
base::android::ConvertUTF8ToJavaString( base::android::ConvertUTF8ToJavaString(
env, (*hashes)[info_.best_badge_icon_url.spec()].hash); env, (*hashes)[info_.splash_image_url.spec()].hash);
ScopedJavaLocalRef<jobject> java_badge_icon; ScopedJavaLocalRef<jobject> java_splash_icon;
if (!badge_icon_.drawsNothing()) if (!splash_icon_.drawsNothing())
java_badge_icon = gfx::ConvertToJavaBitmap(&badge_icon_); java_splash_icon = gfx::ConvertToJavaBitmap(&splash_icon_);
ScopedJavaLocalRef<jobjectArray> java_icon_urls = ScopedJavaLocalRef<jobjectArray> java_icon_urls =
base::android::ToJavaArrayOfStrings(env, info_.icon_urls); base::android::ToJavaArrayOfStrings(env, info_.icon_urls);
...@@ -274,8 +274,8 @@ void WebApkUpdateDataFetcher::OnGotIconMurmur2Hashes( ...@@ -274,8 +274,8 @@ void WebApkUpdateDataFetcher::OnGotIconMurmur2Hashes(
Java_WebApkUpdateDataFetcher_onDataAvailable( Java_WebApkUpdateDataFetcher_onDataAvailable(
env, java_ref_, java_url, java_scope, java_name, java_short_name, env, java_ref_, java_url, java_scope, java_name, java_short_name,
java_primary_icon_url, java_primary_icon_murmur2_hash, java_primary_icon, java_primary_icon_url, java_primary_icon_murmur2_hash, java_primary_icon,
java_is_primary_icon_maskable, java_badge_icon_url, java_is_primary_icon_maskable, java_splash_icon_url,
java_badge_icon_murmur2_hash, java_badge_icon, java_icon_urls, java_splash_icon_murmur2_hash, java_splash_icon, java_icon_urls,
static_cast<int>(info_.display), info_.orientation, static_cast<int>(info_.display), info_.orientation,
OptionalSkColorToJavaColor(info_.theme_color), OptionalSkColorToJavaColor(info_.theme_color),
OptionalSkColorToJavaColor(info_.background_color), java_share_action, OptionalSkColorToJavaColor(info_.background_color), java_share_action,
......
...@@ -83,7 +83,7 @@ class WebApkUpdateDataFetcher : public content::WebContentsObserver { ...@@ -83,7 +83,7 @@ class WebApkUpdateDataFetcher : public content::WebContentsObserver {
SkBitmap primary_icon_; SkBitmap primary_icon_;
bool is_primary_icon_maskable_; bool is_primary_icon_maskable_;
SkBitmap badge_icon_; SkBitmap splash_icon_;
base::WeakPtrFactory<WebApkUpdateDataFetcher> weak_ptr_factory_{this}; base::WeakPtrFactory<WebApkUpdateDataFetcher> weak_ptr_factory_{this};
......
...@@ -58,8 +58,8 @@ static void JNI_WebApkUpdateManager_StoreWebApkUpdateRequestToFile( ...@@ -58,8 +58,8 @@ static void JNI_WebApkUpdateManager_StoreWebApkUpdateRequestToFile(
const JavaParamRef<jstring>& java_primary_icon_url, const JavaParamRef<jstring>& java_primary_icon_url,
const JavaParamRef<jobject>& java_primary_icon_bitmap, const JavaParamRef<jobject>& java_primary_icon_bitmap,
jboolean java_is_primary_icon_maskable, jboolean java_is_primary_icon_maskable,
const JavaParamRef<jstring>& java_badge_icon_url, const JavaParamRef<jstring>& java_splash_icon_url,
const JavaParamRef<jobject>& java_badge_icon_bitmap, const JavaParamRef<jobject>& java_splash_icon_bitmap,
const JavaParamRef<jobjectArray>& java_icon_urls, const JavaParamRef<jobjectArray>& java_icon_urls,
const JavaParamRef<jobjectArray>& java_icon_hashes, const JavaParamRef<jobjectArray>& java_icon_hashes,
jint java_display_mode, jint java_display_mode,
...@@ -97,8 +97,8 @@ static void JNI_WebApkUpdateManager_StoreWebApkUpdateRequestToFile( ...@@ -97,8 +97,8 @@ static void JNI_WebApkUpdateManager_StoreWebApkUpdateRequestToFile(
info.background_color = JavaColorToOptionalSkColor(java_background_color); info.background_color = JavaColorToOptionalSkColor(java_background_color);
info.best_primary_icon_url = info.best_primary_icon_url =
GURL(ConvertJavaStringToUTF8(env, java_primary_icon_url)); GURL(ConvertJavaStringToUTF8(env, java_primary_icon_url));
info.best_badge_icon_url = info.splash_image_url =
GURL(ConvertJavaStringToUTF8(env, java_badge_icon_url)); GURL(ConvertJavaStringToUTF8(env, java_splash_icon_url));
info.manifest_url = GURL(ConvertJavaStringToUTF8(env, java_web_manifest_url)); info.manifest_url = GURL(ConvertJavaStringToUTF8(env, java_web_manifest_url));
GURL share_target_action = GURL share_target_action =
...@@ -156,11 +156,11 @@ static void JNI_WebApkUpdateManager_StoreWebApkUpdateRequestToFile( ...@@ -156,11 +156,11 @@ static void JNI_WebApkUpdateManager_StoreWebApkUpdateRequestToFile(
gfx::CreateSkBitmapFromJavaBitmap(java_primary_icon_bitmap_lock); gfx::CreateSkBitmapFromJavaBitmap(java_primary_icon_bitmap_lock);
primary_icon.setImmutable(); primary_icon.setImmutable();
SkBitmap badge_icon; SkBitmap splash_icon;
if (!java_badge_icon_bitmap.is_null()) { if (!java_splash_icon_bitmap.is_null()) {
gfx::JavaBitmap java_badge_icon_bitmap_lock(java_badge_icon_bitmap); gfx::JavaBitmap java_splash_icon_bitmap_lock(java_splash_icon_bitmap);
gfx::CreateSkBitmapFromJavaBitmap(java_badge_icon_bitmap_lock); gfx::CreateSkBitmapFromJavaBitmap(java_splash_icon_bitmap_lock);
badge_icon.setImmutable(); splash_icon.setImmutable();
} }
std::string webapk_package; std::string webapk_package;
...@@ -194,7 +194,7 @@ static void JNI_WebApkUpdateManager_StoreWebApkUpdateRequestToFile( ...@@ -194,7 +194,7 @@ static void JNI_WebApkUpdateManager_StoreWebApkUpdateRequestToFile(
WebApkInstaller::StoreUpdateRequestToFile( WebApkInstaller::StoreUpdateRequestToFile(
base::FilePath(update_request_path), info, primary_icon, base::FilePath(update_request_path), info, primary_icon,
java_is_primary_icon_maskable, badge_icon, webapk_package, java_is_primary_icon_maskable, splash_icon, webapk_package,
base::NumberToString(java_webapk_version), base::NumberToString(java_webapk_version),
std::move(icon_url_to_murmur2_hash), java_is_manifest_stale, std::move(icon_url_to_murmur2_hash), java_is_manifest_stale,
update_reason, update_reason,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment