Need to parse and use the "supported_origins" value in the manifest.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/eb04efa548c78d5f7d427beb4440829598d10f6c commit eb04efa548c78d5f7d427beb4440829598d10f6c Author: Rouslan Solomakhin <rouslan@chromium.org> Date: Tue Jun 27 16:46:50 2017 Parse "supported_origins" in web payment manifest. If present, a valid "supported_origins" field in web payment manifest can be either the string "*" or a list of origins. The field is not yet used in this patch. Spec: https://w3c.github.io/payment-method-manifest/ Design doc: https://docs.google.com/document/d/1izV4uC-tiRJG3JLooqY3YRLU22tYOsLTNq0P_InPJeE Bonus: At the request of multiple payment app developers, this patch adds logging statements for easier debugging of the reasons why a manifest may not be accepted by the parser. Bug: 735184 Change-Id: I6e7a64ebeb2b9cd6a6f0a44077874e6417b229bd Reviewed-on: https://chromium-review.googlesource.com/541520 Reviewed-by: Mathieu Perreault <mathp@chromium.org> Reviewed-by: Chris Palmer <palmer@chromium.org> Commit-Queue: Rouslan Solomakhin <rouslan@chromium.org> Cr-Commit-Position: refs/heads/master@{#482650} [add] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/chrome/browser/payments/payment_manifest_parser_host_browsertest.cc [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/chrome/test/BUILD.gn [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/content/android/payment_manifest_parser_android.cc [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/content/payment_manifest_parser_host.cc [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/content/payment_manifest_parser_host.h [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/content/utility/fingerprint_parser.cc [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/content/utility/payment_manifest_parser.cc [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/content/utility/payment_manifest_parser.h [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/content/utility/payment_manifest_parser_unittest.cc [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/mojom/BUILD.gn [modify] https://crrev.com/eb04efa548c78d5f7d427beb4440829598d10f6c/components/payments/mojom/payment_manifest_parser.mojom
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/684c1fb1697ca4ca50612a1449d67493f49bbef8 commit 684c1fb1697ca4ca50612a1449d67493f49bbef8 Author: Rouslan Solomakhin <rouslan@chromium.org> Date: Tue Jun 27 18:49:09 2017 Add payment manifest parser integration test. Bug: 735184 Change-Id: I248757a555b6d04c06a683931c895d8f4829918d Reviewed-on: https://chromium-review.googlesource.com/548656 Commit-Queue: Rouslan Solomakhin <rouslan@chromium.org> Reviewed-by: Ganggui Tang <gogerald@chromium.org> Cr-Commit-Position: refs/heads/master@{#482697} [modify] https://crrev.com/684c1fb1697ca4ca50612a1449d67493f49bbef8/chrome/android/java_sources.gni [add] https://crrev.com/684c1fb1697ca4ca50612a1449d67493f49bbef8/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentManifestParserTest.java [modify] https://crrev.com/684c1fb1697ca4ca50612a1449d67493f49bbef8/components/payments/content/android/java/src/org/chromium/components/payments/PaymentManifestParser.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/52eef8e8745509fabafda6c2bb3387608054203b commit 52eef8e8745509fabafda6c2bb3387608054203b Author: Rouslan Solomakhin <rouslan@chromium.org> Date: Fri Jul 07 18:39:51 2017 Owned and shared payment manifest downloader. Instead of creating short-lived, self-deleting downloader objects for payment method manifests, use a single instance of the downloader that is owned by PaymentRequest. This reduces complexity of the JNI shim, reduces resource utilization, and makes the code more readable and stable. At long last, this patch adds integration tests that stress the full manifest download stack on Android. Bug: 735184 Change-Id: I64c64a275ee873f2546cdc89274ab37780582571 Reviewed-on: https://chromium-review.googlesource.com/559730 Commit-Queue: Rouslan Solomakhin <rouslan@chromium.org> Reviewed-by: Ganggui Tang <gogerald@chromium.org> Cr-Commit-Position: refs/heads/master@{#484997} [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFactory.java [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/android/java_sources.gni [add] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentManifestDownloaderTest.java [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/android/junit/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/android/junit/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java [add] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/test/data/payments/app.json [add] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/test/data/payments/payment-manifest.json [add] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/test/data/payments/webpay [add] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/chrome/test/data/payments/webpay.mock-http-headers [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/components/payments/content/android/java/src/org/chromium/components/payments/PaymentManifestDownloader.java [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/components/payments/content/android/payment_manifest_downloader_android.cc [add] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/components/payments/content/android/payment_manifest_downloader_android.h [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/components/payments/content/android/payment_manifest_parser_android.cc [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/components/payments/content/android/payment_manifest_parser_android.h [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/components/payments/content/payment_manifest_downloader.cc [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/components/payments/content/payment_manifest_downloader.h [modify] https://crrev.com/52eef8e8745509fabafda6c2bb3387608054203b/components/payments/content/payment_manifest_downloader_unittest.cc
Patches https://crrev.com/e9d960212bc9b4d4205fea5ada09c260df988c91 and https://crrev.com/806e5e858c78d8df7fb3af1c2d288977cf9781a3 should have really been associated with this bug report.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d commit ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d Author: Rouslan Solomakhin <rouslan@chromium.org> Date: Tue Jul 25 02:09:09 2017 [Payments] All supported origins. If a payment method contains "supported_origins": "*", then any app can claim support. Bug: 735184 Change-Id: I0d028c83f85ca07ece176e63bdac8d525f0b7223 Reviewed-on: https://chromium-review.googlesource.com/581888 Commit-Queue: Rouslan Solomakhin <rouslan@chromium.org> Reviewed-by: Ganggui Tang <gogerald@chromium.org> Cr-Commit-Position: refs/heads/master@{#489186} [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/chrome/android/java/src/org/chromium/chrome/browser/payments/PackageManagerDelegate.java [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestVerifier.java [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/chrome/android/javatests/src/org/chromium/chrome/browser/payments/MockPackageManagerDelegate.java [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/chrome/android/javatests/src/org/chromium/chrome/browser/payments/PaymentManifestDownloaderTest.java [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/chrome/android/junit/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/components/test/data/payments/alicepay.com/payment-manifest.json [modify] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/components/test/data/payments/bobpay.com/payment-manifest.json [add] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/components/test/data/payments/frankpay.com/payment-manifest.json [add] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/components/test/data/payments/frankpay.com/webpay [add] https://crrev.com/ab3c53b4f6c6bc75aa44d35d081993349b0a6c5d/components/test/data/payments/frankpay.com/webpay.mock-http-headers
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32 commit be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32 Author: Rouslan Solomakhin <rouslan@chromium.org> Date: Tue Aug 01 18:27:22 2017 [Payments] Supported origins. If a payment method manifest contains "supported_origins": ["https://alicepay.com"], then all apps from "https://alicepay.com" with valid signatures can claim support. These apps must match the package name, minimum version, and SHA256 certificate fingerprint of the web app manifest from "https://alicepay.com", which is linked as "default_applications" from a payment method that has "https://alicepay.com" origin. Bug: 735184 Change-Id: I1abdca115434769e75570dd8569facf497b6ef65 Reviewed-on: https://chromium-review.googlesource.com/585171 Reviewed-by: Ganggui Tang <gogerald@chromium.org> Commit-Queue: Rouslan Solomakhin <rouslan@chromium.org> Cr-Commit-Position: refs/heads/master@{#491059} [modify] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java [modify] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestVerifier.java [modify] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/chrome/android/java/src/org/chromium/chrome/browser/payments/PaymentManifestWebDataService.java [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/chrome/android/java/src/org/chromium/chrome/browser/payments/UriUtils.java [modify] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/chrome/android/java_sources.gni [modify] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java [modify] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/chrome/android/junit/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java [modify] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/chrome/android/junit/src/org/chromium/chrome/browser/payments/PaymentManifestVerifierTest.java [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/georgepay.com/payment-manifest.json [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/georgepay.com/webpay [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/georgepay.com/webpay.mock-http-headers [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/henrypay.com/app.json [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/henrypay.com/payment-manifest.json [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/henrypay.com/webpay [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/henrypay.com/webpay.mock-http-headers [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/ikepay.com/app.json [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/ikepay.com/payment-manifest.json [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/ikepay.com/webpay [add] https://crrev.com/be2ad6c6b68386e5a8c6c3615dff5d26a4a6bf32/components/test/data/payments/ikepay.com/webpay.mock-http-headers
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/c00100dc25d5ca4a2ca0da89cdb46547663897d3 commit c00100dc25d5ca4a2ca0da89cdb46547663897d3 Author: Rouslan Solomakhin <rouslan@chromium.org> Date: Fri Aug 04 13:39:41 2017 [Payments] Allow apps without default method name. Before this patch, if a payment app did not have its own default payment method name, but only supported other non-default payment methods, then Chrome would filter it out. This unnecessarily constrained some payment apps to select one payment method to be the default, which is not always the case. This patch relaxes this requirement. After this patch, if a payment app does not have its own default payment method name, then Chrome checks its non-default payment methods as well. Bug: 735184 Change-Id: I6604c60aad4efa963120f4c66d505ab7e31bf94f Reviewed-on: https://chromium-review.googlesource.com/600733 Reviewed-by: Ganggui Tang <gogerald@chromium.org> Commit-Queue: Rouslan Solomakhin <rouslan@chromium.org> Cr-Commit-Position: refs/heads/master@{#492012} [modify] https://crrev.com/c00100dc25d5ca4a2ca0da89cdb46547663897d3/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java [modify] https://crrev.com/c00100dc25d5ca4a2ca0da89cdb46547663897d3/chrome/android/javatests/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinderTest.java
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9ecac9b13f80be30e6dc4a10405129d35a4380f3 commit 9ecac9b13f80be30e6dc4a10405129d35a4380f3 Author: Rouslan Solomakhin <rouslan@chromium.org> Date: Fri Aug 04 19:02:47 2017 [Payments] Ignore supported methods that match the default method. Before this patch, an Android payment app that specifies their default payment method (e.g., "https://bobpay.xyz/webpay") also in their list of supported non-default methods would cause Chrome to attempt to verify that https://bobpay.xyz/webpay/payment-method.json contains "supported_origins": ["https://bobpay.xyz"] statement, which is redundant and would not be typically found in a payment method manifest. Because the cached payment method manifest would never contain such statement, the cache would always be judged to be stale and thus would be ignored. This resulted in slowness of bringing up the Payment Request UI, as Chrome was re-downloading the payment method manifest instead of using the one in cache. Because Android payment app developers may decide to place the default payment method name into the list of supported non-default payment method names, the most robust solution is to ignore the non-default supported payment method name if it's also the default payment method name of the Android payment app in question. After this patch, Chrome does not attempt to verify that https://bobpay.xyz/webpay/payment-method.json contains "supported_origins": ["https://bobpay.xyz"] statement, even if an Android payment app with default payment method name "https://bobpay.xyz/webpay" also places this method name in the list of supported non-default payment method names. The cache is now not judged stale in this situation, allowing Chrome to use the cache to quickly bring up the Payment Request UI. Bug: 735184 Change-Id: Ie39a8c9e831e4431fb53f17425e8181604987394 Reviewed-on: https://chromium-review.googlesource.com/602371 Commit-Queue: Rouslan Solomakhin <rouslan@chromium.org> Reviewed-by: Ganggui Tang <gogerald@chromium.org> Cr-Commit-Position: refs/heads/master@{#492090} [modify] https://crrev.com/9ecac9b13f80be30e6dc4a10405129d35a4380f3/chrome/android/java/src/org/chromium/chrome/browser/payments/AndroidPaymentAppFinder.java
FYI
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/bb7b57a0119bbd501cdc2b23d151320d1977f015 commit bb7b57a0119bbd501cdc2b23d151320d1977f015 Author: Rouslan Solomakhin <rouslan@chromium.org> Date: Mon Sep 18 22:28:55 2017 [Payments] Prohibit empty strings in method manifest. Bug: 735184 Change-Id: I77509c18295cf391730dd704ab25b2b4b84aecea Reviewed-on: https://chromium-review.googlesource.com/671032 Commit-Queue: Rouslan Solomakhin <rouslan@chromium.org> Reviewed-by: Yuzhu Shen <yzshen@chromium.org> Cr-Commit-Position: refs/heads/master@{#502697} [modify] https://crrev.com/bb7b57a0119bbd501cdc2b23d151320d1977f015/components/payments/content/utility/payment_manifest_parser.cc [modify] https://crrev.com/bb7b57a0119bbd501cdc2b23d151320d1977f015/components/payments/core/payment_manifest_downloader.cc
Comment 1 by lafo...@chromium.org
, Jun 27 2017