| Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkMetaDataUtils.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkMetaDataUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkMetaDataUtils.java
|
| index bfe11ea07f448d7f86bdd86b4d4051ed6020ecd1..0904388c292c737d8e0456bf581cf9637f1bab56 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkMetaDataUtils.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkMetaDataUtils.java
|
| @@ -20,6 +20,9 @@ import org.chromium.content_public.common.ScreenOrientationValues;
|
| import org.chromium.webapk.lib.common.WebApkConstants;
|
| import org.chromium.webapk.lib.common.WebApkMetaDataKeys;
|
|
|
| +import java.util.HashMap;
|
| +import java.util.Map;
|
| +
|
| /**
|
| * Contains methods for extracting meta data from WebAPK.
|
| */
|
| @@ -48,7 +51,7 @@ public class WebApkMetaDataUtils {
|
| return WebApkInfo.create(WebApkConstants.WEBAPK_ID_PREFIX + webApkPackageName, url,
|
| metaData.scope, encodedIcon, metaData.name, metaData.shortName,
|
| metaData.displayMode, metaData.orientation, source, metaData.themeColor,
|
| - metaData.backgroundColor, TextUtils.isEmpty(metaData.iconUrl), webApkPackageName);
|
| + metaData.backgroundColor, false, webApkPackageName);
|
| }
|
|
|
| /**
|
| @@ -84,8 +87,8 @@ public class WebApkMetaDataUtils {
|
| metaData.backgroundColor = getLongFromMetaData(bundle, WebApkMetaDataKeys.BACKGROUND_COLOR,
|
| ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING);
|
| metaData.iconId = IntentUtils.safeGetInt(bundle, WebApkMetaDataKeys.ICON_ID, 0);
|
| - metaData.iconUrl = IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.ICON_URL);
|
| - metaData.iconMurmur2Hash = getIconMurmur2HashFromMetaData(bundle);
|
| + metaData.iconUrlAndMurmur2HashMap =
|
| + WebApkMetaDataUtils.getIconUrlAndIconMurmur2HashMap(bundle);
|
|
|
| if (TextUtils.isEmpty(metaData.scope)) {
|
| metaData.scope = ShortcutHelper.getScopeFromUrl(metaData.startUrl);
|
| @@ -120,19 +123,24 @@ public class WebApkMetaDataUtils {
|
| }
|
|
|
| /**
|
| - * Extracts icon murmur2 hash from the WebAPK's meta data. Return value is a string because the
|
| - * hash can take values up to 2^64-1 which is greater than {@link Long#MAX_VALUE}.
|
| - * @param metaData WebAPK meta data to extract the hash from.
|
| - * @return The hash. An empty string if the hash could not be extracted.
|
| + * Extract the icon URLs and icon hashes from the WebAPK's meta data, and returns a map of these
|
| + * {URL, hash} pairs. The icon URLs/icon hashes are stored as a space separated list in a
|
| + * single meta data tag in the WebAPK's AndroidManifest.xml respectively.
|
| */
|
| - public static String getIconMurmur2HashFromMetaData(Bundle metaData) {
|
| - String value = metaData.getString(WebApkMetaDataKeys.ICON_MURMUR2_HASH);
|
| + public static Map<String, String> getIconUrlAndIconMurmur2HashMap(Bundle metaData) {
|
| + Map<String, String> iconUrlAndIconMurmur2HashMap = new HashMap<String, String>();
|
| + String iconUrls = metaData.getString(WebApkMetaDataKeys.ICON_URLS);
|
| + String iconHashes = metaData.getString(WebApkMetaDataKeys.ICON_MURMUR2_HASHES);
|
| + if (TextUtils.isEmpty(iconUrls) || TextUtils.isEmpty(iconHashes)) {
|
| + return iconUrlAndIconMurmur2HashMap;
|
| + }
|
|
|
| - // The value should be terminated with 'L' to force the value to be a string.
|
| - if (value == null || !value.endsWith("L")) {
|
| - return "";
|
| + String[] urls = iconUrls.split(WebApkConstants.ICON_URL_SEPARATOR);
|
| + String[] hashes = iconHashes.split(WebApkConstants.ICON_HASH_SEPARATOR);
|
| + for (int i = 0; i < urls.length; i++) {
|
| + iconUrlAndIconMurmur2HashMap.put(urls[i], murmur2HashFromString(hashes[i]));
|
| }
|
| - return value.substring(0, value.length() - 1);
|
| + return iconUrlAndIconMurmur2HashMap;
|
| }
|
|
|
| /**
|
| @@ -189,4 +197,17 @@ public class WebApkMetaDataUtils {
|
| return ScreenOrientationValues.DEFAULT;
|
| }
|
| }
|
| +
|
| + /**
|
| + * Extracts the Murmur2 hash from a meta-data string. The return value is a string because the
|
| + * hash can take values up to 2^64-1 which is greater than {@link Long#MAX_VALUE}. Returns an
|
| + * empty string if the hash could not be extracted.
|
| + */
|
| + private static String murmur2HashFromString(String value) {
|
| + // The value should be terminated with 'L' to force the value to be a string.
|
| + if (value == null || !value.endsWith("L")) {
|
| + return "";
|
| + }
|
| + return value.substring(0, value.length() - 1);
|
| + }
|
| }
|
|
|