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/PaymentAppManager.h" | 5 #include "modules/payments/PaymentManager.h" |
6 | 6 |
7 #include "bindings/core/v8/ScriptPromise.h" | 7 #include "bindings/core/v8/ScriptPromise.h" |
8 #include "bindings/core/v8/ScriptState.h" | 8 #include "bindings/core/v8/ScriptState.h" |
9 #include "core/dom/DOMException.h" | 9 #include "core/dom/DOMException.h" |
10 #include "modules/payments/PaymentAppManifest.h" | 10 #include "modules/payments/PaymentAppManifest.h" |
11 #include "modules/payments/PaymentAppOption.h" | 11 #include "modules/payments/PaymentAppOption.h" |
12 #include "modules/serviceworkers/ServiceWorkerRegistration.h" | 12 #include "modules/serviceworkers/ServiceWorkerRegistration.h" |
13 #include "platform/mojo/MojoHelper.h" | 13 #include "platform/mojo/MojoHelper.h" |
14 #include "public/platform/InterfaceProvider.h" | 14 #include "public/platform/InterfaceProvider.h" |
15 #include "public/platform/Platform.h" | 15 #include "public/platform/Platform.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 } | 79 } |
80 output.setEnabledMethods(enabledMethods); | 80 output.setEnabledMethods(enabledMethods); |
81 return output; | 81 return output; |
82 } | 82 } |
83 }; | 83 }; |
84 | 84 |
85 } // namespace mojo | 85 } // namespace mojo |
86 | 86 |
87 namespace blink { | 87 namespace blink { |
88 | 88 |
89 PaymentAppManager* PaymentAppManager::create( | 89 PaymentManager* PaymentManager::create( |
90 ServiceWorkerRegistration* registration) { | 90 ServiceWorkerRegistration* registration) { |
91 return new PaymentAppManager(registration); | 91 return new PaymentManager(registration); |
92 } | 92 } |
93 | 93 |
94 ScriptPromise PaymentAppManager::setManifest( | 94 ScriptPromise PaymentManager::setManifest(ScriptState* scriptState, |
95 ScriptState* scriptState, | 95 const PaymentAppManifest& manifest) { |
96 const PaymentAppManifest& manifest) { | |
97 if (!m_manager) { | 96 if (!m_manager) { |
98 return ScriptPromise::rejectWithDOMException( | 97 return ScriptPromise::rejectWithDOMException( |
99 scriptState, DOMException::create(InvalidStateError, | 98 scriptState, DOMException::create(InvalidStateError, |
100 "Payment app manager unavailable.")); | 99 "Payment app manager unavailable.")); |
101 } | 100 } |
102 | 101 |
103 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 102 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
104 ScriptPromise promise = resolver->promise(); | 103 ScriptPromise promise = resolver->promise(); |
105 | 104 |
106 m_manager->SetManifest( | 105 m_manager->SetManifest( |
107 payments::mojom::blink::PaymentAppManifest::From(manifest), | 106 payments::mojom::blink::PaymentAppManifest::From(manifest), |
108 convertToBaseCallback(WTF::bind(&PaymentAppManager::onSetManifest, | 107 convertToBaseCallback(WTF::bind(&PaymentManager::onSetManifest, |
109 wrapPersistent(this), | 108 wrapPersistent(this), |
110 wrapPersistent(resolver)))); | 109 wrapPersistent(resolver)))); |
111 | 110 |
112 return promise; | 111 return promise; |
113 } | 112 } |
114 | 113 |
115 ScriptPromise PaymentAppManager::getManifest(ScriptState* scriptState) { | 114 ScriptPromise PaymentManager::getManifest(ScriptState* scriptState) { |
116 if (!m_manager) { | 115 if (!m_manager) { |
117 return ScriptPromise::rejectWithDOMException( | 116 return ScriptPromise::rejectWithDOMException( |
118 scriptState, DOMException::create(InvalidStateError, | 117 scriptState, DOMException::create(InvalidStateError, |
119 "Payment app manager unavailable.")); | 118 "Payment app manager unavailable.")); |
120 } | 119 } |
121 | 120 |
122 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 121 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
123 ScriptPromise promise = resolver->promise(); | 122 ScriptPromise promise = resolver->promise(); |
124 | 123 |
125 m_manager->GetManifest(convertToBaseCallback( | 124 m_manager->GetManifest(convertToBaseCallback( |
126 WTF::bind(&PaymentAppManager::onGetManifest, wrapPersistent(this), | 125 WTF::bind(&PaymentManager::onGetManifest, wrapPersistent(this), |
127 wrapPersistent(resolver)))); | 126 wrapPersistent(resolver)))); |
128 | 127 |
129 return promise; | 128 return promise; |
130 } | 129 } |
131 | 130 |
132 DEFINE_TRACE(PaymentAppManager) { | 131 DEFINE_TRACE(PaymentManager) { |
133 visitor->trace(m_registration); | 132 visitor->trace(m_registration); |
134 } | 133 } |
135 | 134 |
136 PaymentAppManager::PaymentAppManager(ServiceWorkerRegistration* registration) | 135 PaymentManager::PaymentManager(ServiceWorkerRegistration* registration) |
137 : m_registration(registration) { | 136 : m_registration(registration) { |
138 DCHECK(registration); | 137 DCHECK(registration); |
139 Platform::current()->interfaceProvider()->getInterface( | 138 Platform::current()->interfaceProvider()->getInterface( |
140 mojo::MakeRequest(&m_manager)); | 139 mojo::MakeRequest(&m_manager)); |
141 | 140 |
142 m_manager.set_connection_error_handler(convertToBaseCallback(WTF::bind( | 141 m_manager.set_connection_error_handler(convertToBaseCallback(WTF::bind( |
143 &PaymentAppManager::onServiceConnectionError, wrapWeakPersistent(this)))); | 142 &PaymentManager::onServiceConnectionError, wrapWeakPersistent(this)))); |
144 | 143 |
145 m_manager->Init(m_registration->scope()); | 144 m_manager->Init(m_registration->scope()); |
146 } | 145 } |
147 | 146 |
148 void PaymentAppManager::onSetManifest( | 147 void PaymentManager::onSetManifest( |
149 ScriptPromiseResolver* resolver, | 148 ScriptPromiseResolver* resolver, |
150 payments::mojom::blink::PaymentAppManifestError error) { | 149 payments::mojom::blink::PaymentAppManifestError error) { |
151 DCHECK(resolver); | 150 DCHECK(resolver); |
152 switch (error) { | 151 switch (error) { |
153 case payments::mojom::blink::PaymentAppManifestError::NONE: | 152 case payments::mojom::blink::PaymentAppManifestError::NONE: |
154 resolver->resolve(); | 153 resolver->resolve(); |
155 break; | 154 break; |
156 case payments::mojom::blink::PaymentAppManifestError::NOT_IMPLEMENTED: | 155 case payments::mojom::blink::PaymentAppManifestError::NOT_IMPLEMENTED: |
157 resolver->reject( | 156 resolver->reject( |
158 DOMException::create(NotSupportedError, "Not implemented yet.")); | 157 DOMException::create(NotSupportedError, "Not implemented yet.")); |
159 break; | 158 break; |
160 case payments::mojom::blink::PaymentAppManifestError::NO_ACTIVE_WORKER: | 159 case payments::mojom::blink::PaymentAppManifestError::NO_ACTIVE_WORKER: |
161 resolver->reject( | 160 resolver->reject( |
162 DOMException::create(InvalidStateError, "No active service worker.")); | 161 DOMException::create(InvalidStateError, "No active service worker.")); |
163 break; | 162 break; |
164 case payments::mojom::blink::PaymentAppManifestError:: | 163 case payments::mojom::blink::PaymentAppManifestError:: |
165 MANIFEST_STORAGE_OPERATION_FAILED: | 164 MANIFEST_STORAGE_OPERATION_FAILED: |
166 resolver->reject(DOMException::create( | 165 resolver->reject(DOMException::create( |
167 InvalidStateError, "Storing manifest data is failed.")); | 166 InvalidStateError, "Storing manifest data is failed.")); |
168 break; | 167 break; |
169 } | 168 } |
170 } | 169 } |
171 | 170 |
172 void PaymentAppManager::onGetManifest( | 171 void PaymentManager::onGetManifest( |
173 ScriptPromiseResolver* resolver, | 172 ScriptPromiseResolver* resolver, |
174 payments::mojom::blink::PaymentAppManifestPtr manifest, | 173 payments::mojom::blink::PaymentAppManifestPtr manifest, |
175 payments::mojom::blink::PaymentAppManifestError error) { | 174 payments::mojom::blink::PaymentAppManifestError error) { |
176 DCHECK(resolver); | 175 DCHECK(resolver); |
177 switch (error) { | 176 switch (error) { |
178 case payments::mojom::blink::PaymentAppManifestError::NONE: | 177 case payments::mojom::blink::PaymentAppManifestError::NONE: |
179 resolver->resolve( | 178 resolver->resolve( |
180 mojo::ConvertTo<PaymentAppManifest>(std::move(manifest))); | 179 mojo::ConvertTo<PaymentAppManifest>(std::move(manifest))); |
181 break; | 180 break; |
182 case payments::mojom::blink::PaymentAppManifestError::NOT_IMPLEMENTED: | 181 case payments::mojom::blink::PaymentAppManifestError::NOT_IMPLEMENTED: |
183 resolver->reject( | 182 resolver->reject( |
184 DOMException::create(NotSupportedError, "Not implemented yet.")); | 183 DOMException::create(NotSupportedError, "Not implemented yet.")); |
185 break; | 184 break; |
186 case payments::mojom::blink::PaymentAppManifestError::NO_ACTIVE_WORKER: | 185 case payments::mojom::blink::PaymentAppManifestError::NO_ACTIVE_WORKER: |
187 case payments::mojom::blink::PaymentAppManifestError:: | 186 case payments::mojom::blink::PaymentAppManifestError:: |
188 MANIFEST_STORAGE_OPERATION_FAILED: | 187 MANIFEST_STORAGE_OPERATION_FAILED: |
189 resolver->reject(DOMException::create( | 188 resolver->reject(DOMException::create( |
190 AbortError, | 189 AbortError, |
191 "No payment app manifest associated with the service worker.")); | 190 "No payment app manifest associated with the service worker.")); |
192 break; | 191 break; |
193 } | 192 } |
194 } | 193 } |
195 | 194 |
196 void PaymentAppManager::onServiceConnectionError() { | 195 void PaymentManager::onServiceConnectionError() { |
197 m_manager.reset(); | 196 m_manager.reset(); |
198 } | 197 } |
199 | 198 |
200 } // namespace blink | 199 } // namespace blink |
OLD | NEW |