Update web-platform-tests to revision b048002b012a8290b7dbdb0f0d685454e8837b6f

This commit is contained in:
WPT Sync Bot 2019-12-22 08:24:00 +00:00
parent 3e77a0ae09
commit 5bdea9564b
37 changed files with 901 additions and 43 deletions

View file

@ -7,7 +7,7 @@
expected: FAIL expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.] [Opening a blob URL in a new window immediately before revoking it works.]
expected: TIMEOUT expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.] [Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL expected: FAIL

View file

@ -8331,6 +8331,18 @@
{} {}
] ]
], ],
"css/css-pseudo/spelling-error-002-manual.html": [
[
"css/css-pseudo/spelling-error-002-manual.html",
{}
]
],
"css/css-pseudo/spelling-error-003-manual.html": [
[
"css/css-pseudo/spelling-error-003-manual.html",
{}
]
],
"css/css-regions/animations/animations-001.html": [ "css/css-regions/animations/animations-001.html": [
[ [
"css/css-regions/animations/animations-001.html", "css/css-regions/animations/animations-001.html",
@ -139509,6 +139521,30 @@
{} {}
] ]
], ],
"css/css-position/position-sticky-large-top-2.tentative.html": [
[
"css/css-position/position-sticky-large-top-2.tentative.html",
[
[
"/css/css-position/position-sticky-large-top-2-ref.html",
"=="
]
],
{}
]
],
"css/css-position/position-sticky-large-top.tentative.html": [
[
"css/css-position/position-sticky-large-top.tentative.html",
[
[
"/css/css-position/position-sticky-large-top-ref.html",
"=="
]
],
{}
]
],
"css/css-position/position-sticky-nested-inline.html": [ "css/css-position/position-sticky-nested-inline.html": [
[ [
"css/css-position/position-sticky-nested-inline.html", "css/css-position/position-sticky-nested-inline.html",
@ -256124,6 +256160,12 @@
"css/css-position/position-sticky-inline-ref.html": [ "css/css-position/position-sticky-inline-ref.html": [
[] []
], ],
"css/css-position/position-sticky-large-top-2-ref.html": [
[]
],
"css/css-position/position-sticky-large-top-ref.html": [
[]
],
"css/css-position/position-sticky-nested-inline-ref.html": [ "css/css-position/position-sticky-nested-inline-ref.html": [
[] []
], ],
@ -256349,6 +256391,9 @@
"css/css-pseudo/spelling-error-001-ref.html": [ "css/css-pseudo/spelling-error-001-ref.html": [
[] []
], ],
"css/css-pseudo/textpath-selection-011-ref.html": [
[]
],
"css/css-regions/META.yml": [ "css/css-regions/META.yml": [
[] []
], ],
@ -268382,6 +268427,9 @@
"domxpath/README.md": [ "domxpath/README.md": [
[] []
], ],
"domxpath/helpers.js": [
[]
],
"domxpath/xml_xpath_tests.xml": [ "domxpath/xml_xpath_tests.xml": [
[] []
], ],
@ -341879,6 +341927,12 @@
{} {}
] ]
], ],
"domxpath/booleans.html": [
[
"domxpath/booleans.html",
{}
]
],
"domxpath/document.tentative.html": [ "domxpath/document.tentative.html": [
[ [
"domxpath/document.tentative.html", "domxpath/document.tentative.html",
@ -341891,6 +341945,18 @@
{} {}
] ]
], ],
"domxpath/fn-concat.html": [
[
"domxpath/fn-concat.html",
{}
]
],
"domxpath/fn-contains.html": [
[
"domxpath/fn-contains.html",
{}
]
],
"domxpath/fn-lang.html": [ "domxpath/fn-lang.html": [
[ [
"domxpath/fn-lang.html", "domxpath/fn-lang.html",
@ -341903,12 +341969,48 @@
{} {}
] ]
], ],
"domxpath/fn-starts-with.html": [
[
"domxpath/fn-starts-with.html",
{}
]
],
"domxpath/fn-substring-after.html": [
[
"domxpath/fn-substring-after.html",
{}
]
],
"domxpath/fn-substring-before.html": [
[
"domxpath/fn-substring-before.html",
{}
]
],
"domxpath/fn-substring.html": [
[
"domxpath/fn-substring.html",
{}
]
],
"domxpath/fn-translate.html": [
[
"domxpath/fn-translate.html",
{}
]
],
"domxpath/node-sets.html": [ "domxpath/node-sets.html": [
[ [
"domxpath/node-sets.html", "domxpath/node-sets.html",
{} {}
] ]
], ],
"domxpath/numbers.html": [
[
"domxpath/numbers.html",
{}
]
],
"domxpath/predicates.html": [ "domxpath/predicates.html": [
[ [
"domxpath/predicates.html", "domxpath/predicates.html",
@ -460110,6 +460212,12 @@
{} {}
] ]
], ],
"css/css-pseudo/textpath-selection-011.html": [
[
"css/css-pseudo/textpath-selection-011.html",
{}
]
],
"css/css-regions/elements/video-001.html": [ "css/css-regions/elements/video-001.html": [
[ [
"css/css-regions/elements/video-001.html", "css/css-regions/elements/video-001.html",
@ -589997,6 +590105,22 @@
"5b2d705e2d0721c072bedf1dcc489fae25b2014f", "5b2d705e2d0721c072bedf1dcc489fae25b2014f",
"testharness" "testharness"
], ],
"css/css-position/position-sticky-large-top-2-ref.html": [
"941047901df08a616888746d6c0332d69c9382f9",
"support"
],
"css/css-position/position-sticky-large-top-2.tentative.html": [
"1cf9c0dfb43b6bfd71c1496a5d7b3b9428d0c086",
"reftest"
],
"css/css-position/position-sticky-large-top-ref.html": [
"075551a6e856112bb12909684f718b0875fec690",
"support"
],
"css/css-position/position-sticky-large-top.tentative.html": [
"b00a0d139683717b57633e38bb9ce7f033833b65",
"reftest"
],
"css/css-position/position-sticky-left.html": [ "css/css-position/position-sticky-left.html": [
"054cf10eabc256cde34fc738d9fcd7429946849c", "054cf10eabc256cde34fc738d9fcd7429946849c",
"testharness" "testharness"
@ -590889,6 +591013,22 @@
"a71d6f0155e42ad0ebe33f6ea11aa5755201beaa", "a71d6f0155e42ad0ebe33f6ea11aa5755201beaa",
"reftest" "reftest"
], ],
"css/css-pseudo/spelling-error-002-manual.html": [
"88fa97038ce0a5791c733cbc50926e4447440259",
"manual"
],
"css/css-pseudo/spelling-error-003-manual.html": [
"559a4fe092ebaa72e31e5a07c38abcc0e6ca6122",
"manual"
],
"css/css-pseudo/textpath-selection-011-ref.html": [
"d9ba940518e121eeb0e9701ccd4e36772fdfa786",
"support"
],
"css/css-pseudo/textpath-selection-011.html": [
"2e42c6be8fbcfc756c578986517efc0b1739d1f3",
"visual"
],
"css/css-regions/META.yml": [ "css/css-regions/META.yml": [
"37bdc98c84c0f4c9a32d3cc5b2f4e3494eb63999", "37bdc98c84c0f4c9a32d3cc5b2f4e3494eb63999",
"support" "support"
@ -620238,7 +620378,7 @@
"reftest" "reftest"
], ],
"css/css-writing-modes/sizing-orthog-htb-in-vrl-013-ref.xht": [ "css/css-writing-modes/sizing-orthog-htb-in-vrl-013-ref.xht": [
"3b1fef0f84e53ad72e61fc1b849ec6521b162968", "dea13d4238dab838610355056ddaf105e947f3bf",
"support" "support"
], ],
"css/css-writing-modes/sizing-orthog-htb-in-vrl-013.xht": [ "css/css-writing-modes/sizing-orthog-htb-in-vrl-013.xht": [
@ -640297,6 +640437,10 @@
"918997b1646d73d71a79c302953ab9f0f8ed69cc", "918997b1646d73d71a79c302953ab9f0f8ed69cc",
"support" "support"
], ],
"domxpath/booleans.html": [
"41522edf05f8bc752408eb2cdde10a05bd211a7a",
"testharness"
],
"domxpath/document.tentative.html": [ "domxpath/document.tentative.html": [
"b75c0f0d66dacb47a825ae2aa00bb63a19616433", "b75c0f0d66dacb47a825ae2aa00bb63a19616433",
"testharness" "testharness"
@ -640305,6 +640449,14 @@
"8239d9c395e3c965c5ae2f23ed79156b7b85c01f", "8239d9c395e3c965c5ae2f23ed79156b7b85c01f",
"testharness" "testharness"
], ],
"domxpath/fn-concat.html": [
"fe160966aa7983191e81ffa65f5955c86afe7bb9",
"testharness"
],
"domxpath/fn-contains.html": [
"a4d8bbfa7b3ce35b574bdcb902c4a0caa9ad39c3",
"testharness"
],
"domxpath/fn-lang.html": [ "domxpath/fn-lang.html": [
"c7c102945d070a4ea65cae0e30ea6ec64bb82c95", "c7c102945d070a4ea65cae0e30ea6ec64bb82c95",
"testharness" "testharness"
@ -640313,10 +640465,38 @@
"a9f33a0ee3d153abd6fe05415c6ce6699ce8525c", "a9f33a0ee3d153abd6fe05415c6ce6699ce8525c",
"testharness" "testharness"
], ],
"domxpath/fn-starts-with.html": [
"99d2df7db6b67c9e186ade1160da6932f8dc90bd",
"testharness"
],
"domxpath/fn-substring-after.html": [
"c290914d24b0463d42959ff675f1498a7898806d",
"testharness"
],
"domxpath/fn-substring-before.html": [
"69b3f1ef6e45e948a55d49b409c5a58a9cf83381",
"testharness"
],
"domxpath/fn-substring.html": [
"3311a15061de49c5337b938d732946358f2245f3",
"testharness"
],
"domxpath/fn-translate.html": [
"ee1700d1b427ea80fc5076a22a00f2dd62f4937b",
"testharness"
],
"domxpath/helpers.js": [
"0805bd682b48461588250a22018a6bd90990d002",
"support"
],
"domxpath/node-sets.html": [ "domxpath/node-sets.html": [
"a47314fb0869885db01fd13bd8aa35687e283d0d", "a47314fb0869885db01fd13bd8aa35687e283d0d",
"testharness" "testharness"
], ],
"domxpath/numbers.html": [
"e847d6cd2e53839914a649ca1cb61953c659e2ed",
"testharness"
],
"domxpath/predicates.html": [ "domxpath/predicates.html": [
"1786740dbd2522c15325a6e8677b07402a7cd767", "1786740dbd2522c15325a6e8677b07402a7cd767",
"testharness" "testharness"
@ -715378,11 +715558,11 @@
"support" "support"
], ],
"tools/wptrunner/wptrunner/manifestupdate.py": [ "tools/wptrunner/wptrunner/manifestupdate.py": [
"af9af18d90715d43bbcd2ae47ce76275bb0e1577", "2f2a8d543352d4c2128afd0314e8261668964d01",
"support" "support"
], ],
"tools/wptrunner/wptrunner/metadata.py": [ "tools/wptrunner/wptrunner/metadata.py": [
"c328dcefa7253ddea952549c702723e98b4cadc4", "bf4d7a558abb7da117c95f896c1c8c3babd77219",
"support" "support"
], ],
"tools/wptrunner/wptrunner/products.py": [ "tools/wptrunner/wptrunner/products.py": [
@ -715470,7 +715650,7 @@
"support" "support"
], ],
"tools/wptrunner/wptrunner/tests/test_update.py": [ "tools/wptrunner/wptrunner/tests/test_update.py": [
"5f199390b64f9d0843df7900cf624a9e674f3dd7", "5ed366788067c94245a8f7e1dadccb93da0493ab",
"support" "support"
], ],
"tools/wptrunner/wptrunner/tests/test_wpttest.py": [ "tools/wptrunner/wptrunner/tests/test_wpttest.py": [
@ -715534,7 +715714,7 @@
"support" "support"
], ],
"tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py": [ "tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py": [
"a81ad9d06a144bff7f3cc9ed91a4260cd061b7fb", "3b11e83012ab50fe0ea240ae056d02c8968b6a60",
"support" "support"
], ],
"tools/wptrunner/wptrunner/wptmanifest/backends/static.py": [ "tools/wptrunner/wptrunner/wptmanifest/backends/static.py": [
@ -725514,7 +725694,7 @@
"testharness" "testharness"
], ],
"webrtc/RTCRtpTransceiver.https.html": [ "webrtc/RTCRtpTransceiver.https.html": [
"67571895175f19c008743523f035aa31fced9681", "af84fe2498c9242f49639fa1bd55a4e848affbbf",
"testharness" "testharness"
], ],
"webrtc/RTCSctpTransport-constructor.html": [ "webrtc/RTCSctpTransport-constructor.html": [

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -0,0 +1,4 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -312,12 +312,6 @@
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain] [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL expected: FAIL
@ -330,9 +324,12 @@
[<iframe>: separate response Content-Type: text/plain */*] [<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/html] [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain] [<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL expected: FAIL

View file

@ -56,3 +56,9 @@
[separate text/javascript x/x] [separate text/javascript x/x]
expected: FAIL expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL

View file

@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C] [X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL

View file

@ -8,7 +8,7 @@
expected: FAIL expected: FAIL
[Embedded credentials are treated as network errors in new windows.] [Embedded credentials are treated as network errors in new windows.]
expected: TIMEOUT expected: FAIL
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.] [Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
expected: TIMEOUT expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[traverse_the_history_2.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -4,7 +4,7 @@
expected: FAIL expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN expected: NOTRUN
@ -16,5 +16,5 @@
expected: NOTRUN expected: NOTRUN
[Non-HTMLElement should not support autofocus] [Non-HTMLElement should not support autofocus]
expected: TIMEOUT expected: NOTRUN

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-2.html] [iframe_sandbox_popups_escaping-2.html]
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL expected: FAIL

View file

@ -1,5 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Position Test Reference: Test position:sticky element with large top in an overflow scroll container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<style>
.scroll {
border: 5px solid blue;
padding: 5px 3px 0 8px;
overflow: auto;
height: 200px;
width: 200px;
transform: scale(1);
}
.block {
width: 150px;
height: 200px;
background: yellow;
position: absolute;
top: 55px;
}
.sticky {
position: absolute;
background: purple;
width: 50px;
height: 50px;
top: 205px;
z-index: 1;
}
</style>
<script>
function runTest() {
document.getElementById("scroll2").scrollTop = 50;
}
</script>
<body onload="runTest();">
<div class="scroll">
<span>
<div class="sticky"></div>
</span>
<div class="block"></div>
</div>
<div class="scroll" id="scroll2">
<span>
<div class="sticky"></div>
</span>
<div class="block"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Position Test: Test position:sticky element with large top in an overflow container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<link rel="help" href="https://drafts.csswg.org/css-position/#sticky-pos">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1598112">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2794">
<link rel="match" href="position-sticky-large-top-2-ref.html">
<meta name="assert" content="This test verifies the position of a position:sticky element with large top value can be reached by scrolling the overflow container.">
<style>
.scroll {
border: 5px solid blue;
padding: 5px 3px 0 8px;
overflow: auto;
height: 200px;
width: 200px;
}
.block {
width: 150px;
height: 200px;
background: yellow;
}
.sticky {
position: sticky;
background: purple;
width: 50px;
height: 50px;
top: 200px;
}
</style>
<script>
function runTest() {
document.getElementById("scroll2").scrollTop = 50;
}
</script>
<body onload="runTest();">
<!-- test before scroll -->
<div class="scroll">
<span>
<div class="sticky"></div>
</span>
<div class="block"></div>
</div>
<!-- test after scroll -->
<div class="scroll" id="scroll2">
<span>
<div class="sticky"></div>
</span>
<div class="block"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Position Test Reference: Test position:sticky element with large top in an overflow scroll container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<style>
.scroll {
border: 5px solid blue;
overflow: auto;
height: 200px;
width: 200px;
transform: scale(1);
}
.block {
width: 100%;
height: 200px;
background: yellow;
position: absolute;
top: 50px;
}
.sticky {
position: absolute;
background: purple;
width: 50px;
height: 50px;
top: 200px;
z-index: 1;
}
</style>
<script>
function runTest() {
document.getElementById("scroll2").scrollTop = 50;
}
</script>
<body onload="runTest();">
<div class="scroll">
<div class="sticky"></div>
<div class="block"></div>
</div>
<div class="scroll" id="scroll2">
<div class="sticky"></div>
<div class="block"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Position Test: Test position:sticky element with large top in an overflow container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<link rel="help" href="https://drafts.csswg.org/css-position/#sticky-pos">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1598112">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2794">
<link rel="match" href="position-sticky-large-top-ref.html">
<meta name="assert" content="This test verifies the position of a position:sticky element with large top value can be reached by scrolling the overflow container.">
<style>
.scroll {
border: 5px solid blue;
overflow: auto;
height: 200px;
width: 200px;
}
.block {
width: 100%;
height: 200px;
background: yellow;
}
.sticky {
position: sticky;
background: purple;
width: 50px;
height: 50px;
top: 200px;
}
</style>
<script>
function runTest() {
document.getElementById("scroll2").scrollTop = 50;
}
</script>
<body onload="runTest();">
<!-- test before scroll -->
<div class="scroll">
<div class="sticky"></div>
<div class="block"></div>
</div>
<!-- test after scroll -->
<div class="scroll" id="scroll2">
<div class="sticky"></div>
<div class="block"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: highlighting of spelling error</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<meta content="" name="flags">
<style>
input
{
font-size: 300%;
}
input::spelling-error
{
color: maroon;
text-decoration: underline dotted red;
}
</style>
<p>PREREQUISITE: User agent needs to have an enabled and capable spelling error module. If it does not, then this test does not apply to such user agent.
<p>Test passes if each glyph of "txet" is maroon and if "txet" is underlined with a red dotted line.
<div><input type="text" value="A txet sample"></div>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: highlighting of spelling error</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<meta content="" name="flags">
<style>
textarea
{
font-size: 300%;
}
textarea::spelling-error
{
color: maroon;
text-decoration: underline dotted red;
}
</style>
<p>PREREQUISITE: User agent needs to have an enabled and capable spelling error module. If it does not, then this test does not apply to such user agent.
<p>Test passes if each glyph of "txet" is maroon and if "txet" is underlined with a red dotted line.
<div><textarea rows="2" cols="20">A txet sample</textarea></div>

View file

@ -0,0 +1,46 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Reftest Reference</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<meta content="svg" name="flags">
<style>
text
{
fill: green;
/*
fill is the shorthand form for fill-color,
fill-image, fill-origin, fill-position, fill-size
and fill-repeat
https://www.w3.org/TR/fill-stroke-3/#fill-shorthand
*/
stroke: yellow;
/*
stroke is the shorthand form for stroke-color,
stroke-image, stroke-origin, stroke-position,
stroke-size, and stroke-repeat
https://www.w3.org/TR/fill-stroke-3/#stroke-shorthand
*/
stroke-width: 2px;
}
</style>
<p>Test passes if the glyphs of "Curvy text sample" are green with a yellow outline.
<div>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="550" height="300">
<path id="pathToApply"
d="M 100 200
C 100 100 200 0 500 200" fill="none" />
<text style="font-size: 48px;"><textPath xlink:href="#pathToApply" id="test">Curvy text sample</textPath></text>
</svg>
</div>

View file

@ -0,0 +1,69 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Test: active selection of text following a path (complex)</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<link rel="help" href="https://www.w3.org/TR/fill-stroke-3/#fill-shorthand">
<link rel="help" href="https://www.w3.org/TR/fill-stroke-3/#stroke-shorthand">
<meta content="svg" name="flags">
<meta content="This test checks that an SVG application with a text following a text path can be selected and then be styled." name="assert">
<style>
::selected
{
fill: green;
/*
fill is the shorthand form for fill-color,
fill-image, fill-origin, fill-position, fill-size
and fill-repeat
https://www.w3.org/TR/fill-stroke-3/#fill-shorthand
*/
stroke: yellow;
/*
stroke is the shorthand form for stroke-color,
stroke-image, stroke-origin, stroke-position,
stroke-size, and stroke-repeat
https://www.w3.org/TR/fill-stroke-3/#stroke-shorthand
*/
stroke-width: 2px;
}
</style>
<p>Test passes if the glyphs of "Curvy text sample" are green with a yellow outline.
<div>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="550" height="300">
<path id="pathToApply"
d="M 100 200
C 100 100 200 0 500 200" fill="none" />
<text fill="red" style="font-size: 48px;"><textPath xlink:href="#pathToApply" id="test">Curvy text sample</textPath></text>
</svg>
</div>
<script>
var targetRange = document.createRange();
/* We first create an empty range */
targetRange.setStart(document.getElementById("test").childNodes[0], 0);
/*
Then we set the start boundary of the range inside textPath#test to
the 1st character, which is "C"
*/
targetRange.setEnd(document.getElementById("test").childNodes[0], 17);
/* And we set the end boundary of the range inside textPath#test
right after the 18th character which is "e" */
window.getSelection().addRange(targetRange);
/* Finally, we now select such range of content */
</script>

View file

@ -9,13 +9,14 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<meta name="DC.date.created" content="2016-12-22T09:54:03+11:00" scheme="W3CDTF" /> <meta name="DC.date.created" content="2016-12-22T09:54:03+11:00" scheme="W3CDTF" />
<meta name="DC.date.modified" content="2016-12-30T09:54:03+11:00" scheme="W3CDTF" /> <meta name="DC.date.modified" content="2019-12-18T09:54:03+11:00" scheme="W3CDTF" />
<meta content="" name="flags" /> <meta content="" name="flags" />
<style type="text/css"><![CDATA[ <style type="text/css"><![CDATA[
html html
{ {
direction: rtl;
width: calc(52px + 100vw + 52px); width: calc(52px + 100vw + 52px);
} }
@ -29,6 +30,7 @@
table table
{ {
border-spacing: 0px; border-spacing: 0px;
direction: ltr;
position: absolute; position: absolute;
width: calc(52px + 100% + 52px); width: calc(52px + 100% + 52px);
} }
@ -55,6 +57,7 @@
display: block; display: block;
} }
]]></style> ]]></style>
</head> </head>
<body> <body>

View file

@ -0,0 +1,52 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#booleans">
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_true(evaluateBoolean('(./span)[4] or ./br[2]', context));
}, '"or" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_true(evaluateBoolean('count((./span)[3]) = count(./br[2])', context));
}, '"=" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_false(evaluateBoolean('count((./span)[3]) != count(./br[2])', context));
}, '"!=" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_true(evaluateBoolean('count((./span)[3]) < count(./br)', context));
}, '"<" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_false(evaluateBoolean('count((./span)[3]) > count(./br[2])', context));
}, '">" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_false(evaluateBoolean('count((./span)[3]) >= count(./br)', context));
}, '">=" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_true(evaluateBoolean('count((./span)[3]) <= count(./br[2])', context));
}, '"<=" operator depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-concat">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>foo</span><span>bar</span><b>ber</b>';
assert_equals(evaluateString('concat((./span)[2], ./b)', context), 'barber');
}, 'concat() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-contains">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>bar bar</span><span>bar<b>ber</b></span><b>bar</b>';
assert_true(evaluateBoolean('contains((./span)[1], ./b)', context));
}, 'contains() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-starts-with">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>foo</span><span>bar<b>ber</b></span><b>bar</b>';
assert_true(evaluateBoolean('starts-with((./span)[2], ./b)', context));
}, 'starts-with() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-substring-after">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>^^^bar$$$</span><span>bar<b>^</b></span><b>bar</b>';
assert_equals(evaluateString('substring-after((./span)[1], ./b)', context), '$$$');
}, 'substring-after() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-substring-before">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>^^^bar$$$</span><span>bar<b>$</b></span><b>bar</b>';
assert_equals(evaluateString('substring-before((./span)[1], ./b)', context), '^^^');
}, 'substring-before() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-substring">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>^^^bar$$$</span><span></span><br><br><br><br>';
assert_equals(evaluateString('substring((./span)[1], count(./br))', context), 'bar$$$');
}, 'substring() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-translate">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>^^^bar$$$</span><span><b>^^^</b></span><b>bar</b><b>foo</b>';
assert_equals(evaluateString('translate((./span)[1], (./b)[1], ./b[2])', context), '^^^foo$$$');
}, 'translate() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,14 @@
function evaluateBoolean(expression, context) {
let doc = context.ownerDocument || context;
return doc.evaluate(expression, context, null, XPathResult.BOOLEAN_TYPE, null).booleanValue;
}
function evaluateNumber(expression, context) {
let doc = context.ownerDocument || context;
return doc.evaluate(expression, context, null, XPathResult.NUMBER_TYPE, null).numberValue;
}
function evaluateString(expression, context) {
let doc = context.ownerDocument || context;
return doc.evaluate(expression, context, null, XPathResult.STRING_TYPE, null).stringValue;
}

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#numbers">
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) + count(./br)', context), 3);
}, '"+" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) - count(./br)', context), -1);
}, '"-" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) * count(./br)', context), 2);
}, '"*" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) div count(./br)', context), 0.5);
}, '"div" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) mod count(./br)', context), 1);
}, '"mod" operator depending on the context node');
</script>
</body>

View file

@ -513,7 +513,7 @@ class PropertyUpdate(object):
top_level_props, dependent_props = self.node.root.run_info_properties top_level_props, dependent_props = self.node.root.run_info_properties
update_properties = set(top_level_props) update_properties = set(top_level_props)
for item in itervalues(dependent_props): for item in itervalues(dependent_props):
update_properties |= set(dependent_props) update_properties |= set(item)
for condition in current_conditions: for condition in current_conditions:
if ((not condition.variables.issubset(update_properties) and if ((not condition.variables.issubset(update_properties) and
not run_info_by_condition[condition])): not run_info_by_condition[condition])):

View file

@ -4,6 +4,7 @@ import os
from collections import defaultdict, namedtuple from collections import defaultdict, namedtuple
from mozlog import structuredlog from mozlog import structuredlog
from six import itervalues
from six.moves import intern from six.moves import intern
from . import manifestupdate from . import manifestupdate
@ -285,7 +286,7 @@ def update_results(id_test_map,
disable_intermittent, disable_intermittent,
update_intermittent, update_intermittent,
remove_intermittent): remove_intermittent):
test_file_items = set(id_test_map.itervalues()) test_file_items = set(itervalues(id_test_map))
default_expected_by_type = {} default_expected_by_type = {}
for test_type, test_cls in wpttest.manifest_test_cls.iteritems(): for test_type, test_cls in wpttest.manifest_test_cls.iteritems():
@ -673,6 +674,29 @@ class TestFileData(object):
return rv return rv
def filter_unknown_props(self, update_properties, subtests):
# Remove subtests which have some conditions that aren't in update_properties
# since removing these may be inappropriate
top_level_props, dependent_props = update_properties
all_properties = set(top_level_props)
for item in itervalues(dependent_props):
all_properties |= set(item)
filtered = []
for subtest in subtests:
include = True
for key, _ in subtest.iter_properties():
conditions = subtest.get_conditions(key)
for condition in conditions:
if not condition.variables.issubset(all_properties):
include = False
break
if not include:
break
if include:
filtered.append(subtest)
return filtered
def update(self, default_expected_by_type, update_properties, def update(self, default_expected_by_type, update_properties,
full_update=False, disable_intermittent=None, update_intermittent=False, full_update=False, disable_intermittent=None, update_intermittent=False,
remove_intermittent=False): remove_intermittent=False):
@ -687,6 +711,7 @@ class TestFileData(object):
if full_update: if full_update:
orphans = self.orphan_subtests(expected) orphans = self.orphan_subtests(expected)
orphans = self.filter_unknown_props(update_properties, orphans)
if not self.requires_update and not orphans: if not self.requires_update and not orphans:
return return

View file

@ -66,7 +66,7 @@ def update(tests, *logs, **kwargs):
updater.update_from_log(log) updater.update_from_log(log)
update_properties = (["debug", "os", "version", "processor"], update_properties = (["debug", "os", "version", "processor"],
{"os": ["version"], "processor": "bits"}) {"os": ["version"], "processor": ["bits"]})
expected_data = {} expected_data = {}
metadata.load_expected = lambda _, __, test_path, *args: expected_data.get(test_path) metadata.load_expected = lambda _, __, test_path, *args: expected_data.get(test_path)
@ -1259,6 +1259,28 @@ def test_update_full_unknown():
"expected", run_info_2) == "ERROR" "expected", run_info_2) == "ERROR"
@pytest.mark.xfail(sys.version[0] == "3",
reason="metadata doesn't support py3")
def test_update_full_unknown_missing():
tests = [("path/to/test.htm", [test_id], "testharness", """[test.htm]
[subtest_deleted]
expected:
if release_or_beta: ERROR
FAIL
""")]
log_0 = suite_log([("test_start", {"test": test_id}),
("test_status", {"test": test_id,
"subtest": "test1",
"status": "PASS",
"expected": "PASS"}),
("test_end", {"test": test_id,
"status": "OK"})],
run_info={"debug": False, "release_or_beta": False})
updated = update(tests, log_0, full_update=True)
assert len(updated) == 0
@pytest.mark.xfail(sys.version[0] == "3", @pytest.mark.xfail(sys.version[0] == "3",
reason="metadata doesn't support py3") reason="metadata doesn't support py3")

View file

@ -381,6 +381,10 @@ class ManifestItem(object):
for item in iterkeys(self._flatten()): for item in iterkeys(self._flatten()):
yield item yield item
def iter_properties(self):
for item in self._data:
yield item, self._data[item]
def remove_value(self, key, value): def remove_value(self, key, value):
if key not in self._data: if key not in self._data:
return return

View file

@ -1205,14 +1205,27 @@
// Wait a little, just in case some stray events fire // Wait a little, just in case some stray events fire
await new Promise(r => t.step_timeout(r, 100)); await new Promise(r => t.step_timeout(r, 100));
assert_equals(1, countMuteAudio1.count, "Got 1 mute event for pc1's audio track"); // Receiving an RTCP bye should generate a mute event. How often this
assert_equals(1, countMuteVideo1.count, "Got 1 mute event for pc1's video track"); // happens depends upon the browser and on timing. Rather than try to
assert_equals(1, countMuteAudio2.count, "Got 1 mute event for pc2's audio track"); // match an individual browser's current behaviour, this checks to see
assert_equals(1, countMuteVideo2.count, "Got 1 mute event for pc2's video track"); // that we receive at least the minimum number of expected mute and
assert_equals(2, countUnmuteAudio1.count, "Got 2 unmute events for pc1's audio track"); // unmute events.
assert_equals(2, countUnmuteVideo1.count, "Got 2 unmute events for pc1's video track"); assert_greater_than_equal(countMuteAudio1.count, 1,
assert_equals(2, countUnmuteAudio2.count, "Got 2 unmute events for pc2's audio track"); "Expect 1 mute event for pc1's audio track");
assert_equals(2, countUnmuteVideo2.count, "Got 2 unmute events for pc2's video track"); assert_greater_than_equal(countMuteVideo1.count, 1,
"Expect 1 mute event for pc1's video track");
assert_greater_than_equal(countMuteAudio2.count, 1,
"Expect 1 mute event for pc2's audio track");
assert_greater_than_equal(countMuteVideo2.count, 1,
"Expect 1 mute event for pc2's video track");
assert_greater_than_equal(countUnmuteAudio1.count, 2,
"Expect 2 unmute events for pc1's audio track");
assert_greater_than_equal(countUnmuteVideo1.count, 2,
"Expect 2 unmute events for pc1's video track");
assert_greater_than_equal(countUnmuteAudio2.count, 2,
"Expect 2 unmute events for pc2's audio track");
assert_greater_than_equal(countUnmuteVideo2.count, 2,
"Expect 2 unmute events for pc2's video track");
}; };
const checkStop = async t => { const checkStop = async t => {