tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

fedcm-disconnect-iframe.sub.https.html (2072B)


      1 <!DOCTYPE html>
      2 <title>Federated Credential Management API disconnect() tests in iframes.</title>
      3 <link rel="help" href="https://fedidcg.github.io/FedCM">
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script src="/resources/testdriver.js"></script>
      7 <script src="/resources/testdriver-vendor.js"></script>
      8 
      9 <body>
     10 
     11 <script type="module">
     12 import {alt_manifest_origin,
     13        alt_request_options_with_mediation_required,
     14        fedcm_test,
     15        fedcm_get_and_select_first_account} from './support/fedcm-helper.sub.js';
     16 
     17 async function createIframeAndWaitForMessage(test, iframeUrl, allow = false) {
     18  const messageWatcher = new EventWatcher(test, window, "message");
     19  let iframe = document.createElement("iframe");
     20  iframe.src = iframeUrl;
     21  if (allow) {
     22    iframe.allow = "identity-credentials-get";
     23  }
     24  document.body.appendChild(iframe);
     25  let message = null;
     26  // Ignore internal "testdriver-complete" messages.
     27  do {
     28      message = await messageWatcher.wait_for("message");
     29  } while (!("result" in message.data));
     30  return message.data;
     31 }
     32 
     33 fedcm_test(async t => {
     34  const message = await createIframeAndWaitForMessage(t, 'support/fedcm/disconnect-iframe.html');
     35  assert_equals(message.result, "Pass");
     36 }, 'Same-origin iframe does not need explicit identity-credentials-get');
     37 
     38 fedcm_test(async t => {
     39  const message = await createIframeAndWaitForMessage(t,
     40      'https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/fedcm/disconnect-iframe.html?skip_get');
     41  assert_equals(message.result, "Failed disconnect");
     42  assert_equals(message.errorType, "NotAllowedError");
     43 }, 'Cross-origin iframe fails disconnect() without explicit identity-credentials-get');
     44 
     45 fedcm_test(async t => {
     46  const message = await createIframeAndWaitForMessage(t,
     47      'https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/fedcm/disconnect-iframe.html',
     48      /*allow=*/true);
     49  assert_equals(message.result, "Pass");
     50 }, 'Cross-origin iframe can disconnect with explicit identity-credentials-get');
     51 </script>