| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "modules/payments/PaymentRequest.h" | 5 #include "modules/payments/PaymentRequest.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/ExceptionState.h" | 7 #include "bindings/core/v8/ExceptionState.h" |
| 8 #include "bindings/core/v8/JSONValuesForV8.h" | 8 #include "bindings/core/v8/JSONValuesForV8.h" |
| 9 #include "bindings/core/v8/ScriptPromiseResolver.h" | 9 #include "bindings/core/v8/ScriptPromiseResolver.h" |
| 10 #include "bindings/core/v8/ScriptState.h" | 10 #include "bindings/core/v8/ScriptState.h" |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 DCHECK(!m_paymentProvider.is_bound()); | 288 DCHECK(!m_paymentProvider.is_bound()); |
| 289 scriptState->domWindow()->frame()->serviceRegistry()->connectToRemoteService
(mojo::GetProxy(&m_paymentProvider)); | 289 scriptState->domWindow()->frame()->serviceRegistry()->connectToRemoteService
(mojo::GetProxy(&m_paymentProvider)); |
| 290 m_paymentProvider.set_connection_error_handler(createBaseCallback(bind(&Paym
entRequest::OnError, WeakPersistentThisPointer<PaymentRequest>(this)))); | 290 m_paymentProvider.set_connection_error_handler(createBaseCallback(bind(&Paym
entRequest::OnError, WeakPersistentThisPointer<PaymentRequest>(this)))); |
| 291 m_paymentProvider->SetClient(m_clientBinding.CreateInterfacePtrAndBind()); | 291 m_paymentProvider->SetClient(m_clientBinding.CreateInterfacePtrAndBind()); |
| 292 m_paymentProvider->Show(mojo::WTFArray<mojom::blink::PaymentMethodDataPtr>::
From(m_methodData), mojom::blink::PaymentDetails::From(m_details), mojom::blink:
:PaymentOptions::From(m_options)); | 292 m_paymentProvider->Show(mojo::WTFArray<mojom::blink::PaymentMethodDataPtr>::
From(m_methodData), mojom::blink::PaymentDetails::From(m_details), mojom::blink:
:PaymentOptions::From(m_options)); |
| 293 | 293 |
| 294 m_showResolver = ScriptPromiseResolver::create(scriptState); | 294 m_showResolver = ScriptPromiseResolver::create(scriptState); |
| 295 return m_showResolver->promise(); | 295 return m_showResolver->promise(); |
| 296 } | 296 } |
| 297 | 297 |
| 298 void PaymentRequest::abort(ExceptionState& exceptionState) | 298 ScriptPromise PaymentRequest::abort(ScriptState* scriptState) |
| 299 { | 299 { |
| 300 if (!m_showResolver) { | 300 if (m_abortResolver) |
| 301 exceptionState.throwDOMException(InvalidStateError, "Never called show()
, so nothing to abort"); | 301 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::
create(InvalidStateError, "Cannot abort() again until the previous abort() has r
esolved or rejected")); |
| 302 return; | |
| 303 } | |
| 304 | 302 |
| 303 if (!m_showResolver) |
| 304 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::
create(InvalidStateError, "Never called show(), so nothing to abort")); |
| 305 |
| 306 m_abortResolver = ScriptPromiseResolver::create(scriptState); |
| 305 m_paymentProvider->Abort(); | 307 m_paymentProvider->Abort(); |
| 308 return m_abortResolver->promise(); |
| 306 } | 309 } |
| 307 | 310 |
| 308 const AtomicString& PaymentRequest::interfaceName() const | 311 const AtomicString& PaymentRequest::interfaceName() const |
| 309 { | 312 { |
| 310 return EventTargetNames::PaymentRequest; | 313 return EventTargetNames::PaymentRequest; |
| 311 } | 314 } |
| 312 | 315 |
| 313 ExecutionContext* PaymentRequest::getExecutionContext() const | 316 ExecutionContext* PaymentRequest::getExecutionContext() const |
| 314 { | 317 { |
| 315 return ContextLifecycleObserver::getExecutionContext(); | 318 return ContextLifecycleObserver::getExecutionContext(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 clearResolversAndCloseMojoConnection(); | 366 clearResolversAndCloseMojoConnection(); |
| 364 } | 367 } |
| 365 | 368 |
| 366 DEFINE_TRACE(PaymentRequest) | 369 DEFINE_TRACE(PaymentRequest) |
| 367 { | 370 { |
| 368 visitor->trace(m_details); | 371 visitor->trace(m_details); |
| 369 visitor->trace(m_options); | 372 visitor->trace(m_options); |
| 370 visitor->trace(m_shippingAddress); | 373 visitor->trace(m_shippingAddress); |
| 371 visitor->trace(m_showResolver); | 374 visitor->trace(m_showResolver); |
| 372 visitor->trace(m_completeResolver); | 375 visitor->trace(m_completeResolver); |
| 376 visitor->trace(m_abortResolver); |
| 373 EventTargetWithInlineData::trace(visitor); | 377 EventTargetWithInlineData::trace(visitor); |
| 374 ContextLifecycleObserver::trace(visitor); | 378 ContextLifecycleObserver::trace(visitor); |
| 375 } | 379 } |
| 376 | 380 |
| 377 PaymentRequest::PaymentRequest(ScriptState* scriptState, const HeapVector<Paymen
tMethodData>& methodData, const PaymentDetails& details, const PaymentOptions& o
ptions, ExceptionState& exceptionState) | 381 PaymentRequest::PaymentRequest(ScriptState* scriptState, const HeapVector<Paymen
tMethodData>& methodData, const PaymentDetails& details, const PaymentOptions& o
ptions, ExceptionState& exceptionState) |
| 378 : ContextLifecycleObserver(scriptState->getExecutionContext()) | 382 : ContextLifecycleObserver(scriptState->getExecutionContext()) |
| 379 , ActiveScriptWrappable(this) | 383 , ActiveScriptWrappable(this) |
| 380 , m_options(options) | 384 , m_options(options) |
| 381 , m_clientBinding(this) | 385 , m_clientBinding(this) |
| 382 { | 386 { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 // connection to display a success or failure message to the user. | 487 // connection to display a success or failure message to the user. |
| 484 m_showResolver.clear(); | 488 m_showResolver.clear(); |
| 485 } | 489 } |
| 486 | 490 |
| 487 void PaymentRequest::OnError() | 491 void PaymentRequest::OnError() |
| 488 { | 492 { |
| 489 if (m_completeResolver) | 493 if (m_completeResolver) |
| 490 m_completeResolver->reject(DOMException::create(SyntaxError, "Request ca
ncelled")); | 494 m_completeResolver->reject(DOMException::create(SyntaxError, "Request ca
ncelled")); |
| 491 if (m_showResolver) | 495 if (m_showResolver) |
| 492 m_showResolver->reject(DOMException::create(SyntaxError, "Request cancel
led")); | 496 m_showResolver->reject(DOMException::create(SyntaxError, "Request cancel
led")); |
| 497 if (m_abortResolver) |
| 498 m_abortResolver->reject(DOMException::create(SyntaxError, "Request cance
lled")); |
| 493 clearResolversAndCloseMojoConnection(); | 499 clearResolversAndCloseMojoConnection(); |
| 494 } | 500 } |
| 495 | 501 |
| 496 void PaymentRequest::OnComplete() | 502 void PaymentRequest::OnComplete() |
| 497 { | 503 { |
| 498 DCHECK(m_completeResolver); | 504 DCHECK(m_completeResolver); |
| 499 m_completeResolver->resolve(); | 505 m_completeResolver->resolve(); |
| 500 clearResolversAndCloseMojoConnection(); | 506 clearResolversAndCloseMojoConnection(); |
| 501 } | 507 } |
| 502 | 508 |
| 509 void PaymentRequest::OnAbort(bool abortedSuccessfully) |
| 510 { |
| 511 DCHECK(m_abortResolver); |
| 512 DCHECK(m_showResolver); |
| 513 |
| 514 if (!abortedSuccessfully) { |
| 515 m_abortResolver->reject(DOMException::create(InvalidStateError)); |
| 516 m_abortResolver.clear(); |
| 517 return; |
| 518 } |
| 519 |
| 520 m_showResolver->reject(DOMException::create(AbortError)); |
| 521 m_abortResolver->resolve(); |
| 522 clearResolversAndCloseMojoConnection(); |
| 523 } |
| 524 |
| 503 void PaymentRequest::clearResolversAndCloseMojoConnection() | 525 void PaymentRequest::clearResolversAndCloseMojoConnection() |
| 504 { | 526 { |
| 505 m_completeResolver.clear(); | 527 m_completeResolver.clear(); |
| 506 m_showResolver.clear(); | 528 m_showResolver.clear(); |
| 529 m_abortResolver.clear(); |
| 507 if (m_clientBinding.is_bound()) | 530 if (m_clientBinding.is_bound()) |
| 508 m_clientBinding.Close(); | 531 m_clientBinding.Close(); |
| 509 m_paymentProvider.reset(); | 532 m_paymentProvider.reset(); |
| 510 } | 533 } |
| 511 | 534 |
| 512 } // namespace blink | 535 } // namespace blink |
| OLD | NEW |