53 lines
2.1 KiB
HTML
53 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<title>IdentityProvider.resolve after preventSilentAccess should reset user interaction</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>
|
|
|
|
<script type="module">
|
|
import {request_options_with_mediation_optional,
|
|
fedcm_test,
|
|
select_manifest,
|
|
fedcm_get_and_select_first_account} from '../support/fedcm-helper.sub.js';
|
|
|
|
fedcm_test(async t => {
|
|
let test_options = request_options_with_mediation_optional("manifest_with_continue_on.json");
|
|
await select_manifest(t, test_options);
|
|
|
|
// Signs in account "1234" so that they will be a returning user
|
|
test_options.identity.providers[0].nonce = "token";
|
|
let cred = await fedcm_get_and_select_first_account(t, test_options);
|
|
assert_equals(cred.token, "account=1234");
|
|
|
|
try {
|
|
await navigator.credentials.preventSilentAccess();
|
|
} catch (ex) {
|
|
// In Chrome's content_shell, the promise will be rejected
|
|
// even though the part we care about succeeds.
|
|
}
|
|
|
|
// Ensure that mediation: silent fails as expected.
|
|
await select_manifest(t, test_options);
|
|
test_options.mediation = "silent";
|
|
let cred_promise = navigator.credentials.get(test_options);
|
|
await promise_rejects_dom(t, 'NetworkError', cred_promise);
|
|
|
|
// Now trigger continue_on/IdentityProvider.resolve.
|
|
await select_manifest(t, test_options);
|
|
test_options.mediation = "optional";
|
|
test_options.identity.providers[0].nonce = "2";
|
|
cred = await fedcm_get_and_select_first_account(t, test_options);
|
|
assert_equals(cred.token, "account=1234");
|
|
assert_equals(cred.isAutoSelected, false);
|
|
|
|
// Now silent mediation should work.
|
|
await select_manifest(t, test_options);
|
|
test_options.mediation = "silent";
|
|
test_options.identity.providers[0].nonce = "token";
|
|
cred = await navigator.credentials.get(test_options);
|
|
assert_equals(cred.token, "account=1234");
|
|
assert_equals(cred.isAutoSelected, true);
|
|
}, "Test that resolve clears the preventSilentAccess state.");
|
|
</script>
|