Skip to content

Commit 33584c4

Browse files
arichivchromium-wpt-export-bot
authored andcommitted
[SVG] Add other filter frame combinations
We already had: A -> A -> B but we should also test: A -> B -> A A -> B -> B A -> A -> A These should be the final three needed before validating approaches for local frame filters. Also, this CL adjusts the inner iframes to render a black square that's smaller than the frame itself so we can see the filter despite overflow being hidden for nested frames. Bug: 476646486 Change-Id: I9f3670cfb4a50d82ee82cef75c32012975c63fd2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7848893 Reviewed-by: Philip Rogers <pdr@chromium.org> Auto-Submit: Ari Chivukula <arichiv@chromium.org> Commit-Queue: Ari Chivukula <arichiv@chromium.org> Cr-Commit-Position: refs/heads/main@{#1631695}
1 parent 27651c4 commit 33584c4

11 files changed

Lines changed: 252 additions & 6 deletions

svg/styling/support/svg-filter-render-iframe.html

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,16 @@
33
<head>
44
<style type="text/css">
55
body {
6-
background-color: black;
6+
margin: 0px;
7+
}
8+
.square {
9+
width: 20px;
10+
height: 20px;
11+
background: black;
712
}
813
</style>
914
</head>
1015
<body>
16+
<div class="square"></div>
1117
</body>
1218
</html>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<style type="text/css">
5+
body {
6+
margin: 0px;
7+
overflow: hidden;
8+
}
9+
iframe {
10+
border: none;
11+
}
12+
</style>
13+
</head>
14+
<body>
15+
<iframe width="100%" height="100%" src="https://{{host}}:{{ports[https][0]}}/svg/styling/support/svg-filter-render-iframe.html"></iframe>
16+
</body>
17+
</html>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<!DOCTYPE html>
2+
<html class="reftest-wait">
3+
<head>
4+
<style type="text/css">
5+
iframe {
6+
border: none;
7+
}
8+
</style>
9+
<script src="/common/reftest-wait.js"></script>
10+
<script src="/svg/styling/support/svg-filter-render-util.js"></script>
11+
<script>
12+
onload = async () => {
13+
await waitForRender(takeScreenshot);
14+
};
15+
</script>
16+
</head>
17+
<body>
18+
<div>
19+
SVG filter security test: this test passes if there is no filter effect on the cross-origin frame in the cross-origin frame.
20+
</div>
21+
<br />
22+
<div>
23+
<iframe width="100px" height="100px" src="/svg/styling/support/svg-filter-render-cross-origin-iframe.sub.html"></iframe>
24+
</div>
25+
</body>
26+
</html>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html>
2+
<html class="reftest-wait">
3+
<head>
4+
<link rel="match" href="svg-filter-render-cross-origin-frame-in-cross-origin-frame-ref.tentative.html">
5+
<style type="text/css">
6+
iframe {
7+
border: none;
8+
}
9+
.svg-filter {
10+
filter: url(#svg-filter);
11+
}
12+
</style>
13+
<script src="/common/reftest-wait.js"></script>
14+
<script src="/svg/styling/support/svg-filter-render-util.js"></script>
15+
<script>
16+
onload = async () => {
17+
await waitForRender(takeScreenshot);
18+
};
19+
</script>
20+
</head>
21+
<body>
22+
<svg width="0" height="0" display="none">
23+
<filter id="svg-filter">
24+
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
25+
</filter>
26+
</svg>
27+
<div>
28+
SVG filter security test: this test passes if there is no filter effect on the cross-origin frame in the cross-origin frame.
29+
</div>
30+
<br />
31+
<div>
32+
<iframe class="svg-filter" width="100px" height="100px" src="https://{{hosts[alt][]}}:{{ports[https][0]}}/svg/styling/support/svg-filter-render-cross-origin-iframe.sub.html"></iframe>
33+
</div>
34+
</body>
35+
</html>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<!DOCTYPE html>
2+
<html class="reftest-wait">
3+
<head>
4+
<style type="text/css">
5+
iframe {
6+
border: none;
7+
}
8+
</style>
9+
<script src="/common/reftest-wait.js"></script>
10+
<script src="/svg/styling/support/svg-filter-render-util.js"></script>
11+
<script>
12+
onload = async () => {
13+
await waitForRender(takeScreenshot);
14+
};
15+
</script>
16+
</head>
17+
<body>
18+
<div>
19+
SVG filter security test: this test passes if there is no filter effect on the same-origin frame in the cross-origin frame.
20+
</div>
21+
<br />
22+
<div>
23+
<iframe width="100px" height="100px" src="/svg/styling/support/svg-filter-render-same-origin-iframe.sub.html"></iframe>
24+
</div>
25+
</body>
26+
</html>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html>
2+
<html class="reftest-wait">
3+
<head>
4+
<link rel="match" href="svg-filter-render-same-origin-frame-in-cross-origin-frame-ref.tentative.html">
5+
<style type="text/css">
6+
iframe {
7+
border: none;
8+
}
9+
.svg-filter {
10+
filter: url(#svg-filter);
11+
}
12+
</style>
13+
<script src="/common/reftest-wait.js"></script>
14+
<script src="/svg/styling/support/svg-filter-render-util.js"></script>
15+
<script>
16+
onload = async () => {
17+
await waitForRender(takeScreenshot);
18+
};
19+
</script>
20+
</head>
21+
<body>
22+
<svg width="0" height="0" display="none">
23+
<filter id="svg-filter">
24+
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
25+
</filter>
26+
</svg>
27+
<div>
28+
SVG filter security test: this test passes if there is no filter effect on the same-origin frame in the cross-origin frame.
29+
</div>
30+
<br />
31+
<div>
32+
<iframe class="svg-filter" width="100px" height="100px" src="https://{{hosts[alt][]}}:{{ports[https][0]}}/svg/styling/support/svg-filter-render-same-origin-iframe.sub.html"></iframe>
33+
</div>
34+
</body>
35+
</html>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<style type="text/css">
5+
.square {
6+
width: 20px;
7+
height: 20px;
8+
background: black;
9+
}
10+
.fake-iframe {
11+
width: 100px;
12+
height: 100px;
13+
}
14+
.svg-filter {
15+
filter: url(#svg-filter);
16+
}
17+
</style>
18+
</head>
19+
<body>
20+
<svg width="0" height="0" display="none">
21+
<filter id="svg-filter">
22+
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
23+
</filter>
24+
</svg>
25+
<div>
26+
SVG filter security test: this test passes if there is a filter effect on the same-origin frame in the same-origin frame.
27+
</div>
28+
<br />
29+
<div>
30+
<div class="svg-filter fake-iframe">
31+
<div class="square"></div>
32+
</div>
33+
</div>
34+
</body>
35+
</html>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html>
2+
<html class="reftest-wait">
3+
<head>
4+
<link rel="match" href="svg-filter-render-same-origin-frame-in-same-origin-frame-ref.tentative.html">
5+
<style type="text/css">
6+
iframe {
7+
border: none;
8+
}
9+
.svg-filter {
10+
filter: url(#svg-filter);
11+
}
12+
</style>
13+
<script src="/common/reftest-wait.js"></script>
14+
<script src="/svg/styling/support/svg-filter-render-util.js"></script>
15+
<script>
16+
onload = async () => {
17+
await waitForRender(takeScreenshot);
18+
};
19+
</script>
20+
</head>
21+
<body>
22+
<svg width="0" height="0" display="none">
23+
<filter id="svg-filter">
24+
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
25+
</filter>
26+
</svg>
27+
<div>
28+
SVG filter security test: this test passes if there is a filter effect on the same-origin frame in the same-origin frame.
29+
</div>
30+
<br />
31+
<div>
32+
<iframe class="svg-filter" width="100px" height="100px" src="/svg/styling/support/svg-filter-render-same-origin-iframe.sub.html"></iframe>
33+
</div>
34+
</body>
35+
</html>

svg/styling/svg-filter-render-same-origin-frame-ref.tentative.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22
<html>
33
<head>
44
<style type="text/css">
5+
.square {
6+
width: 20px;
7+
height: 20px;
8+
background: black;
9+
}
510
.fake-iframe {
611
width: 100px;
712
height: 100px;
8-
background-color: black;
913
}
1014
.svg-filter {
1115
filter: url(#svg-filter);
@@ -23,7 +27,9 @@
2327
</div>
2428
<br />
2529
<div>
26-
<div class="svg-filter fake-iframe"></div>
30+
<div class="svg-filter fake-iframe">
31+
<div class="square"></div>
32+
</div>
2733
</div>
2834
</body>
2935
</html>

svg/styling/svg-filter-render-srcdoc-frame-ref.tentative.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22
<html>
33
<head>
44
<style type="text/css">
5+
.square {
6+
width: 20px;
7+
height: 20px;
8+
background: black;
9+
}
510
.fake-iframe {
611
width: 100px;
712
height: 100px;
8-
background-color: black;
913
}
1014
.svg-filter {
1115
filter: url(#svg-filter);
@@ -23,7 +27,9 @@
2327
</div>
2428
<br />
2529
<div>
26-
<div class="svg-filter fake-iframe"></div>
30+
<div class="svg-filter fake-iframe">
31+
<div class="square"></div>
32+
</div>
2733
</div>
2834
</body>
2935
</html>

0 commit comments

Comments
 (0)