Test files: 23; Total subtests: 167
Test | CH95 | SF15 |
---|---|---|
/payment-request/PaymentMethodChangeEvent/methodDetails-attribute.https.html | OK | OK |
Must have a methodDetails IDL attribute, which is initialized with to the methodName dictionary value | PASS | PASS |
The methodDetails member defaults to null | PASS | PASS |
/payment-request/PaymentMethodChangeEvent/methodName-attribute.https.html | OK | OK |
Must have a methodName IDL attribute, which is initialized with to the methodName dictionary value | PASS | PASS |
When no dictionary is passed, the methodName member defaults to the empty string | PASS | PASS |
/payment-request/PaymentRequestUpdateEvent/constructor.http.html | OK | OK |
PaymentRequestUpdateEvent constructor must not be exposed in insecure context | PASS | PASS |
/payment-request/PaymentRequestUpdateEvent/constructor.https.html | OK | OK |
PaymentRequestUpdateEvent can be constructed in secure-context | PASS | PASS |
PaymentRequestUpdateEvent can be constructed with an EventInitDict, even if not trusted | PASS | PASS |
PaymentRequestUpdateEvent can be dispatched, even if not trusted | PASS | PASS |
/payment-request/PaymentRequestUpdateEvent/updatewith-method.https.html | OK | OK |
Calling .updateWith() with a dispatched, untrusted event, throws "InvalidStateError" | PASS | PASS |
Calling .updateWith() with an undispatched untrusted event throws "InvalidStateError" | PASS | PASS |
Let target be the request which is dispatching the event. | PASS | PASS |
/payment-request/constructor_convert_method_data.https.html | OK | OK |
Converts PaymentMethodData's data to mandated IDL type during PaymentRequest construction. | PASS | PASS |
Smoke test. | PASS | PASS |
Tries to convert data member during Payment Request construction, irrespective of PMI. | PASS | PASS |
/payment-request/historical.https.html | OK | OK |
careOf in PaymentAddress | PASS | PASS |
languageCode in PaymentAddress | PASS | PASS |
paymentRequestID in PaymentRequest | PASS | PASS |
paymentRequestID in PaymentResponse | PASS | PASS |
paymentRequestId in PaymentRequest | PASS | PASS |
paymentRequestId in PaymentResponse | PASS | PASS |
supportedMethods must not support sequence<DOMString> | PASS | PASS |
totalAmount in PaymentResponse | PASS | PASS |
/payment-request/idlharness.https.window.html | OK | OK |
PaymentAddress interface object length | PASS | PASS |
PaymentAddress interface object name | PASS | PASS |
PaymentAddress interface: attribute addressLine | PASS | PASS |
PaymentAddress interface: attribute city | PASS | PASS |
PaymentAddress interface: attribute country | PASS | PASS |
PaymentAddress interface: attribute dependentLocality | PASS | PASS |
PaymentAddress interface: attribute organization | PASS | PASS |
PaymentAddress interface: attribute phone | PASS | PASS |
PaymentAddress interface: attribute postalCode | PASS | PASS |
PaymentAddress interface: attribute recipient | PASS | PASS |
PaymentAddress interface: attribute region | PASS | PASS |
PaymentAddress interface: attribute sortingCode | PASS | PASS |
PaymentAddress interface: existence and properties of interface object | PASS | PASS |
PaymentAddress interface: existence and properties of interface prototype object | PASS | PASS |
PaymentAddress interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS |
PaymentAddress interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS |
PaymentAddress interface: operation toJSON() | PASS | PASS |
PaymentMethodChangeEvent interface object length | PASS | PASS |
PaymentMethodChangeEvent interface object name | PASS | PASS |
PaymentMethodChangeEvent interface: attribute methodDetails | PASS | PASS |
PaymentMethodChangeEvent interface: attribute methodName | PASS | PASS |
PaymentMethodChangeEvent interface: existence and properties of interface object | PASS | PASS |
PaymentMethodChangeEvent interface: existence and properties of interface prototype object | PASS | PASS |
PaymentMethodChangeEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS |
PaymentMethodChangeEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS |
PaymentMethodChangeEvent interface: new PaymentMethodChangeEvent("paymentmethodchange") must inherit property "methodDetails" with the proper type | PASS | PASS |
PaymentMethodChangeEvent interface: new PaymentMethodChangeEvent("paymentmethodchange") must inherit property "methodName" with the proper type | PASS | PASS |
PaymentMethodChangeEvent must be primary interface of new PaymentMethodChangeEvent("paymentmethodchange") | PASS | PASS |
PaymentRequest interface object name | PASS | PASS |
PaymentRequest interface: attribute id | PASS | PASS |
PaymentRequest interface: attribute onpaymentmethodchange | PASS | PASS |
PaymentRequest interface: calling show(optional Promise<PaymentDetailsUpdate>) on paymentRequest with too few arguments must throw TypeError | PASS | PASS |
PaymentRequest interface: existence and properties of interface object | PASS | PASS |
PaymentRequest interface: existence and properties of interface prototype object | PASS | PASS |
PaymentRequest interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS |
PaymentRequest interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS |
PaymentRequest interface: operation abort() | PASS | PASS |
PaymentRequest interface: operation canMakePayment() | PASS | PASS |
PaymentRequest interface: operation show(optional Promise<PaymentDetailsUpdate>) | PASS | PASS |
PaymentRequest interface: paymentRequest must inherit property "abort()" with the proper type | PASS | PASS |
PaymentRequest interface: paymentRequest must inherit property "canMakePayment()" with the proper type | PASS | PASS |
PaymentRequest interface: paymentRequest must inherit property "id" with the proper type | PASS | PASS |
PaymentRequest interface: paymentRequest must inherit property "onpaymentmethodchange" with the proper type | PASS | PASS |
PaymentRequest interface: paymentRequest must inherit property "show(optional Promise<PaymentDetailsUpdate>)" with the proper type | PASS | PASS |
PaymentRequest must be primary interface of paymentRequest | PASS | PASS |
PaymentRequestUpdateEvent interface object length | PASS | PASS |
PaymentRequestUpdateEvent interface object name | PASS | PASS |
PaymentRequestUpdateEvent interface: calling updateWith(Promise<PaymentDetailsUpdate>) on new PaymentMethodChangeEvent("paymentmethodchange") with too few arguments must throw TypeError | PASS | PASS |
PaymentRequestUpdateEvent interface: calling updateWith(Promise<PaymentDetailsUpdate>) on new PaymentRequestUpdateEvent("paymentrequestupdate") with too few arguments must throw TypeError | PASS | PASS |
PaymentRequestUpdateEvent interface: existence and properties of interface object | PASS | PASS |
PaymentRequestUpdateEvent interface: existence and properties of interface prototype object | PASS | PASS |
PaymentRequestUpdateEvent interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS |
PaymentRequestUpdateEvent interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS |
PaymentRequestUpdateEvent interface: new PaymentMethodChangeEvent("paymentmethodchange") must inherit property "updateWith(Promise<PaymentDetailsUpdate>)" with the proper type | PASS | PASS |
PaymentRequestUpdateEvent interface: new PaymentRequestUpdateEvent("paymentrequestupdate") must inherit property "updateWith(Promise<PaymentDetailsUpdate>)" with the proper type | PASS | PASS |
PaymentRequestUpdateEvent interface: operation updateWith(Promise<PaymentDetailsUpdate>) | PASS | PASS |
PaymentRequestUpdateEvent must be primary interface of new PaymentRequestUpdateEvent("paymentrequestupdate") | PASS | PASS |
PaymentResponse interface object length | PASS | PASS |
PaymentResponse interface object name | PASS | PASS |
PaymentResponse interface: attribute details | PASS | PASS |
PaymentResponse interface: attribute methodName | PASS | PASS |
PaymentResponse interface: attribute requestId | PASS | PASS |
PaymentResponse interface: existence and properties of interface object | PASS | PASS |
PaymentResponse interface: existence and properties of interface prototype object | PASS | PASS |
PaymentResponse interface: existence and properties of interface prototype object's "constructor" property | PASS | PASS |
PaymentResponse interface: existence and properties of interface prototype object's @@unscopables property | PASS | PASS |
PaymentResponse interface: operation complete(optional PaymentComplete) | PASS | PASS |
PaymentResponse interface: operation retry(optional PaymentValidationErrors) | PASS | PASS |
PaymentResponse interface: operation toJSON() | PASS | PASS |
Stringification of new PaymentMethodChangeEvent("paymentmethodchange") | PASS | PASS |
Stringification of new PaymentRequestUpdateEvent("paymentrequestupdate") | PASS | PASS |
Stringification of paymentRequest | PASS | PASS |
idl_test setup | PASS | PASS |
idl_test validation | PASS | PASS |
/payment-request/onpaymentmethodchange-attribute.https.html | OK | OK |
Must have a onpaymentmethodchange IDL attribute | PASS | PASS |
onpaymentmethodchange attribute and listeners both work | PASS | PASS |
onpaymentmethodchange attribute is a generic handler for "paymentmethodchange" | PASS | PASS |
onpaymentmethodchange attribute is a handler for PaymentMethodChangeEvent | PASS | PASS |
/payment-request/payment-is-showing.https.html | OK | OK |
If an iframe shows a payment request, the top-level browsing context can't also show one. | PASS | PASS |
Navigating an iframe as a nested browsing context sets 'payment request is showing boolean' to false. | PASS | PASS |
The top browsing context can only show one payment sheet at a time. | PASS | PASS |
/payment-request/payment-request-abort-method.https.html | OK | OK |
Aborting a request before it is shown doesn't prevent it from being shown later. | PASS | PASS |
Calling abort() multiple times is always a new object. | PASS | PASS |
The same request cannot be shown multiple times. | PASS | PASS |
Throws if the promise [[state]] is not "interactive" | PASS | PASS |
/payment-request/payment-request-canmakepayment-method.https.html | OK | OK |
All methods are unsupported | PASS | PASS |
If payment method identifier are supported, resolve promise with true. | PASS | PASS |
If request.[[state]] is "closed", then return a promise rejected with an "InvalidStateError" DOMException. | PASS | PASS |
If request.[[state]] is "created", then return a promise that resolves to true for known method. | PASS | PASS |
If request.[[state]] is "interactive", then return a promise rejected with an "InvalidStateError" DOMException. | PASS | PASS |
Mix of supported and unsupported methods, at least one method is supported. | PASS | PASS |
/payment-request/payment-request-constructor.https.sub.html | OK | OK |
For each item in details.displayItems: if item.amount.value is not a valid decimal monetary value, then throw a TypeError | PASS | PASS |
If amount.value of additionalDisplayItems is not a valid decimal monetary value, then throw a TypeError | PASS | PASS |
If details.id is missing, assign a unique identifier | PASS | PASS |
If details.id is missing, assign an identifier | PASS | PASS |
If details.total.amount.value is not a valid decimal monetary value, then throw a TypeError | PASS | PASS |
If payment method is duplicate, then throw a RangeError | PASS | PASS |
If the first character of details.total.amount.value is U+002D HYPHEN-MINUS, then throw a TypeError | PASS | PASS |
If the length of the methodData sequence is zero, then throw a TypeError | PASS | PASS |
If the same id is provided, then use it | PASS | PASS |
Modifier data must be JSON-serializable object (an Array in this case) | PASS | PASS |
Modifier data must be JSON-serializable object (an Object in this case) | PASS | PASS |
Modifier method data must be JSON-serializable object | PASS | PASS |
Negative values are allowed for displayItems.amount.value, irrespective of total amount | PASS | PASS |
PaymentDetailsBase members can be 0 length | PASS | PASS |
Rethrow any exceptions of JSON-serializing modifier.data | PASS | PASS |
Rethrow any exceptions of JSON-serializing paymentMethod.data into a string | PASS | PASS |
Throw TypeError if modifier.total.amount.value is not a valid decimal monetary value | PASS | PASS |
Use ids even if they are strange | PASS | PASS |
Use provided request ID | PASS | PASS |
it handles high precision currency values without throwing | PASS | PASS |
/payment-request/payment-request-ctor-currency-code-checks.https.sub.html | OK | OK |
Check and canonicalize invalid details.displayItems amount and rethrow RangeError. | PASS | PASS |
Check and canonicalize invalid details.total.amount and rethrow any exceptions. | PASS | PASS |
Check and canonicalize invalid modifiers[n].additionaDisplayItem amount and rethrow RangeError. | PASS | PASS |
Check and canonicalize invalid modifiers[n].total amount and rethrow RangeError. | PASS | PASS |
Check and canonicalize valid details.displayItems amount | PASS | PASS |
Check and canonicalize valid details.total.amount | PASS | PASS |
Check and canonicalize valid modifiers[n].additionaDisplayItem amount. | PASS | PASS |
Check and canonicalize valid modifiers[n].total amount. | PASS | PASS |
/payment-request/payment-request-ctor-pmi-handling.https.sub.html | OK | OK |
Constructor MUST throw if given an invalid URL-based payment method identifier | PASS | PASS |
Must not throw on syntactically valid standardized payment method identifiers, even if they are not supported | PASS | PASS |
Must support valid standard URL PMIs | PASS | PASS |
Must throw on syntactically invalid standardized payment method identifiers | PASS | PASS |
/payment-request/payment-request-id-attribute.https.html | OK | OK |
PaymentRequest's id attribute must be a UUID when PaymentDetailsInit.id is missing | PASS | PASS |
PaymentRequest's id attribute's value can be set via PaymentDetailsInit dictionary | PASS | PASS |
/payment-request/payment-request-insecure.http.html | OK | OK |
PaymentRequest constructor must not be exposed in insecure context | PASS | PASS |
/payment-request/payment-request-not-exposed.https.worker.html | OK | OK |
PaymentRequest constructor must not be exposed in worker global scope | PASS | PASS |
/payment-request/payment-request-show-method.https.html | OK | OK |
Calling show() multiple times always returns a new promise. | PASS | PASS |
Calling show() without being triggered by user interaction throws | PASS | PASS |
If payment method consultation produces no supported method of payment, then return a promise rejected with a "NotSupportedError" DOMException. | PASS | PASS |
If the user agent's "payment request is showing" boolean is true, then return a promise rejected with an "AbortError" DOMException. | PASS | PASS |
Throws if the promise [[state]] is not 'created'. | PASS | PASS |
/payment-request/payment-response/onpayerdetailchange-attribute.https.html | OK | OK |
PaymentResponse has an onpayerdetailchange in the prototype chain | PASS | PASS |
PaymentResponse inherits from EventTarget | PASS | PASS |
/payment-request/rejects_if_not_active.https.html | OK | OK |
PaymentRequest.show() aborts if the document is active, but not fully active. | PASS | PASS |
PaymentRequest.show() aborts if the document is not active. | PASS | PASS |
/payment-request/show-consume-activation.https.html | OK | OK |
Calling share consumes user activation | PASS | PASS |
/payment-request/show-method-optional-promise-rejects.https.html | OK | OK |
Must throw a RangeError when a modifier display item has an invalid currency. | PASS | PASS |
Must throw a RangeError when a modifier's total item has an invalid currency. | PASS | PASS |
Must throw as Modifier has a recursive dictionary. | PASS | PASS |
Rejection of detailsPromise must abort the update with an 'AbortError' DOMException. | PASS | PASS |
Total in the update is a string, so converting to IDL must abort the update with a TypeError. | PASS | PASS |
Total is recursive, so converting to IDL must abort the update with a TypeError. | PASS | PASS |
Updating with a displayItem with an invalid currency results in RangeError. | PASS | PASS |
Updating with a negative total results in a TypeError. | PASS | PASS |