mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Auto merge of #28084 - servo-wpt-sync:wpt_update_21-01-2021, r=servo-wpt-sync
Sync WPT with upstream (21-01-2021) Automated downstream sync of changes from upstream as of 21-01-2021. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
500cb865bd
87 changed files with 1591 additions and 227 deletions
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[image-orientation-img-object-fit.html]
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -14,3 +14,21 @@
|
|||
[:state() serialization]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo in simple cases]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo serialization]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo parsing passes]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo and :host()]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo and other pseudo classes]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo and ::part()]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -312,12 +312,21 @@
|
|||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,6 +56,3 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -147,3 +147,117 @@
|
|||
[createImageBitmap with CanvasRenderingContext2D image source.]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector HTMLImageElement source and a value of 0 int resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with a vector HTMLImageElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an OffscreenCanvas source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap SVGImageElement source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an ImageData source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap HTMLImageElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with a vector SVGImageElement source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an ImageBitmap source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an ImageBitmap source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap HTMLImageElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an ImageData source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an OffscreenCanvas source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector SVGImageElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a Blob source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement source and a value of 0 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement from a data URL source and a value between 0 and 1 in resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with a vector SVGImageElement source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap SVGImageElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a Blob source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a Blob source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector HTMLImageElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement from a data URL source and a value of 0 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an ImageBitmap source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an ImageBitmap source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap SVGImageElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement source and a value of 0 int resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an OffscreenCanvas source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector HTMLImageElement source and a value of 0 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an OffscreenCanvas source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap SVGImageElement source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement from a data URL source and a value of 0 int resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an ImageData source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement from a data URL source and a value between 0 and 1 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an ImageData source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector SVGImageElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a Blob source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -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: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -2,75 +2,75 @@
|
|||
[input type search: setRangeText() 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
|
||||
|
||||
[textarea: selectionStart out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: selectionStart a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[textarea: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setSelectionRange() 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 tel: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: select() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type tel: select() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type tel: setRangeText() 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
|
||||
|
||||
[textarea: setSelectionRange() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: setSelectionRange() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[textarea: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: selectionStart a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setSelectionRange out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: select() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type tel: selectionEnd out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[textarea: selectionDirection 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 text: setSelectionRange() 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 text: selectionEnd out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: selectionEnd 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 text: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: selectionStart out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: selectionStart a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[script-onerror-insertion-point-2.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,4 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
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
|
||||
|
||||
|
|
|
@ -557,3 +557,9 @@
|
|||
[X SNR (-192.20062600601898 dB) is not greater than or equal to 65.737. Got -192.20062600601898.]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (-625.6872986351187 dB) is not greater than or equal to 65.737. Got -625.6872986351187.]
|
||||
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\]\t2.8580460955235994e+33\t9.3139332532882690e-1\t2.8580460955235994e+33\t3.0685705145187411e+33\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 2.8580460955235994e+33 at index of 28696.\n\tMax RelError of 3.0685705145187411e+33 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -152906,6 +152906,45 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"grid-content-distribution-026.html": [
|
||||
"b56d6384379141e9deb8dddae9d59a4beaf3a614",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-content-distribution-027.html": [
|
||||
"f92ed520d0368d905146aae0da6fd66d9a7a082e",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-content-distribution-028.html": [
|
||||
"216b05a4d6c89dbe888caaeeff45818dec1ca537",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square-only.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-content-distribution-with-collapsed-tracks-001.html": [
|
||||
"ebd169cf5913112ef7c9c1fa02cdb2115ceef605",
|
||||
[
|
||||
|
@ -159172,6 +159211,35 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"image-orientation-img-object-fit.html": [
|
||||
"5551eb938455a3f56e2860c9d2af24dde12e1b98",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-images/image-orientation/reference/image-orientation-img-object-fit-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{
|
||||
"fuzzy": [
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
0,
|
||||
5
|
||||
],
|
||||
[
|
||||
0,
|
||||
375
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"image-orientation-list-style-image.html": [
|
||||
"ac735626dbd1ec8a0743cf480bddc40d85e93149",
|
||||
[
|
||||
|
@ -180895,7 +180963,7 @@
|
|||
]
|
||||
],
|
||||
"intrinsic-size-004.html": [
|
||||
"06fe0e58706059e48dc0c6f966aa9e2d4c59dd96",
|
||||
"fe1a4d7a5deb596600c21eae861999593f115de8",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -180972,6 +181040,32 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"intrinsic-size-010.html": [
|
||||
"cf128cabd0507beead7e460844ccb346d7c8ac97",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"intrinsic-size-011.html": [
|
||||
"49bd5cebfd44c1b138ab5f79863d2d315380b8c1",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"percentage-resolution-001.html": [
|
||||
"d606bfc65e340f95fbbc355b764a7de5e7aeb6a1",
|
||||
[
|
||||
|
@ -181428,7 +181522,7 @@
|
|||
]
|
||||
],
|
||||
"table-element-001.html": [
|
||||
"fd2dcd81dd90c6d82a3652750cea2370979aff7a",
|
||||
"51daf00957ee4a36ea5564831df4ea365233fa90",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -183739,6 +183833,23 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"tentative": {
|
||||
"paint": {
|
||||
"background-image-column-collapsed.html": [
|
||||
"6e6ae7a82cfd04c09989dcea682744eb79e982a7",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-tables/tentative/paint/background-image-column-collapsed-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"toggle-row-display-property-001.html": [
|
||||
"08e6635e12c42a4201ca955722227010834883e8",
|
||||
[
|
||||
|
@ -244472,6 +244583,84 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-42.html": [
|
||||
"9d4cfadcc0b1c018d3e98bee81b208634f47919f",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/forced-colors-mode/forced-colors-mode-42-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-43.html": [
|
||||
"9b8c164908ea02a0693a4714024751fc7e2c1e46",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/forced-colors-mode/forced-colors-mode-43-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-44.html": [
|
||||
"4526e19550e069cdfd2f8f57bec80b0138360554",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/forced-colors-mode/forced-colors-mode-44-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-45.html": [
|
||||
"e667b8291417cfef3545c71d92f27ee5d35f2eee",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/forced-colors-mode/forced-colors-mode-45-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-46.html": [
|
||||
"6fd50a37156a8f361ec4a7466b7cd4c1d4fbd0ca",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/forced-colors-mode/forced-colors-mode-46-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-47.html": [
|
||||
"b5eb912d6bb1c98533b1834d085edef58e31ef84",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/forced-colors-mode/forced-colors-mode-47-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"html": {
|
||||
|
@ -251707,6 +251896,19 @@
|
|||
]
|
||||
},
|
||||
"scripts": {
|
||||
"mover-accent-dynamic-change.html": [
|
||||
"7cb0d05035ac7958b71afb5d8e6d0dd279847107",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/mathml/presentation-markup/scripts/mover-accent-dynamic-change-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subsup-legacy-scriptshift-attributes-001.tentative.html": [
|
||||
"532271dbe049cbc12ced9f751a9099ec2a3bd220",
|
||||
[
|
||||
|
@ -262827,7 +263029,7 @@
|
|||
],
|
||||
"security-features": {
|
||||
"README.md": [
|
||||
"fb9a2f108f9faf68bb86f0bd9f848dbd28630ca4",
|
||||
"f957541f75ecc37416895d6bc19d1c229c0f71b8",
|
||||
[]
|
||||
],
|
||||
"__init__.py": [
|
||||
|
@ -315052,6 +315254,10 @@
|
|||
"a9e9b3fbe308329defb6ecd6612eb10ff07cba13",
|
||||
[]
|
||||
],
|
||||
"image-orientation-img-object-fit-ref.html": [
|
||||
"0d84291e8a592395de745f4cec7635de0e381427",
|
||||
[]
|
||||
],
|
||||
"image-orientation-list-style-image-ref.html": [
|
||||
"8dcef6a243927f927f9d6e42709959f265332db9",
|
||||
[]
|
||||
|
@ -320603,6 +320809,12 @@
|
|||
[]
|
||||
],
|
||||
"tentative": {
|
||||
"paint": {
|
||||
"background-image-column-collapsed-ref.html": [
|
||||
"b3b1ce9ff37d19c2d43851399d22f299cb1608cf",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"support": {
|
||||
"README": [
|
||||
"67e87ca8916c94045f6d55238d387d5571fd694a",
|
||||
|
@ -337943,7 +338155,7 @@
|
|||
[]
|
||||
],
|
||||
"window-tests-enumeration.js": [
|
||||
"6b694044640a5ad7fedfd0f221dd6a6881e79a71",
|
||||
"29bb581bd3dacf465966601466c6923025ba3145",
|
||||
[]
|
||||
]
|
||||
}
|
||||
|
@ -338799,6 +339011,30 @@
|
|||
"df6de6eda257ecb027b8d861cfe3cb2a5ab3ccce",
|
||||
[]
|
||||
],
|
||||
"forced-colors-mode-42-ref.html": [
|
||||
"7133c893cea0a1bbd24dace91a5bf7bf342ade44",
|
||||
[]
|
||||
],
|
||||
"forced-colors-mode-43-ref.html": [
|
||||
"0b98661896f6af563d4eeaf525b74bab09e6bdbc",
|
||||
[]
|
||||
],
|
||||
"forced-colors-mode-44-ref.html": [
|
||||
"46398de8829733e8c476298689eb1326dff15a36",
|
||||
[]
|
||||
],
|
||||
"forced-colors-mode-45-ref.html": [
|
||||
"c7d535c5278837fad2216965ec19b2244a392337",
|
||||
[]
|
||||
],
|
||||
"forced-colors-mode-46-ref.html": [
|
||||
"55259f7f7a5cf0fc24324e29ff5097420d88ca45",
|
||||
[]
|
||||
],
|
||||
"forced-colors-mode-47-ref.html": [
|
||||
"827cf86b238a33eb71781936927ba1e94d7f8615",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"float-image.jpg": [
|
||||
"ab06d5f94d16e22bb08fad79d6fef662b2a7de5a",
|
||||
|
@ -352240,7 +352476,7 @@
|
|||
[]
|
||||
],
|
||||
"appmanifest.idl": [
|
||||
"8d701371f85e7cc5af9d6c3447d6577b3c746381",
|
||||
"e3117265450c2920212607575c8c1ba27c36596d",
|
||||
[]
|
||||
],
|
||||
"audio-output.idl": [
|
||||
|
@ -353459,6 +353695,10 @@
|
|||
]
|
||||
},
|
||||
"scripts": {
|
||||
"mover-accent-dynamic-change-ref.html": [
|
||||
"a4f16aa07f969e43dee4be45c48f7252e5c109ca",
|
||||
[]
|
||||
],
|
||||
"subsup-legacy-scriptshift-attributes-001.tentative-ref.html": [
|
||||
"c1bf2e46954ee28d260371fb4fb981e9030e3051",
|
||||
[]
|
||||
|
@ -363438,7 +363678,7 @@
|
|||
[]
|
||||
],
|
||||
"install_chrome.yml": [
|
||||
"fd650e80aaad309c8e983274d2b823bba91b1fb1",
|
||||
"9ccdc49ba0ee1fa4382cf5e06c98a1498938a339",
|
||||
[]
|
||||
],
|
||||
"install_edge.yml": [
|
||||
|
@ -363446,7 +363686,7 @@
|
|||
[]
|
||||
],
|
||||
"install_firefox.yml": [
|
||||
"de6d0335f221f6d2215ebdc8ef5d2ee269fdfdf3",
|
||||
"7b8c7be05fee9bc6d6db9609a21a71b8cc93b26a",
|
||||
[]
|
||||
],
|
||||
"install_fonts.yml": [
|
||||
|
@ -363458,7 +363698,7 @@
|
|||
[]
|
||||
],
|
||||
"install_safari.yml": [
|
||||
"6c1b562d411a2aeecc30d3fbc1aed6362f3526e5",
|
||||
"1636b8e747432d7f0162879e868016df99d7d256",
|
||||
[]
|
||||
],
|
||||
"pip_install.yml": [
|
||||
|
@ -373378,6 +373618,10 @@
|
|||
[]
|
||||
],
|
||||
"resources": {
|
||||
"cross-origin-no-cors.har": [
|
||||
"96d0b4e453eab96d8fa1f9be1f6a880adb0f4c7c",
|
||||
[]
|
||||
],
|
||||
"cross-origin.har": [
|
||||
"7435393b13b1f640b0a1911e05456833febf7e8e",
|
||||
[]
|
||||
|
@ -373427,7 +373671,7 @@
|
|||
]
|
||||
},
|
||||
"generate-test-wbns.sh": [
|
||||
"6683cb0dd84ebb059d26f26bdea5c7f4c05e08fc",
|
||||
"0caef325d1f03846792094e2535c84daf8bf4516",
|
||||
[]
|
||||
],
|
||||
"location": {
|
||||
|
@ -373559,6 +373803,12 @@
|
|||
"1f9278148313ad4b401a1025b5396a5b9bd60ff3",
|
||||
[]
|
||||
],
|
||||
"no-cors": {
|
||||
"cross-origin.wbn": [
|
||||
"b2adba654513322fde9b3a993ede4ea73ad898f3",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"path-restriction.wbn": [
|
||||
"e861469e122afd141bcec8d394a0d4504898208c",
|
||||
[]
|
||||
|
@ -406407,7 +406657,7 @@
|
|||
]
|
||||
],
|
||||
"CSS-supports-CSSStyleDeclaration.html": [
|
||||
"fd013b95e8af97da3772fc5b9978c0082c57cdb2",
|
||||
"3a9786c510dedc80cf7a5af143960fbeb7a09371",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -418526,7 +418776,7 @@
|
|||
],
|
||||
"height-distribution": {
|
||||
"computing-row-measure-0.html": [
|
||||
"ba8bf73429ff3a74d3105ad842d15e4d44d403fc",
|
||||
"ebaab2c359d4ddaf0b8179d35ca58b4868ea9f8d",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -430765,7 +431015,7 @@
|
|||
]
|
||||
],
|
||||
"state-pseudo-class.html": [
|
||||
"9a810b6b000c31b9521c205b65002e2c6205bccf",
|
||||
"966dd1c9a79a9f1f2ae910d58afa1f8efa2e1044",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -458678,6 +458928,15 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"font_access-chooser-selection.tentative.manual.https.html": [
|
||||
"73d0e7938efad2b8cb462e67612f9e5505af3693",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"font_access-chooser.tentative.manual.https.html": [
|
||||
"8f623daa0b86c1af6141fee0cf8a8783559f2b16",
|
||||
[
|
||||
|
@ -458765,14 +459024,14 @@
|
|||
]
|
||||
],
|
||||
"forced-colors-mode-40.html": [
|
||||
"07316bda24610f87d0735a4835f865d176396d0d",
|
||||
"481492d72e917a5b235b1aa55818519232ef32c1",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-41.html": [
|
||||
"ddb747d08186ede841356867657d8e3941b008a8",
|
||||
"cf2c527be97458a9b6ccebd62b9ad4d703c90ec9",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -466252,7 +466511,7 @@
|
|||
]
|
||||
],
|
||||
"createImageBitmap-invalid-args.html": [
|
||||
"3330cfb9189d42e43d79caf9669b5c05d5620379",
|
||||
"74ca9a853e66591b5f043b3e9ea74346f985f7b5",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -503075,7 +503334,7 @@
|
|||
]
|
||||
},
|
||||
"scriptlevel-001.html": [
|
||||
"f91635b73879255422f3df613a40eac1df81f80b",
|
||||
"11ad68d818829e2fe63510560b6d56ff39d833a8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -512703,6 +512962,15 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"removed-from-document.html": [
|
||||
"2c363a0eec69de8c822415e1c51f796fd5d0cebf",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"request-picture-in-picture-twice.html": [
|
||||
"c1369ee8c3c1df2adf51210ff0031fa2eac14642",
|
||||
[
|
||||
|
@ -530368,7 +530636,7 @@
|
|||
]
|
||||
],
|
||||
"claim-worker-fetch.https.html": [
|
||||
"389d001f31e2e9791198029c5e9877de5395e234",
|
||||
"7cb26c742b97d3d768e01ec09adb1ceeca99dc86",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -549582,7 +549850,7 @@
|
|||
]
|
||||
],
|
||||
"subresource-loading-cross-origin.tentative.html": [
|
||||
"3991aef2c40ccfa6c82eee09e76e9b42e16c8cf5",
|
||||
"b0072ddb1f6b19f5571b22ef35892ffd1d6db0a7",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[image-orientation-img-object-fit.html]
|
||||
expected: FAIL
|
|
@ -1,4 +0,0 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[elementsFromPoint-invalid-cases.html]
|
||||
[The root element is the last element returned for otherwise empty queries within the viewport]
|
||||
expected: FAIL
|
||||
|
|
@ -14,3 +14,21 @@
|
|||
[:state() serialization]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo in simple cases]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo serialization]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo parsing passes]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo and :host()]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo and other pseudo classes]
|
||||
expected: FAIL
|
||||
|
||||
[:--foo and ::part()]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -312,12 +312,21 @@
|
|||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,6 +56,3 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -147,3 +147,117 @@
|
|||
[createImageBitmap with CanvasRenderingContext2D image source.]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector HTMLImageElement source and a value of 0 int resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with a vector HTMLImageElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an OffscreenCanvas source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap SVGImageElement source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an ImageData source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap HTMLImageElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with a vector SVGImageElement source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an ImageBitmap source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an ImageBitmap source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap HTMLImageElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an ImageData source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an OffscreenCanvas source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector SVGImageElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a Blob source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement source and a value of 0 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement from a data URL source and a value between 0 and 1 in resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with a vector SVGImageElement source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap SVGImageElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a Blob source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a Blob source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector HTMLImageElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement from a data URL source and a value of 0 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an ImageBitmap source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an ImageBitmap source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap SVGImageElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement source and a value between 0 and 1 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement source and a value of 0 int resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an OffscreenCanvas source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector HTMLImageElement source and a value of 0 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an OffscreenCanvas source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a bitmap SVGImageElement source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement from a data URL source and a value of 0 int resizeWidth]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an ImageData source and a value between 0 and 1 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with an HTMLVideoElement from a data URL source and a value between 0 and 1 in resizeHeight]
|
||||
expected: FAIL
|
||||
|
||||
[createImageBitmap with an ImageData source and a value of 0 int resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a vector SVGImageElement source and a value between 0 and 1 in resizeWidth]
|
||||
expected: NOTRUN
|
||||
|
||||
[createImageBitmap with a Blob source and a value of 0 in resizeHeight]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -7,10 +6,10 @@
|
|||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -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: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -2,75 +2,75 @@
|
|||
[input type search: setRangeText() 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
|
||||
|
||||
[textarea: selectionStart out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: selectionStart a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[textarea: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setSelectionRange() 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 tel: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: select() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type tel: select() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: setSelectionRange out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type tel: setRangeText() 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
|
||||
|
||||
[textarea: setSelectionRange() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: setSelectionRange() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[textarea: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: setRangeText() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: selectionStart a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type url: setSelectionRange out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: select() a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type tel: selectionEnd out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type text: selectionEnd a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[textarea: selectionDirection 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 text: setSelectionRange() 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 text: selectionEnd out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: selectionEnd 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 text: selectionDirection a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type password: selectionStart out of range a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
[input type search: selectionStart a second time (must not fire select)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[script-onerror-insertion-point-2.html]
|
||||
expected: TIMEOUT
|
|
@ -0,0 +1,4 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
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
|
||||
|
||||
|
|
|
@ -785,3 +785,9 @@
|
|||
[X SNR (-192.20062600601898 dB) is not greater than or equal to 65.737. Got -192.20062600601898.]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (-625.6872986351187 dB) is not greater than or equal to 65.737. Got -625.6872986351187.]
|
||||
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\]\t2.8580460955235994e+33\t9.3139332532882690e-1\t2.8580460955235994e+33\t3.0685705145187411e+33\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 2.8580460955235994e+33 at index of 28696.\n\tMax RelError of 3.0685705145187411e+33 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -278,9 +278,9 @@ The ```excluded_tests``` section have objects with the same format as [Test Expa
|
|||
|
||||
Taking the spec JSON, the generator follows this algorithm:
|
||||
|
||||
* Expand all ```excluded_tests``` to create a blacklist of selections
|
||||
* Expand all ```excluded_tests``` to create a denylist of selections
|
||||
|
||||
* For each `specification` entries: Expand the ```test_expansion``` pattern into selections and check each against the blacklist, if not marked as suppresed, generate the test resources for the selection
|
||||
* For each `specification` entries: Expand the ```test_expansion``` pattern into selections and check each against the denylist, if not marked as suppresed, generate the test resources for the selection
|
||||
|
||||
### SourceContext Resolution
|
||||
|
||||
|
|
|
@ -612,6 +612,7 @@ const properties = [
|
|||
"shape-rendering",
|
||||
"size",
|
||||
"speak",
|
||||
"speak-as",
|
||||
"src",
|
||||
"stop-color",
|
||||
"stop-opacity",
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-content-space-evenly">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
|
||||
<meta name="assert" content="The fallback alignment for 'space-evenly' should be 'center'.">
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div style="display: grid; width: 50px; height: 50px; align-content: space-evenly; justify-content: space-evenly;">
|
||||
<div style="width: 100px; height: 100px; background: green; position: relative; top: 25px; left: 25px;"></div>
|
||||
</div>
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-content-space-around">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
|
||||
<meta name="assert" content="The fallback alignment for 'space-around' should be 'center'.">
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div style="display: grid; width: 50px; height: 50px; align-content: space-around; justify-content: space-around;">
|
||||
<div style="width: 100px; height: 100px; background: green; position: relative; top: 25px; left: 25px;"></div>
|
||||
</div>
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-align-content-space-between">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
|
||||
<meta name="assert" content="The fallback alignment for 'space-between' should be 'start'.">
|
||||
<p>Test passes if there is a filled green square.</p>
|
||||
<div style="display: grid; width: 50px; height: 50px; align-content: space-between; justify-content: space-between;">
|
||||
<div style="width: 100px; height: 100px; background: green;"></div>
|
||||
</div>
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Images Module Level 3: image-orientation: from-image</title>
|
||||
<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
|
||||
<link rel="match" href="reference/image-orientation-img-object-fit-ref.html">
|
||||
<meta name=fuzzy content="0-5;0-375">
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden;
|
||||
image-orientation: from-image;
|
||||
}
|
||||
img {
|
||||
position: absolute;
|
||||
vertical-align: top;
|
||||
}
|
||||
.cover {
|
||||
object-fit: cover;
|
||||
top: 10px;
|
||||
}
|
||||
.contain {
|
||||
object-fit: contain;
|
||||
top: 150px;
|
||||
}
|
||||
.wide {
|
||||
width: 100px;
|
||||
height: 50px;
|
||||
left: 10px;
|
||||
}
|
||||
.tall {
|
||||
width: 50px;
|
||||
height: 100px;
|
||||
left: 150px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img class="cover wide" src="support/exif-orientation-5-lu.jpg"/>
|
||||
<img class="cover tall" src="support/exif-orientation-5-lu.jpg"/>
|
||||
<img class="contain wide" src="support/exif-orientation-5-lu.jpg"/>
|
||||
<img class="contain tall" src="support/exif-orientation-5-lu.jpg"/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Images Module Level 3: image-orientation: from-image</title>
|
||||
<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-images-3/#propdef-image-orientation">
|
||||
<style>
|
||||
body {
|
||||
overflow: hidden;
|
||||
image-orientation: from-image;
|
||||
}
|
||||
img {
|
||||
position: absolute;
|
||||
vertical-align: top;
|
||||
}
|
||||
.cover {
|
||||
object-fit: cover;
|
||||
top: 10px;
|
||||
}
|
||||
.contain {
|
||||
object-fit: contain;
|
||||
top: 150px;
|
||||
}
|
||||
.wide {
|
||||
width: 100px;
|
||||
height: 50px;
|
||||
left: 10px;
|
||||
}
|
||||
.tall {
|
||||
width: 50px;
|
||||
height: 100px;
|
||||
left: 150px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<img class="cover wide" src="../support/exif-orientation-5-lu-pre-rotated.jpg"/>
|
||||
<img class="cover tall" src="../support/exif-orientation-5-lu-pre-rotated.jpg"/>
|
||||
<img class="contain wide" src="../support/exif-orientation-5-lu-pre-rotated.jpg"/>
|
||||
<img class="contain tall" src="../support/exif-orientation-5-lu-pre-rotated.jpg"/>
|
||||
</body>
|
||||
</html>
|
|
@ -2,13 +2,11 @@
|
|||
<title>CSS aspect-ratio: min-content size keyword</title>
|
||||
<link rel="author" title="Google LLC" href="https://www.google.com/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5032">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<!-- This is still under discussion in https://github.com/w3c/csswg-drafts/issues/5032
|
||||
but this testcase tests the likely outcome. -->
|
||||
|
||||
<div style="height: 100px; width: min-content; aspect-ratio: 1/1; background: green;"></div>
|
||||
|
||||
|
||||
<div style="height: 50px; width: min-content; aspect-ratio: 2/1; background: green;"></div>
|
||||
<!-- min-content in the block axis is treated as auto -->
|
||||
<div style="height: min-content; width: 100px; aspect-ratio: 2/1; background: green;"></div>
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS aspect-ratio: min-content size keyword together with min-size</title>
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio-minimum">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5032">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
|
||||
<style>
|
||||
.target {
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<!-- The tests below are based on the discussion:
|
||||
https://github.com/w3c/csswg-drafts/issues/5032#issuecomment-655637111 -->
|
||||
|
||||
<!-- `min-width:auto` takes the content size into account.
|
||||
`width: min-content` is resolved as 25px (= 25px * 1), and the content size
|
||||
is 100px, so the final width should be max(25px, 100px) = 100px. -->
|
||||
<div class="target" style="height: 25px; width: min-content; min-width: auto; aspect-ratio: 1/1;">
|
||||
<div style="width: 100px;"></div>
|
||||
</div>
|
||||
<!-- `min-width:min-content` doesn't take the content size into account.
|
||||
`width:auto` is resolved as 100px (= 25px * 4), and it shouldn't be
|
||||
floored by the content size (i.e. 150px), so the final width is 100px. -->
|
||||
<div class= "target" style="height: 25px; width: auto; min-width: min-content; aspect-ratio: 4/1;">
|
||||
<div style="width: 150px;"></div>
|
||||
</div>
|
||||
|
||||
<!-- `min-height:auto` takes the content size into account.
|
||||
`height: min-content` is resolved as 10px (= 100px / 10), and the content
|
||||
size is 25px, so the final height should be max(10px, 25px) = 25px. -->
|
||||
<div class="target" style="height: min-content; min-height: auto; width: 100px; aspect-ratio: 10/1;">
|
||||
<div style="height: 25px;"></div>
|
||||
</div>
|
||||
<!-- `min-height:min-content` doesn't take content size into account.
|
||||
`height:auto` is resolved as 25px (= 100px / 4), and it shouldn't be
|
||||
floored by the content size (i.e. 50px), so the final height is 25px. -->
|
||||
<div class="target" style="height: auto; min-height: min-content; width: 100px; aspect-ratio: 4/1;">
|
||||
<div style="height: 50px;"></div>
|
||||
</div>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS aspect-ratio: fit-content size keyword</title>
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#valdef-width-fit-content">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5032">
|
||||
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
|
||||
<style>
|
||||
div {
|
||||
background: green;
|
||||
aspect-ratio: 2/1;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
|
||||
<div style="height: 50px; width: -moz-fit-content; width: fit-content;"></div>
|
||||
<!-- fit-content in the block axis is treated as auto -->
|
||||
<div style="height: -moz-fit-content; height: fit-content; width: 100px;"></div>
|
|
@ -19,6 +19,7 @@ th, td {
|
|||
<tr>
|
||||
<th style='background: green; width: 100px; aspect-ratio: 1/1;'></th>
|
||||
<td style='background: red; height: 50px; aspect-ratio: 4/1;'></td>
|
||||
<td style='background: red; height: 50px; min-width: min-content; aspect-ratio: 4/1;'></td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- aspect-ratio should apply to the table element -->
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
[
|
||||
"Checking intermediate min-content height for span 1 (2)",
|
||||
document.getElementById('two').offsetHeight,
|
||||
1
|
||||
10
|
||||
],
|
||||
[
|
||||
"Checking intermediate min-content height for span 1 (3)",
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
<!doctype html>
|
||||
<style>
|
||||
body {
|
||||
--peek: LightGreen;
|
||||
}
|
||||
.bg {
|
||||
background-color: var(--peek);
|
||||
background-image: linear-gradient(90deg, orange 0px, orange 10px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 170px, blue 170px);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 50px 200px;
|
||||
}
|
||||
main * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.td {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
position:absolute;
|
||||
}
|
||||
</style>
|
||||
|
||||
<main>
|
||||
<div style="position: relative;border: 10px solid transparent; width:210px; height: 210px">
|
||||
<div class="td bg" style="top:-5px;left:-5px;height:200px"></div>
|
||||
<div class="td bg" style="top:-5px;left:45px;height:200px"></div>
|
||||
<div class="td" style="background:var(--peek); height:100px; left:95px;top:45px"></div>
|
||||
<div class="td bg" style="top:-5px;left:145px;height:200px;width:100px;background-size: 100px 200px"></div>
|
||||
</div>
|
||||
|
||||
</main>
|
|
@ -0,0 +1,68 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Table collapsed column background image geometry</title>
|
||||
<link rel="author" title="Aleks Totic" href="atotic@chromium.org" />
|
||||
<link rel="help" href="https://www.w3.org/TR/css-tables-3/#drawing-backgrounds-and-borders" />
|
||||
<link rel="match" href="background-image-column-collapsed-ref.html" />
|
||||
<style>
|
||||
body {
|
||||
--peek: LightGreen;
|
||||
}
|
||||
.bg {
|
||||
background-color: var(--peek);
|
||||
background-image: linear-gradient(90deg, orange 0px, orange 10px, gainsboro 3px, gainsboro 25%, rgba(160,160,160,0.5) 25%, rgba(160,160,160,0.5) 50%, silver 50%, silver 75%, darkgray 75%, darkgray 170px, blue 170px);
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
main * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
main table {
|
||||
border-spacing: 10px;
|
||||
border: 10px solid transparent;
|
||||
padding: 10px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
main table:hover {
|
||||
border: 10px solid yellow;
|
||||
}
|
||||
main td {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
padding: 0px;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<main>
|
||||
<table>
|
||||
<col class="bg">
|
||||
<col class="bg">
|
||||
<col>
|
||||
<colgroup class="bg" span="2">
|
||||
<tr>
|
||||
<td rowspan=4></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan=2 colspan=2></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</main>
|
||||
</body>
|
|
@ -5,13 +5,13 @@
|
|||
#state-and-part::part(inner) {
|
||||
opacity: 0;
|
||||
}
|
||||
#state-and-part::part(inner):state(innerFoo) {
|
||||
#state-and-part::part(inner):--innerFoo {
|
||||
opacity: 0.5;
|
||||
}
|
||||
#state-and-part:state(outerFoo)::part(inner) {
|
||||
#state-and-part:--outerFoo::part(inner) {
|
||||
opacity: 0.25;
|
||||
}
|
||||
:state( \(escaped\ state ) {}
|
||||
:--\(escaped\ state {}
|
||||
</style>
|
||||
<body>
|
||||
<script>
|
||||
|
@ -37,7 +37,7 @@ class ContainerElement extends HTMLElement {
|
|||
:host {
|
||||
border-style: solid;
|
||||
}
|
||||
:host(:state(dotted)) {
|
||||
:host(:--dotted) {
|
||||
border-style: dotted;
|
||||
}
|
||||
</style>
|
||||
|
@ -54,36 +54,38 @@ class ContainerElement extends HTMLElement {
|
|||
customElements.define('container-element', ContainerElement);
|
||||
|
||||
test(() => {
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':state'); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':state('); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':state()'); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':state(=)'); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':state(name=value)'); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':state( foo bar)'); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':state(16px)'); });
|
||||
}, ':state() parsing failures');
|
||||
document.querySelector(':--');
|
||||
document.querySelector(':--16px');
|
||||
}, ':--foo parsing passes');
|
||||
|
||||
test(() => {
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':--('); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':--)'); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':--='); });
|
||||
assert_throws_dom('SyntaxError', () => { document.querySelector(':--name=value'); });
|
||||
}, ':--foo parsing failures');
|
||||
|
||||
test(() => {
|
||||
assert_equals(document.styleSheets[0].cssRules[1].cssText,
|
||||
'#state-and-part::part(inner):state(innerFoo) { opacity: 0.5; }');
|
||||
'#state-and-part::part(inner):--innerFoo { opacity: 0.5; }');
|
||||
assert_equals(document.styleSheets[0].cssRules[3].selectorText,
|
||||
':state(\\(escaped\\ state)');
|
||||
}, ':state() serialization');
|
||||
':--\\(escaped\\ state');
|
||||
}, ':--foo serialization');
|
||||
|
||||
test(() => {
|
||||
let element = new TestElement();
|
||||
let states = element.i.states;
|
||||
|
||||
assert_false(element.matches(':state(foo)'));
|
||||
assert_true(element.matches(':not(:state(foo))'));
|
||||
states.add('foo');
|
||||
assert_true(element.matches(':state(foo)'));
|
||||
assert_true(element.matches(':is(:state(foo))'));
|
||||
assert_false(element.matches(':--foo'));
|
||||
assert_true(element.matches(':not(:--foo)'));
|
||||
states.add('--foo');
|
||||
assert_true(element.matches(':--foo'));
|
||||
assert_true(element.matches(':is(:--foo)'));
|
||||
element.classList.add('c1', 'c2');
|
||||
assert_true(element.matches('.c1:state(foo)'));
|
||||
assert_true(element.matches(':state(foo).c1'));
|
||||
assert_true(element.matches('.c2:state(foo).c1'));
|
||||
}, ':state() in simple cases');
|
||||
assert_true(element.matches('.c1:--foo'));
|
||||
assert_true(element.matches(':--foo.c1'));
|
||||
assert_true(element.matches('.c2:--foo.c1'));
|
||||
}, ':--foo in simple cases');
|
||||
|
||||
test(() => {
|
||||
let element = new TestElement();
|
||||
|
@ -92,10 +94,10 @@ test(() => {
|
|||
element.focus();
|
||||
let states = element.i.states;
|
||||
|
||||
states.value = 'foo';
|
||||
assert_true(element.matches(':focus:state(foo)'));
|
||||
assert_true(element.matches(':state(foo):focus'));
|
||||
}, ':state() and other pseudo classes');
|
||||
states.value = '--foo';
|
||||
assert_true(element.matches(':focus:--foo'));
|
||||
assert_true(element.matches(':--foo:focus'));
|
||||
}, ':--foo and other pseudo classes');
|
||||
|
||||
test(() => {
|
||||
let outer = new ContainerElement();
|
||||
|
@ -104,26 +106,26 @@ test(() => {
|
|||
let inner = outer.innerElement;
|
||||
let innerStates = inner.i.states;
|
||||
|
||||
innerStates.add('innerFoo');
|
||||
innerStates.add('--innerFoo');
|
||||
assert_equals(getComputedStyle(inner).opacity, '0.5',
|
||||
'::part() followed by :state()');
|
||||
innerStates.replace('innerFoo', 'innerfoo');
|
||||
'::part() followed by :--foo');
|
||||
innerStates.replace('--innerFoo', '--innerfoo');
|
||||
assert_equals(getComputedStyle(inner).opacity, '0',
|
||||
':state() matching should be case-sensitive');
|
||||
innerStates.remove('innerfoo');
|
||||
':--foo matching should be case-sensitive');
|
||||
innerStates.remove('--innerfoo');
|
||||
|
||||
outer.i.states.add('outerFoo');
|
||||
outer.i.states.add('--outerFoo');
|
||||
assert_equals(getComputedStyle(inner).opacity, '0.25',
|
||||
':state() followed by ::part()');
|
||||
}, ':state() and ::part()');
|
||||
':--foo followed by ::part()');
|
||||
}, ':--foo and ::part()');
|
||||
|
||||
test(() => {
|
||||
let outer = new ContainerElement();
|
||||
document.body.appendChild(outer);
|
||||
|
||||
assert_equals(getComputedStyle(outer).borderStyle, 'solid');
|
||||
outer.i.states.toggle('dotted');
|
||||
outer.i.states.toggle('--dotted');
|
||||
assert_equals(getComputedStyle(outer).borderStyle, 'dotted');
|
||||
}, ':state() and :host()');
|
||||
}, ':--foo and :host()');
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
<!doctype html>
|
||||
<title>Local Font Access: Chooser</title>
|
||||
<meta charset=utf-8>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="resources/test-expectations.js"></script>
|
||||
|
||||
<script>
|
||||
(async () => {
|
||||
await new Promise(resolve => {
|
||||
window.addEventListener('DOMContentLoaded', resolve);
|
||||
});
|
||||
|
||||
// Small delay to give chrome's test automation a chance to actually install
|
||||
// itself.
|
||||
await new Promise(resolve => step_timeout(resolve, 100));
|
||||
|
||||
promise_test(async t => {
|
||||
await window.test_driver.bless('show a font chooser.<br />Please select all the fonts that shows up.');
|
||||
// Arial is considered to be web-safe.
|
||||
const fonts = await navigator.fonts.showFontChooser({select: ['ArialMT']});
|
||||
assert_true(Array.isArray(fonts));
|
||||
assert_equals(fonts.length, 1);
|
||||
|
||||
const postscriptName = fonts[0].postscriptName;
|
||||
assert_equals(typeof postscriptName, "string");
|
||||
assert_greater_than(postscriptName.length, 0);
|
||||
}, 'showFontChooser with selection works');
|
||||
|
||||
promise_test(async t => {
|
||||
await window.test_driver.bless('show a font chooser.<br />Please select all the fonts that shows up.');
|
||||
const fonts = await navigator.fonts.showFontChooser({select: []});
|
||||
assert_true(Array.isArray(fonts));
|
||||
assert_greater_than_equal(fonts.length, 1);
|
||||
|
||||
const postscriptName = fonts[0].postscriptName;
|
||||
assert_equals(typeof postscriptName, "string");
|
||||
assert_greater_than(postscriptName.length, 0);
|
||||
}, 'showFontChooser with empty selection bag works');
|
||||
})();
|
||||
</script>
|
|
@ -10,10 +10,14 @@
|
|||
div {
|
||||
background-color: green;
|
||||
border-color: green;
|
||||
caret-color: green;
|
||||
color: green;
|
||||
column-rule-color: green;
|
||||
fill: green;
|
||||
flood-color: green;
|
||||
lighting-color: green;
|
||||
outline-color: green;
|
||||
stop-color: green;
|
||||
stroke: green;
|
||||
text-decoration-color: green;
|
||||
-webkit-tap-highlight-color: green;
|
||||
|
@ -31,10 +35,14 @@
|
|||
"border-left-color",
|
||||
"border-right-color",
|
||||
"border-top-color",
|
||||
"caret-color",
|
||||
"color",
|
||||
"column-rule-color",
|
||||
"fill",
|
||||
"flood-color",
|
||||
"lighting-color",
|
||||
"outline-color",
|
||||
"stop-color",
|
||||
"stroke",
|
||||
"text-decoration-color",
|
||||
"-webkit-tap-highlight-color",
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
div {
|
||||
background-color: green;
|
||||
border-color: green;
|
||||
caret-color: green;
|
||||
color: green;
|
||||
outline-color: green;
|
||||
}
|
||||
|
@ -25,6 +26,7 @@
|
|||
"border-left-color",
|
||||
"border-right-color",
|
||||
"border-top-color",
|
||||
"caret-color",
|
||||
"color",
|
||||
"outline-color"
|
||||
];
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - visited caret-color.</title>
|
||||
<style>
|
||||
a {
|
||||
caret-color: VisitedText;
|
||||
forced-color-adjust: none;
|
||||
}
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
<a id="link" contenteditable href="">link</a>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.getElementById("link").focus();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - visited caret-color.</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
|
||||
<link rel=match href="forced-colors-mode-42-ref.html">
|
||||
<style>
|
||||
a {
|
||||
caret-color: orange;
|
||||
}
|
||||
a:visited {
|
||||
caret-color: red;
|
||||
}
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
<a id="link" contenteditable href="">link</a>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.getElementById("link").focus();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - caret-color.</title>
|
||||
<style>
|
||||
div {
|
||||
caret-color: WindowText;
|
||||
forced-color-adjust: none;
|
||||
}
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
<div id="caret" contenteditable>The caret color should be overridden to currentColor</a>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.getElementById("caret").focus();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - caret-color.</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
|
||||
<link rel=match href="forced-colors-mode-43-ref.html">
|
||||
<style>
|
||||
div {
|
||||
caret-color: red;
|
||||
}
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
<div id="caret" contenteditable>The caret color should be overridden to currentColor</a>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.getElementById("caret").focus();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - visited caret-color with system color.</title>
|
||||
<style>
|
||||
a {
|
||||
caret-color: GrayText;
|
||||
forced-color-adjust: none;
|
||||
}
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
<a id="link" contenteditable href="">link</a>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.getElementById("link").focus();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - visited caret-color with system color.</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
|
||||
<link rel=match href="forced-colors-mode-44-ref.html">
|
||||
<style>
|
||||
a {
|
||||
caret-color: orange;
|
||||
}
|
||||
a:visited {
|
||||
caret-color: GrayText;
|
||||
}
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
<a id="link" contenteditable href="">link</a>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.getElementById("link").focus();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - caret-color with system color.</title>
|
||||
<style>
|
||||
div {
|
||||
caret-color: GrayText;
|
||||
forced-color-adjust: none;
|
||||
}
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
<div id="caret" contenteditable>The caret color should remain GrayText</a>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.getElementById("caret").focus();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - caret-color with system color.</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
|
||||
<link rel=match href="forced-colors-mode-45-ref.html">
|
||||
<style>
|
||||
div {
|
||||
caret-color: GrayText;
|
||||
}
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
<div id="caret" contenteditable>The caret color should remain GrayText</a>
|
||||
<script>
|
||||
window.onload = function() {
|
||||
document.getElementById("caret").focus();
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - lighting-color, flood-color, stop-color.</title>
|
||||
<style>
|
||||
svg {
|
||||
forced-color-adjust: none;
|
||||
height: 100px;
|
||||
width: 500px;
|
||||
}
|
||||
</style>
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="0" y="0" width="100" height="100" fill="WindowText"/>
|
||||
<rect x="200" y="0" width="100" height="100" fill="WindowText"/>
|
||||
<rect x="400" y="0" width="100" height="100" fill="WindowText"/>
|
||||
</svg>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - lighting-color, flood-color, stop-color.</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
|
||||
<link rel=match href="forced-colors-mode-46-ref.html">
|
||||
<style>
|
||||
/* SVG elements are set to 'forced-color-adjust: none' by default. Set this to
|
||||
auto instead in order to test that lighting-color, flood-color, stop-color
|
||||
are properly overridden in forced colors mode. */
|
||||
svg {
|
||||
forced-color-adjust: auto;
|
||||
height: 100px;
|
||||
width: 500px;
|
||||
}
|
||||
</style>
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- stop-color in forced colors mode -->
|
||||
<linearGradient id="stop">
|
||||
<stop offset="25%" stop-color="orange"/>
|
||||
<stop offset="75%" stop-color="red"/>
|
||||
</linearGradient>
|
||||
<rect x="0" y="0" width="100" height="100" fill="url('#stop')"/>
|
||||
|
||||
<!-- lighting-color in forced colors mode -->
|
||||
<filter id="lighting" x="0" y="0" width="100%" height="100%">
|
||||
<feDiffuseLighting in="SourceGraphic" lighting-color="red">
|
||||
<fePointLight x="250" y="50" z="10"/>
|
||||
</feDiffuseLighting>
|
||||
</filter>
|
||||
<rect x="200" y="0" width="100" height="100" style="filter: url(#lighting);"/>
|
||||
|
||||
<!-- flood-color in forced colors mode -->
|
||||
<filter id="flood" x="0" y="0" width="100%" height="100%">
|
||||
<feFlood flood-color="red"/>
|
||||
</filter>
|
||||
<rect x="400" y="0" width="100" height="100" style="filter: url(#flood);"/>
|
||||
</svg>
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - lighting-color, flood-color, stop-color system colors.</title>
|
||||
<style>
|
||||
svg {
|
||||
forced-color-adjust: none;
|
||||
height: 100px;
|
||||
width: 500px;
|
||||
}
|
||||
</style>
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<linearGradient id="stop">
|
||||
<stop offset="25%" stop-color="GrayText"/>
|
||||
<stop offset="75%" stop-color="LinkText"/>
|
||||
</linearGradient>
|
||||
<rect x="0" y="0" width="100" height="100" fill="url('#stop')"/>
|
||||
|
||||
<filter id="lighting" x="0" y="0" width="100%" height="100%">
|
||||
<feDiffuseLighting in="SourceGraphic" lighting-color="LinkText">
|
||||
<fePointLight x="250" y="50" z="10"/>
|
||||
</feDiffuseLighting>
|
||||
</filter>
|
||||
<rect x="200" y="0" width="100" height="100" style="filter: url(#lighting);"/>
|
||||
|
||||
<filter id="flood" x="0" y="0" width="100%" height="100%">
|
||||
<feFlood flood-color="GrayText"/>
|
||||
</filter>
|
||||
<rect x="400" y="0" width="100" height="100" style="filter: url(#flood);"/>
|
||||
</svg>
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - lighting-color, flood-color, stop-color system colors.</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
|
||||
<link rel=match href="forced-colors-mode-47-ref.html">
|
||||
<style>
|
||||
/* SVG elements are set to 'forced-color-adjust: none' by default. Set this to
|
||||
auto instead in order to test that lighting-color, flood-color, stop-color
|
||||
are properly handled in forced colors mode. */
|
||||
svg {
|
||||
forced-color-adjust: auto;
|
||||
height: 100px;
|
||||
width: 500px;
|
||||
}
|
||||
</style>
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<!-- stop-color in forced colors mode -->
|
||||
<linearGradient id="stop">
|
||||
<stop offset="25%" stop-color="GrayText"/>
|
||||
<stop offset="75%" stop-color="LinkText"/>
|
||||
</linearGradient>
|
||||
<rect x="0" y="0" width="100" height="100" fill="url('#stop')"/>
|
||||
|
||||
<!-- lighting-color in forced colors mode -->
|
||||
<filter id="lighting" x="0" y="0" width="100%" height="100%">
|
||||
<feDiffuseLighting in="SourceGraphic" lighting-color="LinkText">
|
||||
<fePointLight x="250" y="50" z="10"/>
|
||||
</feDiffuseLighting>
|
||||
</filter>
|
||||
<rect x="200" y="0" width="100" height="100" style="filter: url(#lighting);"/>
|
||||
|
||||
<!-- flood-color in forced colors mode -->
|
||||
<filter id="flood" x="0" y="0" width="100%" height="100%">
|
||||
<feFlood flood-color="GrayText"/>
|
||||
</filter>
|
||||
<rect x="400" y="0" width="100" height="100" style="filter: url(#flood);"/>
|
||||
</svg>
|
|
@ -83,6 +83,50 @@ testCases = [
|
|||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
description: 'createImageBitmap with <sourceType> source and ' +
|
||||
'a value of 0 int resizeWidth',
|
||||
promiseTestFunction:
|
||||
(source, t) => {
|
||||
return createImageBitmap(source, {resizeWidth:0, resizeHeight:10})
|
||||
.catch(e => {
|
||||
assert_throws_dom("InvalidStateError", () => { throw e });
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
description: 'createImageBitmap with <sourceType> source and ' +
|
||||
'a value of 0 in resizeHeight',
|
||||
promiseTestFunction:
|
||||
(source, t) => {
|
||||
return createImageBitmap(source, {resizeWidth:10, resizeHeight:0})
|
||||
.catch(e => {
|
||||
assert_throws_dom("InvalidStateError", () => { throw e });
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
description: 'createImageBitmap with <sourceType> source and ' +
|
||||
'a value between 0 and 1 in resizeWidth',
|
||||
promiseTestFunction:
|
||||
(source, t) => {
|
||||
return createImageBitmap(source, {resizeWidth:0.5, resizeHeight:10})
|
||||
.catch(e => {
|
||||
assert_throws_dom("InvalidStateError", () => { throw e });
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
description: 'createImageBitmap with <sourceType> source and ' +
|
||||
'a value between 0 and 1 in resizeHeight',
|
||||
promiseTestFunction:
|
||||
(source, t) => {
|
||||
return createImageBitmap(source, {resizeWidth:10, resizeHeight:0.5})
|
||||
.catch(e => {
|
||||
assert_throws_dom("InvalidStateError", () => { throw e });
|
||||
});
|
||||
}
|
||||
},
|
||||
];
|
||||
|
||||
// Generate the test matrix for each sourceType + testCase combo.
|
||||
|
|
|
@ -8,11 +8,7 @@ dictionary WebAppManifest {
|
|||
DOMString lang;
|
||||
USVString name;
|
||||
USVString short_name;
|
||||
USVString description;
|
||||
sequence<ManifestImageResource> icons;
|
||||
sequence<ManifestImageResource> screenshots;
|
||||
sequence<USVString> categories;
|
||||
DOMString iarc_rating_id;
|
||||
USVString start_url;
|
||||
DisplayModeType display = "browser";
|
||||
OrientationLockType orientation;
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<!doctype html>
|
||||
<title>MathML Reference</title>
|
||||
<p>The 1's below should have the same size</p>
|
||||
<math>
|
||||
<mover accent="true">
|
||||
<mn>1</mn>
|
||||
<mn>1</mn>
|
||||
</mover>
|
||||
</math>
|
|
@ -0,0 +1,16 @@
|
|||
<!doctype html>
|
||||
<title>MathML: Dynamically change accent on mover</title>
|
||||
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#displaystyle-and-scriptlevel-in-scripts">
|
||||
<link rel="match" href="mover-accent-dynamic-change-ref.html">
|
||||
<meta name="assert" content="Test that setting the accent attribute on mover takes effect">
|
||||
<p>The 1's below should have the same size</p>
|
||||
<math>
|
||||
<mover id="m">
|
||||
<mn>1</mn>
|
||||
<mn>1</mn>
|
||||
</mover>
|
||||
</math>
|
||||
<script>
|
||||
document.body.offsetTop;
|
||||
m.setAttribute("accent", "true");
|
||||
</script>
|
|
@ -89,8 +89,8 @@
|
|||
element.removeAttribute("accent");
|
||||
element.setAttribute("accentunder", "TrUe");
|
||||
assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base");
|
||||
assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero * .71, epsilon, "over");
|
||||
assert_approx_equals(fontSize(element.children[2]), fontSizeAtScriptLevelZero, epsilon, "under");
|
||||
assert_approx_equals(fontSize(element.children[1]), fontSizeAtScriptLevelZero, epsilon, "under");
|
||||
assert_approx_equals(fontSize(element.children[2]), fontSizeAtScriptLevelZero * .71, epsilon, "over");
|
||||
}, "checking dynamic/case-insensitive accent/accentunder");
|
||||
|
||||
done();
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Test Picture-in-Picture when removed from document</title>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="resources/picture-in-picture-helpers.js"></script>
|
||||
<body></body>
|
||||
<script>
|
||||
promise_test(async t => {
|
||||
const video = await loadVideo();
|
||||
document.body.appendChild(video);
|
||||
video.muted = true;
|
||||
await video.play();
|
||||
await requestPictureInPictureWithTrustedClick(video);
|
||||
|
||||
assert_false(video.paused);
|
||||
document.body.offsetLeft;
|
||||
document.body.removeChild(video);
|
||||
await new Promise(resolve => step_timeout(resolve, 1000));
|
||||
assert_false(video.paused);
|
||||
}, 'Picture-in-Picture video does not pause when removed from document');
|
||||
</script>
|
|
@ -19,6 +19,18 @@ promise_test((t) => {
|
|||
return runTest(t, 'resources/claim-blob-url-worker-fetch-iframe.html');
|
||||
}, 'fetch() in blob URL Worker should be intercepted after the client is claimed.');
|
||||
|
||||
promise_test((t) => {
|
||||
return runTest(t, 'resources/nested-blob-url-workers.html');
|
||||
}, 'fetch() in nested blob URL Worker created from a blob URL Worker should be intercepted after the client is claimed.');
|
||||
|
||||
promise_test((t) => {
|
||||
return runTest(t, 'resources/nested-worker-created-from-blob-url-worker.html');
|
||||
}, 'fetch() in nested Worker created from a blob URL Worker should be intercepted after the client is claimed.');
|
||||
|
||||
promise_test((t) => {
|
||||
return runTest(t, 'resources/nested-blob-url-worker-created-from-worker.html');
|
||||
}, 'fetch() in nested blob URL Worker created from a Worker should be intercepted after the client is claimed.');
|
||||
|
||||
async function runTest(t, iframe_url) {
|
||||
const resource = 'simple.txt';
|
||||
const scope = 'resources/';
|
||||
|
|
|
@ -2,8 +2,9 @@ steps:
|
|||
# The conflicting google-chrome and chromedriver casks are first uninstalled.
|
||||
# The raw google-chrome-dev cask URL is used to bypass caching.
|
||||
- script: |
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall google-chrome || true
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall chromedriver || true
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/google-chrome-dev.rb
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall --cask google-chrome || true
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall --cask chromedriver || true
|
||||
curl https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/google-chrome-dev.rb > google-chrome-dev.rb
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install --cask google-chrome-dev.rb
|
||||
displayName: 'Install Chrome Dev'
|
||||
condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin'))
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
steps:
|
||||
# This is equivalent to `Homebrew/homebrew-cask-versions/firefox-nightly`,
|
||||
# but the raw URL is used to bypass caching.
|
||||
- script: HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/firefox-nightly.rb
|
||||
- script: |
|
||||
curl https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/firefox-nightly.rb > firefox-nightly.rb
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install --cask firefox-nightly.rb
|
||||
displayName: 'Install Firefox Nightly'
|
||||
condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin'))
|
||||
|
|
|
@ -8,7 +8,7 @@ steps:
|
|||
condition: eq(variables['safaridriver_diagnose'], true)
|
||||
- ${{ if eq(parameters.channel, 'preview') }}:
|
||||
- script: |
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install tools/ci/azure/safari-technology-preview.rb
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 brew install --cask tools/ci/azure/safari-technology-preview.rb
|
||||
# Workaround for `sudo safardriver --enable` not working on Catalina:
|
||||
# https://github.com/web-platform-tests/wpt/issues/21751
|
||||
mkdir -p ~/Library/WebDriver/
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"log": {
|
||||
"entries": [
|
||||
{
|
||||
"request": {
|
||||
"method": "GET",
|
||||
"url": "https://web-platform.test:8444/web-bundle/resources/wbn/no-cors/resource.cors.json",
|
||||
"headers": []
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"headers": [
|
||||
{
|
||||
"name": "Content-type",
|
||||
"value": "application/json"
|
||||
},
|
||||
{
|
||||
"name": "Access-Control-Allow-Origin",
|
||||
"value": "*"
|
||||
}
|
||||
],
|
||||
"content": {
|
||||
"text": "{ cors: 1 }"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"request": {
|
||||
"method": "GET",
|
||||
"url": "https://web-platform.test:8444/web-bundle/resources/wbn/no-cors/resource.no-cors.json",
|
||||
"headers": []
|
||||
},
|
||||
"response": {
|
||||
"status": 200,
|
||||
"headers": [
|
||||
{
|
||||
"name": "Content-type",
|
||||
"value": "application/json"
|
||||
}
|
||||
],
|
||||
"content": {
|
||||
"text": "{ no_cors: 1 }"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -76,3 +76,9 @@ gen-bundle \
|
|||
-har cross-origin.har \
|
||||
-primaryURL $wpt_test_https_origin/web-bundle/resources/wbn/cors/resource.cors.json \
|
||||
-o wbn/cors/cross-origin.wbn
|
||||
|
||||
gen-bundle \
|
||||
-version b1 \
|
||||
-har cross-origin-no-cors.har \
|
||||
-primaryURL $wpt_test_https_origin/web-bundle/resources/wbn/no-cors/resource.cors.json \
|
||||
-o wbn/no-cors/cross-origin.wbn
|
||||
|
|
Binary file not shown.
|
@ -8,17 +8,17 @@
|
|||
<script src="/resources/testharnessreport.js"></script>
|
||||
<body>
|
||||
<!--
|
||||
This wpt should run on an origin which is different than https://web-platform.test:8444/,
|
||||
This wpt should run on an origin different from https://web-platform.test:8444/,
|
||||
from where cross-orign WebBundles are served.
|
||||
|
||||
This test uses the two cross-origin WebBundles:
|
||||
|
||||
1. https://web-platform.test:8444/web-bundle/resources/wbn/cors/cross-origin.wbn,
|
||||
which is served with an Access-Control-Allow-Origin response header.
|
||||
2. http://web-platform.test:8444/web-bundle/resources/wbn/subreource.wbn,
|
||||
2. http://web-platform.test:8444/web-bundle/resources/wbn/no-cors/cross-origin.wbn,
|
||||
which is served *without* an Access-Control-Allow-Origin response header.
|
||||
|
||||
`cross-origin.wbn` includes two subresources:
|
||||
Each `cross-origin.wbn` includes two subresources:
|
||||
a. `resource.cors.json`, which includes an Access-Control-Allow-Origin response header.
|
||||
b. `resource.no-cors.json`, which doesn't include an Access-Control-Allow-Origin response header.
|
||||
-->
|
||||
|
@ -34,6 +34,8 @@
|
|||
"https://web-platform.test:8444/web-bundle/resources/wbn/cors/resource.cors.json"
|
||||
);
|
||||
assert_true(response.ok);
|
||||
const text = await response.text();
|
||||
assert_equals(text, "{ cors: 1 }");
|
||||
}, "A subresource which includes an Access-Control-Allow-Origin response header can be fetched");
|
||||
|
||||
promise_test(async (t) => {
|
||||
|
@ -46,21 +48,46 @@
|
|||
);
|
||||
}, "A subresource which does not include an Access-Control-Allow-Origin response header can not be fetched");
|
||||
|
||||
promise_test(async () => {
|
||||
return addLinkAndWaitForError(
|
||||
"http://web-platform.test:8444/web-bundle/resources/wbn/subreource.wbn"
|
||||
);
|
||||
}, "A cross-origin WebBundle which does not include an Access-Control-Allow-Origin response header should fire an error event on load");
|
||||
promise_test(async (t) => {
|
||||
const prefix =
|
||||
"http://web-platform.test:8444/web-bundle/resources/wbn/no-cors/";
|
||||
const resources = [
|
||||
prefix + "resource.cors.json",
|
||||
prefix + "resource.no-cors.json",
|
||||
]
|
||||
// Should fire an error event on loading webbundle.
|
||||
await addLinkAndWaitForError(prefix + "cross-origin.wbn", resources);
|
||||
// A fetch should fail for any subresource specified in resources attribute.
|
||||
for (const url of resources) {
|
||||
await fetchAndWaitForReject(url);
|
||||
}
|
||||
}, "A cross-origin WebBundle which does not include an Access-Control-Allow-Origin response header should fire an error event on load, and a fetch should fail for any subresource");
|
||||
|
||||
function addLinkAndWaitForError(url) {
|
||||
function addLinkAndWaitForError(url, resources) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const link = document.createElement("link");
|
||||
link.rel = "webbundle";
|
||||
link.href = url;
|
||||
for (const resource of resources) {
|
||||
link.resources.add(resource);
|
||||
}
|
||||
link.onload = reject;
|
||||
link.onerror = () => resolve(link);
|
||||
document.body.appendChild(link);
|
||||
});
|
||||
}
|
||||
|
||||
function fetchAndWaitForReject(url) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fetch(url)
|
||||
.then(() => {
|
||||
reject();
|
||||
})
|
||||
.catch(() => {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -293,3 +293,6 @@
|
|||
[WebGL test #41: attachment 4 should be 0,255,0,255\nat (0, 0) expected: 0,255,0,255 was 0,255,0,0]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #52: attachment 7 should be 0,255,0,255\nat (4, 0) expected: 0,255,0,255 was 0,0,0,0]
|
||||
expected: FAIL
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue