Commit 1b8ef610 authored by Nick Burris's avatar Nick Burris Committed by moz-wptsync-bot
Browse files

Bug 1760210 [wpt PR 33158] - [SPC] Add iconMustBeShown option and a default...

Bug 1760210 [wpt PR 33158] - [SPC] Add iconMustBeShown option and a default instrument icon, a=testonly

Automatic update from web-platform-tests
[SPC] Add iconMustBeShown option and a default instrument icon

Implementation for the recent spec change[1] to add an iconMustBeShown
option to the SPC API. This option, default true, can be set to false to
allow the SPC flow to proceed with a default payment instrument icon
when the input icon can't be downloaded or decoded. In this case, this
implementation reuses an existing generic credit card vector icon used
in other autofill UI.

[1] https://github.com/w3c/secure-payment-confirmation/issues/125

Bug: 1298505

Change-Id: I336888d62951faa9a58652cf28fa2bcbac405e12
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3462491


Reviewed-by: default avatarStephen McGruer <smcgruer@chromium.org>
Reviewed-by: default avatarKen Buchanan <kenrb@chromium.org>
Commit-Queue: Nick Burris <nburris@chromium.org>
Cr-Commit-Position: refs/heads/main@{#981649}

--

wpt-commits: e2335f33e1bf19595f6b496a415aa0f275eab6ca
wpt-pr: 33158
parent 1ed30029
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -59,4 +59,45 @@ promise_test(async t => {
  }], PAYMENT_DETAILS);
  await promise_rejects_dom(t, "NotSupportedError", request.show());
}, 'SPC authentication with an invalid icon');

promise_test(async t => {
  const authenticator = await window.test_driver.add_virtual_authenticator(
    AUTHENTICATOR_OPTS);
  t.add_cleanup(() => {
    return window.test_driver.remove_virtual_authenticator(authenticator);
  });

  await window.test_driver.set_spc_transaction_mode("autoaccept");
  t.add_cleanup(() => {
    return window.test_driver.set_spc_transaction_mode("none");
  });

  const credential = await createCredential();

  const challenge = 'server challenge';
  const payeeOrigin = 'https://merchant.com';
  const displayName = 'Troycard ***1234';

  let request = new PaymentRequest([{
    supportedMethods: 'secure-payment-confirmation',
    data: {
      credentialIds: [credential.rawId],
      challenge: Uint8Array.from(challenge, c => c.charCodeAt(0)),
      payeeOrigin,
      timeout: 60000,
      instrument: {
        displayName,
        icon: INVALID_ICON_URL,
        iconMustBeShown: false,
      },
    }
  }], PAYMENT_DETAILS);

  const responsePromise = request.show();
  const response = await responsePromise;
  await response.complete('success');
  const cred = response.details;
  const clientDataJSON = JSON.parse(arrayBufferToString(cred.response.clientDataJSON));
  assert_equals(clientDataJSON.payment.instrument.icon, '');
}, 'SPC authentication allowing an invalid icon with iconMustBeShown option.');
</script>