<!DOCTYPE html>
<meta charset="utf-8">
<title>remoteDesktopClientOverride</title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src=helpers.js></script>
<body></body>
<script>
"use strict";

const remoteDesktopClientOverride = {
  origin: "https://acme.com",
  sameOriginWithAncestors: false,
};

virtualAuthenticatorPromiseTest(async t => {
  let promise = createCredential({
    options: {
      publicKey: {
        extensions: {
          remoteDesktopClientOverride: remoteDesktopClientOverride,
        },
      },
    },
  });
  // Site isn't authorized to use the extension.
  return promise_rejects_dom(t, "NotAllowedError", promise);
}, {
  protocol: "ctap2_1",
  transport: "usb",
}, "create() with remoteDesktopClientOverride");

virtualAuthenticatorPromiseTest(async t => {
  let promise = navigator.credentials.get({publicKey: {
      challenge: new Uint8Array(),
        allowCredentials: [{
          id: (await createCredential()).rawId,
          type: "public-key",
        }],
        extensions: {
          remoteDesktopClientOverride: remoteDesktopClientOverride,
      },
  }});
  // Site isn't authorized to use the extension.
  return promise_rejects_dom(t, "NotAllowedError", promise);
}, {
  protocol: "ctap2_1",
  transport: "usb",
}, "get() with remoteDesktopClientOverride on an unauthorized site");
</script>
