webauthn-subframe.sub.html (1973B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>WebAuthn test subframe</title> 4 <script src=../helpers.js></script> 5 <script src="/resources/testdriver.js"></script> 6 <script src="/resources/testdriver-vendor.js"></script> 7 8 <script> 9 "use strict"; 10 11 function reportResult(outcome, errorObj) { 12 window.top.postMessage({ "type": "result", "result": outcome, "error": errorObj }, "*"); 13 } 14 15 async function createCredentialAndReportResult(addUserActivation) { 16 if (addUserActivation) { 17 await test_driver.bless("create credential"); 18 } 19 try { 20 await createCredential(); 21 reportResult("success"); 22 } catch (e) { 23 reportResult("failure", e); 24 } 25 } 26 27 async function getCredentialAndReportResult(addUserActivation) { 28 if (addUserActivation) { 29 await test_driver.bless("create credential"); 30 } 31 try { 32 await navigator.credentials.get({ 33 publicKey: { 34 challenge: new Uint8Array(), 35 allowCredentials: [{ 36 id: (await createCredential()).rawId, 37 type: "public-key", 38 userVerification: "discouraged", 39 }], 40 } 41 }); 42 reportResult("success"); 43 } catch (e) { 44 reportResult("failure", e); 45 } 46 } 47 48 window.addEventListener("message", e => { 49 if (e.data.type == "create-credential") { 50 createCredentialAndReportResult(e.data.addUserActivation); 51 return; 52 } 53 if (e.data.type == "get-credential") { 54 getCredentialAndReportResult(e.data.addUserActivation); 55 return; 56 } 57 throw new Error(`Unrecognized message, e.data.type: ${e.data.type}`); 58 }); 59 60 test_driver.set_test_context(window.top); 61 window.top.postMessage({ "type": "subframe-loaded" }, "*"); 62 </script>