| <!DOCTYPE html> |
| <meta charset="utf-8" /> |
| <title>Credential Management API Test: non-fully active document</title> |
| <link |
| rel="help" |
| href="https://github.com/w3c/webappsec-credential-management" |
| /> |
| <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> |
| <body> |
| <iframe></iframe> |
| </body> |
| <script> |
| promise_setup(async () => { |
| const iframe = document.querySelector("iframe"); |
| await new Promise((resolve) => { |
| iframe.addEventListener("load", resolve, { once: true }); |
| iframe.src = "about:blank"; |
| document.body.appendChild(iframe); |
| }); |
| }); |
| |
| promise_test(async (t) => { |
| const iframe = document.querySelector("iframe"); |
| |
| // The signal check happens after the fully active check. |
| // This allows us to confirm the right error is thrown |
| // and in the right order. |
| const controller = new iframe.contentWindow.AbortController(); |
| const signal = controller.signal; |
| controller.abort(); |
| |
| // Steal all the needed references. |
| const { credentials } = iframe.contentWindow.navigator; |
| const DOMExceptionCtor = iframe.contentWindow.DOMException; |
| |
| // No longer fully active. |
| iframe.remove(); |
| |
| // Try to get credentials while not fully active... |
| await promise_rejects_dom( |
| t, |
| "InvalidStateError", |
| DOMExceptionCtor, |
| credentials.get({ signal }), |
| "Expected InvalidStateError for get() on non-fully-active document" |
| ); |
| |
| // Try to create credentials while not fully active... |
| await promise_rejects_dom( |
| t, |
| "InvalidStateError", |
| DOMExceptionCtor, |
| credentials.create({ signal }), |
| "Expected InvalidStateError for create() on non-fully-active document" |
| ); |
| |
| // Try to prevent silent access while not fully active... |
| await promise_rejects_dom( |
| t, |
| "InvalidStateError", |
| DOMExceptionCtor, |
| credentials.preventSilentAccess(), |
| "Expected InvalidStateError for preventSilentAccess() on non-fully-active document" |
| ); |
| }, "non-fully active document behavior for CredentialsContainer"); |
| </script> |