<!doctype html>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script type="module">
import {request_options_with_mediation_required} from './fedcm-helper.sub.js';
// Loading fedcm-iframe.html in the test will make a FedCM call on load, and
// trigger a postMessage upon completion.
//
// message {
// string result: "Pass" | "Fail"
// string token: token.token
// string errorType: error.name
// }
window.onload = async () => {
window.test_driver.set_test_context(window.top);
// Use this variable to stop trying to select an account once the get() promise is resolved.
let cancelHelper = false;
try {
const credentialPromise = navigator.credentials.get(request_options_with_mediation_required());
async function helper() {
try {
if (cancelHelper)
return;
await window.test_driver.select_fedcm_account(0);
} catch (ex) {
setTimeout(helper, 100);
}
}
helper();
const cred = await credentialPromise;
window.top.postMessage({result: "Pass", token: cred.token}, '*');
} catch (error) {
window.top.postMessage({result: "Fail", errorType: error.name}, '*');
}
// In case the get() call fails and no accounts may be selected, force the
// helper function to stop calling itself.
cancelHelper = true;
};
</script>