blob: a5df1e99424e3d4561b977cc45c4df946102557d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<!DOCTYPE html>
<title>Test named frame navigation of ancestors.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
<script src="/common/dispatcher/dispatcher.js"></script>
<script src="resources/utils.js"></script>
<body>
<script>
promise_test(async () => {
// This test uses the following layout:
// A: Top-level frame
// B: iframe
// C: fencedframe
// D: fencedframe
// E: iframe
//
// The purpose is to test that name resolution of navigation targets ignores
// ancestors beyond fence boundaries.
// Create an iframe B.
const B = attachIFrameContext();
await B.execute(async () => {
window.name = "B";
// Create a fenced frame C inside of it.
window.C = attachFencedFrameContext();
await window.C.execute(async () => {
window.name = "C";
// Navigate the target "B" from inside the fenced frame.
// It should open in a new tab due to fenced name lookup.
window.open("resources/dummy.html", "B");
});
});
// Observe that it created a new window, and the frame B is still here.
await B.execute(async () => {
// Create a nested iframe and fenced frame.
await window.C.execute(async () => {
window.D = attachFencedFrameContext();
window.E = attachIFrameContext();
// Navigate the target "C" from inside the nested fenced frame.
// It should open in a new tab due to fenced name lookup.
await window.D.execute(async () => {
window.open("resources/dummy.html", "C");
});
});
// Observe that it created a new window, and the frame C is still here.
await window.C.execute(async () => {
// Now attempt to navigate the target "C" from inside the iframe.
// It should open in a new tab with a console error, because sandboxed
// iframes (inherited from the fenced frame) are not allowed to navigate
// their ancestors.
await window.E.execute(() => {
window.open("resources/dummy.html", "C");
});
});
// Observe that C is still here.
await window.C.execute(() => {});
});
}, 'navigate named ancestors');
</script>
</body>
|