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 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. |
|
dominickn
2016/10/25 07:39:16
Nit: specify it's from the WebAPK package app info
pkotwicz
2016/10/26 01:53:29
I specified that the meta data is extracted from t
|
| + * @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; |
| } |
| /** |