Chromium Code Reviews| 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 2eac6f09e07a8c5d8d1ec7b1fb5990d5abc1231b..ddfa310979731f5e3c63602cbb88fd09491304e8 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,11 @@ import org.chromium.content_public.common.ScreenOrientationValues; |
| import org.chromium.webapk.lib.common.WebApkConstants; |
| import org.chromium.webapk.lib.common.WebApkMetaDataKeys; |
| +import java.util.Arrays; |
| +import java.util.HashSet; |
| +import java.util.Iterator; |
| +import java.util.Set; |
| + |
| /** |
| * Contains methods for extracting meta data from WebAPK. |
| */ |
| @@ -48,7 +53,8 @@ public class WebApkMetaDataUtils { |
| return WebappInfo.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, TextUtils.isEmpty(metaData.bestIconUrl), |
| + webApkPackageName); |
| } |
| /** |
| @@ -84,8 +90,10 @@ 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.bestIconUrl = IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.BEST_ICON_URL); |
| metaData.iconMurmur2Hash = getIconMurmur2HashFromMetaData(bundle); |
| + metaData.iconUrls = WebApkMetaDataUtils.getIconUrlsFromString(IntentUtils.safeGetString( |
| + bundle, WebApkMetaDataKeys.ICON_URLS)); |
| if (TextUtils.isEmpty(metaData.scope)) { |
| metaData.scope = ShortcutHelper.getScopeFromUrl(metaData.startUrl); |
| @@ -136,6 +144,37 @@ public class WebApkMetaDataUtils { |
| } |
| /** |
| + * Convert a set of icon URLs into a string, and use {@link WebApkConstants.ICON_URL_SEPARATOR} |
| + * to separate them. |
| + * @param iconUrlSet A set of icon URLs. |
| + * @return a string of all the icon URLs. |
| + */ |
| + public static String convertIconUrlsToString(Set<String> iconUrlSet) { |
|
pkotwicz
2016/11/01 00:29:49
I can't find any calls to this function
Xi Han
2016/11/07 16:51:42
Good catch, the caller was removed after I rebased
|
| + StringBuilder iconUrls = new StringBuilder(); |
| + for (Iterator<String> it = iconUrlSet.iterator(); it.hasNext();) { |
| + iconUrls.append(it.next()); |
| + if (it.hasNext()) { |
| + iconUrls.append(WebApkConstants.ICON_URL_SEPARATOR); |
| + } |
| + } |
| + return iconUrls.toString(); |
| + } |
| + |
| + /** |
| + * All of the icon URLs are stored as a string value for one meta-data tag in WebAPK's |
| + * AndroidManifest.xml. This function parses the string value and returns a set containing all |
| + * the icon URLs. Returns an empty set if the {@link iconUrls} is empty. |
| + */ |
|
pkotwicz
2016/11/01 00:29:49
How about: "Extract the icon URLs from the WebAPK'
Xi Han
2016/11/07 16:51:42
Sounds better, thanks. Only one change: space -> {
|
| + public static Set<String> getIconUrlsFromString(String iconUrls) { |
|
pkotwicz
2016/11/01 00:29:49
Can you please modify WebApkMetaDataUtils#testSani
Xi Han
2016/11/07 16:51:42
Good idea. I add a separate test since the icon ur
|
| + Set<String> iconUrlSet = new HashSet<String>(); |
| + if (TextUtils.isEmpty(iconUrls)) return iconUrlSet; |
| + |
| + String[] urls = iconUrls.split(WebApkConstants.ICON_URL_SEPARATOR); |
| + iconUrlSet.addAll(Arrays.asList(urls)); |
|
pkotwicz
2016/11/01 00:29:49
I think you can use CollectionUtil.newHashSet()
Xi Han
2016/11/07 16:51:42
Done.
|
| + return iconUrlSet; |
| + } |
| + |
| + /** |
| * Returns the WebDisplayMode which matches {@link displayMode}. |
| * @param displayMode One of https://www.w3.org/TR/appmanifest/#dfn-display-modes-values |
| * @return The matching WebDisplayMode. {@link WebDisplayMode#Undefined} if there is no match. |