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

Unified Diff: components/payments/content/android/payment_manifest_parser_android.cc

Issue 2802043002: Use web-app manifest format for Android payment apps. (Closed)
Patch Set: Update comment Created 3 years, 8 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: components/payments/content/android/payment_manifest_parser_android.cc
diff --git a/components/payments/content/android/payment_manifest_parser_android.cc b/components/payments/content/android/payment_manifest_parser_android.cc
index 012d9eadc9d3423be3e0b031fa17a7bcefb74d6f..a5161fff0ea4e361e43d69d070af4f76d6356e0d 100644
--- a/components/payments/content/android/payment_manifest_parser_android.cc
+++ b/components/payments/content/android/payment_manifest_parser_android.cc
@@ -14,6 +14,7 @@
#include "base/memory/ptr_util.h"
#include "base/numerics/safe_conversions.h"
#include "jni/PaymentManifestParser_jni.h"
+#include "url/mojo/url.mojom.h"
namespace payments {
namespace {
@@ -25,8 +26,35 @@ class ParseCallback {
~ParseCallback() {}
- void OnManifestParsed(
- std::vector<mojom::PaymentManifestSectionPtr> manifest) {
+ void OnPaymentMethodManifestParsed(std::vector<GURL> webAppManifestUrls) {
+ DCHECK_GE(100U, webAppManifestUrls.size());
+ JNIEnv* env = base::android::AttachCurrentThread();
+
+ if (webAppManifestUrls.empty()) {
Mathieu 2017/04/07 13:29:06 c++ case plz
please use gerrit instead 2017/04/07 16:56:29 Done.
+ // Can trigger synchronous deletion of PaymentManifestParserAndroid.
+ Java_ManifestParseCallback_onManifestParseFailure(env, jcallback_);
+ return;
+ }
+
+ base::android::ScopedJavaLocalRef<jobjectArray> juris =
+ Java_PaymentManifestParser_createWebAppManifestUris(
+ env, webAppManifestUrls.size());
+
+ for (size_t i = 0; i < webAppManifestUrls.size(); ++i) {
+ DCHECK(Java_PaymentManifestParser_addUri(
+ env, juris.obj(), base::checked_cast<int>(i),
+ base::android::ConvertUTF8ToJavaString(
+ env, webAppManifestUrls[i].spec())));
+ }
+
+ // Can trigger synchronous deletion of PaymentManifestParserAndroid.
+ Java_ManifestParseCallback_onPaymentMethodManifestParseSuccess(
+ env, jcallback_, juris.obj());
+ }
+
+ void OnWebAppManifestParsed(
Mathieu 2017/04/07 13:29:06 Could benefit from comments. Now that the WebAppMa
please use gerrit instead 2017/04/07 16:56:29 Done. It's strictly a copy.
+ std::vector<mojom::WebAppManifestSectionPtr> manifest) {
+ DCHECK_GE(100U, manifest.size());
JNIEnv* env = base::android::AttachCurrentThread();
if (manifest.empty()) {
@@ -38,26 +66,18 @@ class ParseCallback {
base::android::ScopedJavaLocalRef<jobjectArray> jmanifest =
Java_PaymentManifestParser_createManifest(env, manifest.size());
- // Java array indices must be integers.
- for (size_t i = 0; i < manifest.size() && i <= static_cast<size_t>(INT_MAX);
- ++i) {
- const mojom::PaymentManifestSectionPtr& section = manifest[i];
- if (section->sha256_cert_fingerprints.size() >
- static_cast<size_t>(INT_MAX)) {
- continue;
- }
+ for (size_t i = 0; i < manifest.size(); ++i) {
+ const mojom::WebAppManifestSectionPtr& section = manifest[i];
+ DCHECK_GE(100U, section->fingerprints.size());
Java_PaymentManifestParser_addSectionToManifest(
env, jmanifest.obj(), base::checked_cast<int>(i),
- base::android::ConvertUTF8ToJavaString(env, section->package_name),
- section->version,
- base::checked_cast<int>(section->sha256_cert_fingerprints.size()));
-
- for (size_t j = 0; j < section->sha256_cert_fingerprints.size() &&
- j <= static_cast<size_t>(INT_MAX);
- ++j) {
- const std::vector<uint8_t>& fingerprint =
- section->sha256_cert_fingerprints[j];
+ base::android::ConvertUTF8ToJavaString(env, section->id),
+ section->min_version,
+ base::checked_cast<int>(section->fingerprints.size()));
+
+ for (size_t j = 0; j < section->fingerprints.size(); ++j) {
+ const std::vector<uint8_t>& fingerprint = section->fingerprints[j];
Java_PaymentManifestParser_addFingerprintToSection(
env, jmanifest.obj(), base::checked_cast<int>(i),
base::checked_cast<int>(j),
@@ -66,8 +86,8 @@ class ParseCallback {
}
// Can trigger synchronous deletion of PaymentManifestParserAndroid.
- Java_ManifestParseCallback_onManifestParseSuccess(env, jcallback_,
- jmanifest.obj());
+ Java_ManifestParseCallback_onWebAppManifestParseSuccess(env, jcallback_,
+ jmanifest.obj());
}
private:
@@ -88,14 +108,25 @@ void PaymentManifestParserAndroid::StartUtilityProcess(
host_.StartUtilityProcess();
}
-void PaymentManifestParserAndroid::ParsePaymentManifest(
+void PaymentManifestParserAndroid::ParsePaymentMethodManifest(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& jcaller,
+ const base::android::JavaParamRef<jstring>& jcontent,
+ const base::android::JavaParamRef<jobject>& jcallback) {
+ host_.ParsePaymentMethodManifest(
+ base::android::ConvertJavaStringToUTF8(env, jcontent),
+ base::BindOnce(&ParseCallback::OnPaymentMethodManifestParsed,
+ base::MakeUnique<ParseCallback>(jcallback)));
+}
+
+void PaymentManifestParserAndroid::ParseWebAppManifest(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jcaller,
const base::android::JavaParamRef<jstring>& jcontent,
const base::android::JavaParamRef<jobject>& jcallback) {
- host_.ParsePaymentManifest(
+ host_.ParseWebAppManifest(
base::android::ConvertJavaStringToUTF8(env, jcontent),
- base::BindOnce(&ParseCallback::OnManifestParsed,
+ base::BindOnce(&ParseCallback::OnWebAppManifestParsed,
base::MakeUnique<ParseCallback>(jcallback)));
}

Powered by Google App Engine
This is Rietveld 408576698