<!DOCTYPE html> <title>Federated Credential Management API domain hint tests.</title> <link rel="help" href="https://fedidcg.github.io/FedCM"> <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> <body> <script type="module"> import { fedcm_test, request_options_with_domain_hint, select_manifest, mark_signed_in, fedcm_get_dialog_type_promise, fedcm_get_and_select_first_account } from './support/fedcm-helper.sub.js'; fedcm_test(async t => { await mark_signed_in(); let options = request_options_with_domain_hint('manifest.py', 'nomatch'); const cred = navigator.credentials.get(options); // We expect a mismatch dialog. const type = await fedcm_get_dialog_type_promise(t); assert_equals(type, 'ConfirmIdpLogin'); window.test_driver.cancel_fedcm_dialog(); return promise_rejects_dom(t, "NetworkError", cred); }, "No domain hint matches an account."); fedcm_test(async t => { const options = request_options_with_domain_hint('manifest.py', 'idp.example'); const cred = await fedcm_get_and_select_first_account(t, options); assert_equals(cred.token, 'token'); }, "Domain hint matches an account."); fedcm_test(async t => { let options = request_options_with_domain_hint( 'manifest_with_two_accounts.json', 'example'); await select_manifest(t, options); const cred = await fedcm_get_and_select_first_account(t, options); assert_equals(cred.token, 'account_id=john_doe'); }, "Domain hint matches an account from two accounts."); fedcm_test(async t => { let options = request_options_with_domain_hint( 'manifest_with_two_accounts.json', 'any'); await select_manifest(t, options); const cred = await fedcm_get_and_select_first_account(t, options); assert_equals(cred.token, 'account_id=john_doe'); }, "Domain hint 'any' matches an account with any domain hint."); </script>