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

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

Issue 2780773004: Reland "PaymentRequest: Introduce PaymentDetailsInit and PaymentDetailsUpdate." (Closed)
Patch Set: Reland "PaymentRequest: Introduce PaymentDetailsInit and PaymentDetailsUpdate." 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: 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 3fffe48cfff3743d5bc689904177867ee4c7864d..63e221476b9c5d4619f63e40ddda08f1023310d6 100644
--- a/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp
+++ b/third_party/WebKit/Source/modules/payments/PaymentRequest.cpp
@@ -12,7 +12,7 @@
#include "bindings/core/v8/V8StringResource.h"
#include "bindings/modules/v8/V8AndroidPayMethodData.h"
#include "bindings/modules/v8/V8BasicCardRequest.h"
-#include "bindings/modules/v8/V8PaymentDetails.h"
+#include "bindings/modules/v8/V8PaymentDetailsUpdate.h"
#include "core/EventTypeNames.h"
#include "core/dom/DOMException.h"
#include "core/dom/Document.h"
@@ -30,6 +30,8 @@
#include "modules/payments/BasicCardRequest.h"
#include "modules/payments/HTMLIFrameElementPayments.h"
#include "modules/payments/PaymentAddress.h"
+#include "modules/payments/PaymentDetailsInit.h"
+#include "modules/payments/PaymentDetailsUpdate.h"
#include "modules/payments/PaymentItem.h"
#include "modules/payments/PaymentRequestUpdateEvent.h"
#include "modules/payments/PaymentResponse.h"
@@ -472,21 +474,12 @@ String getSelectedShippingOption(
return result;
}
-void validateAndConvertPaymentDetails(const PaymentDetails& input,
- bool requestShipping,
- PaymentDetailsPtr& output,
- String& shippingOptionOutput,
- ExecutionContext& executionContext,
- ExceptionState& exceptionState) {
- if (!input.hasTotal()) {
- exceptionState.throwTypeError("Must specify total");
- return;
- }
-
- validateAndConvertTotal(input.total(), output->total, exceptionState);
- if (exceptionState.hadException())
- return;
-
+void validateAndConvertPaymentDetailsBase(const PaymentDetailsBase& input,
+ bool requestShipping,
+ PaymentDetailsPtr& output,
+ String& shippingOptionOutput,
+ ExecutionContext& executionContext,
+ ExceptionState& exceptionState) {
if (input.hasDisplayItems()) {
validateAndConvertDisplayItems(input.displayItems(), output->display_items,
exceptionState);
@@ -509,6 +502,45 @@ void validateAndConvertPaymentDetails(const PaymentDetails& input,
if (exceptionState.hadException())
return;
}
+}
+
+void validateAndConvertPaymentDetailsInit(const PaymentDetailsInit& input,
+ bool requestShipping,
+ PaymentDetailsPtr& output,
+ String& shippingOptionOutput,
+ ExecutionContext& executionContext,
+ ExceptionState& exceptionState) {
+ validateAndConvertPaymentDetailsBase(input, requestShipping, output,
+ shippingOptionOutput, executionContext,
+ exceptionState);
+ if (exceptionState.hadException())
+ return;
+
+ if (!input.hasTotal()) {
+ exceptionState.throwTypeError("Must specify total");
+ return;
+ }
+
+ validateAndConvertTotal(input.total(), output->total, exceptionState);
+}
+
+void validateAndConvertPaymentDetailsUpdate(const PaymentDetailsUpdate& input,
+ bool requestShipping,
+ PaymentDetailsPtr& output,
+ String& shippingOptionOutput,
+ ExecutionContext& executionContext,
+ ExceptionState& exceptionState) {
+ validateAndConvertPaymentDetailsBase(input, requestShipping, output,
+ shippingOptionOutput, executionContext,
+ exceptionState);
+ if (exceptionState.hadException())
+ return;
+
+ if (input.hasTotal()) {
+ validateAndConvertTotal(input.total(), output->total, exceptionState);
+ if (exceptionState.hadException())
+ return;
+ }
if (input.hasError() && !input.error().isNull()) {
String errorMessage;
@@ -628,7 +660,7 @@ bool allowedToUsePaymentRequest(const Frame* frame) {
PaymentRequest* PaymentRequest::create(
ExecutionContext* executionContext,
const HeapVector<PaymentMethodData>& methodData,
- const PaymentDetails& details,
+ const PaymentDetailsInit& details,
ExceptionState& exceptionState) {
return new PaymentRequest(executionContext, methodData, details,
PaymentOptions(), exceptionState);
@@ -637,7 +669,7 @@ PaymentRequest* PaymentRequest::create(
PaymentRequest* PaymentRequest::create(
ExecutionContext* executionContext,
const HeapVector<PaymentMethodData>& methodData,
- const PaymentDetails& details,
+ const PaymentDetailsInit& details,
const PaymentOptions& options,
ExceptionState& exceptionState) {
return new PaymentRequest(executionContext, methodData, details, options,
@@ -761,13 +793,13 @@ void PaymentRequest::onUpdatePaymentDetails(
if (!m_showResolver || !m_paymentProvider)
return;
- PaymentDetails details;
+ PaymentDetailsUpdate details;
ExceptionState exceptionState(v8::Isolate::GetCurrent(),
ExceptionState::ConstructionContext,
- "PaymentDetails");
- V8PaymentDetails::toImpl(detailsScriptValue.isolate(),
- detailsScriptValue.v8Value(), details,
- exceptionState);
+ "PaymentDetailsUpdate");
+ V8PaymentDetailsUpdate::toImpl(detailsScriptValue.isolate(),
+ detailsScriptValue.v8Value(), details,
+ exceptionState);
if (exceptionState.hadException()) {
m_showResolver->reject(
DOMException::create(SyntaxError, exceptionState.message()));
@@ -777,9 +809,9 @@ void PaymentRequest::onUpdatePaymentDetails(
PaymentDetailsPtr validatedDetails =
payments::mojom::blink::PaymentDetails::New();
- validateAndConvertPaymentDetails(details, m_options.requestShipping(),
- validatedDetails, m_shippingOption,
- *getExecutionContext(), exceptionState);
+ validateAndConvertPaymentDetailsUpdate(
+ details, m_options.requestShipping(), validatedDetails, m_shippingOption,
+ *getExecutionContext(), exceptionState);
if (exceptionState.hadException()) {
m_showResolver->reject(
DOMException::create(SyntaxError, exceptionState.message()));
@@ -816,7 +848,7 @@ void PaymentRequest::onCompleteTimeoutForTesting() {
PaymentRequest::PaymentRequest(ExecutionContext* executionContext,
const HeapVector<PaymentMethodData>& methodData,
- const PaymentDetails& details,
+ const PaymentDetailsInit& details,
const PaymentOptions& options,
ExceptionState& exceptionState)
: ContextLifecycleObserver(executionContext),
@@ -845,17 +877,12 @@ PaymentRequest::PaymentRequest(ExecutionContext* executionContext,
PaymentDetailsPtr validatedDetails =
payments::mojom::blink::PaymentDetails::New();
- validateAndConvertPaymentDetails(details, m_options.requestShipping(),
- validatedDetails, m_shippingOption,
- *getExecutionContext(), exceptionState);
+ validateAndConvertPaymentDetailsInit(details, m_options.requestShipping(),
+ validatedDetails, m_shippingOption,
+ *getExecutionContext(), exceptionState);
if (exceptionState.hadException())
return;
- if (details.hasError()) {
- exceptionState.throwTypeError("Error message not allowed in constructor");
- return;
- }
-
if (m_options.requestShipping())
m_shippingType = getValidShippingType(m_options.shippingType());

Powered by Google App Engine
This is Rietveld 408576698