Auto merge of #27977 - servo-wpt-sync:wpt_update_23-12-2020, r=servo-wpt-sync

Sync WPT with upstream (23-12-2020)

Automated downstream sync of changes from upstream as of 23-12-2020.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2020-12-23 10:13:09 -05:00 committed by GitHub
commit cbda5c3e3e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
94 changed files with 887 additions and 144 deletions

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

@ -2,3 +2,6 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
[elementsFromPoint on inner documents]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementsFromPoint-invalid-cases.html]
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

@ -1,2 +0,0 @@
[matchMedia-display-none-iframe.html]
expected: ERROR

View file

@ -0,0 +1,2 @@
[HTMLMediaElement.html]
expected: TIMEOUT

View file

@ -312,18 +312,21 @@
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -53,6 +53,3 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript x/x]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-2.html]
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,4 +0,0 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -0,0 +1,70 @@
[select-event.html]
[input type password: select() a second time (must not fire select)]
expected: FAIL
[input type tel: setRangeText() a second time (must not fire select)]
expected: FAIL
[textarea: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type password: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type text: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type text: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: select() a second time (must not fire select)]
expected: FAIL
[input type password: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type tel: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[textarea: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart a second time (must not fire select)]
expected: FAIL
[input type url: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type password: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart a second time (must not fire select)]
expected: FAIL

View file

@ -1,4 +0,0 @@
[activation-behavior.window.html]
[<a> that is not connected should be followed]
expected: FAIL

View file

@ -1,4 +0,0 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

@ -446,3 +446,6 @@
[X SNR (-336.53098362261886 dB) is not greater than or equal to 65.737. Got -336.53098362261886.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.1388579153751666e-22\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
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

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

View file

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

View file

@ -105134,7 +105134,7 @@
]
],
"fixed-table-layout-017.xht": [
"805a2ccf2e94962980366e328cc9f9d22f5dc00c",
"c66223537bcb44cab0a72f6585dd40310b0762cf",
[
null,
[
@ -105147,7 +105147,7 @@
]
],
"fixed-table-layout-018.xht": [
"8dbbac772d9a939fb0f5a4444c08ed81e545a8c9",
"d172b6bfc85e52329c409592d6e19e7b7654d432",
[
null,
[
@ -105160,7 +105160,7 @@
]
],
"fixed-table-layout-019.xht": [
"131f85a65c1b978ef8877a6391384d508a9d5ea0",
"c2f64ea3e0a075c4c351155b82f982baa80350b3",
[
null,
[
@ -105173,7 +105173,7 @@
]
],
"fixed-table-layout-020.xht": [
"831103582df2c03b3961db786a886682ec993e96",
"34ba94eef8c59ba9c885fb312a7cd14c80c04c86",
[
null,
[
@ -105186,7 +105186,7 @@
]
],
"fixed-table-layout-021.xht": [
"644e7d0a78a0d46985b1a4a5091cfaceeb5cbc84",
"b105f755c4cbec80563eae2bf4d996e2554c54b1",
[
null,
[
@ -105199,7 +105199,7 @@
]
],
"fixed-table-layout-022.xht": [
"255d7cee57d10a4cd90342dc36a34b9953261445",
"31801fd405dfc5ce7b953139fd75f55b1db46f7f",
[
null,
[
@ -105212,7 +105212,7 @@
]
],
"fixed-table-layout-023.xht": [
"3e26748aa1f7f6287c611ccdb3551d6587f3c4f2",
"10049012596b2a091a8a2910b1196540ced77d5b",
[
null,
[
@ -253100,6 +253100,19 @@
{}
]
],
"circle-005.svg": [
"2d1fbf92aa71c69d368748ed5d77e4919471ec6c",
[
null,
[
[
"/svg/geometry/reftests/circle-ref.svg",
"=="
]
],
{}
]
],
"ellipse-001.svg": [
"e6d394de206f8831136dbe916d55166038ee94c2",
[
@ -261468,6 +261481,12 @@
]
}
},
"badging": {
"META.yml": [
"1826b19d02e46a74c0b40795d6786569d3f06ee1",
[]
]
},
"battery-status": {
"META.yml": [
"a069984ddb226b6f07cd5f1408e159634dfec7f4",
@ -280685,6 +280704,10 @@
]
},
"content-index": {
"META.yml": [
"9c88d6e2af9aa18e85ceecb90f085c0c6fffe3f0",
[]
],
"resources": {
"sw.js": [
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
@ -283287,7 +283310,7 @@
[]
],
"cookie-helper.sub.js": [
"50dcdfc5ecbb6dd023eef9ce64beab5e277db406",
"a0ded48f2a82498f1643a6fd35490d08d3559419",
[]
],
"cookie-test.js": [
@ -283306,6 +283329,10 @@
"a0aa83558dbb8c027de6d436d0a6af82519b3481",
[]
],
"dropSameSiteMultiAttribute.py": [
"af4fbeeca46baeb99ec6fb0ea00b1bcf46296367",
[]
],
"dropSameSiteNone.py": [
"2d0a837b5d90dbf6ec16a030f2107bdbdb2dc15d",
[]
@ -283354,6 +283381,10 @@
"05f096708871c7f12628efcbe8026d371eb812b1",
[]
],
"setSameSiteMultiAttribute.py": [
"988f67f0b05321faf8d5b47b779885c00980424f",
[]
],
"setSameSiteNone.py": [
"446c75eb44735f328d13982d943fa6b1046e2fe8",
[]
@ -303732,6 +303763,10 @@
]
},
"css-color-adjust": {
"META.yml": [
"e72f837c95c06189d2945adedaa02351989590ab",
[]
],
"rendering": {
"dark-color-scheme": {
"color-scheme-change-checkbox-notref.html": [
@ -315800,7 +315835,7 @@
[]
],
"test-shared.js": [
"da3db7470134e3e8c2bebfd2a42b32acf4e72cb6",
"7a1da2e649708a0ed7d6d9dbe76322ce67bd266b",
[]
]
}
@ -319675,6 +319710,12 @@
]
}
},
"css-size-adjust": {
"META.yml": [
"399781a705ad5e127ec904734df5ac02adeddf12",
[]
]
},
"css-sizing": {
"META.yml": [
"086e654a8e039f259b5e828d024f808c2e95016b",
@ -333860,6 +333901,12 @@
}
}
},
"custom-state-pseudo-class": {
"META.yml": [
"ee34d8b900423cdc4de0876f4909c528b835dad6",
[]
]
},
"density-size-correction": {
"density-corrected-image-svg-aspect-ratio-ref.html": [
"fa13136876c88b8e3b32d68c2c0155862151c51b",
@ -333936,6 +333983,12 @@
}
}
},
"deprecation-reporting": {
"META.yml": [
"57ba808a2e4b1f787988967817391d9ecc397418",
[]
]
},
"device-memory": {
"META.yml": [
"b8dd4761adff3e18b6552d4a8f02abdcd30a3ea6",
@ -334458,6 +334511,14 @@
"497ed770bfb6fb367f2eeb1978225bc4d036055b",
[]
],
"sync-xhr-report-only.html.headers": [
"8de201c750893f0f615ccf7fcba1600d1cf5f43f",
[]
],
"sync-xhr-reporting.html.headers": [
"ab319fc4ceb1d583a04832d665efb36bc87628a2",
[]
],
"unoptimized-image.jpg": [
"599137a55d710fe6b8d3052c05c81915622ea0d0",
[]
@ -352122,7 +352183,7 @@
[]
],
"dom.idl": [
"9d371fbe7c5f63cec026c237456d1df9beacc36f",
"bd8a17a379311b14236159cc67b4ac9958231d21",
[]
],
"element-timing.idl": [
@ -352702,7 +352763,17 @@
]
}
},
"intervention-reporting": {
"META.yml": [
"b738239a16f9110ac148b4d3c0bcfecb7eca25bd",
[]
]
},
"is-input-pending": {
"META.yml": [
"f0cc50994a4b038c113ca5f481f0a744c3260d8e",
[]
],
"README.md": [
"7994b1a4ec36302942d1a6e6809e15505b727ed9",
[]
@ -352751,6 +352822,10 @@
}
},
"js-self-profiling": {
"META.yml": [
"84e5177d5e5e4c0b689038b80f9baaad5baa7f88",
[]
],
"__dir__.headers": [
"35b10bd2ccdbfa99feb96079fafab61346d025ed",
[]
@ -354834,7 +354909,7 @@
},
"network-error-logging": {
"META.yml": [
"bc063177d1d14febb1c4bdb86e70cfdce8ca0b5b",
"6c1f88eafc4a6de6e046204373647b93509008fa",
[]
],
"README.md": [
@ -355237,6 +355312,10 @@
}
},
"origin-policy": {
"META.yml": [
"9efb2a7d6718d1c98161329470238a165a004824",
[]
],
"bad-server": {
"resources": {
"subframe-with-bad-header.py": [
@ -355390,6 +355469,12 @@
]
}
},
"page-lifecycle": {
"META.yml": [
"8036af19bb9df20e30872a6c954ca4f23dbe9c8c",
[]
]
},
"page-visibility": {
"META.yml": [
"9b9aea8e8b11bf98dd23c8e161e3a7d701da2aba",
@ -355978,6 +356063,18 @@
]
}
},
"permissions-request": {
"META.yml": [
"b30db1cfb67de2ed067196f0a71733424dc03ddf",
[]
]
},
"permissions-revoke": {
"META.yml": [
"16203fe4d74624e1b4ac12c9c8b5a79568dc65a2",
[]
]
},
"picture-in-picture": {
"META.yml": [
"8df9be5e5b1961296346b4c98a295acbe0fd97c0",
@ -359048,6 +359145,12 @@
]
}
},
"savedata": {
"META.yml": [
"883c3fccf4da9f0fd7fd0bf7391ff86959006561",
[]
]
},
"screen-capture": {
"META.yml": [
"47882d3275f1cc928555045b2def8fc90f6bcdb0",
@ -359279,6 +359382,10 @@
]
},
"serial": {
"META.yml": [
"64938c92982f45c7ef5ad5e6262e1401087c4423",
[]
],
"resources": {
"automation.js": [
"98f67fb6282ceb866b63a3eb9bfa19d0dc0f1b2d",
@ -364041,7 +364148,7 @@
[]
],
"serve.py": [
"fe0d34b371d2244c1afece8d002d83d7a2b5fb9c",
"0a5f16ef57e4740138f14f2e5c1a5fb797af915a",
[]
],
"test_functional.py": [
@ -371570,7 +371677,7 @@
[]
],
"mpcontext.py": [
"2a84e188d39f1300046d9ab07992d679ebab9003",
"daade1054cf41689981a50b7ec5d944be1681424",
[]
],
"print_reftest_runner.html": [
@ -372090,7 +372197,7 @@
[]
],
"test_stash.py": [
"f688ac6016c0a0d41b9bf85bb2b9c2ed68f2ad07",
"8ca3944cdb0c23ac497f3d514f5869b4c02fce6f",
[]
]
},
@ -372206,7 +372313,7 @@
},
"trusted-types": {
"META.yml": [
"d0743949b6a122d8bd0adf7b1ed0181f0c51429d",
"8cc6a43aa12617ff8738ce571814f954454b6666",
[]
],
"default-policy-report-only.tentative.html.headers": [
@ -372312,6 +372419,12 @@
[]
]
},
"ua-client-hints": {
"META.yml": [
"c994748e0f27bcc75019ad7a20816ee138d15f91",
[]
]
},
"uievents": {
"META.yml": [
"2f1ec58efec10e0dd6374aac05cb926c8cffa3f1",
@ -373360,6 +373473,12 @@
]
}
},
"web-otp": {
"META.yml": [
"63f87544a3d98543a2a42394cbea0900a33b0b70",
[]
]
},
"web-share": {
"META.yml": [
"d2eccca6f424e93cc463fafc5a3b16e5a7ecc565",
@ -374342,6 +374461,12 @@
[]
]
},
"webhid": {
"META.yml": [
"d32b9264cb1b0a8522ce933294ace81fb71e0239",
[]
]
},
"webmessaging": {
"META.yml": [
"95d5071171b5a20cc14a414c97c9eae2f525f43f",
@ -374575,6 +374700,10 @@
]
},
"webrtc-insertable-streams": {
"META.yml": [
"63fc4fc6954e144be205817b3169d277bf88a763",
[]
],
"RTCPeerConnection-insertable-streams.js": [
"87f4394b0b5e42be0ef00f78506eded669010b9f",
[]
@ -374594,6 +374723,12 @@
]
}
},
"webrtc-priority": {
"META.yml": [
"a422e814479f03528f90953e574b5017578879d1",
[]
]
},
"webrtc-stats": {
"META.yml": [
"10bcf856eb9258e0845f2fdcb6e08c43ebcdf78a",
@ -374604,6 +374739,12 @@
[]
]
},
"webrtc-svc": {
"META.yml": [
"17d93c51a9f195f5093882b1934c79f0a0635554",
[]
]
},
"websockets": {
"META.yml": [
"14e23e03a854f4d83caa345d45c5b43f1a68bee3",
@ -374895,6 +375036,10 @@
}
},
"webtransport": {
"META.yml": [
"8507bee4ad26006b3542e213c600a59b5b456813",
[]
],
"quic": {
"handlers": {
"README.md": [
@ -376925,12 +377070,42 @@
"13c5d7b595c62394e4593bd0dca142bcd7a21068",
[]
],
"anchors": {
"META.yml": [
"0b7f740ac531002086e79b7f57647c62fd5db220",
[]
]
},
"ar-module": {
"META.yml": [
"47e5ea9cd4cd595de3b799f034977f3e336aa565",
[]
]
},
"dom-overlay": {
"META.yml": [
"be2b6e613a1457ca3c14dc854005353636ea23af",
[]
]
},
"gamepads-module": {
"META.yml": [
"a6751571a701f681bef89e09350cbd7a11c90d2f",
[]
]
},
"hand-input": {
"META.yml": [
"caa72f8632b5987ecd245b249c97c81d853c8e6b",
[]
]
},
"hit-test": {
"META.yml": [
"e3f94f05a1ffc60dde730e76faaba8bbb1aae1b1",
[]
]
},
"layers": {
"META.yml": [
"117c1adf021812164c4941a8321c9fc0661f1b67",
@ -402266,6 +402441,21 @@
}
]
],
"multiple-samesite-attributes.https.html": [
"312fa2a2cc9adeb251a9dbc061cbf150ae3e2c45",
[
null,
{
"timeout": "long"
}
],
[
"cookies/samesite/multiple-samesite-attributes.https.html?legacy-samesite",
{
"timeout": "long"
}
]
],
"sandbox-iframe-nested.https.html": [
"310f86a44687d5b715106c382afcc246808f5fc7",
[
@ -430704,6 +430894,20 @@
{}
]
],
"sync-xhr-report-only.html": [
"a68cf713eebe2fc9d4f4fed04e33a485bfaf6718",
[
null,
{}
]
],
"sync-xhr-reporting.html": [
"3bcb63459d5987ed7f2add3382c17d9198ac36ad",
[
null,
{}
]
],
"unsized-media-reporting-tentative.html": [
"47a36436464e031e18f710330106694b7fa0c182",
[
@ -488487,7 +488691,7 @@
]
],
"select-event.html": [
"af49024aa2bdfaa45f8eb200fad201d915f831a2",
"09626a5a5cef0acf4b92bdfcbeece88b6d1693be",
[
null,
{

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

@ -2,3 +2,6 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
[elementsFromPoint on inner documents]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementsFromPoint-invalid-cases.html]
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

@ -1,2 +0,0 @@
[matchMedia-display-none-iframe.html]
expected: ERROR

View file

@ -0,0 +1,2 @@
[HTMLMediaElement.html]
expected: TIMEOUT

View file

@ -312,18 +312,21 @@
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL

View file

@ -53,6 +53,3 @@
[combined text/javascript ]
expected: FAIL
[separate text/javascript x/x]
expected: FAIL

View file

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

View file

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

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
expected: TIMEOUT
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html]
type: testharness
expected: CRASH
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN

View file

@ -1,4 +0,0 @@
[form-double-submit-3.html]
[<button> should have the same double-submit protection as <input type=submit>]
expected: FAIL

View file

@ -0,0 +1,70 @@
[select-event.html]
[input type password: select() a second time (must not fire select)]
expected: FAIL
[input type tel: setRangeText() a second time (must not fire select)]
expected: FAIL
[textarea: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type password: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type text: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type search: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type text: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: select() a second time (must not fire select)]
expected: FAIL
[input type password: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type tel: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[textarea: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart a second time (must not fire select)]
expected: FAIL
[input type url: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type password: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type search: selectionStart a second time (must not fire select)]
expected: FAIL

View file

@ -1,4 +0,0 @@
[activation-behavior.window.html]
[<a> that is not connected should be followed]
expected: FAIL

View file

@ -1,4 +0,0 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

@ -674,3 +674,6 @@
[X SNR (-336.53098362261886 dB) is not greater than or equal to 65.737. Got -336.53098362261886.]
expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.1388579153751666e-22\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
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

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

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 @@
spec: https://w3c.github.io/badging/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/content-index/spec/

View file

@ -299,6 +299,28 @@ function resetSameSiteNoneCookies(origin, value) {
})
}
// Reset test cookies with multiple SameSite attributes on |origin|.
// If |origin| matches `self.origin`, assert (via `document.cookie`)
// that they were properly removed.
function resetSameSiteMultiAttributeCookies(origin, value) {
return credFetch(origin + "/cookies/resources/dropSameSiteMultiAttribute.py")
.then(_ => {
if (origin == self.origin) {
assert_dom_cookie("samesite_unsupported", value, false);
assert_dom_cookie("samesite_unsupported_none", value, false);
assert_dom_cookie("samesite_unsupported_lax", value, false);
assert_dom_cookie("samesite_unsupported_strict", value, false);
assert_dom_cookie("samesite_none_unsupported", value, false);
assert_dom_cookie("samesite_lax_unsupported", value, false);
assert_dom_cookie("samesite_strict_unsupported", value, false);
assert_dom_cookie("samesite_lax_none", value, false);
}
})
.then(_ => {
return credFetch(origin + "/cookies/resources/setSameSiteMultiAttribute.py?" + value);
})
}
//
// DOM based cookie manipulation APIs
//

View file

@ -0,0 +1,17 @@
from cookies.resources.helpers import makeDropCookie, setNoCacheAndCORSHeaders
def main(request, response):
"""Respond to `/cookies/resources/dropSameSiteMultiAttribute.py by dropping
the cookies set by setSameSiteMultiAttribute.py"""
headers = setNoCacheAndCORSHeaders(request, response)
# Expire the cookies, and return a JSON-encoded success code.
headers.append(makeDropCookie(b"samesite_unsupported", True))
headers.append(makeDropCookie(b"samesite_unsupported_none", True))
headers.append(makeDropCookie(b"samesite_unsupported_lax", False))
headers.append(makeDropCookie(b"samesite_unsupported_strict", False))
headers.append(makeDropCookie(b"samesite_none_unsupported", True))
headers.append(makeDropCookie(b"samesite_lax_unsupported", True))
headers.append(makeDropCookie(b"samesite_strict_unsupported", True))
headers.append(makeDropCookie(b"samesite_lax_none", True))
return headers, b'{"success": true}'

View file

@ -0,0 +1,60 @@
from cookies.resources.helpers import makeCookieHeader, setNoCacheAndCORSHeaders
from wptserve.utils import isomorphic_encode
def main(request, response):
"""Respond to `/cookie/set/samesite?{value}` by setting the following combination of cookies:
1. `samesite_unsupported={value};SameSite=Unsupported;path=/;Secure`
2. `samesite_unsupported_none={value};SameSite=Unsupported;SameSite=None;path=/;Secure`
3. `samesite_unsupported_lax={value};SameSite=Unsupported;SameSite=Lax;path=/`
4. `samesite_unsupported_strict={value};SameSite=Unsupported;SameSite=Strict;path=/`
5. `samesite_none_unsupported={value};SameSite=None;SameSite=Unsupported;path=/;Secure`
6. `samesite_lax_unsupported={value};SameSite=Lax;SameSite=Unsupported;path=/;Secure`
7. `samesite_strict_unsupported={value};SameSite=Strict;SameSite=Unsupported;path=/;Secure`
8. `samesite_lax_none={value};SameSite=Lax;SameSite=None;path=/;Secure`
9. `samesite_lax_strict={value};SameSite=Lax;SameSite=Strict;path=/`
10. `samesite_strict_lax={value};SameSite=Strict;SameSite=Lax;path=/`
Then navigate to a page that will post a message back to the opener with the set cookies"""
headers = setNoCacheAndCORSHeaders(request, response)
value = isomorphic_encode(request.url_parts.query)
headers.append((b"Content-Type", b"text/html; charset=utf-8"))
# Unknown value; single attribute
headers.append(makeCookieHeader(
b"samesite_unsupported", value, {b"SameSite":b"Unsupported", b"path":b"/", b"Secure":b""}))
# Multiple attributes; first attribute unknown
headers.append(makeCookieHeader(
b"samesite_unsupported_none", value, {b"SameSite":b"Unsupported", b"SameSite":b"None", b"path":b"/", b"Secure":b""}))
headers.append(makeCookieHeader(
b"samesite_unsupported_lax", value, {b"SameSite":b"Unsupported", b"SameSite":b"Lax", b"path":b"/"}))
headers.append(makeCookieHeader(
b"samesite_unsupported_strict", value, {b"SameSite":b"Unsupported", b"SameSite":b"Strict", b"path":b"/"}))
# Multiple attributes; second attribute unknown
headers.append(makeCookieHeader(
b"samesite_none_unsupported", value, {b"SameSite":b"None", b"SameSite":b"Unsupported", b"path":b"/", b"Secure":b""}))
headers.append(makeCookieHeader(
b"samesite_lax_unsupported", value, {b"SameSite":b"Lax", b"SameSite":b"Unsupported", b"path":b"/", b"Secure":b""}))
headers.append(makeCookieHeader(
b"samesite_strict_unsupported", value, {b"SameSite":b"Strict", b"SameSite":b"Unsupported", b"path":b"/", b"Secure":b""}))
# Multiple attributes; both known
headers.append(makeCookieHeader(
b"samesite_lax_none", value, {b"SameSite":b"Lax", b"SameSite":b"None", b"path":b"/", b"Secure":b""}))
headers.append(makeCookieHeader(
b"samesite_lax_strict", value, {b"SameSite":b"Lax", b"SameSite":b"Strict", b"path":b"/"}))
headers.append(makeCookieHeader(
b"samesite_strict_lax", value, {b"SameSite":b"Strict", b"SameSite":b"Lax", b"path":b"/"}))
document = b"""
<!DOCTYPE html>
<script>
// A same-site navigation, which should attach all cookies including SameSite ones.
// This is necessary because this page may have been reached via a cross-site navigation, so
// we might not have access to some SameSite cookies from here.
window.location = "../samesite/resources/echo-cookies.html";
</script>
"""
return headers, document

View file

@ -0,0 +1,103 @@
<!DOCTYPE html>
<meta charset="utf-8"/>
<meta name="timeout" content="long">
<meta name="variant" content="">
<meta name="variant" content="?legacy-samesite">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/cookies/resources/cookie-helper.sub.js"></script>
<script>
function assert_cookie_present(origin, name, value) {
return new Promise((resolve, reject) => {
var img = document.createElement("img");
img.onload = _ => resolve("'" + name + "=" + value + "' present on " + origin);
img.onerror = _ => reject("'" + name + "=" + value + "' not present on " + origin);
// We need to URL encode the destination path/query if we're redirecting:
if (origin.match(/\/redir/))
img.src = origin + encodeURIComponent("/cookies/resources/imgIfMatch.py?name=" + name + "&value=" + value);
else
img.src = origin + "/cookies/resources/imgIfMatch.py?name=" + name + "&value=" + value;
});
}
function assert_cookie_absent(origin, name, value) {
return new Promise((resolve, reject) => {
var img = document.createElement("img");
img.onload = _ => reject("'" + name + "=" + value + "' present on " + origin);
img.onerror = _ => resolve("'" + name + "=" + value + "' not present on " + origin);
// We need to URL encode the destination path/query if we're redirecting:
if (origin.match(/\/redir/))
img.src = origin + encodeURIComponent("/cookies/resources/imgIfMatch.py?name=" + name + "&value=" + value);
else
img.src = origin + "/cookies/resources/imgIfMatch.py?name=" + name + "&value=" + value;
});
}
function create_test(origin, target, expectedStatus, title) {
promise_test(t => {
var value = "" + Math.random();
return resetSameSiteMultiAttributeCookies(origin, value)
.then(_ => {
var asserts = [
assert_cookie_present(target, "samesite_unsupported_none", value),
assert_cookie_present(target, "samesite_lax_none", value),
expectedStatus == SameSiteStatus.STRICT ?
assert_cookie_present(target, "samesite_unsupported_strict", value) :
assert_cookie_absent(target, "samesite_unsupported_strict", value),
expectedStatus == SameSiteStatus.STRICT ?
assert_cookie_present(target, "samesite_lax_strict", value) :
assert_cookie_absent(target, "samesite_lax_strict", value),
expectedStatus == SameSiteStatus.CROSS_SITE ?
assert_cookie_absent(target, "samesite_unsupported_lax", value) :
assert_cookie_present(target, "samesite_unsupported_lax", value),
expectedStatus == SameSiteStatus.CROSS_SITE ?
assert_cookie_absent(target, "samesite_strict_lax", value) :
assert_cookie_present(target, "samesite_strict_lax", value)
];
if (isLegacySameSite()) {
// Legacy behavior: unsupported SameSite value acts like SameSite=None.
asserts.push(assert_cookie_present(target, "samesite_none_unsupported", value));
asserts.push(assert_cookie_present(target, "samesite_lax_unsupported", value));
asserts.push(assert_cookie_present(target, "samesite_strict_unsupported", value));
asserts.push(assert_cookie_present(target, "samesite_unsupported", value));
} else {
asserts.push(expectedStatus == SameSiteStatus.CROSS_SITE ?
assert_cookie_absent(target, "samesite_none_unsupported", value) :
assert_cookie_present(target, "samesite_none_unsupported", value));
asserts.push(expectedStatus == SameSiteStatus.CROSS_SITE ?
assert_cookie_absent(target, "samesite_lax_unsupported", value) :
assert_cookie_present(target, "samesite_lax_unsupported", value));
asserts.push(expectedStatus == SameSiteStatus.CROSS_SITE ?
assert_cookie_absent(target, "samesite_strict_unsupported", value) :
assert_cookie_present(target, "samesite_strict_unsupported", value));
asserts.push(expectedStatus == SameSiteStatus.CROSS_SITE ?
assert_cookie_absent(target, "samesite_unsupported", value) :
assert_cookie_present(target, "samesite_unsupported", value));
}
return Promise.all(asserts);
});
}, title);
}
// No redirect:
create_test(SECURE_ORIGIN, SECURE_ORIGIN, SameSiteStatus.STRICT, "Same-host images are strictly same-site");
create_test(SECURE_SUBDOMAIN_ORIGIN, SECURE_SUBDOMAIN_ORIGIN, SameSiteStatus.STRICT, "Subdomain images are strictly same-site");
create_test(SECURE_CROSS_SITE_ORIGIN, SECURE_CROSS_SITE_ORIGIN, SameSiteStatus.CROSS_SITE, "Cross-site images are cross-site");
// Redirect from {same-host,subdomain,cross-site} to same-host:
create_test(SECURE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to same-host images are strictly same-site");
create_test(SECURE_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to same-host images are strictly same-site");
create_test(SECURE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to same-host images are strictly same-site");
// Redirect from {same-host,subdomain,cross-site} to same-host:
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Same-host redirecting to subdomain images are strictly same-site");
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Subdomain redirecting to subdomain images are strictly same-site");
create_test(SECURE_SUBDOMAIN_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_SUBDOMAIN_ORIGIN), SameSiteStatus.STRICT, "Cross-site redirecting to subdomain images are strictly same-site");
// Redirect from {same-host,subdomain,cross-site} to cross-site:
create_test(SECURE_CROSS_SITE_ORIGIN, redirectTo(SECURE_ORIGIN, SECURE_CROSS_SITE_ORIGIN), SameSiteStatus.CROSS_SITE, "Same-host redirecting to cross-site images are cross-site");
create_test(SECURE_CROSS_SITE_ORIGIN, redirectTo(SECURE_SUBDOMAIN_ORIGIN, SECURE_CROSS_SITE_ORIGIN), SameSiteStatus.CROSS_SITE, "Subdomain redirecting to cross-site images are cross-site");
create_test(SECURE_CROSS_SITE_ORIGIN, redirectTo(SECURE_CROSS_SITE_ORIGIN, SECURE_CROSS_SITE_ORIGIN), SameSiteStatus.CROSS_SITE, "Cross-site redirecting to cross-site images are cross-site");
</script>

View file

@ -9,12 +9,13 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout" title="17.5.2.1 Fixed table layout" />
<link rel="match" href="fixed-table-layout-017-ref.xht" />
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta content="" name="flags" />
<meta content="A column with a percentage width in a 'table-layout: fixed' table can be calculated and predicted when in 'border-collapse: separate' model." name="assert" />
<style type="text/css"><![CDATA[
table, div {font: 1.25em/1 serif;}
table, div {font: 1.25em/1 Ahem;}
table
{

View file

@ -9,12 +9,13 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout" title="17.5.2.1 Fixed table layout" />
<link rel="match" href="fixed-table-layout-017-ref.xht" />
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta content="" name="flags" />
<meta content="A column with a percentage width in a 'table-layout: fixed' table can be calculated and predicted when in 'border-collapse: separate' model." name="assert" />
<style type="text/css"><![CDATA[
table, div {font: 1.25em/1 serif;}
table, div {font: 1.25em/1 Ahem;}
table
{

View file

@ -9,12 +9,13 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout" title="17.5.2.1 Fixed table layout" />
<link rel="match" href="fixed-table-layout-017-ref.xht" />
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta content="" name="flags" />
<meta content="A column with a percentage width in a 'table-layout: fixed' table can be calculated and predicted when in 'border-collapse: separate' model." name="assert" />
<style type="text/css"><![CDATA[
table, div {font: 1.25em/1 serif;}
table, div {font: 1.25em/1 Ahem;}
table
{

View file

@ -9,12 +9,13 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout" title="17.5.2.1 Fixed table layout" />
<link rel="match" href="fixed-table-layout-017-ref.xht" />
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta content="" name="flags" />
<meta content="A column with a percentage width in a 'table-layout: fixed' table can be calculated, predicted, rendered." name="assert" />
<style type="text/css"><![CDATA[
table, div {font: 1.25em/1 serif;}
table, div {font: 1.25em/1 Ahem;}
table
{

View file

@ -9,12 +9,13 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout" title="17.5.2.1 Fixed table layout" />
<link rel="match" href="fixed-table-layout-021-ref.xht" />
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta content="" name="flags" />
<meta content="A column with a percentage width in a 'table-layout: fixed' table can be calculated, predicted, rendered." name="assert" />
<style type="text/css"><![CDATA[
table, div {font: 1.25em/1 serif;}
table, div {font: 1.25em/1 Ahem;}
table
{
@ -150,19 +151,19 @@
<col></col>
<tr>
<td id="first-cell">1st</td>
<td id="second-cell">2nd</td>
<td id="third-cell">3rd</td>
<td id="first-cell">1</td>
<td id="second-cell">2</td>
<td id="third-cell">3</td>
<td></td>
</tr>
</table>
<div id="reference1st">ref</div>
<div id="reference1st">r</div>
<div id="reference2nd">ref</div>
<div id="reference2nd">r</div>
<div id="reference3rd">ref</div>
<div id="reference3rd">r</div>
</body>
</html>

View file

@ -9,12 +9,13 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout" title="17.5.2.1 Fixed table layout" />
<link rel="match" href="fixed-table-layout-022-ref.xht" />
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta content="" name="flags" />
<meta content="A column with a percentage width in a 'table-layout: fixed' table can be calculated, predicted, rendered." name="assert" />
<style type="text/css"><![CDATA[
table, div {font: 1.25em/1 serif;}
table, div {font: 1.25em/1 Ahem;}
table
{
@ -181,21 +182,21 @@
<col id="fourth"></col>
<tr>
<td id="first-cell">1st</td>
<td id="second-cell">2nd</td>
<td id="third-cell">3rd</td>
<td id="fourth-cell">4th</td>
<td id="first-cell">1</td>
<td id="second-cell">2</td>
<td id="third-cell">3</td>
<td id="fourth-cell">4</td>
</tr>
</table>
<div id="reference1st">ref</div>
<div id="reference1st">r</div>
<div id="reference2nd">ref</div>
<div id="reference2nd">r</div>
<div id="reference3rd">ref</div>
<div id="reference3rd">r</div>
<div id="reference4th">ref</div>
<div id="reference4th">r</div>
</body>
</html>

View file

@ -9,6 +9,7 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<link rel="help" href="http://www.w3.org/TR/CSS21/tables.html#fixed-table-layout" title="17.5.2.1 Fixed table layout" />
<link rel="match" href="fixed-table-layout-023-ref.xht" />
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta content="" name="flags" />
<meta content="A column with a percentage width in a 'table-layout: fixed' table can be calculated, predicted, rendered." name="assert" />
@ -20,7 +21,7 @@
width: 640px;
}
table, div {font: 1.25em/1 serif;}
table, div {font: 1.25em/1 Ahem;}
table
{
@ -187,21 +188,21 @@
<col id="fourth"></col>
<tr>
<td id="first-cell">1st</td>
<td id="second-cell">2nd</td>
<td id="third-cell">3rd</td>
<td id="fourth-cell">4th</td>
<td id="first-cell">1</td>
<td id="second-cell">2</td>
<td id="third-cell">3</td>
<td id="fourth-cell">4</td>
</tr>
</table>
<div id="reference1st">ref</div>
<div id="reference1st">r</div>
<div id="reference2nd">ref</div>
<div id="reference2nd">r</div>
<div id="reference3rd">ref</div>
<div id="reference3rd">r</div>
<div id="reference4th">ref</div>
<div id="reference4th">r</div>
</body>
</html>

View file

@ -0,0 +1 @@
spec: https://drafts.csswg.org/css-color-adjust/

View file

@ -69,6 +69,27 @@ export const writingModes = [
block: "horizontal", inline: "vertical" },
];
// Check if logical properties work well in WebKit non-standard
// '-webkit-writing-mode: horizontal-bt' mode
if (CSS.supports("-webkit-writing-mode", "horizontal-bt")) {
writingModes.push (
{
styles: [
{"-webkit-writing-mode": "horizontal-bt", "direction": "ltr"},
],
blockStart: "bottom", blockEnd: "top", inlineStart: "left", inlineEnd: "right",
over: "top", under: "bottom", lineLeft: "left", lineRight: "right",
block: "vertical", inline: "horizontal" },
{
styles: [
{"-webkit-writing-mode": "horizontal-bt", "direction": "rtl"},
],
blockStart: "bottom", blockEnd: "top", inlineStart: "right", inlineEnd: "left",
over: "top", under: "bottom", lineLeft: "left", lineRight: "right",
block: "vertical", inline: "horizontal" },
)
}
export function testCSSValues(testName, style, expectedValues) {
for (const [property, value] of expectedValues) {
assert_equals(style.getPropertyValue(property), value, `${testName}, ${property}`);

View file

@ -0,0 +1 @@
spec: https://drafts.csswg.org/css-size-adjust/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/custom-state-pseudo-class/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/deprecation-reporting/

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
</head>
<body>
<script>
const check_report_format = ([reports, observer]) => {
const report = reports[0];
assert_equals(report.type, "document-policy-violation");
assert_equals(report.body.featureId, "sync-xhr");
assert_equals(report.body.disposition, "report");
};
promise_test(async t => {
const report = new Promise(resolve => {
new ReportingObserver((reports, observer) => resolve([reports, observer]),
{types: ['document-policy-violation']}).observe();
});
const xhr = new XMLHttpRequest();
xhr.open("GET", document.location.href, false);
xhr.send();
check_report_format(await report);
}, "Sync-xhr report only mode");
</script>
</body>
</html>

View file

@ -0,0 +1 @@
Document-Policy-Report-Only: sync-xhr=?0

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html>
<head>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='../resources/document-policy-report-json.js'></script>
</head>
<body>
<script>
var t = async_test("Sync-xhr Report Format");
var check_report_format = (reports, observer) => {
let report = reports[0];
assert_equals(report.type, "document-policy-violation");
assert_equals(report.url, document.location.href);
assert_equals(report.body.featureId, "sync-xhr");
assert_equals(report.body.sourceFile, document.location.href);
assert_equals(typeof report.body.lineNumber, "number");
assert_equals(typeof report.body.columnNumber, "number");
assert_equals(report.body.disposition, "enforce");
check_report_json(report);
};
new ReportingObserver(t.step_func_done(check_report_format),
{types: ['document-policy-violation']}).observe();
t.step_func(() => {
var xhr = new XMLHttpRequest();
xhr.open("GET", document.location.href, false);
assert_throws_dom('NetworkError',
() => xhr.send(),
"Synchronous XHR.send should throw an exception when disabled");
})();
</script>
</body>
</html>

View file

@ -0,0 +1 @@
Document-Policy: sync-xhr=?0

View file

@ -44,16 +44,36 @@ const actions = [
{
label: "setRangeText()",
action: el => el.setRangeText("newmiddle", el.selectionStart, el.selectionEnd, "select")
},
{
label: "selectionStart out of range",
action: el => el.selectionStart = 1000
},
{
label: "selectionEnd out of range",
action: el => el.selectionEnd = 1000
},
{
label: "setSelectionRange out of range",
action: el => el.setSelectionRange(1000, 2000)
}
];
function initialize(el) {
el.value = "foobar";
el.setSelectionRange(0, 0);
return new Promise(requestAnimationFrame);
}
els.forEach((el) => {
const elLabel = el.localName === "textarea" ? "textarea" : "input type " + el.type;
actions.forEach((action) => {
// promise_test instead of async_test is important because these need to happen in sequence (to test that events
// fire if and only if the selection changes).
promise_test(t => {
promise_test(async t => {
await initialize(el);
const watcher = new EventWatcher(t, el, "select");
const promise = watcher.wait_for("select").then(e => {
@ -92,6 +112,35 @@ els.forEach((el) => {
// step_wait properly timeouts before the whole test collapses
await t.step_wait(() => !element.onselect, "event didn't fire", 200, 10);
}, `${elLabel}: ${action.label} disconnected node`);
// Intentionally still using promise_test, as assert_unreachable does not
// make the test fail inside a listener while t.unreached_func() does.
promise_test(async t => {
const element = el.cloneNode(true);
let fired = false;
element.onselect = () => fired = true;
action.action(element);
assert_false(fired, "the select event must not fire synchronously")
await t.step_wait(() => fired, "event didn't fire", 200, 10);
}, `${elLabel}: ${action.label} event queue`);
promise_test(t => {
const element = el.cloneNode(true);
assert_equals(element.selectionEnd, 0);
element.onselect = () => {
element.onselect = t.unreached_func("the select event must not fire twice");
};
action.action(element);
action.action(element);
return new Promise(resolve => {
t.step_timeout(resolve, 200);
});
}, `${elLabel}: ${action.label} twice in disconnected node (must fire select only once)`);
});
});
</script>

View file

@ -43,7 +43,7 @@ dictionary EventInit {
};
partial interface Window {
[Replaceable] readonly attribute any event; // legacy
[Replaceable] readonly attribute (Event or undefined) event; // legacy
};
[Exposed=(Window,Worker)]

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/intervention-reporting/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/is-input-pending/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/js-self-profiling/

View file

@ -1,2 +1,3 @@
spec: https://w3c.github.io/network-error-logging/
suggested_reviewers:
- dcreager

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/origin-policy/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/page-lifecycle/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/permissions-request/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/permissions-revoke/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/savedata/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/serial/

View file

@ -0,0 +1,24 @@
<svg width="340" height="140"
xmlns="http://www.w3.org/2000/svg"
xmlns:html="http://www.w3.org/1999/xhtml">
<title>Circle coordinates and radius specified by properties</title>
<html:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html"/>
<html:link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1683652"/>
<html:link rel="match" href="circle-ref.svg"/>
<style>
circle {
cx: 204px;
cy: 56px;
r: 5px;
fill: blue;
}
</style>
<circle />
<script><![CDATA[
let circle = document.querySelector("circle");
circle.parentNode.style.display = "none";
circle.getTotalLength();
circle.parentNode.style.display = "";
circle.style.r = "65px";
]]></script>
</svg>

After

Width:  |  Height:  |  Size: 752 B

View file

@ -6,6 +6,7 @@ import abc
import argparse
import json
import logging
import multiprocessing
import os
import platform
import signal
@ -967,11 +968,19 @@ def get_parser():
return parser
class MpContext(object):
def __getattr__(self, name):
return getattr(multiprocessing, name)
def run(config_cls=ConfigBuilder, route_builder=None, mp_context=None, **kwargs):
received_signal = threading.Event()
if mp_context is None:
import multiprocessing as mp_context
if hasattr(multiprocessing, "get_context"):
mp_context = multiprocessing.get_context()
else:
mp_context = MpContext()
with build_config(os.path.join(repo_root, "config.json"),
config_cls=config_cls,

View file

@ -5,12 +5,17 @@ import six
_context = None
class MpContext(object):
def __getattr__(self, name):
return getattr(multiprocessing, name)
def get_context():
global _context
if six.PY2:
return multiprocessing
if _context is None:
_context = multiprocessing.get_context("spawn")
if six.PY2:
_context = MpContext()
else:
_context = multiprocessing.get_context("spawn")
return _context

View file

@ -1,8 +1,11 @@
import multiprocessing
import threading
import sys
from multiprocessing.managers import BaseManager
import pytest
from six import PY3
Stash = pytest.importorskip("wptserve.stash").Stash
@ -63,6 +66,9 @@ class SlowLock(BaseManager):
pass
@pytest.mark.xfail(sys.platform == "win32" or
PY3 and multiprocessing.get_start_method() == "spawn",
reason="https://github.com/web-platform-tests/wpt/issues/16938")
def test_delayed_lock(add_cleanup):
"""Ensure that delays in proxied Lock retrieval do not interfere with
initialization in parallel threads."""
@ -103,6 +109,9 @@ class SlowDict(BaseManager):
pass
@pytest.mark.xfail(sys.platform == "win32" or
PY3 and multiprocessing.get_start_method() == "spawn",
reason="https://github.com/web-platform-tests/wpt/issues/16938")
def test_delayed_dict(add_cleanup):
"""Ensure that delays in proxied `dict` retrieval do not interfere with
initialization in parallel threads."""

View file

@ -1,2 +1,3 @@
spec: https://w3c.github.io/webappsec-trusted-types/dist/spec/
suggested_reviewers:
- mikewest

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/ua-client-hints/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/web-otp/

View file

@ -0,0 +1 @@
spec: https://wicg.github.io/webhid/

View file

@ -0,0 +1 @@
spec: https://w3c.github.io/webrtc-insertable-streams/

View file

@ -0,0 +1 @@
spec: https://w3c.github.io/webrtc-priority/

View file

@ -0,0 +1 @@
spec: https://w3c.github.io/webrtc-svc/

View file

@ -0,0 +1 @@
spec: https://w3c.github.io/webtransport/

View file

@ -0,0 +1 @@
spec: https://immersive-web.github.io/anchors/

View file

@ -0,0 +1 @@
spec: https://immersive-web.github.io/webxr-ar-module/

View file

@ -0,0 +1 @@
spec: https://immersive-web.github.io/webxr-gamepads-module/

View file

@ -0,0 +1 @@
spec: https://immersive-web.github.io/webxr-hand-input/

View file

@ -0,0 +1 @@
spec: https://immersive-web.github.io/hit-test/