summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/payment-request/interfaces.https.html
blob: 2d0e29ec198991385fba3102ce863b104585cce2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<!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, PaymentDetails details, optional PaymentOptions options), SecureContext]
interface PaymentRequest : EventTarget {
    Promise<PaymentResponse> show();
    Promise<void>            abort();

    readonly attribute PaymentAddress? shippingAddress;
    readonly attribute DOMString?      shippingOption;

    // Supports "shippingaddresschange" event
             attribute EventHandler    onshippingaddresschange;

    // Supports "shippingoptionchange" event
             attribute EventHandler    onshippingoptionchange;
};

dictionary PaymentMethodData {
    required sequence<DOMString> supportedMethods;
             object              data;
};

dictionary PaymentCurrencyAmount {
    required DOMString currency;
    required DOMString value;
};

dictionary PaymentDetails {
    PaymentItem                      total;
    sequence<PaymentItem>            displayItems;
    sequence<PaymentShippingOption>  shippingOptions;
    sequence<PaymentDetailsModifier> modifiers;
};

dictionary PaymentDetailsModifier {
    required sequence<DOMString>   supportedMethods;
             PaymentItem           total;
             sequence<PaymentItem> additionalDisplayItems;
};

dictionary PaymentOptions {
    boolean requestPayerEmail = false;
    boolean requestPayerPhone = false;
    boolean requestShipping = false;
};

dictionary PaymentItem {
    required DOMString             label;
    required PaymentCurrencyAmount amount;
};

interface PaymentAddress {
    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              careOf;
    readonly attribute DOMString              phone;
};

dictionary PaymentShippingOption {
    required DOMString             id;
    required DOMString             label;
    required PaymentCurrencyAmount amount;
             boolean               selected = false;
};

enum PaymentComplete {
    "success",
    "fail",
    ""
};

interface PaymentResponse {
    readonly attribute DOMString       methodName;
    readonly attribute object          details;
    readonly attribute PaymentAddress? shippingAddress;
    readonly attribute DOMString?      shippingOption;
    readonly attribute DOMString?      payerEmail;
    readonly attribute DOMString?      payerPhone;

    Promise<void> complete(optional PaymentComplete result = "");
};

[Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict)]
interface PaymentRequestUpdateEvent : Event {
    void updateWith(Promise<PaymentDetails> d);
};

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>