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 /** | 5 /** |
6 * @fileoverview JavaScript implementation of the Payment Request API. When | 6 * @fileoverview JavaScript implementation of the Payment Request API. When |
7 * loaded, installs the API onto the window object. Conforms | 7 * loaded, installs the API onto the window object. Conforms |
8 * to https://www.w3.org/TR/payment-request/. Note: This is a work in progress. | 8 * to https://www.w3.org/TR/payment-request/. Note: This is a work in progress. |
9 */ | 9 */ |
10 | 10 |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 | 223 |
224 /** | 224 /** |
225 * The event that enables the web page to update the details of the payment | 225 * The event that enables the web page to update the details of the payment |
226 * request in response to a user interaction. | 226 * request in response to a user interaction. |
227 * @type {Event} | 227 * @type {Event} |
228 */ | 228 */ |
229 __gCrWeb['paymentRequestManager'].updateEvent = null; | 229 __gCrWeb['paymentRequestManager'].updateEvent = null; |
230 | 230 |
231 /** | 231 /** |
232 * Handles invocation of updateWith() on the updateEvent object. Updates the | 232 * Handles invocation of updateWith() on the updateEvent object. Updates the |
233 * payment details when the |updateWithPromise| is resolved. Throws an error | 233 * payment details. Throws an error if |detailsOrPromise| is not a valid |
234 * if |updateWithPromise| is not a valid instance of Promise or if it fulfills | 234 * instance of window.PaymentDetails or it is a promise that does not fulfill |
235 * with an invalid instance of window.PaymentDetails. | 235 * with a valid one. |
236 * @param {?Promise<?window.PaymentDetails|undefined>|undefined} | 236 * @param {!Promise<!window.PaymentDetails>|!window.PaymentDetails} |
237 * updateWithPromise | 237 * detailsOrPromise |
238 */ | 238 */ |
239 __gCrWeb['paymentRequestManager'].updateWith = function(updateWithPromise) { | 239 __gCrWeb['paymentRequestManager'].updateWith = function(detailsOrPromise) { |
240 // Check to see |updateWithPromise| is an instance of Promise. | 240 // if |detailsOrPromise| is not an instance of a Promise, wrap it in a |
241 if (!updateWithPromise || !(updateWithPromise.then instanceof Function) || | 241 // Promise that fulfills with |detailsOrPromise|. |
242 !(updateWithPromise.catch instanceof Function)) { | 242 if (!detailsOrPromise || !(detailsOrPromise.then instanceof Function) || |
243 throw new TypeError('An instance of Promise must be provided'); | 243 !(detailsOrPromise.catch instanceof Function)) { |
| 244 detailsOrPromise = Promise.resolve(detailsOrPromise); |
244 } | 245 } |
245 | 246 |
246 updateWithPromise | 247 detailsOrPromise |
247 .then(function(paymentDetails) { | 248 .then(function(paymentDetails) { |
248 if (!paymentDetails) | 249 if (!paymentDetails) |
249 throw new TypeError( | 250 throw new TypeError( |
250 'An instance of PaymentDetails must be provided.'); | 251 'An instance of PaymentDetails must be provided.'); |
251 | 252 |
252 var message = { | 253 var message = { |
253 'command': 'paymentRequest.updatePaymentDetails', | 254 'command': 'paymentRequest.updatePaymentDetails', |
254 'payment_details': paymentDetails, | 255 'payment_details': paymentDetails, |
255 }; | 256 }; |
256 __gCrWeb.message.invokeOnHost(message); | 257 __gCrWeb.message.invokeOnHost(message); |
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
855 } | 856 } |
856 | 857 |
857 var message = { | 858 var message = { |
858 'command': 'paymentRequest.responseComplete', | 859 'command': 'paymentRequest.responseComplete', |
859 'result': opt_result, | 860 'result': opt_result, |
860 }; | 861 }; |
861 __gCrWeb.message.invokeOnHost(message); | 862 __gCrWeb.message.invokeOnHost(message); |
862 | 863 |
863 return __gCrWeb['paymentRequestManager'].responsePromiseResolver.promise; | 864 return __gCrWeb['paymentRequestManager'].responsePromiseResolver.promise; |
864 }; | 865 }; |
OLD | NEW |