Chromium Code Reviews| Index: third_party/WebKit/Source/modules/payments/PaymentRequestUpdateEvent.cpp |
| diff --git a/third_party/WebKit/Source/modules/payments/PaymentRequestUpdateEvent.cpp b/third_party/WebKit/Source/modules/payments/PaymentRequestUpdateEvent.cpp |
| index d04dd8b983de79b8b739c1e8e234ca1952eccfe4..faec79526a00e7e6799c9895febd11eeb41f9b41 100644 |
| --- a/third_party/WebKit/Source/modules/payments/PaymentRequestUpdateEvent.cpp |
| +++ b/third_party/WebKit/Source/modules/payments/PaymentRequestUpdateEvent.cpp |
| @@ -9,10 +9,13 @@ |
| #include "core/dom/DOMException.h" |
| #include "core/dom/ExceptionCode.h" |
| #include "modules/payments/PaymentUpdater.h" |
| +#include "public/platform/WebTraceLocation.h" |
| namespace blink { |
| namespace { |
| +static const int abortTimeout = 60; |
|
Marijn Kruisselbrink
2016/07/22 04:18:46
Maybe add a comment to mention what unit the 60 is
pals
2016/07/22 05:00:31
Done.
|
| + |
| class UpdatePaymentDetailsFunction : public ScriptFunction { |
| public: |
| static v8::Local<v8::Function> createFunction(ScriptState* scriptState, PaymentUpdater* updater) |
| @@ -93,6 +96,7 @@ PaymentRequestUpdateEvent* PaymentRequestUpdateEvent::create(const AtomicString& |
| void PaymentRequestUpdateEvent::setPaymentDetailsUpdater(PaymentUpdater* updater) |
| { |
| + m_abortTimer.startOneShot(abortTimeout, BLINK_FROM_HERE); |
| m_updater = updater; |
| } |
| @@ -113,11 +117,20 @@ void PaymentRequestUpdateEvent::updateWith(ScriptState* scriptState, ScriptPromi |
| stopImmediatePropagation(); |
| m_waitForUpdate = true; |
| + m_abortTimer.stop(); |
| promise.then(UpdatePaymentDetailsFunction::createFunction(scriptState, m_updater), |
| UpdatePaymentDetailsErrorFunction::createFunction(scriptState, m_updater)); |
| } |
| +void PaymentRequestUpdateEvent::onTimerFired(Timer<PaymentRequestUpdateEvent>*) |
| +{ |
| + if (!m_updater) |
| + return; |
| + |
| + m_updater->onUpdatePaymentDetailsFailure(ScriptValue()); |
| +} |
| + |
| DEFINE_TRACE(PaymentRequestUpdateEvent) |
| { |
| visitor->trace(m_updater); |
| @@ -126,12 +139,14 @@ DEFINE_TRACE(PaymentRequestUpdateEvent) |
| PaymentRequestUpdateEvent::PaymentRequestUpdateEvent() |
| : m_waitForUpdate(false) |
| + , m_abortTimer(this, &PaymentRequestUpdateEvent::onTimerFired) |
| { |
| } |
| PaymentRequestUpdateEvent::PaymentRequestUpdateEvent(const AtomicString& type, const PaymentRequestUpdateEventInit& init) |
| : Event(type, init) |
| , m_waitForUpdate(false) |
| + , m_abortTimer(this, &PaymentRequestUpdateEvent::onTimerFired) |
| { |
| } |