mirror of
https://github.com/servo/servo.git
synced 2025-07-12 18:03:49 +01:00
Auto merge of #23001 - servo-wpt-sync:wpt_update_07-03-2019, r=jdm
Sync WPT with upstream (07-03-2019) Automated downstream sync of changes from upstream as of 07-03-2019. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23001) <!-- Reviewable:end -->
This commit is contained in:
commit
a0a977cee8
133 changed files with 3076 additions and 304 deletions
|
@ -14,9 +14,6 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
[url-with-fetch.any.html]
|
||||
[Untitled]
|
||||
|
@ -37,6 +34,3 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -6,6 +6,3 @@
|
|||
[Instant scrolling while doing history navigation.]
|
||||
expected: FAIL
|
||||
|
||||
[Smooth scrolling while doing history navigation.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feblend-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feblend-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fecomponenttransfer-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fecomponenttransfer-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fecomposite-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fecomposite-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feconvolvematrix-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feconvolvematrix-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fediffuselighting-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fediffuselighting-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fediffuselighting-003.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fediffuselighting-dynamic.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fedisplacementmap-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fedisplacementmap-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fedropshadow-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fedropshadow-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fedropshadow-003.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feflood-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feflood-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feflood-dynamic.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fegaussianblur-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fegaussianblur-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-femorphology-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-femorphology-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feoffset-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-feoffset-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fespecularlighting-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fespecularlighting-002.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fespecularlighting-003.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fetile-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[tainting-fetile-002.html]
|
||||
expected: FAIL
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
|
||||
[single-byte-decoder.html?XMLHttpRequest]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -84,12 +84,6 @@
|
|||
[windows-1255: cp1255 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1254: iso88599 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1254: iso8859-9 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1255: windows-1255 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
@ -111,21 +105,9 @@
|
|||
[windows-1256: cp1256 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1254: iso-8859-9 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1254: csisolatin5 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1257: x-cp1257 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1254: iso-ir-148 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1256: windows-1256 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
[windows-1254: iso_8859-9 (XMLHttpRequest)]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -312,3 +312,9 @@
|
|||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,3 +11,9 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
[Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[fetch-sw.https.tentative.html]
|
||||
[Second fetch returns same response]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[fetch.tentative.html]
|
||||
[Second fetch returns same response]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
[javascript-url-abort-return-value-undefined.tentative.html]
|
||||
expected: TIMEOUT
|
||||
[Not aborting fetch for javascript:undefined navigation]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_3.html]
|
||||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
[closed-attribute.window.html]
|
||||
[closed and cross-site nested browsing context]
|
||||
expected: FAIL
|
||||
|
||||
[closed/close() and cross-origin auxiliary browsing context]
|
||||
expected: FAIL
|
||||
|
||||
[closed/close() and same-origin auxiliary browsing context]
|
||||
expected: FAIL
|
||||
|
||||
[closed/close() and cross-site auxiliary browsing context]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: CRASH
|
||||
[opener and "removed" embedded documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
[toggleEvent.html]
|
||||
[Calling open twice on 'details' fires only one toggle event]
|
||||
expected: FAIL
|
||||
|
||||
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[script-onerror-insertion-point-2.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,4 @@
|
|||
[iframe_005.html]
|
||||
[document.write external script into iframe write back into parent]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
[test_paint_worklet_timeout.html]
|
||||
type: testharness
|
||||
prefs: [dom.worklet.timeout_ms:10]
|
||||
expected: FAIL
|
||||
|
|
272
tests/wpt/web-platform-tests/acid/acid2/px-reference.html
Normal file
272
tests/wpt/web-platform-tests/acid/acid2/px-reference.html
Normal file
|
@ -0,0 +1,272 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>The Second Acid Test (pixel-for-pixel reference version)</title>
|
||||
<style type="text/css">
|
||||
*
|
||||
{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
html
|
||||
{
|
||||
font: 12px sans-serif;
|
||||
|
||||
overflow: hidden;
|
||||
|
||||
color: red;
|
||||
background: white;
|
||||
}
|
||||
|
||||
#top
|
||||
{
|
||||
font: 2em / 24px sans-serif;
|
||||
|
||||
margin: 2em 3.5em 0;
|
||||
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
|
||||
color: navy;
|
||||
}
|
||||
|
||||
.picture
|
||||
{
|
||||
margin: 3em 1em 1em 6em;
|
||||
}
|
||||
|
||||
.line
|
||||
{
|
||||
height: 1em;
|
||||
|
||||
border: 0 solid black;
|
||||
background: yellow;
|
||||
}
|
||||
|
||||
.one
|
||||
{
|
||||
width: 0;
|
||||
margin-left: 5em;
|
||||
|
||||
border-width: 0 2em;
|
||||
}
|
||||
|
||||
.two
|
||||
{
|
||||
width: 4em;
|
||||
margin-left: 3em;
|
||||
|
||||
border-width: 0 2em;
|
||||
}
|
||||
|
||||
.three
|
||||
{
|
||||
width: 8em;
|
||||
margin-left: 2em;
|
||||
|
||||
border-width: 0 1em;
|
||||
}
|
||||
|
||||
/* the eyes, in all their three-layer glory
|
||||
|
||||
these need to appear with both background layers as on hidpi displays
|
||||
the two background layers don't just create a solid yellow background */
|
||||
.eyes
|
||||
{
|
||||
position: relative;
|
||||
|
||||
width: 12em;
|
||||
height: 2em;
|
||||
margin-left: 1em;
|
||||
|
||||
background: red;
|
||||
}
|
||||
|
||||
.eyes .lower
|
||||
{
|
||||
position: absolute;
|
||||
z-index: 1; /* redundant, but make stacking explicit */
|
||||
|
||||
width: 9em;
|
||||
height: 2em;
|
||||
margin-left: 1em;
|
||||
|
||||
border-left: solid 1em yellow;
|
||||
background: fixed url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAAEUlEQVR42mP4%2F58BCv7%2FZwAAHfAD%2FabwPj4AAAAASUVORK5CYII%3D');
|
||||
}
|
||||
|
||||
.eyes .upper
|
||||
{
|
||||
position: absolute;
|
||||
z-index: 2; /* redundant, but make stacking explicit */
|
||||
|
||||
width: 10em;
|
||||
height: 2em;
|
||||
margin-left: 0;
|
||||
|
||||
border: solid 1em black;
|
||||
border-width: 0 1em;
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAAEUlEQVR42mP4%2F58BCv7%2FZwAAHfAD%2FabwPj4AAAAASUVORK5CYII%3D') fixed 1px 0;
|
||||
}
|
||||
|
||||
.eyes .img
|
||||
{
|
||||
position: absolute;
|
||||
z-index: 3; /* redundant, but make stacking explicit */
|
||||
|
||||
width: 8em;
|
||||
height: 2em;
|
||||
margin-left: 2em;
|
||||
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAYCAYAAAFy7sgCAAAGsUlEQVRo3u2ZbWwcZxHHf3s%2B7LNbO3ZjXBtowprGODRX0qpNQCjmJKuVKhMl1P2AkCwhFOIKkCBSm9IXavGFKAixIAECwkmWo5MrhRI3Ub40IEwQgp6aIDg3Cd6eEqyIHEteah%2B1E69vhw%2BZtTaX8704ZzkKjHS6271nZ56ZZ%2BY%2F%2F%2BdZKF%2FCwYshx3EkkggLsD1v4FQkEZZYLCbAKyG9%2Ba9EIsG6hnUAf8x74K3aUC3j4%2BM54HcsR2oAIomwZOezkv%2FnSHpYNh%2BNCmAE7xv94zvFdd1bHsjMZmQkPSxAJP%2B%2FfuBLwK54PC7JZFKAVJmzXLBt2w%2FMvcDLwIb8QS8CeJ4nkURYIomw7J%2FYJ8BvSiiXptGGxWds2%2Fa9%2Bnaxh%2BYAD%2Bgt04NDgABTpQY2cvvSFLzw86gWeBVwC8SzlOSv2YeBPfmDBoBHgKmR9LBEEmHZfDTqGykqfkUE0nA78BzQGfSgUeP3wNeTXwXg7MwZDhw4UHL6ra2ti79%2FOvljgG8AZ4H64Lhm4MvAocxsRppGG%2FxcXihlwLIs6R%2FfKV2HO%2F26uA94pdDYUKUZUU7W1RQYXA98Gnhaf5%2FXWX0HeAHYoQonqa4sZSOsSWMCWeC9Yko%2BCQwBe4E6oNc0Tc91XTl1%2BaTsn9gnI%2Blhyc5nZWxsrBIkKSbl2tiic3tW53YDEwOKaoFBrcOfqKee53lG9xsPMjV784r%2F4lO%2FpPvyJ9iyZcuvFSaXK5XYeAZ4CDgGvB3MS4B54LQuWYPeuy4iRFsevsXqpuYoqVQKIH2bK1CuDQNo11o4XUzh%2FcDWYIe1LEtyuZx4niee54njOGKapgfsqlL%2Bl2OjEXg8nxrc1dJ0h3hbtL%2BGCtz7KPBF4CuBe9uB15VafE8hr9qylI3HgG8C2%2FK7VyHZoJj7MrBRm30qFotJMpkU27YlHo%2F7Ha5a%2BV%2FKRkSJ4KuKRLVLKapTjB1SzAVIjY2NSXY%2BKyPpYdk%2FsU9OXT4pruv6BdZbBQfKsVGnvWlIe1VB6VQO8JxC1vZYLCbZ%2BaxsPhpdZDyRRFhG0sPiOE6ldKBg2lRg4xF1YCDIIIKN7DGgD3gH%2BBXwejKZfPrs2tPs%2FvPN2bKuYR1nd7xLKBSSJeqoXKnERjPwNWAG%2BLn2rZuM%2B4Tpml6vaWlp4eLcxVusZq5lCgVgOVKJjRqdX86ffL4D5wIoZACnTpw4wRMdT96i%2FImOJxERAs4uVyqxUacF%2FPdiCj%2BjdRBRGFtwXVdG0sPSdbhTmkYbpH98p2RmM2JZlig1vl0GWo4NQ%2Fn%2Bs5pKRXfwjweaxy7TND3HcRZbfC6X8xVPVQlGy7WxVWlO5XRXFXm6EZmrQuSXYyPE3SiVoEhE6Wyr0u2rumO6zv%2B21AFdQAswC1wCMuUCXCmyWQus103Qg8qlDO0lxwOb%2Fl4FiK3AB3VS%2FuKKLtK%2FgbeAnwG%2FvUODuRw%2FFrR0H1UC75fwu8oJ%2FhFsW5VIG%2FBUgEIN6Y65O4AHu4Ap0zQ9y7LEcZyb9lRBUHQcRyzL8unZVBW5bFWAvAp%2BhDQ2g4F47dUYtlU6obXA54DnVdFLekjUGGifh4AFy7LEdV3xj3X9I66m0QZpGm2QrsOd0j%2B%2BU0bSw5KZzYjrun6HWlAd961i4FfCj0aN1Usau%2Bc1lmuXPFwvAEumUut7tQQvAb%2FXb%2FT0bCAej9cODg7yt%2Bm%2F8q2%2F7OUHZ76PnZ1k2p0mJzlykmPancbOTnL0whHs7CQfb%2B5mx2d3sH79%2BtCRI0c6FeaOr9ICrIQfLvA%2B8BGNXxi4R6HrisJVUWrxAVW2oMFf0Aczim8o3kV6enowDIPjF9%2Fk%2BMU3S3rrjzMMg56eHr%2BxP7qKFbASfojG6kpeDGs1tiW53RxwWT%2Bin5q8w4xpQK5evQpAR30H7ZH2khNvj7TTUd8BgD4rqmu1ZKX8qNeY%2BfHz4zlXDgT5E8tpCTUq7XSBC4Euv8227TV9fX1E73%2BYtvo27BmbS9cvFVTY3bSRFza9yOcf6Gfmygy7d%2B%2Fm%2FPnzF4DvrsBLhnJlJfwIKXxv1PheAE4qK6p4H9AGbNKTuhngBPBPXYRe4IemaT5kWZbR19fHNbmGnZ1k4r3U4glDR30Hm5qjbGjsImJEOHbsGHv27JFz5869o0eFq01Jq%2BmHAXwI6FFKagMTgHM7GzFDS%2BoeLSMv7zjzC9x4Y7gxFovVDAwMEI1GaWlpWSzRVCrFwYMH%2FXfxZ4AfAa8B%2F7lDaGg1%2FQgp43lfK0yqtRMuJa3ceKe5DfgYsCYAZ2ngD8CfAkzqTpW7xY%2F%2FSznyX%2FVeUb2kVmX4AAAAAElFTkSuQmCC');
|
||||
}
|
||||
|
||||
/* lines six to nine are the nose
|
||||
|
||||
(note these are scarcely changed from the test as border anti-aliasing
|
||||
quickly differs) */
|
||||
.nose
|
||||
{
|
||||
width: 12em;
|
||||
height: 4em;
|
||||
margin-left: 0;
|
||||
|
||||
border-width: 0 1em;
|
||||
}
|
||||
|
||||
.nose > div
|
||||
{
|
||||
height: 0;
|
||||
padding: 1em 1em 3em;
|
||||
|
||||
background: yellow;
|
||||
}
|
||||
|
||||
.nose div div
|
||||
{
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
margin-left: 4em;
|
||||
|
||||
background: red;
|
||||
}
|
||||
|
||||
.nose div:hover div:before
|
||||
{
|
||||
border-bottom-color: blue;
|
||||
}
|
||||
|
||||
.nose div:hover div:after
|
||||
{
|
||||
border-top-color: blue;
|
||||
}
|
||||
|
||||
.nose div div:before
|
||||
{
|
||||
display: block;
|
||||
|
||||
height: 0;
|
||||
|
||||
content: '';
|
||||
|
||||
border-width: 1em;
|
||||
border-style: none solid solid;
|
||||
border-color: red yellow black yellow;
|
||||
}
|
||||
|
||||
.nose div div:after
|
||||
{
|
||||
display: block;
|
||||
|
||||
height: 0;
|
||||
|
||||
content: '';
|
||||
|
||||
border-width: 1em;
|
||||
border-style: solid solid none;
|
||||
border-color: black yellow red yellow;
|
||||
}
|
||||
|
||||
/* lines ten and eleven are the smile */
|
||||
.ten
|
||||
{
|
||||
width: 10em;
|
||||
margin-left: 1em;
|
||||
|
||||
border-width: 0 1em;
|
||||
}
|
||||
|
||||
.ten div
|
||||
{
|
||||
width: 6em;
|
||||
height: 1em;
|
||||
margin-left: 1em;
|
||||
|
||||
border: solid black;
|
||||
border-width: 0 1em;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.eleven
|
||||
{
|
||||
width: 10em;
|
||||
margin-left: 1em;
|
||||
|
||||
border-width: 0 1em;
|
||||
}
|
||||
|
||||
.eleven div
|
||||
{
|
||||
width: 6em;
|
||||
height: 1em;
|
||||
margin-left: 2em;
|
||||
|
||||
background: black;
|
||||
}
|
||||
|
||||
/* bottom of the face */
|
||||
.twelve
|
||||
{
|
||||
width: 8em;
|
||||
margin-left: 2em;
|
||||
|
||||
border-width: 0 1em;
|
||||
}
|
||||
|
||||
.thirteen
|
||||
{
|
||||
width: 4em;
|
||||
margin-left: 3em;
|
||||
|
||||
border-width: 0 2em;
|
||||
}
|
||||
|
||||
.fourteen
|
||||
{
|
||||
width: 0;
|
||||
margin-left: 5em;
|
||||
|
||||
border-width: 0 2em;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h2 id="top">Hello World!</h2>
|
||||
<div class="picture">
|
||||
<div class="line one"></div>
|
||||
<div class="line two"></div>
|
||||
<div class="line three"></div>
|
||||
|
||||
<div class="eyes"><div class=lower></div><div class=upper></div><div class=img></div></div>
|
||||
|
||||
<div class="line nose"><div><div></div></div></div>
|
||||
|
||||
<div class="line ten"><div></div></div>
|
||||
<div class="line eleven"><div></div></div>
|
||||
<div class="line twelve"></div>
|
||||
<div class="line thirteen"></div>
|
||||
<div class="line fourteen"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,6 +1,8 @@
|
|||
<!doctype html>
|
||||
<html class=reftest-wait>
|
||||
<title>Acid2 reftest</title>
|
||||
<link rel="match" href="reference.html">
|
||||
<link rel="match" href="px-reference.html">
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
|
@ -12,4 +14,12 @@ iframe {
|
|||
height: 300px;
|
||||
}
|
||||
</style>
|
||||
<iframe src="test.html#top"></iframe>
|
||||
<script>
|
||||
function frameLoaded(frame) {
|
||||
let fwin = frame.contentWindow;
|
||||
let fdoc = frame.contentDocument;
|
||||
fdoc.querySelector("#top").scrollIntoView();
|
||||
takeScreenshot();
|
||||
}
|
||||
</script>
|
||||
<iframe src="test.html" onload="frameLoaded(this)"></iframe>
|
||||
|
|
|
@ -679,7 +679,7 @@ test(t => {
|
|||
{ offset: 0, computedOffset: 0, easing: "ease", composite: "auto",
|
||||
transform: "none" },
|
||||
{ offset: 1, computedOffset: 1, easing: "ease", composite: "auto",
|
||||
transform: "translate(100px, 0px)" },
|
||||
transform: "translate(100px)" },
|
||||
];
|
||||
for (let i = 0; i < frames.length; i++) {
|
||||
assert_frames_equal(frames[i], expected[i], "ComputedKeyframe #" + i);
|
||||
|
@ -743,7 +743,7 @@ test(t => {
|
|||
|
||||
const expected = [
|
||||
{ offset: 0, computedOffset: 0, easing: "ease", composite: "auto",
|
||||
transform: "translate(100px, 0px)" },
|
||||
transform: "translate(100px)" },
|
||||
{ offset: 1, computedOffset: 1, easing: "ease", composite: "auto",
|
||||
transform: "none" },
|
||||
];
|
||||
|
|
|
@ -69,10 +69,6 @@ div {
|
|||
<input type="range" class="i" style="max-width:50%">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:4px">
|
||||
<input type="range" class="i" style="width:2px;">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:30px">
|
||||
<input type="range" class="i" style="width:15px">
|
||||
</div>
|
||||
|
@ -89,10 +85,6 @@ div {
|
|||
<input type="range" class="i n" style="width:14px; margin-right:0">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:4px">
|
||||
<input type="range" class="i n" style="width:2px;">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:30px">
|
||||
<input type="range" class="i n" style="width:15px">
|
||||
</div>
|
||||
|
|
|
@ -77,10 +77,6 @@ div {
|
|||
<input type="range" class="i">
|
||||
</div></div>
|
||||
|
||||
<div class="grid">
|
||||
<input type="range" class="i">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(min-content,30px)">
|
||||
<input type="range" class="i">
|
||||
</div>
|
||||
|
@ -97,10 +93,6 @@ div {
|
|||
<input type="range" class="i n">
|
||||
</div></div>
|
||||
|
||||
<div class="grid">
|
||||
<input type="range" class="i n">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid-template-columns:minmax(min-content,30px)">
|
||||
<input type="range" class="i n">
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,86 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference: INPUT type=range percent intrinsic block-size</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1513959">
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace;
|
||||
}
|
||||
|
||||
input { margin: 2px; }
|
||||
|
||||
input.b {
|
||||
min-height: 0;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.mb {
|
||||
min-height: 0;
|
||||
max-height: 100%;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
border:1px solid;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: inline-grid;
|
||||
grid: auto / min-content;
|
||||
place-items: start;
|
||||
}
|
||||
input[orient="vertical"] {
|
||||
-webkit-appearance: slider-vertical;
|
||||
-webkit-appearance: range;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:50%; grid-area:1/1">
|
||||
<input type="range" class="b" orient="vertical" style="visibility:hidden; grid-area:1/1">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:50%; grid-area:1/1">
|
||||
<input type="range" class="b" orient="vertical" style="visibility:hidden; grid-area:1/1">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: 30px / auto">
|
||||
<input type="range" class="b" orient="vertical" style="height:15px">
|
||||
</div>
|
||||
|
||||
</body></html>
|
|
@ -0,0 +1,94 @@
|
|||
<!DOCTYPE HTML>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test: INPUT type=range percent intrinsic block-size</title>
|
||||
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1513959">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#percentage-sizing">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-3/#min-content-zero">
|
||||
<link rel="match" href="range-percent-intrinsic-size-2a-ref.html">
|
||||
<style>
|
||||
html,body {
|
||||
color:black; background-color:white; font:16px/1 monospace;
|
||||
}
|
||||
|
||||
input { margin: 2px; }
|
||||
|
||||
input.b {
|
||||
height: 50%;
|
||||
min-height: -moz-min-content;
|
||||
min-height: min-content;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.mb {
|
||||
max-height: 50%;
|
||||
min-height: -moz-min-content;
|
||||
min-height: min-content;
|
||||
background: lime;
|
||||
}
|
||||
|
||||
input.b.min-auto, input.mb.min-auto, {
|
||||
min-height: auto;
|
||||
}
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
border:1px solid;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: inline-grid;
|
||||
grid: auto / min-content;
|
||||
place-items: start;
|
||||
}
|
||||
input[orient="vertical"] {
|
||||
-webkit-appearance: slider-vertical;
|
||||
-webkit-appearance: range;
|
||||
}
|
||||
|
||||
</style></head><body>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: min-content / auto">
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(min-content,30px) / auto">
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="b" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="b min-auto" orient="vertical">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div style="height:30px"><div>
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div></div>
|
||||
|
||||
<div class="grid" style="grid: minmax(min-content,30px) / auto">
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="mb" orient="vertical">
|
||||
</div>
|
||||
|
||||
<div class="grid" style="grid: minmax(auto,30px) / auto">
|
||||
<input type="range" class="mb min-auto" orient="vertical">
|
||||
</div>
|
||||
|
||||
</body></html>
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<p style="text-decoration:underline">This text should be underlined.</p>
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Test: text-decoration propagation into shadow DOM boxes</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor/#line-decoration">
|
||||
<link rel="match" href="reference/text-decoration-underline-ref.html">
|
||||
<style>
|
||||
#host { text-decoration: underline }
|
||||
</style>
|
||||
<p>
|
||||
<div id="host">
|
||||
<span>This text should be underlined.</span>
|
||||
</div>
|
||||
</p>
|
||||
<script>
|
||||
const root = host.attachShadow({mode:"open"});
|
||||
root.appendChild(document.createElement("slot"));
|
||||
</script>
|
|
@ -39,7 +39,7 @@ test_valid_value("transform", "rotate(90deg)");
|
|||
test_valid_value("transform", "skew(0)", "skew(0deg)");
|
||||
test_valid_value("transform", "skew(90deg)");
|
||||
test_valid_value("transform", "skew(0, -90deg)", "skew(0deg, -90deg)");
|
||||
test_valid_value("transform", "skew(90deg, 0)", "skew(90deg, 0deg)");
|
||||
test_valid_value("transform", "skew(90deg, 0)", ["skew(90deg)", "skew(90deg, 0deg)"]);
|
||||
|
||||
test_valid_value("transform", "skewX(0)", "skewX(0deg)");
|
||||
test_valid_value("transform", "skewX(90deg)");
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<div style="width: 50px; height: 100px; background-color: blue; border-left: 50px solid green"></div>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feBlend: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="blend_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feBlend/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#blend_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feBlend: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="blend_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feBlend/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#blend_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feComponentTransfer: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="compxfer_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feComponentTransfer/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#compxfer_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feComponentTransfer: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="compxfer_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feComponentTransfer/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#compxfer_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feComposite: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="composite_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feComposite/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#composite_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feComposite: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="composite_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feComposite/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#composite_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feConvolveMatrix: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="convolve_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feConvolveMatrix order="1" kernelMatrix="1"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#convolve_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feConvolveMatrix: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="convolve_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feConvolveMatrix order="1" kernelMatrix="1"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#convolve_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feDiffuseLighting: no tainting with regular <color> lighting-color</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="diffuse_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood/>
|
||||
<feDiffuseLighting lighting-color="rgb(0%, 100%, 50%)">
|
||||
<feDistantLight elevation="90"/>
|
||||
</feDiffuseLighting>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100" x="0" y="0" width="100" height="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)" filter="url(#diffuse_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feDiffuseLighting: 'currentcolor' lighting-color taints the primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="diffuse_currentcolor" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood/>
|
||||
<feDiffuseLighting lighting-color="currentcolor"
|
||||
style="color: rgb(0%, 100%, 50%)">
|
||||
<feDistantLight elevation="90"/>
|
||||
</feDiffuseLighting>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#diffuse_currentcolor)"/>
|
||||
</svg>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feDiffuseLighting: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="diffuse_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: black"/>
|
||||
<feDiffuseLighting lighting-color="rgb(0%, 100%, 50%)">
|
||||
<feDistantLight elevation="90"/>
|
||||
</feDiffuseLighting>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#diffuse_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<title>feDiffuseLighting: tainting state changes dynamically</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<svg>
|
||||
<filter id="diffuse" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood/>
|
||||
<feDiffuseLighting lighting-color="rgb(0%, 100%, 50%)"
|
||||
style="color: rgb(0%, 100%, 50%)">
|
||||
<feDistantLight elevation="90"/>
|
||||
</feDiffuseLighting>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100" x="0" y="0" width="100" height="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green" filter="url(#diffuse)"/>
|
||||
</svg>
|
||||
<script>
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
document.querySelector('feDiffuseLighting').style.lightingColor = 'currentcolor';
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feDisplacementMap: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="dispmap_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feDisplacementMap xChannelSelector="G" yChannelSelector="B"
|
||||
scale="0"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#dispmap_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feDisplacementMap: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="dispmap_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feDisplacementMap xChannelSelector="G" yChannelSelector="B"
|
||||
scale="0"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#dispmap_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feDropShadow: no tainting with regular <color> flood-color</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="dropshdw_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood x="0" y="0" width="100" height="100"/>
|
||||
<feDropShadow width="100%" flood-color="rgb(0%, 100%, 50%)" stdDeviation="0"
|
||||
dx="100" dy="0"/>
|
||||
<feOffset dx="-100"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100" x="0" y="0" width="100" height="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)" filter="url(#dropshdw_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feDropShadow: 'currentcolor' flood-color taints the primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="dropshdw_currentcolor" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood x="0" y="0" width="100" height="100"/>
|
||||
<feDropShadow width="100%" flood-color="currentcolor" stdDeviation="0"
|
||||
dx="100" dy="0" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feOffset dx="-100"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100" x="0" y="0" width="100" height="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#dropshdw_currentcolor)"/>
|
||||
</svg>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feDropShadow: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="dropshdw_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood x="0" y="0" width="100" height="100" flood-color="currentcolor"
|
||||
style="color: black"/>
|
||||
<feDropShadow width="100%" flood-color="rgb(0%, 100%, 50%)" stdDeviation="0"
|
||||
dx="100" dy="0"/>
|
||||
<feOffset dx="-100"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100" x="0" y="0" width="100" height="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#dropshdw_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feFlood: no tainting with regular <color> flood-color</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="flood_notaint" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)" filter="url(#flood_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feFlood: 'currentcolor' flood-color taints the primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="flood_currentcolor" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#flood_currentcolor)"/>
|
||||
</svg>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<title>feFlood: tainting state changes dynamically</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<svg>
|
||||
<filter id="flood" color-interpolation-filters="sRGB">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green" filter="url(#flood)"/>
|
||||
</svg>
|
||||
<script>
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
document.querySelector('feFlood').style.floodColor = 'currentcolor';
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feGaussianBlur: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="gaussian_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feGaussianBlur stdDeviation="0"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#gaussian_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feGaussianBlur: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="gaussian_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feGaussianBlur stdDeviation="0"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#gaussian_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feMorphology: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="morphology_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feMorphology radius="0.5"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#morphology_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feMorphology: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="morphology_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feMorphology radius="0.5"/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#morphology_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feOffset: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="offset_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feOffset/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#offset_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feOffset: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="offset_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feOffset/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#offset_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feSpecularLighting: no tainting with regular <color> lighting-color</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="specular_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood/>
|
||||
<feSpecularLighting lighting-color="rgb(0%, 100%, 50%)">
|
||||
<feDistantLight elevation="90"/>
|
||||
</feSpecularLighting>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#specular_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feSpecularLighting: 'currentcolor' lighting-color taints the primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="specular_currentcolor" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood/>
|
||||
<feSpecularLighting lighting-color="currentcolor"
|
||||
style="color: rgb(0%, 100%, 50%)">
|
||||
<feDistantLight elevation="90"/>
|
||||
</feSpecularLighting>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#specular_currentcolor)"/>
|
||||
</svg>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feSpecularLighting: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="specular_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: black"/>
|
||||
<feSpecularLighting lighting-color="rgb(0%, 100%, 50%)">
|
||||
<feDistantLight elevation="90"/>
|
||||
</feSpecularLighting>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#specular_taintedinput)"/>
|
||||
</svg>
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feTile: does not taint the filter chain</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-blue-stripe-100x100.html">
|
||||
<svg>
|
||||
<linearGradient id="g">
|
||||
<stop stop-color="red"/>
|
||||
<stop stop-color="red" offset=".5"/>
|
||||
<stop stop-color="green" offset=".5"/>
|
||||
<stop stop-color="green" offset="1"/>
|
||||
</linearGradient>
|
||||
<filter id="tile_notaint" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="rgb(0%, 100%, 50%)"/>
|
||||
<feTile/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="blue"/>
|
||||
<rect width="100" height="100" fill="url(#g)"
|
||||
filter="url(#tile_notaint)"/>
|
||||
</svg>
|
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<title>feTile: propagates tainting from tainted input primitive</title>
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#tainted-filter-primitives">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#fedisplacemnentmap-restrictions">
|
||||
<link rel="match" href="reference/green-100x100.html">
|
||||
<svg>
|
||||
<filter id="tile_taintedinput" color-interpolation-filters="sRGB"
|
||||
filterUnits="userSpaceOnUse">
|
||||
<feFlood flood-color="currentcolor" style="color: rgb(0%, 100%, 50%)"/>
|
||||
<feTile/>
|
||||
<feDisplacementMap in="SourceGraphic"
|
||||
xChannelSelector="G" yChannelSelector="B"
|
||||
scale="100"/>
|
||||
</filter>
|
||||
<rect width="100" height="100" fill="red"/>
|
||||
<rect width="100" height="100" fill="green"
|
||||
filter="url(#tile_taintedinput)"/>
|
||||
</svg>
|
|
@ -112,10 +112,67 @@ only guaranteed to be after those events.
|
|||
## Fuzzy Matching
|
||||
|
||||
In some situations a test may have subtle differences in rendering
|
||||
compared to the reference due to, e.g., anti-aliasing. This may cause
|
||||
the test to pass on some platforms but fail on others. In this case
|
||||
some affordance for subtle discrepancies is desirable. However no
|
||||
mechanism to allow this has yet been standardized.
|
||||
compared to the reference due to, e.g., anti-aliasing. To allow for
|
||||
these small differences, we allow tests to specify a fuzziness
|
||||
characterised by two parameters, both of which must be specified:
|
||||
|
||||
* A maximum difference in the per-channel color value for any pixel.
|
||||
* A number of total pixels that may be different.
|
||||
|
||||
The maximum difference in the per pixel color value is formally
|
||||
defined as follows: let <code>T<sub>x,y,c</sub></code> be the value of
|
||||
colour channel `c` at pixel coordinates `x`, `y` in the test image and
|
||||
<code>R<sub>x,y,c</sub></code> be the corresponding value in the
|
||||
reference image, and let <code>width</code> and <code>height</code> be
|
||||
the dimensions of the image in pixels. Then <code>maxDifference =
|
||||
max<sub>x=[0,width) y=[0,height), c={r,g,b}</sub>(|T<sub>x,y,c</sub> -
|
||||
R<sub>x,y,c</sub>|)</code>.
|
||||
|
||||
To specify the fuzziness in the test file one may add a `<meta
|
||||
name=fuzzy>` element (or, in the case of more complex tests, to any
|
||||
page containing the `<link rel=[mis]match>` elements). In the simplest
|
||||
case this has a `content` attribute containing the parameters above,
|
||||
separated by a colon e.g.
|
||||
|
||||
```
|
||||
<meta name=fuzzy content="maxDifference=15;totalPixels=300">
|
||||
```
|
||||
|
||||
would allow for a difference of exactly 15 / 255 on any color channel
|
||||
and 300 exactly pixels total difference. The argument names are optional
|
||||
and may be elided; the above is the same as:
|
||||
|
||||
```
|
||||
<meta name=fuzzy content="15;300">
|
||||
```
|
||||
|
||||
The values may also be given as ranges e.g.
|
||||
|
||||
```
|
||||
<meta name=fuzzy content="maxDifference=10-15;totalPixels=200-300">
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```
|
||||
<meta name=fuzzy content="10-15;200-300">
|
||||
```
|
||||
|
||||
In this case the maximum pixel difference must be in the range
|
||||
`10-15` and the total number of different pixels must be in the range
|
||||
`200-300`.
|
||||
|
||||
In cases where a single test has multiple possible refs and the
|
||||
fuzziness is not the same for all refs, a ref may be specified by
|
||||
prefixing the `content` value with the relative url for the ref e.g.
|
||||
|
||||
```
|
||||
<meta name=fuzzy content="option1-ref.html:10-15;200-300">
|
||||
```
|
||||
|
||||
One meta element is required per reference requiring a unique
|
||||
fuzziness value, but any unprefixed value will automatically be
|
||||
applied to any ref that doesn't have a more specific value.
|
||||
|
||||
## Limitations
|
||||
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
<!DOCTYPE html>
|
||||
<!---
|
||||
Tentative test against:
|
||||
https://github.com/whatwg/fetch/pull/853
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Stale Revalidation Requests don't get sent to service worker</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="../../service-workers/service-worker/resources/test-helpers.sub.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
// Duplicating this resource to make service worker scoping simpler.
|
||||
async function setupRegistration(t, scope) {
|
||||
const reg = await navigator.serviceWorker.register('sw-intercept.js');
|
||||
await wait_for_state(t, reg.installing, 'activated');
|
||||
add_completion_callback(_ => reg.unregister());
|
||||
return reg;
|
||||
}
|
||||
|
||||
function wait25ms(test) {
|
||||
return new Promise(resolve => {
|
||||
test.step_timeout(() => {
|
||||
resolve();
|
||||
}, 25);
|
||||
});
|
||||
}
|
||||
|
||||
promise_test(async (test) => {
|
||||
var request_token = token();
|
||||
const uri = 'stale-script.py?token=' + request_token;
|
||||
|
||||
await setupRegistration(test, 'stale-script.py');
|
||||
|
||||
var service_worker_count = 0;
|
||||
navigator.serviceWorker.addEventListener('message', function once(event) {
|
||||
if (event.data.endsWith(uri)) {
|
||||
service_worker_count++;
|
||||
}
|
||||
});
|
||||
|
||||
const response = await fetch(uri);
|
||||
const response2 = await fetch(uri);
|
||||
assert_equals(response.headers.get('Unique-Id'), response2.headers.get('Unique-Id'));
|
||||
while(true) {
|
||||
const revalidation_check = await fetch(`stale-script.py?query&token=` + request_token);
|
||||
if (revalidation_check.headers.get('Count') == '2') {
|
||||
// The service worker should not see the revalidation request.
|
||||
assert_equals(service_worker_count, 2);
|
||||
break;
|
||||
}
|
||||
await wait25ms(test);
|
||||
}
|
||||
}, 'Second fetch returns same response');
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -9,12 +9,28 @@ https://github.com/whatwg/fetch/pull/853
|
|||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script>
|
||||
function wait25ms(test) {
|
||||
return new Promise(resolve => {
|
||||
test.step_timeout(() => {
|
||||
resolve();
|
||||
}, 25);
|
||||
});
|
||||
}
|
||||
|
||||
promise_test(async (test) => {
|
||||
var request_token = token();
|
||||
|
||||
const response = await fetch(`stale-script.py?token=` + request_token);
|
||||
const response2 = await fetch(`stale-script.py?token=` + request_token);
|
||||
|
||||
assert_not_equals(response.headers.get('Unique-Id'), response2.headers.get('Unique-Id'));
|
||||
}, 'Second fetch does not return same response');
|
||||
assert_equals(response.headers.get('Unique-Id'), response2.headers.get('Unique-Id'));
|
||||
|
||||
while(true) {
|
||||
const revalidation_check = await fetch(`stale-script.py?query&token=` + request_token);
|
||||
if (revalidation_check.headers.get('Count') == '2') {
|
||||
break;
|
||||
}
|
||||
await wait25ms(test);
|
||||
}
|
||||
}, 'Second fetch returns same response');
|
||||
</script>
|
||||
|
|
|
@ -8,6 +8,8 @@ def main(request, response):
|
|||
if request.GET.first("query", None) != None:
|
||||
headers = [("Count", count)]
|
||||
content = ""
|
||||
if count < 2:
|
||||
request.server.stash.put(token, count)
|
||||
return 200, headers, content
|
||||
else:
|
||||
count = count + 1
|
||||
|
|
|
@ -10,6 +10,8 @@ def main(request, response):
|
|||
if request.GET.first("query", None) != None:
|
||||
headers = [("Count", count)]
|
||||
content = ""
|
||||
if count < 2:
|
||||
request.server.stash.put(token, count)
|
||||
return 200, headers, content
|
||||
else:
|
||||
count = count + 1
|
||||
|
|
|
@ -13,6 +13,8 @@ def main(request, response):
|
|||
if request.GET.first("query", None) != None:
|
||||
headers = [("Count", count)]
|
||||
content = ""
|
||||
if count < 2:
|
||||
request.server.stash.put(token, count)
|
||||
return 200, headers, content
|
||||
else:
|
||||
count = count + 1
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
async function broadcast(msg) {
|
||||
for (const client of await clients.matchAll()) {
|
||||
client.postMessage(msg);
|
||||
}
|
||||
}
|
||||
|
||||
self.addEventListener('fetch', event => {
|
||||
event.waitUntil(broadcast(event.request.url));
|
||||
event.respondWith(fetch(event.request));
|
||||
});
|
||||
|
||||
self.addEventListener('activate', event => {
|
||||
self.clients.claim();
|
||||
});
|
|
@ -0,0 +1,69 @@
|
|||
// META: script=/common/get-host-info.sub.js
|
||||
|
||||
function closedTest(newWindow, closeNewWindowsBrowsingContext) {
|
||||
assert_equals(newWindow.closed, false);
|
||||
closeNewWindowsBrowsingContext();
|
||||
assert_equals(newWindow.closed, true);
|
||||
}
|
||||
|
||||
test(() => {
|
||||
const frame = document.body.appendChild(document.createElement("iframe"));
|
||||
closedTest(frame.contentWindow, () => frame.remove());
|
||||
}, "closed and same-origin nested browsing context");
|
||||
|
||||
test(() => {
|
||||
const openee = window.open();
|
||||
closedTest(openee, () => openee.close());
|
||||
|
||||
// close() is a no-op once "is closing" is set
|
||||
openee.close();
|
||||
assert_equals(openee.closed, true);
|
||||
}, "closed/close() and same-origin auxiliary browsing context");
|
||||
|
||||
const support = new URL("support/closed.html", location.href).pathname;
|
||||
[
|
||||
{
|
||||
type: "cross-origin",
|
||||
url: `${get_host_info().HTTP_REMOTE_ORIGIN}${support}`
|
||||
},
|
||||
{
|
||||
type: "cross-site",
|
||||
url: `${get_host_info().HTTP_NOTSAMESITE_ORIGIN}${support}`
|
||||
}
|
||||
].forEach(val => {
|
||||
async_test(t => {
|
||||
const frame = document.createElement("iframe"),
|
||||
ident = `${val.type}-nested-bc`;
|
||||
frame.src = `${val.url}?window=parent&ident=${ident}`;
|
||||
const listener = t.step_func(e => {
|
||||
if (e.data === ident) {
|
||||
closedTest(frame.contentWindow, () => frame.remove());
|
||||
self.removeEventListener("message", listener);
|
||||
t.done();
|
||||
}
|
||||
});
|
||||
// Use a message event rather than onload for consistency with auxiliary browsing contexts.
|
||||
self.addEventListener("message", listener);
|
||||
document.body.append(frame);
|
||||
}, `closed and ${val.type} nested browsing context`);
|
||||
|
||||
async_test(t => {
|
||||
const ident = `${val.type}-auxiliary-bc`,
|
||||
support = new URL("support/closed.html", location.href).pathname,
|
||||
openee = window.open(`${val.url}?window=opener&ident=${ident}`),
|
||||
listener = t.step_func(e => {
|
||||
if (e.data === ident) {
|
||||
closedTest(openee, () => openee.close());
|
||||
|
||||
// close() is a no-op once "is closing" is set
|
||||
openee.close();
|
||||
assert_equals(openee.closed, true);
|
||||
|
||||
self.removeEventListener("message", listener);
|
||||
t.done();
|
||||
}
|
||||
});
|
||||
// As there's no cross-origin onload, use a message event.
|
||||
self.addEventListener("message", listener);
|
||||
}, `closed/close() and ${val.type} auxiliary browsing context`);
|
||||
});
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
There's two URL parameters supported here:
|
||||
|
||||
window: The property name of a getter on the global object that returns the relevant WindowProxy
|
||||
object to message.
|
||||
ident: A reasonably unique identifier that will be echoed as the message.
|
||||
-->
|
||||
<script>
|
||||
const params = new URLSearchParams(location.search);
|
||||
self[params.get("window")].postMessage(params.get("ident"), "*");
|
||||
</script>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue