blob: 8ad005431a4516fc5da5b6c396a3655f63fc11f2 [file] [log] [blame]
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
if (document.location.host != "subdomain.example.test:8443") {
document.location = "https://subdomain.example.test:8443/credentialmanager/publickeycredential-same-origin-with-ancestors.html";
promise_test(_ => new Promise(_ => {}), "Stall tests on the wrong host.");
}
const SAME_ORIGIN = "https://subdomain.example.test:8443";
const CROSS_ORIGIN = "https://notexample.test:8443";
const VALID_IFRAME_CASES = [
{ 'outerOrigin': SAME_ORIGIN,
'innerOrigin': ''},
{ 'outerOrigin': SAME_ORIGIN,
'innerOrigin': SAME_ORIGIN}
];
const INVALID_IFRAME_CASES = [
{ 'outerOrigin': CROSS_ORIGIN,
'innerOrigin': ''},
{ 'outerOrigin': SAME_ORIGIN,
'innerOrigin': CROSS_ORIGIN},
{ 'outerOrigin': CROSS_ORIGIN,
'innerOrigin': SAME_ORIGIN},
{ 'outerOrigin': CROSS_ORIGIN,
'innerOrigin': CROSS_ORIGIN},
];
const HELPER_FILES = [
'publickey-create-helper.html', 'publickey-get-helper.html'
];
function createNestedIframeTest(outerOrigin, innerOrigin, expectation, helperfile) {
return function (t) {
window.addEventListener("load", _ => {
var iframe = document.createElement("iframe");
if (innerOrigin) {
// Nested iframe
iframe.src = outerOrigin + "/credentialmanager/resources/echoing-nester.html?origin="
+ innerOrigin + "&file=" + helperfile;
} else {
iframe.src = outerOrigin + "/credentialmanager/resources/" + helperfile;
}
window.addEventListener("message", t.step_func(e => {
if (e.source == iframe.contentWindow) {
assert_equals(e.data, expectation);
t.done();
}
}));
document.body.appendChild(iframe);
});
};
}
for (let test of VALID_IFRAME_CASES) {
for (let file of HELPER_FILES) {
async_test(createNestedIframeTest(test.outerOrigin, test.innerOrigin, "SUCCESS", file),
file + " with inner origin: " + test.innerOrigin + ", outer origin: " + test.outerOrigin + "succeeds");
}
}
for (let test of INVALID_IFRAME_CASES) {
for (let file of HELPER_FILES) {
async_test(createNestedIframeTest(test.outerOrigin, test.innerOrigin, "NotAllowedError",file),
file + " with inner origin: " + test.innerOrigin + ", outer origin: " + test.outerOrigin + "fails");
}
}
</script>