| <!DOCTYPE html> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| function create_iframe_test(origin, expectation) { |
| return function (t) { |
| assert_true(!!navigator.credentials, "`navigator.credentials` is supported."); |
| window.addEventListener("load", _ => { |
| var iframe = document.createElement("iframe"); |
| iframe.src = origin + "/credential-management/support/federatedcredential-get.html"; |
| window.addEventListener("message", t.step_func(e => { |
| if (e.source == iframe.contentWindow) { |
| assert_equals(e.data.status, expectation); |
| if (expectation == "rejected") { |
| assert_equals(e.data.exception, "NotAllowedError"); |
| } else { |
| assert_equals(e.data.exception, null); |
| } |
| t.done(); |
| } |
| })); |
| document.body.appendChild(iframe); |
| }); |
| }; |
| } |
| |
| function create_nested_iframe_test(outerOrigin, innerOrigin, expectation) { |
| return function (t) { |
| assert_true(!!navigator.credentials, "`navigator.credentials` is supported."); |
| window.addEventListener("load", _ => { |
| var iframe = document.createElement("iframe"); |
| iframe.src = outerOrigin + "/credential-management/support/echoing-nester.html?origin=" + innerOrigin + "&file=federatedcredential-get.html"; |
| window.addEventListener("message", t.step_func(e => { |
| if (e.source == iframe.contentWindow) { |
| assert_equals(e.data.status, expectation); |
| if (expectation == "rejected") { |
| assert_equals(e.data.exception, "NotAllowedError"); |
| } else { |
| assert_equals(e.data.exception, null); |
| } |
| t.done(); |
| } |
| })); |
| document.body.appendChild(iframe); |
| }); |
| }; |
| } |
| |
| const SAME_ORIGIN = window.origin; |
| const CROSS_ORIGIN = "https://{{domains[élève]}}:{{ports[https][0]}}"; |
| |
| async_test( |
| create_iframe_test(SAME_ORIGIN, "resolved"), |
| "Same-origin IFrame does not throw."); |
| async_test( |
| create_iframe_test(CROSS_ORIGIN, "rejected"), |
| "Cross-origin IFrame throws 'NotAllowedError'."); |
| |
| async_test( |
| create_nested_iframe_test(SAME_ORIGIN, SAME_ORIGIN, "resolved"), |
| "Same-origin IFrame in same-origin IFrame does not throw."); |
| |
| async_test( |
| create_nested_iframe_test(SAME_ORIGIN, CROSS_ORIGIN, "rejected"), |
| "Same-origin IFrame in same-origin IFrame throws 'NotAllowedError'."); |
| |
| async_test( |
| create_nested_iframe_test(CROSS_ORIGIN, SAME_ORIGIN, "rejected"), |
| "Cross-origin IFrame in same-origin IFrame throws 'NotAllowedError'."); |
| |
| async_test( |
| create_nested_iframe_test(CROSS_ORIGIN, CROSS_ORIGIN, "rejected"), |
| "Cross-origin IFrame in same-cross-origin throws 'NotAllowedError'."); |
| </script> |