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 |