Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: third_party/WebKit/Source/modules/payments/PaymentRequest.h

Issue 1753543002: PaymentRequest Mojo bindings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@interface
Patch Set: haraken@'s + esprehn@'s comments Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #ifndef PaymentRequest_h 5 #ifndef PaymentRequest_h
6 #define PaymentRequest_h 6 #define PaymentRequest_h
7 7
8 #include "bindings/core/v8/ScriptPromise.h" 8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptValue.h" 9 #include "bindings/core/v8/ScriptValue.h"
10 #include "bindings/core/v8/ScriptWrappable.h" 10 #include "bindings/core/v8/ScriptWrappable.h"
11 #include "core/events/EventTarget.h" 11 #include "core/events/EventTarget.h"
12 #include "modules/ModulesExport.h"
13 #include "modules/payments/PaymentCompleter.h"
12 #include "modules/payments/PaymentDetails.h" 14 #include "modules/payments/PaymentDetails.h"
13 #include "modules/payments/PaymentOptions.h" 15 #include "modules/payments/PaymentOptions.h"
16 #include "mojo/public/cpp/bindings/binding.h"
14 #include "platform/heap/Handle.h" 17 #include "platform/heap/Handle.h"
18 #include "public/platform/modules/payments/payment_request.mojom-wtf.h"
19 #include "wtf/Compiler.h"
15 #include "wtf/Noncopyable.h" 20 #include "wtf/Noncopyable.h"
16 #include "wtf/RefPtr.h" 21 #include "wtf/RefPtr.h"
17 #include "wtf/Vector.h" 22 #include "wtf/Vector.h"
18 #include "wtf/text/WTFString.h" 23 #include "wtf/text/WTFString.h"
19 24
20 namespace blink { 25 namespace blink {
21 26
22 class ExceptionState; 27 class ExceptionState;
28 class ScriptPromiseResolver;
23 class ScriptState; 29 class ScriptState;
24 class ShippingAddress; 30 class ShippingAddress;
25 31
26 class PaymentRequest final : public RefCountedGarbageCollectedEventTargetWithInl ineData<PaymentRequest> { 32 class MODULES_EXPORT PaymentRequest final : public RefCountedGarbageCollectedEve ntTargetWithInlineData<PaymentRequest>, WTF_NON_EXPORTED_BASE(public mojom::wtf: :PaymentRequestClient), public PaymentCompleter {
33 DEFINE_WRAPPERTYPEINFO();
27 REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(PaymentRequest); 34 REFCOUNTED_GARBAGE_COLLECTED_EVENT_TARGET(PaymentRequest);
28 DEFINE_WRAPPERTYPEINFO(); 35 USING_GARBAGE_COLLECTED_MIXIN(PaymentRequest)
29 WTF_MAKE_NONCOPYABLE(PaymentRequest); 36 WTF_MAKE_NONCOPYABLE(PaymentRequest);
30 37
31 public: 38 public:
32 static PaymentRequest* create(ScriptState*, const Vector<String>& supportedM ethods, const PaymentDetails&, ExceptionState&); 39 static PaymentRequest* create(ScriptState*, const Vector<String>& supportedM ethods, const PaymentDetails&, ExceptionState&);
33 static PaymentRequest* create(ScriptState*, const Vector<String>& supportedM ethods, const PaymentDetails&, const PaymentOptions&, ExceptionState&); 40 static PaymentRequest* create(ScriptState*, const Vector<String>& supportedM ethods, const PaymentDetails&, const PaymentOptions&, ExceptionState&);
34 static PaymentRequest* create(ScriptState*, const Vector<String>& supportedM ethods, const PaymentDetails&, const PaymentOptions&, const ScriptValue& data, E xceptionState&); 41 static PaymentRequest* create(ScriptState*, const Vector<String>& supportedM ethods, const PaymentDetails&, const PaymentOptions&, const ScriptValue& data, E xceptionState&);
35 42
36 virtual ~PaymentRequest(); 43 virtual ~PaymentRequest();
37 44
38 ScriptPromise show(ScriptState*); 45 ScriptPromise show(ScriptState*);
39 void abort(); 46 void abort(ExceptionState&);
40 47
41 ShippingAddress* getShippingAddress() const { return m_shippingAddress.get() ; } 48 ShippingAddress* getShippingAddress() const { return m_shippingAddress.get() ; }
42 const String& shippingOption() const { return m_shippingOption; } 49 const String& shippingOption() const { return m_shippingOption; }
43 50
44 DEFINE_ATTRIBUTE_EVENT_LISTENER(shippingaddresschange); 51 DEFINE_ATTRIBUTE_EVENT_LISTENER(shippingaddresschange);
45 DEFINE_ATTRIBUTE_EVENT_LISTENER(shippingoptionchange); 52 DEFINE_ATTRIBUTE_EVENT_LISTENER(shippingoptionchange);
46 53
47 // EventTargetWithInlineData: 54 // EventTargetWithInlineData:
48 const AtomicString& interfaceName() const override; 55 const AtomicString& interfaceName() const override;
49 ExecutionContext* getExecutionContext() const override; 56 ExecutionContext* getExecutionContext() const override;
50 57
58 // PaymentCompleter:
59 ScriptPromise complete(ScriptState*, bool success) override;
60
51 DECLARE_TRACE(); 61 DECLARE_TRACE();
52 62
53 private: 63 private:
54 PaymentRequest(ScriptState*, const Vector<String>& supportedMethods, const P aymentDetails&, const PaymentOptions&, const ScriptValue& data, ExceptionState&) ; 64 PaymentRequest(ScriptState*, const Vector<String>& supportedMethods, const P aymentDetails&, const PaymentOptions&, const ScriptValue& data, ExceptionState&) ;
55 65
66 // mojom::wtf::PaymentRequestClient:
67 void OnShippingAddressChange(mojom::wtf::ShippingAddressPtr) override;
68 void OnShippingOptionChange(const String& shippingOptionId) override;
69 void OnPaymentResponse(mojom::wtf::PaymentResponsePtr) override;
70 void OnError() override;
71 void OnComplete() override;
72
73 // Clears the promise resolvers and closes the Mojo connection.
74 void cleanUp();
75
56 RefPtr<ScriptState> m_scriptState; 76 RefPtr<ScriptState> m_scriptState;
57 Vector<String> m_supportedMethods; 77 Vector<String> m_supportedMethods;
58 PaymentDetails m_details; 78 PaymentDetails m_details;
59 PaymentOptions m_options; 79 PaymentOptions m_options;
60 String m_stringifiedData; 80 String m_stringifiedData;
61 Member<ShippingAddress> m_shippingAddress; 81 Member<ShippingAddress> m_shippingAddress;
62 String m_shippingOption; 82 String m_shippingOption;
83 Member<ScriptPromiseResolver> m_showResolver;
84 Member<ScriptPromiseResolver> m_completeResolver;
85 mojom::wtf::PaymentRequestPtr m_paymentProvider;
86 mojo::Binding<mojom::wtf::PaymentRequestClient> m_clientBinding;
63 }; 87 };
64 88
65 } // namespace blink 89 } // namespace blink
66 90
67 #endif // PaymentRequest_h 91 #endif // PaymentRequest_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698