| <!doctype html> |
| <meta charset=utf-8> |
| <title>Payment Request interface IDL tests</title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src=/resources/WebIDLParser.js></script> |
| <script src=/resources/idlharness.js></script> |
| <script type=text/plain class=untested> |
| interface EventHandler {}; |
| interface Event {}; |
| interface EventInit {}; |
| interface EventTarget {}; |
| </script> |
| <script type=text/plain> |
| [Constructor(sequence<PaymentMethodData> methodData, PaymentDetailsInit details, optional PaymentOptions options), |
| SecureContext] |
| interface PaymentRequest : EventTarget { |
| Promise<PaymentResponse> show(); |
| Promise<void> abort(); |
| Promise<boolean> canMakePayment(); |
| |
| readonly attribute DOMString id; |
| readonly attribute PaymentAddress? shippingAddress; |
| readonly attribute DOMString? shippingOption; |
| readonly attribute PaymentShippingType? shippingType; |
| |
| attribute EventHandler onshippingaddresschange; |
| |
| attribute EventHandler onshippingoptionchange; |
| }; |
| dictionary PaymentMethodData { |
| required sequence<DOMString> supportedMethods; |
| object data; |
| }; |
| dictionary PaymentCurrencyAmount { |
| required DOMString currency; |
| required DOMString value; |
| DOMString currencySystem = "urn:iso:std:iso:4217"; |
| }; |
| dictionary PaymentDetailsBase { |
| sequence<PaymentItem> displayItems; |
| sequence<PaymentShippingOption> shippingOptions; |
| sequence<PaymentDetailsModifier> modifiers; |
| }; |
| dictionary PaymentDetailsInit : PaymentDetailsBase { |
| DOMString id; |
| required PaymentItem total; |
| }; |
| dictionary PaymentDetailsUpdate : PaymentDetailsBase { |
| DOMString error; |
| PaymentItem total; |
| }; |
| dictionary PaymentDetailsModifier { |
| required sequence<DOMString> supportedMethods; |
| PaymentItem total; |
| sequence<PaymentItem> additionalDisplayItems; |
| object data; |
| }; |
| enum PaymentShippingType { |
| "shipping", |
| "delivery", |
| "pickup" |
| }; |
| dictionary PaymentOptions { |
| boolean requestPayerName = false; |
| boolean requestPayerEmail = false; |
| boolean requestPayerPhone = false; |
| boolean requestShipping = false; |
| PaymentShippingType shippingType = "shipping"; |
| }; |
| dictionary PaymentItem { |
| required DOMString label; |
| required PaymentCurrencyAmount amount; |
| boolean pending = false; |
| }; |
| [SecureContext] |
| interface PaymentAddress { |
| serializer = {attribute}; |
| readonly attribute DOMString country; |
| readonly attribute FrozenArray<DOMString> addressLine; |
| readonly attribute DOMString region; |
| readonly attribute DOMString city; |
| readonly attribute DOMString dependentLocality; |
| readonly attribute DOMString postalCode; |
| readonly attribute DOMString sortingCode; |
| readonly attribute DOMString languageCode; |
| readonly attribute DOMString organization; |
| readonly attribute DOMString recipient; |
| readonly attribute DOMString phone; |
| }; |
| dictionary PaymentShippingOption { |
| required DOMString id; |
| required DOMString label; |
| required PaymentCurrencyAmount amount; |
| boolean selected = false; |
| }; |
| enum PaymentComplete { |
| "fail", |
| "success", |
| "unknown" |
| }; |
| [SecureContext] |
| interface PaymentResponse { |
| serializer = {attribute}; |
| |
| readonly attribute DOMString requestId; |
| readonly attribute DOMString methodName; |
| readonly attribute object details; |
| readonly attribute PaymentAddress? shippingAddress; |
| readonly attribute DOMString? shippingOption; |
| readonly attribute DOMString? payerName; |
| readonly attribute DOMString? payerEmail; |
| readonly attribute DOMString? payerPhone; |
| |
| Promise<void> complete(optional PaymentComplete result = "unknown"); |
| }; |
| [Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict), |
| SecureContext] |
| interface PaymentRequestUpdateEvent : Event { |
| void updateWith(Promise<PaymentDetailsUpdate> detailsPromise); |
| }; |
| dictionary PaymentRequestUpdateEventInit : EventInit { |
| }; |
| </script> |
| |
| <script> |
| "use strict"; |
| var idlArray = new IdlArray(); |
| [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) { |
| if (node.className == "untested") { |
| idlArray.add_untested_idls(node.textContent); |
| } else { |
| idlArray.add_idls(node.textContent); |
| } |
| }); |
| idlArray.add_objects({ |
| PaymentRequest: ["new PaymentRequest([{supportedMethods: ['foo']}], {total: {label: 'bar', amount: {currency: 'BAZ', value: '0'}}})"] |
| }); |
| idlArray.test(); |
| </script> |