Quelle test_recursive_frames.html
Sprache: HTML
products/sources/formale Sprachen/C/Firefox/docshell/test/navigation/test_recursive_frames.html
<!DOCTYPE HTML >
<html >
<head >
<title >Test for Recursive Loads</title >
<meta charset="utf-8" >
<script src="/tests/SimpleTest/SimpleTest.js" ></script >
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head >
<body >
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1597427 " >Mozilla Bug 1597427</a>
<p id="display" ></p>
<div id="content" style ="display: none" >
</div >
<pre id="test" >
<script type="application/javascript" >
const TEST_CASES = [
{ // too many recursive iframes
frameId: "recursiveFrame" ,
expectedLocations: [
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_recursive.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_recursive.html " ,
"about:blank" ,
],
},
{ // too many recursive iframes
frameId: "twoRecursiveIframes" ,
expectedLocations: [
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_load_as_example_com.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.org/tests/docshell/test/navigation/frame_load_as_example_org.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_load_as_example_com.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.org/tests/docshell/test/navigation/frame_load_as_example_org.html " ,
"about:blank" ,
],
},
{ // too many recursive iframes
frameId: "threeRecursiveIframes" ,
expectedLocations: [
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://sub1.test1.mochi.test:8888/tests/docshell/test/navigation/frame_load_as_host1.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_load_as_host2.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://test1.mochi.test:8888/tests/docshell/test/navigation/frame_load_as_host3.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://sub1.test1.mochi.test:8888/tests/docshell/test/navigation/frame_load_as_host1.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_load_as_host2.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://test1.mochi.test:8888/tests/docshell/test/navigation/frame_load_as_host3.html " ,
"about:blank" ,
],
},
{ // too many nested iframes
frameId: "sixRecursiveIframes" ,
expectedLocations: [
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_1_out_of_6.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://test1.mochi.test:8888/tests/docshell/test/navigation/frame_2_out_of_6.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://sub1.test1.mochi.test:8888/tests/docshell/test/navigation/frame_3_out_of_6.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://sub2.xn--lt-uia.mochi.test:8888/tests/docshell/test/navigation/frame_4_out_of_6.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://test2.mochi.test:8888/tests/docshell/test/navigation/frame_5_out_of_6.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.org/tests/docshell/test/navigation/frame_6_out_of_6.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_1_out_of_6.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://test1.mochi.test:8888/tests/docshell/test/navigation/frame_2_out_of_6.html " ,
],
},
{ // too many recursive objects
frameId: "recursiveObject" ,
expectedLocations: [
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://sub2.xn--lt-uia.mochi.test:8888/tests/docshell/test/navigation/object_recursive_load.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://sub2.xn--lt-uia.mochi.test:8888/tests/docshell/test/navigation/object_recursive_load.html " ,
],
},
{ // 3 nested srcdocs, should show all of them
frameId: "nestedSrcdoc" ,
expectedLocations: [
"about:srcdoc" ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/file_nested_srcdoc.html " ,
"about:srcdoc" ,
"about:srcdoc" ,
],
},
{ // too many recursive dynamically created iframes
frameId: "dynamicrecursive" ,
expectedLocations: [
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_recursive_dynamic.html " ,
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_recursive_dynamic.html " ,
"about:blank"
],
},
{ // navigating shouldn't be blocked by recursion check
frameId: "navigationIsNotRecursive" ,
expectedLocations: [
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
"http://example.com/tests/docshell/test/navigation/frame_recursive_target.html " ,
"http://example.com/tests/docshell/test/navigation/frame_recursive_target.html " ,
"http://example.com/tests/docshell/test/navigation/frame_recursive_target.html " ,
"about:blank"
],
},
];
async function checkRecursiveLoad(level) {
let el = content.document.getElementById("static" ) || content.document.getElementById("dynamic" );
let documentURI = await SpecialPowers.spawn(
el,
[],
() => this.content.document.documentURI
);
if (documentURI == "about:blank" ) {
// If we had too many recursive frames, the most inner iframe 's uri will be about:blank
return [documentURI];
}
if (documentURI == "about:srcdoc" && level == 3) {
// Check that we have the correct most inner srcdoc iframe
let innerText = await SpecialPowers.spawn(
el,
[],
() => this.content.document.body .innerText
);
is(innerText, "Third nested srcdoc" , "correct most inner srcdoc iframe" );
}
let nestedIfrOrObjectURI = [];
try {
// Throws an error when we have too many nested frames/objects, because we
// claim to have no content window for the inner most frame /object .
nestedIfrOrObjectURI = await SpecialPowers.spawn(
el,
[level + 1],
checkRecursiveLoad
);
} catch (err) {
info(
`Tried to spawn another task in the iframe /object , but got err: ${err}, must have had too many nested iframes/objects\n`
);
}
return [documentURI, ...nestedIfrOrObjectURI];
}
add_task(async () => {
for (const testCase of TEST_CASES) {
let el = document.getElementById(testCase.frameId);
let loc = await SpecialPowers.spawn(
el,
[],
() => this.content.location.href
);
let locations = await SpecialPowers.spawn(el, [1], checkRecursiveLoad);
isDeeply(
[loc, ...locations],
testCase.expectedLocations,
"iframes/object loaded in correct order"
);
}
});
</script >
</pre >
<div >
<iframe style ="height: 100vh; width:25%;" id="recursiveFrame" src="http://example.com/tests/docshell/test/navigation/frame_recursive.html " ></iframe >
<iframe style ="height: 100vh; width:25%;" id="twoRecursiveIframes" src="http://example.com/tests/docshell/test/navigation/frame_load_as_example_com.html " ></iframe >
<iframe style ="height: 100vh; width:25%;" id="threeRecursiveIframes" src="http://sub1.test1.mochi.test:8888/tests/docshell/test/navigation/frame_load_as_host1.html " ></iframe >
<iframe style ="height: 100vh; width:25%;" id="sixRecursiveIframes" src="http://example.com/tests/docshell/test/navigation/frame_1_out_of_6.html " ></iframe >
<object width="400" height="300" id="recursiveObject" data="http://sub2.xn--lt-uia.mochi.test:8888/tests/docshell/test/navigation/object_recursive_load.html " ></object >
<iframe id="nestedSrcdoc" srcdoc="Srcdoc that will embed an iframe <iframe id="static" src="http://example.com/tests/docshell/test/navigation/file_nested_srcdoc.html "></iframe>" ></iframe >
<iframe style ="height: 100vh; width:25%;" id="dynamicrecursive" src="http://example.com/tests/docshell/test/navigation/frame_recursive_dynamic.html " ></iframe >
<iframe style ="height: 100vh; width:25%;" id="navigationIsNotRecursive" src="http://example.com/tests/docshell/test/navigation/frame_recursive_target.html " ></iframe >
</div >
</body >
</html >
quality 100%
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland
2026-03-28