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

Unified Diff: third_party/WebKit/Source/modules/payments/PaymentRequest.cpp

Issue 2645813006: Download web payment manifests. (Closed)
Patch Set: Address more comments Created 3 years, 10 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: third_party/WebKit/Source/modules/payments/PaymentRequest.cpp
diff --git a/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp b/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp
index 526f74e012afc41f47604f1cb3a1970a470def45..9146745902d9aa6bcb62e5dce82109ef97ff99f3 100644
--- a/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp
+++ b/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp
@@ -13,6 +13,8 @@
#include "bindings/core/v8/V8StringResource.h"
#include "bindings/modules/v8/V8AndroidPayMethodData.h"
#include "bindings/modules/v8/V8BasicCardRequest.h"
+#include "bindings/modules/v8/V8NativeAndroidPaymentAppManifest.h"
+#include "bindings/modules/v8/V8NativeAndroidPaymentAppManifestSection.h"
#include "bindings/modules/v8/V8PaymentDetails.h"
#include "core/EventTypeNames.h"
#include "core/dom/DOMException.h"
@@ -30,6 +32,8 @@
#include "modules/payments/AndroidPayTokenization.h"
#include "modules/payments/BasicCardRequest.h"
#include "modules/payments/HTMLIFrameElementPayments.h"
+#include "modules/payments/NativeAndroidPaymentAppManifest.h"
+#include "modules/payments/NativeAndroidPaymentAppManifestSection.h"
#include "modules/payments/PaymentAddress.h"
#include "modules/payments/PaymentItem.h"
#include "modules/payments/PaymentRequestUpdateEvent.h"
@@ -43,24 +47,46 @@
#include "public/platform/Platform.h"
#include "public/platform/WebTraceLocation.h"
#include "wtf/HashSet.h"
+#include "wtf/Optional.h"
-using payments::mojom::blink::CanMakePaymentQueryResult;
-using payments::mojom::blink::PaymentAddressPtr;
-using payments::mojom::blink::PaymentCurrencyAmount;
-using payments::mojom::blink::PaymentCurrencyAmountPtr;
-using payments::mojom::blink::PaymentDetailsModifierPtr;
-using payments::mojom::blink::PaymentDetailsPtr;
-using payments::mojom::blink::PaymentErrorReason;
-using payments::mojom::blink::PaymentItemPtr;
-using payments::mojom::blink::PaymentMethodDataPtr;
-using payments::mojom::blink::PaymentOptionsPtr;
-using payments::mojom::blink::PaymentResponsePtr;
-using payments::mojom::blink::PaymentShippingOptionPtr;
-using payments::mojom::blink::PaymentShippingType;
+namespace {
+
+using ::payments::mojom::blink::CanMakePaymentQueryResult;
+using ::payments::mojom::blink::NativeAndroidPaymentAppManifestSection;
+using ::payments::mojom::blink::NativeAndroidPaymentAppManifestSectionPtr;
+using ::payments::mojom::blink::PaymentAddressPtr;
+using ::payments::mojom::blink::PaymentCurrencyAmount;
+using ::payments::mojom::blink::PaymentCurrencyAmountPtr;
+using ::payments::mojom::blink::PaymentDetailsModifierPtr;
+using ::payments::mojom::blink::PaymentDetailsPtr;
+using ::payments::mojom::blink::PaymentErrorReason;
+using ::payments::mojom::blink::PaymentItemPtr;
+using ::payments::mojom::blink::PaymentMethodDataPtr;
+using ::payments::mojom::blink::PaymentOptionsPtr;
+using ::payments::mojom::blink::PaymentResponsePtr;
+using ::payments::mojom::blink::PaymentShippingOptionPtr;
+using ::payments::mojom::blink::PaymentShippingType;
+
+} // namespace
namespace mojo {
template <>
+struct TypeConverter<NativeAndroidPaymentAppManifestSectionPtr,
+ blink::NativeAndroidPaymentAppManifestSection> {
+ static NativeAndroidPaymentAppManifestSectionPtr Convert(
+ const blink::NativeAndroidPaymentAppManifestSection& input) {
+ NativeAndroidPaymentAppManifestSectionPtr output =
+ NativeAndroidPaymentAppManifestSection::New();
+ output->package_name = input.package();
+ output->version = input.hasVersion() ? input.version() : 0;
+ if (input.hasSha256_cert_fingerprints())
+ output->sha256_cert_fingerprints = input.sha256_cert_fingerprints();
+ return output;
+ }
+};
+
+template <>
struct TypeConverter<PaymentCurrencyAmountPtr, blink::PaymentCurrencyAmount> {
static PaymentCurrencyAmountPtr Convert(
const blink::PaymentCurrencyAmount& input) {
@@ -1054,6 +1080,48 @@ void PaymentRequest::OnCanMakePayment(CanMakePaymentQueryResult result) {
m_canMakePaymentResolver.clear();
}
+void PaymentRequest::ParsePaymentManifest(
+ const String& content,
+ const ParsePaymentManifestCallback& callback) {
+ Optional<Vector<NativeAndroidPaymentAppManifestSectionPtr>> result;
+
+ ScriptState* state = ScriptState::forMainWorld(frame());
Marijn Kruisselbrink 2017/02/23 20:07:06 I don't think using ScriptState::forMainWorld (or
+ if (!state->contextIsValid()) {
+ callback.Run(std::move(result));
+ return;
+ }
+
+ ScriptState::Scope scope(state);
+ ExceptionState exceptionState(state->isolate(),
+ ExceptionState::ConstructionContext,
+ "NativeAndroidPaymentAppManifest");
+ v8::Local<v8::Value> input =
+ fromJSONString(state->isolate(), content, exceptionState);
+ if (exceptionState.hadException()) {
+ callback.Run(std::move(result));
+ return;
+ }
+
+ NativeAndroidPaymentAppManifest manifest;
+ V8NativeAndroidPaymentAppManifest::toImpl(state->isolate(), input, manifest,
+ exceptionState);
+ if (exceptionState.hadException()) {
+ callback.Run(std::move(result));
+ return;
+ }
+
+ if (manifest.hasAndroid() && !manifest.android().isEmpty()) {
+ result = Vector<NativeAndroidPaymentAppManifestSectionPtr>();
+ for (const auto& section : manifest.android()) {
+ result->push_back(
+ payments::mojom::blink::NativeAndroidPaymentAppManifestSection::From(
+ section));
+ }
+ }
+
+ callback.Run(std::move(result));
+}
+
void PaymentRequest::onCompleteTimeout(TimerBase*) {
m_paymentProvider->Complete(payments::mojom::blink::PaymentComplete(Fail));
clearResolversAndCloseMojoConnection();

Powered by Google App Engine
This is Rietveld 408576698