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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java

Issue 2793573002: [Payments] Use <meta-data> tag instead of intent filter data to detect supported payment methods. (Closed)
Patch Set: Created 3 years, 9 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/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;
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698