Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java |
| index 8afbbc2a609d5c5c4d9969f9db224309056a953f..a943eb3a9e67c08de35e7df874570bd4a037b57f 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java |
| @@ -5,10 +5,12 @@ |
| package org.chromium.chrome.browser.payments; |
| import android.content.Intent; |
| +import android.content.pm.ApplicationInfo; |
| import android.content.pm.PackageInfo; |
| import android.content.pm.PackageManager; |
| import android.content.pm.PackageManager.NameNotFoundException; |
| import android.content.pm.ResolveInfo; |
| +import android.content.res.Resources; |
| import android.graphics.drawable.Drawable; |
| import android.os.StrictMode; |
| import android.os.StrictMode.ThreadPolicy; |
| @@ -17,6 +19,8 @@ import org.chromium.base.ContextUtils; |
| import java.util.List; |
| +import javax.annotation.Nullable; |
| + |
| /** Abstraction of Android's package manager to enable unit testing. */ |
| public class PackageManagerDelegate { |
| /** |
| @@ -96,4 +100,50 @@ public class PackageManagerDelegate { |
| public Drawable getAppIcon(ResolveInfo resolveInfo) { |
| return resolveInfo.loadIcon(ContextUtils.getApplicationContext().getPackageManager()); |
| } |
| + |
| + /** |
| + * Gets the given string array meta data from the given app. |
| + * |
| + * @param packageName The package name of the app containing the meta data. |
| + * @param metaDataName The meta data name of the string array. |
| + * @return The string array or null. |
| + */ |
| + @Nullable |
| + public String[] getStringArrayMetaData(String packageName, String metaDataName) { |
| + try { |
| + PackageManager packageManager = |
| + ContextUtils.getApplicationContext().getPackageManager(); |
| + ApplicationInfo appInfo = |
| + packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA); |
| + if (appInfo.metaData == null) return null; |
| + |
| + int resId = appInfo.metaData.getInt(metaDataName); |
| + Resources resources = packageManager.getResourcesForApplication(appInfo); |
| + return resources.getStringArray(resId); |
| + } catch (NameNotFoundException e) { |
|
please use gerrit instead
2017/03/31 15:47:08
Let's wrap in try-catch only the function that thr
gogerald1
2017/03/31 16:18:44
Done. getResourcesForApplication might also throug
|
| + return null; |
| + } |
| + } |
| + |
| + /** |
| + * Gets the given string meta data from the given app. |
| + * |
| + * @param packageName The package name of the app containing the meta data. |
| + * @param metaDataName The meta data name of the string. |
| + * @return The string or null. |
| + */ |
| + @Nullable |
| + public String getStringMetaData(String packageName, String metaDataName) { |
| + try { |
| + PackageManager packageManager = |
| + ContextUtils.getApplicationContext().getPackageManager(); |
| + ApplicationInfo appInfo = |
| + packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA); |
| + if (appInfo.metaData == null) return null; |
| + |
| + return appInfo.metaData.getString(metaDataName); |
| + } catch (NameNotFoundException e) { |
|
please use gerrit instead
2017/03/31 15:47:08
Ditto.
gogerald1
2017/03/31 16:18:44
Done. Ditto
|
| + return null; |
| + } |
| + } |
| } |