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

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

Issue 2435383002: Update WebAPKs even if the WebAPK start URL has no Web Manifest part 1/3 (Closed)
Patch Set: Merge branch 'master' into update_fail0 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 ef655be142f10b8c5213d5053df1762ffca4a82e..ada8353fb772ca2585115ef676d770e3ac5acd9e 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
@@ -32,42 +32,62 @@ public class WebApkMetaDataUtils {
*/
public static WebappInfo extractWebappInfoFromWebApk(
String webApkPackageName, String url, int source) {
+ WebApkMetaData metaData = extractMetaDataFromWebApk(webApkPackageName);
+ if (metaData == null) return null;
+
PackageManager packageManager = ContextUtils.getApplicationContext().getPackageManager();
- ApplicationInfo appInfo;
+ Resources resources;
try {
- appInfo = packageManager.getApplicationInfo(
- webApkPackageName, PackageManager.GET_META_DATA);
+ resources = packageManager.getResourcesForApplication(webApkPackageName);
} catch (PackageManager.NameNotFoundException e) {
return null;
}
- Bundle metaData = appInfo.metaData;
- String scope = IntentUtils.safeGetString(metaData, WebApkMetaDataKeys.SCOPE);
- String name = IntentUtils.safeGetString(metaData, WebApkMetaDataKeys.NAME);
- String shortName = IntentUtils.safeGetString(metaData, WebApkMetaDataKeys.SHORT_NAME);
- int displayMode = displayModeFromString(
- IntentUtils.safeGetString(metaData, WebApkMetaDataKeys.DISPLAY_MODE));
- int orientation = orientationFromString(
- IntentUtils.safeGetString(metaData, WebApkMetaDataKeys.ORIENTATION));
- long themeColor = getLongFromMetaData(metaData, WebApkMetaDataKeys.THEME_COLOR,
- ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING);
- long backgroundColor = getLongFromMetaData(metaData, WebApkMetaDataKeys.BACKGROUND_COLOR,
- ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING);
- boolean isIconGenerated =
- TextUtils.isEmpty(IntentUtils.safeGetString(metaData, WebApkMetaDataKeys.ICON_URL));
+ Bitmap icon = BitmapFactory.decodeResource(resources, metaData.iconId);
+ String encodedIcon = ShortcutHelper.encodeBitmapAsString(icon);
- int iconId = IntentUtils.safeGetInt(metaData, WebApkMetaDataKeys.ICON_ID, 0);
- Resources resources;
+ 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);
+ }
+
+ /**
+ * Populates {@link WebApkMetaData} with meta data extracted from WebAPK.
+ * @param webApkPackageName Package name of the WebAPK to extract meta data from.
+ */
+ public static WebApkMetaData extractMetaDataFromWebApk(String webApkPackageName) {
+ PackageManager packageManager = ContextUtils.getApplicationContext().getPackageManager();
+ ApplicationInfo appInfo;
try {
- resources = packageManager.getResourcesForApplication(webApkPackageName);
+ appInfo = packageManager.getApplicationInfo(
+ webApkPackageName, PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
return null;
}
- Bitmap icon = BitmapFactory.decodeResource(resources, iconId);
- String encodedIcon = ShortcutHelper.encodeBitmapAsString(icon);
+ Bundle bundle = appInfo.metaData;
- return WebappInfo.create(WebApkConstants.WEBAPK_ID_PREFIX + webApkPackageName, url, scope,
- encodedIcon, name, shortName, displayMode, orientation, source, themeColor,
- backgroundColor, isIconGenerated, webApkPackageName);
+ WebApkMetaData metaData = new WebApkMetaData();
+ metaData.shellApkVersion =
+ IntentUtils.safeGetInt(bundle, WebApkMetaDataKeys.SHELL_APK_VERSION, 0);
+ metaData.manifestUrl =
+ IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.WEB_MANIFEST_URL);
+ metaData.startUrl = IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.START_URL);
+ metaData.name = IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.NAME);
+ metaData.shortName = IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.SHORT_NAME);
+ metaData.scope = IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.SCOPE);
+ metaData.displayMode = displayModeFromString(
+ IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.DISPLAY_MODE));
+ metaData.orientation = orientationFromString(
+ IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.ORIENTATION));
+ metaData.themeColor = getLongFromMetaData(bundle, WebApkMetaDataKeys.THEME_COLOR,
+ ShortcutHelper.MANIFEST_COLOR_INVALID_OR_MISSING);
+ 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 =
+ IntentUtils.safeGetString(bundle, WebApkMetaDataKeys.ICON_MURMUR2_HASH);
+ return metaData;
}
/**

Powered by Google App Engine
This is Rietveld 408576698