Chromium Code Reviews| 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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 245 DCHECK(!m_paymentProvider.is_bound()); | 245 DCHECK(!m_paymentProvider.is_bound()); |
| 246 scriptState->domWindow()->frame()->serviceRegistry()->connectToRemoteService (mojo::GetProxy(&m_paymentProvider)); | 246 scriptState->domWindow()->frame()->serviceRegistry()->connectToRemoteService (mojo::GetProxy(&m_paymentProvider)); |
| 247 m_paymentProvider.set_connection_error_handler(createBaseCallback(bind(&Paym entRequest::OnError, WeakPersistentThisPointer<PaymentRequest>(this)))); | 247 m_paymentProvider.set_connection_error_handler(createBaseCallback(bind(&Paym entRequest::OnError, WeakPersistentThisPointer<PaymentRequest>(this)))); |
| 248 m_paymentProvider->SetClient(m_clientBinding.CreateInterfacePtrAndBind()); | 248 m_paymentProvider->SetClient(m_clientBinding.CreateInterfacePtrAndBind()); |
| 249 m_paymentProvider->Show(std::move(m_supportedMethods), mojom::blink::Payment Details::From(m_details), mojom::blink::PaymentOptions::From(m_options), m_strin gifiedData.isNull() ? "" : m_stringifiedData); | 249 m_paymentProvider->Show(std::move(m_supportedMethods), mojom::blink::Payment Details::From(m_details), mojom::blink::PaymentOptions::From(m_options), m_strin gifiedData.isNull() ? "" : m_stringifiedData); |
| 250 | 250 |
| 251 m_showResolver = ScriptPromiseResolver::create(scriptState); | 251 m_showResolver = ScriptPromiseResolver::create(scriptState); |
| 252 return m_showResolver->promise(); | 252 return m_showResolver->promise(); |
| 253 } | 253 } |
| 254 | 254 |
| 255 void PaymentRequest::abort(ExceptionState& exceptionState) | 255 ScriptPromise PaymentRequest::abort(ScriptState* scriptState) |
| 256 { | 256 { |
| 257 if (!m_showResolver) { | 257 if (!m_showResolver) |
| 258 exceptionState.throwDOMException(InvalidStateError, "Never called show() , so nothing to abort"); | 258 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, "Never called show(), so nothing to abort")); |
| 259 return; | |
| 260 } | |
| 261 | 259 |
| 260 m_abortResolver = ScriptPromiseResolver::create(scriptState); | |
|
Marijn Kruisselbrink
2016/06/08 22:44:12
Presumably you want to do something special if m_a
please use gerrit instead
2016/06/09 22:36:14
Rejecting the second abort() promise is more consi
| |
| 262 m_paymentProvider->Abort(); | 261 m_paymentProvider->Abort(); |
| 262 return m_abortResolver->promise(); | |
| 263 } | 263 } |
| 264 | 264 |
| 265 const AtomicString& PaymentRequest::interfaceName() const | 265 const AtomicString& PaymentRequest::interfaceName() const |
| 266 { | 266 { |
| 267 return EventTargetNames::PaymentRequest; | 267 return EventTargetNames::PaymentRequest; |
| 268 } | 268 } |
| 269 | 269 |
| 270 ExecutionContext* PaymentRequest::getExecutionContext() const | 270 ExecutionContext* PaymentRequest::getExecutionContext() const |
| 271 { | 271 { |
| 272 return ContextLifecycleObserver::getExecutionContext(); | 272 return ContextLifecycleObserver::getExecutionContext(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 320 clearResolversAndCloseMojoConnection(); | 320 clearResolversAndCloseMojoConnection(); |
| 321 } | 321 } |
| 322 | 322 |
| 323 DEFINE_TRACE(PaymentRequest) | 323 DEFINE_TRACE(PaymentRequest) |
| 324 { | 324 { |
| 325 visitor->trace(m_details); | 325 visitor->trace(m_details); |
| 326 visitor->trace(m_options); | 326 visitor->trace(m_options); |
| 327 visitor->trace(m_shippingAddress); | 327 visitor->trace(m_shippingAddress); |
| 328 visitor->trace(m_showResolver); | 328 visitor->trace(m_showResolver); |
| 329 visitor->trace(m_completeResolver); | 329 visitor->trace(m_completeResolver); |
| 330 visitor->trace(m_abortResolver); | |
| 330 EventTargetWithInlineData::trace(visitor); | 331 EventTargetWithInlineData::trace(visitor); |
| 331 ContextLifecycleObserver::trace(visitor); | 332 ContextLifecycleObserver::trace(visitor); |
| 332 } | 333 } |
| 333 | 334 |
| 334 PaymentRequest::PaymentRequest(ScriptState* scriptState, const Vector<String>& s upportedMethods, const PaymentDetails& details, const PaymentOptions& options, c onst ScriptValue& data, ExceptionState& exceptionState) | 335 PaymentRequest::PaymentRequest(ScriptState* scriptState, const Vector<String>& s upportedMethods, const PaymentDetails& details, const PaymentOptions& options, c onst ScriptValue& data, ExceptionState& exceptionState) |
| 335 : ContextLifecycleObserver(scriptState->getExecutionContext()) | 336 : ContextLifecycleObserver(scriptState->getExecutionContext()) |
| 336 , ActiveScriptWrappable(this) | 337 , ActiveScriptWrappable(this) |
| 337 , m_options(options) | 338 , m_options(options) |
| 338 , m_clientBinding(this) | 339 , m_clientBinding(this) |
| 339 { | 340 { |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 470 // connection to display a success or failure message to the user. | 471 // connection to display a success or failure message to the user. |
| 471 m_showResolver.clear(); | 472 m_showResolver.clear(); |
| 472 } | 473 } |
| 473 | 474 |
| 474 void PaymentRequest::OnError() | 475 void PaymentRequest::OnError() |
| 475 { | 476 { |
| 476 if (m_completeResolver) | 477 if (m_completeResolver) |
| 477 m_completeResolver->reject(DOMException::create(SyntaxError, "Request ca ncelled")); | 478 m_completeResolver->reject(DOMException::create(SyntaxError, "Request ca ncelled")); |
| 478 if (m_showResolver) | 479 if (m_showResolver) |
| 479 m_showResolver->reject(DOMException::create(SyntaxError, "Request cancel led")); | 480 m_showResolver->reject(DOMException::create(SyntaxError, "Request cancel led")); |
| 481 if (m_abortResolver) | |
| 482 m_abortResolver->reject(DOMException::create(SyntaxError, "Request cance lled")); | |
| 480 clearResolversAndCloseMojoConnection(); | 483 clearResolversAndCloseMojoConnection(); |
| 481 } | 484 } |
| 482 | 485 |
| 483 void PaymentRequest::OnComplete() | 486 void PaymentRequest::OnComplete() |
| 484 { | 487 { |
| 485 DCHECK(m_completeResolver); | 488 DCHECK(m_completeResolver); |
| 486 m_completeResolver->resolve(); | 489 m_completeResolver->resolve(); |
| 487 clearResolversAndCloseMojoConnection(); | 490 clearResolversAndCloseMojoConnection(); |
| 488 } | 491 } |
| 489 | 492 |
| 493 void PaymentRequest::OnAbort(bool abortedSuccessfully) | |
|
haraken
2016/06/09 01:57:59
OnAbort => onAbort
please use gerrit instead
2016/06/09 22:36:14
This is an implementation of the interface defined
| |
| 494 { | |
| 495 DCHECK(m_abortResolver); | |
| 496 DCHECK(m_showResolver); | |
| 497 | |
| 498 if (!abortedSuccessfully) { | |
| 499 m_abortResolver->reject(DOMException::create(InvalidStateError)); | |
| 500 return; | |
| 501 } | |
| 502 | |
| 503 m_showResolver->reject(DOMException::create(AbortError)); | |
| 504 m_abortResolver->resolve(); | |
| 505 clearResolversAndCloseMojoConnection(); | |
| 506 } | |
| 507 | |
| 490 void PaymentRequest::clearResolversAndCloseMojoConnection() | 508 void PaymentRequest::clearResolversAndCloseMojoConnection() |
| 491 { | 509 { |
| 492 m_completeResolver.clear(); | 510 m_completeResolver.clear(); |
| 493 m_showResolver.clear(); | 511 m_showResolver.clear(); |
| 512 m_abortResolver.clear(); | |
| 494 if (m_clientBinding.is_bound()) | 513 if (m_clientBinding.is_bound()) |
| 495 m_clientBinding.Close(); | 514 m_clientBinding.Close(); |
| 496 m_paymentProvider.reset(); | 515 m_paymentProvider.reset(); |
| 497 } | 516 } |
| 498 | 517 |
| 499 } // namespace blink | 518 } // namespace blink |
| OLD | NEW |