<!DOCTYPE html>
<meta charset="utf-8">
<title>navigator.credentials.create() largeBlob extension tests with authenticator support</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>
standardSetup(function() {
  "use strict";

  promise_test(async t => {
    const credential = await createCredential({
      options: {
        publicKey: {
          authenticatorSelection: {
            requireResidentKey: true,
          },
          extensions: {
            largeBlob: {
              support: "preferred",
            },
          },
        },
      },
    });
    assert_own_property(credential.getClientExtensionResults(), "largeBlob");
    assert_true(credential.getClientExtensionResults().largeBlob.supported);
    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "blob");
    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "written");
  }, "navigator.credentials.create() with largeBlob.support set to preferred and supported by authenticator");

  promise_test(async t => {
    const credential = await createCredential({
      options: {
        publicKey: {
          authenticatorSelection: {
            requireResidentKey: true,
          },
          extensions: {
            largeBlob: {},
          },
        },
      },
    });
    assert_own_property(credential.getClientExtensionResults(), "largeBlob");
    assert_true(credential.getClientExtensionResults().largeBlob.supported);
    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "blob");
    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "written");
  }, "navigator.credentials.create() with largeBlob.support not set and supported by authenticator");

  promise_test(async t => {
    const credential = await createCredential({
      options: {
        publicKey: {
          authenticatorSelection: {
            requireResidentKey: true,
          },
          extensions: {
            largeBlob: {
              support: "required"
            },
          },
        },
      },
    });
    assert_own_property(credential.getClientExtensionResults(), "largeBlob");
    assert_true(credential.getClientExtensionResults().largeBlob.supported);
    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "blob");
    assert_not_own_property(credential.getClientExtensionResults().largeBlob, "written");
  }, "navigator.credentials.create() with largeBlob.support set to required and supported by authenticator");
}, {
  protocol: "ctap2_1",
  hasResidentKey: true,
  hasUserVerification: true,
  isUserVerified: true,
  extensions: ["largeBlob"],
});
</script>
