<!doctype html>
<meta charset=utf-8>
<title>Historical Payment Request APIs</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
[
  // https://github.com/w3c/browser-payment-api/pull/419
  ["paymentRequestID", "PaymentRequest"],
  ["paymentRequestID", "PaymentResponse"],

  // https://github.com/w3c/browser-payment-api/pull/258
  ["careOf", "PaymentAddress"],

  // https://github.com/w3c/browser-payment-api/pull/219
  ["totalAmount", "PaymentResponse"],

  // https://github.com/w3c/browser-payment-api/pull/426
  ["paymentRequestId", "PaymentRequest"],
  ["paymentRequestId", "PaymentResponse"],

  // https://github.com/w3c/payment-request/pull/765
  ["languageCode", "PaymentAddress"],

  //https://github.com/whatwg/html/pull/5915
  ["allowPaymentRequest", "HTMLIFrameElement"],

].forEach(([member, interf]) => {
  test(() => {
    assert_false(member in window[interf].prototype);
  }, member + ' in ' + interf);
});

// https://github.com/w3c/payment-request/pull/551
test(() => {
  const methods = [];
  const expectedError = {name: 'toString should be called'};
  const unexpectedError = {name: 'sequence<DOMString> conversion is not allowed'};
  methods.toString = () => { throw expectedError; };
  Object.defineProperty(methods, '0', { get: () => { throw unexpectedError; } });
  assert_throws_exactly(expectedError, () => {
    new PaymentRequest([{supportedMethods: methods}], {total: {label: 'bar', amount: {currency: 'BAZ', value: '0'}}});
  });
}, 'supportedMethods must not support sequence<DOMString>');
</script>