blob: 922cb3331be3f05bc126857b5fb9aa8ece40bd16 [file] [edit]
<!DOCTYPE html><!-- webkit-test-runner [ IPCTestingAPIEnabled=true ] -->
<html>
<head>
<script src="../resources/ipc.js"></script>
<title>WebAuthenticatorCoordinatorProxy signal* messages must invoke their reply CompletionHandler on the main run loop.</title>
</head>
<body>
<p>This test passes if WebKit does not crash.</p>
<script>
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
if (window.IPC) {
import('./coreipc.js').then(async ({ CoreIPC }) => {
const origin = { data: { variantType: 'WebCore::SecurityOriginData::Tuple', variant: { protocol: 'https', host: 'example.com', port: { } } } };
const rpId = 'example.com';
const userId = 'dGVzdA';
const credentialId = 'dGVzdA';
CoreIPC.UI.WebAuthenticatorCoordinatorProxy.SignalUnknownCredential(IPC.webPageProxyID, { origin, options: { rpId, credentialId } });
CoreIPC.UI.WebAuthenticatorCoordinatorProxy.SignalAllAcceptedCredentials(IPC.webPageProxyID, { origin, options: { rpId, userId, allAcceptedCredentialIds: [credentialId] } });
CoreIPC.UI.WebAuthenticatorCoordinatorProxy.SignalCurrentUserDetails(IPC.webPageProxyID, { origin, options: { rpId, userId, name: 'test', displayName: 'test' } });
await asyncFlush('UI');
// Give the platform credential-manager async callback time to fire on its background queue.
await new Promise(resolve => setTimeout(resolve, 500));
await asyncFlush('UI');
if (window.testRunner)
testRunner.notifyDone();
}).catch(e => {
document.body.textContent = "FAIL: " + e;
if (window.testRunner)
testRunner.notifyDone();
});
} else if (window.testRunner) {
testRunner.notifyDone();
}
</script>
</body>
</html>