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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkMetaDataUtils.java

Issue 2453423002: Send all of the icon URLs listed in Web Manifest to WebAPK Server. (Closed)
Patch Set: Created 4 years, 2 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/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.

Powered by Google App Engine
This is Rietveld 408576698