Index: third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp |
diff --git a/third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp b/third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp |
index bdf533512892cf05a55a6e4091717f80b8fd6abc..38826c1e0bc316fcb91bae2c2edbc15bbfdc9bbc 100644 |
--- a/third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp |
+++ b/third_party/WebKit/Source/modules/payments/PaymentRequestEvent.cpp |
@@ -11,24 +11,40 @@ |
#include "modules/serviceworkers/RespondWithObserver.h" |
#include "modules/serviceworkers/ServiceWorkerGlobalScopeClient.h" |
#include "modules/serviceworkers/ServiceWorkerWindowClientCallback.h" |
+#include "platform/bindings/ScriptState.h" |
#include "platform/wtf/PtrUtil.h" |
#include "platform/wtf/text/AtomicString.h" |
namespace blink { |
+namespace { |
+ |
+ScriptValue toScriptValue(ScriptState* script_state, const PaymentItem& item) { |
+ if (!script_state->ContextIsValid()) |
+ return ScriptValue(); |
+ |
+ ScriptState::Scope scope(script_state); |
+ |
+ return ScriptValue::From(script_state, item); |
+} |
+ |
+} // namespace |
PaymentRequestEvent* PaymentRequestEvent::Create( |
+ ScriptState* script_state, |
const AtomicString& type, |
const PaymentRequestEventInit& initializer) { |
- return new PaymentRequestEvent(type, initializer, nullptr, nullptr); |
+ return new PaymentRequestEvent(script_state, type, initializer, nullptr, |
+ nullptr); |
} |
PaymentRequestEvent* PaymentRequestEvent::Create( |
+ ScriptState* script_state, |
const AtomicString& type, |
const PaymentRequestEventInit& initializer, |
RespondWithObserver* respond_with_observer, |
WaitUntilObserver* wait_until_observer) { |
- return new PaymentRequestEvent(type, initializer, respond_with_observer, |
- wait_until_observer); |
+ return new PaymentRequestEvent(script_state, type, initializer, |
+ respond_with_observer, wait_until_observer); |
} |
PaymentRequestEvent::~PaymentRequestEvent() {} |
@@ -53,8 +69,8 @@ const HeapVector<PaymentMethodData>& PaymentRequestEvent::methodData() const { |
return method_data_; |
} |
-void PaymentRequestEvent::total(PaymentItem& value) const { |
- value = total_; |
+const ScriptValue& PaymentRequestEvent::total() const { |
+ return total_; |
} |
const HeapVector<PaymentDetailsModifier>& PaymentRequestEvent::modifiers() |
@@ -124,6 +140,7 @@ DEFINE_TRACE(PaymentRequestEvent) { |
} |
PaymentRequestEvent::PaymentRequestEvent( |
+ ScriptState* script_state, |
const AtomicString& type, |
const PaymentRequestEventInit& initializer, |
RespondWithObserver* respond_with_observer, |
@@ -133,7 +150,7 @@ PaymentRequestEvent::PaymentRequestEvent( |
payment_request_origin_(initializer.paymentRequestOrigin()), |
payment_request_id_(initializer.paymentRequestId()), |
method_data_(std::move(initializer.methodData())), |
- total_(initializer.total()), |
+ total_(toScriptValue(script_state, initializer.total())), |
modifiers_(initializer.modifiers()), |
instrument_key_(initializer.instrumentKey()), |
observer_(respond_with_observer) {} |