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:
bors-servo 2021-01-21 07:43:37 -05:00 committed by GitHub
commit 500cb865bd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
87 changed files with 1591 additions and 227 deletions

View file

@ -1,4 +0,0 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -0,0 +1,2 @@
[image-orientation-img-object-fit.html]
expected: FAIL

View file

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

View file

@ -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

View file

@ -14,3 +14,21 @@
[:state() serialization] [:state() serialization]
expected: FAIL 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

View file

@ -312,12 +312,21 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk] [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain] [<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL 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 expected: FAIL

View file

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

View file

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

View file

@ -147,3 +147,117 @@
[createImageBitmap with CanvasRenderingContext2D image source.] [createImageBitmap with CanvasRenderingContext2D image source.]
expected: NOTRUN 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

View file

@ -1,16 +1,15 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: TIMEOUT expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: FAIL expected: FAIL
[Area element should support autofocus] [Area element should support autofocus]
expected: NOTRUN expected: FAIL
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: FAIL

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-1.html] [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] [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT expected: TIMEOUT

View file

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

View file

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

View file

@ -2,75 +2,75 @@
[input type search: setRangeText() a second time (must not fire select)] [input type search: setRangeText() a second time (must not fire select)]
expected: FAIL 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)] [textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type url: setRangeText() a second time (must not fire select)] [input type url: setRangeText() a second time (must not fire select)]
expected: FAIL 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)] [input type text: selectionStart a second time (must not fire select)]
expected: FAIL expected: FAIL
[textarea: selectionEnd a second time (must not fire select)] [textarea: selectionEnd a second time (must not fire select)]
expected: FAIL 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)] [input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL 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)] [input type tel: setRangeText() a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type search: setSelectionRange out of range a second time (must not fire select)] [input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL 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)] [input type password: selectionEnd a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: selectionDirection a second time (must not fire select)] [input type password: selectionDirection a second time (must not fire select)]
expected: FAIL 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)] [input type url: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL 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

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

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

View file

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

View file

@ -557,3 +557,9 @@
[X SNR (-192.20062600601898 dB) is not greater than or equal to 65.737. Got -192.20062600601898.] [X SNR (-192.20062600601898 dB) is not greater than or equal to 65.737. Got -192.20062600601898.]
expected: FAIL 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

View file

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

View file

@ -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": [ "grid-content-distribution-with-collapsed-tracks-001.html": [
"ebd169cf5913112ef7c9c1fa02cdb2115ceef605", "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": [ "image-orientation-list-style-image.html": [
"ac735626dbd1ec8a0743cf480bddc40d85e93149", "ac735626dbd1ec8a0743cf480bddc40d85e93149",
[ [
@ -180895,7 +180963,7 @@
] ]
], ],
"intrinsic-size-004.html": [ "intrinsic-size-004.html": [
"06fe0e58706059e48dc0c6f966aa9e2d4c59dd96", "fe1a4d7a5deb596600c21eae861999593f115de8",
[ [
null, 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": [ "percentage-resolution-001.html": [
"d606bfc65e340f95fbbc355b764a7de5e7aeb6a1", "d606bfc65e340f95fbbc355b764a7de5e7aeb6a1",
[ [
@ -181428,7 +181522,7 @@
] ]
], ],
"table-element-001.html": [ "table-element-001.html": [
"fd2dcd81dd90c6d82a3652750cea2370979aff7a", "51daf00957ee4a36ea5564831df4ea365233fa90",
[ [
null, 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": [ "toggle-row-display-property-001.html": [
"08e6635e12c42a4201ca955722227010834883e8", "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": { "html": {
@ -251707,6 +251896,19 @@
] ]
}, },
"scripts": { "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": [ "subsup-legacy-scriptshift-attributes-001.tentative.html": [
"532271dbe049cbc12ced9f751a9099ec2a3bd220", "532271dbe049cbc12ced9f751a9099ec2a3bd220",
[ [
@ -262827,7 +263029,7 @@
], ],
"security-features": { "security-features": {
"README.md": [ "README.md": [
"fb9a2f108f9faf68bb86f0bd9f848dbd28630ca4", "f957541f75ecc37416895d6bc19d1c229c0f71b8",
[] []
], ],
"__init__.py": [ "__init__.py": [
@ -315052,6 +315254,10 @@
"a9e9b3fbe308329defb6ecd6612eb10ff07cba13", "a9e9b3fbe308329defb6ecd6612eb10ff07cba13",
[] []
], ],
"image-orientation-img-object-fit-ref.html": [
"0d84291e8a592395de745f4cec7635de0e381427",
[]
],
"image-orientation-list-style-image-ref.html": [ "image-orientation-list-style-image-ref.html": [
"8dcef6a243927f927f9d6e42709959f265332db9", "8dcef6a243927f927f9d6e42709959f265332db9",
[] []
@ -320603,6 +320809,12 @@
[] []
], ],
"tentative": { "tentative": {
"paint": {
"background-image-column-collapsed-ref.html": [
"b3b1ce9ff37d19c2d43851399d22f299cb1608cf",
[]
]
},
"support": { "support": {
"README": [ "README": [
"67e87ca8916c94045f6d55238d387d5571fd694a", "67e87ca8916c94045f6d55238d387d5571fd694a",
@ -337943,7 +338155,7 @@
[] []
], ],
"window-tests-enumeration.js": [ "window-tests-enumeration.js": [
"6b694044640a5ad7fedfd0f221dd6a6881e79a71", "29bb581bd3dacf465966601466c6923025ba3145",
[] []
] ]
} }
@ -338799,6 +339011,30 @@
"df6de6eda257ecb027b8d861cfe3cb2a5ab3ccce", "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": { "resources": {
"float-image.jpg": [ "float-image.jpg": [
"ab06d5f94d16e22bb08fad79d6fef662b2a7de5a", "ab06d5f94d16e22bb08fad79d6fef662b2a7de5a",
@ -352240,7 +352476,7 @@
[] []
], ],
"appmanifest.idl": [ "appmanifest.idl": [
"8d701371f85e7cc5af9d6c3447d6577b3c746381", "e3117265450c2920212607575c8c1ba27c36596d",
[] []
], ],
"audio-output.idl": [ "audio-output.idl": [
@ -353459,6 +353695,10 @@
] ]
}, },
"scripts": { "scripts": {
"mover-accent-dynamic-change-ref.html": [
"a4f16aa07f969e43dee4be45c48f7252e5c109ca",
[]
],
"subsup-legacy-scriptshift-attributes-001.tentative-ref.html": [ "subsup-legacy-scriptshift-attributes-001.tentative-ref.html": [
"c1bf2e46954ee28d260371fb4fb981e9030e3051", "c1bf2e46954ee28d260371fb4fb981e9030e3051",
[] []
@ -363438,7 +363678,7 @@
[] []
], ],
"install_chrome.yml": [ "install_chrome.yml": [
"fd650e80aaad309c8e983274d2b823bba91b1fb1", "9ccdc49ba0ee1fa4382cf5e06c98a1498938a339",
[] []
], ],
"install_edge.yml": [ "install_edge.yml": [
@ -363446,7 +363686,7 @@
[] []
], ],
"install_firefox.yml": [ "install_firefox.yml": [
"de6d0335f221f6d2215ebdc8ef5d2ee269fdfdf3", "7b8c7be05fee9bc6d6db9609a21a71b8cc93b26a",
[] []
], ],
"install_fonts.yml": [ "install_fonts.yml": [
@ -363458,7 +363698,7 @@
[] []
], ],
"install_safari.yml": [ "install_safari.yml": [
"6c1b562d411a2aeecc30d3fbc1aed6362f3526e5", "1636b8e747432d7f0162879e868016df99d7d256",
[] []
], ],
"pip_install.yml": [ "pip_install.yml": [
@ -373378,6 +373618,10 @@
[] []
], ],
"resources": { "resources": {
"cross-origin-no-cors.har": [
"96d0b4e453eab96d8fa1f9be1f6a880adb0f4c7c",
[]
],
"cross-origin.har": [ "cross-origin.har": [
"7435393b13b1f640b0a1911e05456833febf7e8e", "7435393b13b1f640b0a1911e05456833febf7e8e",
[] []
@ -373427,7 +373671,7 @@
] ]
}, },
"generate-test-wbns.sh": [ "generate-test-wbns.sh": [
"6683cb0dd84ebb059d26f26bdea5c7f4c05e08fc", "0caef325d1f03846792094e2535c84daf8bf4516",
[] []
], ],
"location": { "location": {
@ -373559,6 +373803,12 @@
"1f9278148313ad4b401a1025b5396a5b9bd60ff3", "1f9278148313ad4b401a1025b5396a5b9bd60ff3",
[] []
], ],
"no-cors": {
"cross-origin.wbn": [
"b2adba654513322fde9b3a993ede4ea73ad898f3",
[]
]
},
"path-restriction.wbn": [ "path-restriction.wbn": [
"e861469e122afd141bcec8d394a0d4504898208c", "e861469e122afd141bcec8d394a0d4504898208c",
[] []
@ -406407,7 +406657,7 @@
] ]
], ],
"CSS-supports-CSSStyleDeclaration.html": [ "CSS-supports-CSSStyleDeclaration.html": [
"fd013b95e8af97da3772fc5b9978c0082c57cdb2", "3a9786c510dedc80cf7a5af143960fbeb7a09371",
[ [
null, null,
{} {}
@ -418526,7 +418776,7 @@
], ],
"height-distribution": { "height-distribution": {
"computing-row-measure-0.html": [ "computing-row-measure-0.html": [
"ba8bf73429ff3a74d3105ad842d15e4d44d403fc", "ebaab2c359d4ddaf0b8179d35ca58b4868ea9f8d",
[ [
null, null,
{} {}
@ -430765,7 +431015,7 @@
] ]
], ],
"state-pseudo-class.html": [ "state-pseudo-class.html": [
"9a810b6b000c31b9521c205b65002e2c6205bccf", "966dd1c9a79a9f1f2ae910d58afa1f8efa2e1044",
[ [
null, null,
{} {}
@ -458678,6 +458928,15 @@
} }
] ]
], ],
"font_access-chooser-selection.tentative.manual.https.html": [
"73d0e7938efad2b8cb462e67612f9e5505af3693",
[
null,
{
"testdriver": true
}
]
],
"font_access-chooser.tentative.manual.https.html": [ "font_access-chooser.tentative.manual.https.html": [
"8f623daa0b86c1af6141fee0cf8a8783559f2b16", "8f623daa0b86c1af6141fee0cf8a8783559f2b16",
[ [
@ -458765,14 +459024,14 @@
] ]
], ],
"forced-colors-mode-40.html": [ "forced-colors-mode-40.html": [
"07316bda24610f87d0735a4835f865d176396d0d", "481492d72e917a5b235b1aa55818519232ef32c1",
[ [
null, null,
{} {}
] ]
], ],
"forced-colors-mode-41.html": [ "forced-colors-mode-41.html": [
"ddb747d08186ede841356867657d8e3941b008a8", "cf2c527be97458a9b6ccebd62b9ad4d703c90ec9",
[ [
null, null,
{} {}
@ -466252,7 +466511,7 @@
] ]
], ],
"createImageBitmap-invalid-args.html": [ "createImageBitmap-invalid-args.html": [
"3330cfb9189d42e43d79caf9669b5c05d5620379", "74ca9a853e66591b5f043b3e9ea74346f985f7b5",
[ [
null, null,
{} {}
@ -503075,7 +503334,7 @@
] ]
}, },
"scriptlevel-001.html": [ "scriptlevel-001.html": [
"f91635b73879255422f3df613a40eac1df81f80b", "11ad68d818829e2fe63510560b6d56ff39d833a8",
[ [
null, null,
{} {}
@ -512703,6 +512962,15 @@
} }
] ]
], ],
"removed-from-document.html": [
"2c363a0eec69de8c822415e1c51f796fd5d0cebf",
[
null,
{
"testdriver": true
}
]
],
"request-picture-in-picture-twice.html": [ "request-picture-in-picture-twice.html": [
"c1369ee8c3c1df2adf51210ff0031fa2eac14642", "c1369ee8c3c1df2adf51210ff0031fa2eac14642",
[ [
@ -530368,7 +530636,7 @@
] ]
], ],
"claim-worker-fetch.https.html": [ "claim-worker-fetch.https.html": [
"389d001f31e2e9791198029c5e9877de5395e234", "7cb26c742b97d3d768e01ec09adb1ceeca99dc86",
[ [
null, null,
{} {}
@ -549582,7 +549850,7 @@
] ]
], ],
"subresource-loading-cross-origin.tentative.html": [ "subresource-loading-cross-origin.tentative.html": [
"3991aef2c40ccfa6c82eee09e76e9b42e16c8cf5", "b0072ddb1f6b19f5571b22ef35892ffd1d6db0a7",
[ [
null, null,
{} {}

View file

@ -1,4 +0,0 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -0,0 +1,2 @@
[image-orientation-img-object-fit.html]
expected: FAIL

View file

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

View file

@ -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

View file

@ -14,3 +14,21 @@
[:state() serialization] [:state() serialization]
expected: FAIL 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

View file

@ -312,12 +312,21 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk] [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain] [<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL 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 expected: FAIL

View file

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

View file

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

View file

@ -147,3 +147,117 @@
[createImageBitmap with CanvasRenderingContext2D image source.] [createImageBitmap with CanvasRenderingContext2D image source.]
expected: NOTRUN 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

View file

@ -1,5 +1,4 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
@ -7,10 +6,10 @@
expected: FAIL expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: TIMEOUT expected: FAIL
[Area element should support autofocus] [Area element should support autofocus]
expected: NOTRUN expected: FAIL
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: FAIL

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-1.html] [iframe_sandbox_popups_escaping-1.html]
type: testharness 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] [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT expected: TIMEOUT

View file

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

View file

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

View file

@ -2,75 +2,75 @@
[input type search: setRangeText() a second time (must not fire select)] [input type search: setRangeText() a second time (must not fire select)]
expected: FAIL 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)] [textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type url: setRangeText() a second time (must not fire select)] [input type url: setRangeText() a second time (must not fire select)]
expected: FAIL 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)] [input type text: selectionStart a second time (must not fire select)]
expected: FAIL expected: FAIL
[textarea: selectionEnd a second time (must not fire select)] [textarea: selectionEnd a second time (must not fire select)]
expected: FAIL 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)] [input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL 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)] [input type tel: setRangeText() a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type search: setSelectionRange out of range a second time (must not fire select)] [input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL 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)] [input type password: selectionEnd a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: selectionDirection a second time (must not fire select)] [input type password: selectionDirection a second time (must not fire select)]
expected: FAIL 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)] [input type url: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL 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

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

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

View file

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

View file

@ -785,3 +785,9 @@
[X SNR (-192.20062600601898 dB) is not greater than or equal to 65.737. Got -192.20062600601898.] [X SNR (-192.20062600601898 dB) is not greater than or equal to 65.737. Got -192.20062600601898.]
expected: FAIL 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

View file

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

View file

@ -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: 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 ### SourceContext Resolution

View file

@ -612,6 +612,7 @@ const properties = [
"shape-rendering", "shape-rendering",
"size", "size",
"speak", "speak",
"speak-as",
"src", "src",
"stop-color", "stop-color",
"stop-opacity", "stop-opacity",

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -2,13 +2,11 @@
<title>CSS aspect-ratio: min-content size keyword</title> <title>CSS aspect-ratio: min-content size keyword</title>
<link rel="author" title="Google LLC" href="https://www.google.com/"> <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://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" /> <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> <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 <div style="height: 50px; width: min-content; aspect-ratio: 2/1; background: green;"></div>
but this testcase tests the likely outcome. --> <!-- min-content in the block axis is treated as auto -->
<div style="height: min-content; width: 100px; aspect-ratio: 2/1; background: green;"></div>
<div style="height: 100px; width: min-content; aspect-ratio: 1/1; background: green;"></div>

View file

@ -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>

View file

@ -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>

View file

@ -19,6 +19,7 @@ th, td {
<tr> <tr>
<th style='background: green; width: 100px; aspect-ratio: 1/1;'></th> <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; aspect-ratio: 4/1;'></td>
<td style='background: red; height: 50px; min-width: min-content; aspect-ratio: 4/1;'></td>
</tr> </tr>
</table> </table>
<!-- aspect-ratio should apply to the table element --> <!-- aspect-ratio should apply to the table element -->

View file

@ -54,7 +54,7 @@
[ [
"Checking intermediate min-content height for span 1 (2)", "Checking intermediate min-content height for span 1 (2)",
document.getElementById('two').offsetHeight, document.getElementById('two').offsetHeight,
1 10
], ],
[ [
"Checking intermediate min-content height for span 1 (3)", "Checking intermediate min-content height for span 1 (3)",

View file

@ -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>

View file

@ -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>

View file

@ -5,13 +5,13 @@
#state-and-part::part(inner) { #state-and-part::part(inner) {
opacity: 0; opacity: 0;
} }
#state-and-part::part(inner):state(innerFoo) { #state-and-part::part(inner):--innerFoo {
opacity: 0.5; opacity: 0.5;
} }
#state-and-part:state(outerFoo)::part(inner) { #state-and-part:--outerFoo::part(inner) {
opacity: 0.25; opacity: 0.25;
} }
:state( \(escaped\ state ) {} :--\(escaped\ state {}
</style> </style>
<body> <body>
<script> <script>
@ -37,7 +37,7 @@ class ContainerElement extends HTMLElement {
:host { :host {
border-style: solid; border-style: solid;
} }
:host(:state(dotted)) { :host(:--dotted) {
border-style: dotted; border-style: dotted;
} }
</style> </style>
@ -54,36 +54,38 @@ class ContainerElement extends HTMLElement {
customElements.define('container-element', ContainerElement); customElements.define('container-element', ContainerElement);
test(() => { test(() => {
assert_throws_dom('SyntaxError', () => { document.querySelector(':state'); }); document.querySelector(':--');
assert_throws_dom('SyntaxError', () => { document.querySelector(':state('); }); document.querySelector(':--16px');
assert_throws_dom('SyntaxError', () => { document.querySelector(':state()'); }); }, ':--foo parsing passes');
assert_throws_dom('SyntaxError', () => { document.querySelector(':state(=)'); });
assert_throws_dom('SyntaxError', () => { document.querySelector(':state(name=value)'); }); test(() => {
assert_throws_dom('SyntaxError', () => { document.querySelector(':state( foo bar)'); }); assert_throws_dom('SyntaxError', () => { document.querySelector(':--('); });
assert_throws_dom('SyntaxError', () => { document.querySelector(':state(16px)'); }); assert_throws_dom('SyntaxError', () => { document.querySelector(':--)'); });
}, ':state() parsing failures'); assert_throws_dom('SyntaxError', () => { document.querySelector(':--='); });
assert_throws_dom('SyntaxError', () => { document.querySelector(':--name=value'); });
}, ':--foo parsing failures');
test(() => { test(() => {
assert_equals(document.styleSheets[0].cssRules[1].cssText, 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, assert_equals(document.styleSheets[0].cssRules[3].selectorText,
':state(\\(escaped\\ state)'); ':--\\(escaped\\ state');
}, ':state() serialization'); }, ':--foo serialization');
test(() => { test(() => {
let element = new TestElement(); let element = new TestElement();
let states = element.i.states; let states = element.i.states;
assert_false(element.matches(':state(foo)')); assert_false(element.matches(':--foo'));
assert_true(element.matches(':not(:state(foo))')); assert_true(element.matches(':not(:--foo)'));
states.add('foo'); states.add('--foo');
assert_true(element.matches(':state(foo)')); assert_true(element.matches(':--foo'));
assert_true(element.matches(':is(:state(foo))')); assert_true(element.matches(':is(:--foo)'));
element.classList.add('c1', 'c2'); element.classList.add('c1', 'c2');
assert_true(element.matches('.c1:state(foo)')); assert_true(element.matches('.c1:--foo'));
assert_true(element.matches(':state(foo).c1')); assert_true(element.matches(':--foo.c1'));
assert_true(element.matches('.c2:state(foo).c1')); assert_true(element.matches('.c2:--foo.c1'));
}, ':state() in simple cases'); }, ':--foo in simple cases');
test(() => { test(() => {
let element = new TestElement(); let element = new TestElement();
@ -92,10 +94,10 @@ test(() => {
element.focus(); element.focus();
let states = element.i.states; let states = element.i.states;
states.value = 'foo'; states.value = '--foo';
assert_true(element.matches(':focus:state(foo)')); assert_true(element.matches(':focus:--foo'));
assert_true(element.matches(':state(foo):focus')); assert_true(element.matches(':--foo:focus'));
}, ':state() and other pseudo classes'); }, ':--foo and other pseudo classes');
test(() => { test(() => {
let outer = new ContainerElement(); let outer = new ContainerElement();
@ -104,26 +106,26 @@ test(() => {
let inner = outer.innerElement; let inner = outer.innerElement;
let innerStates = inner.i.states; let innerStates = inner.i.states;
innerStates.add('innerFoo'); innerStates.add('--innerFoo');
assert_equals(getComputedStyle(inner).opacity, '0.5', assert_equals(getComputedStyle(inner).opacity, '0.5',
'::part() followed by :state()'); '::part() followed by :--foo');
innerStates.replace('innerFoo', 'innerfoo'); innerStates.replace('--innerFoo', '--innerfoo');
assert_equals(getComputedStyle(inner).opacity, '0', assert_equals(getComputedStyle(inner).opacity, '0',
':state() matching should be case-sensitive'); ':--foo matching should be case-sensitive');
innerStates.remove('innerfoo'); innerStates.remove('--innerfoo');
outer.i.states.add('outerFoo'); outer.i.states.add('--outerFoo');
assert_equals(getComputedStyle(inner).opacity, '0.25', assert_equals(getComputedStyle(inner).opacity, '0.25',
':state() followed by ::part()'); ':--foo followed by ::part()');
}, ':state() and ::part()'); }, ':--foo and ::part()');
test(() => { test(() => {
let outer = new ContainerElement(); let outer = new ContainerElement();
document.body.appendChild(outer); document.body.appendChild(outer);
assert_equals(getComputedStyle(outer).borderStyle, 'solid'); assert_equals(getComputedStyle(outer).borderStyle, 'solid');
outer.i.states.toggle('dotted'); outer.i.states.toggle('--dotted');
assert_equals(getComputedStyle(outer).borderStyle, 'dotted'); assert_equals(getComputedStyle(outer).borderStyle, 'dotted');
}, ':state() and :host()'); }, ':--foo and :host()');
</script> </script>
</body> </body>

View file

@ -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>

View file

@ -10,10 +10,14 @@
div { div {
background-color: green; background-color: green;
border-color: green; border-color: green;
caret-color: green;
color: green; color: green;
column-rule-color: green; column-rule-color: green;
fill: green; fill: green;
flood-color: green;
lighting-color: green;
outline-color: green; outline-color: green;
stop-color: green;
stroke: green; stroke: green;
text-decoration-color: green; text-decoration-color: green;
-webkit-tap-highlight-color: green; -webkit-tap-highlight-color: green;
@ -31,10 +35,14 @@
"border-left-color", "border-left-color",
"border-right-color", "border-right-color",
"border-top-color", "border-top-color",
"caret-color",
"color", "color",
"column-rule-color", "column-rule-color",
"fill", "fill",
"flood-color",
"lighting-color",
"outline-color", "outline-color",
"stop-color",
"stroke", "stroke",
"text-decoration-color", "text-decoration-color",
"-webkit-tap-highlight-color", "-webkit-tap-highlight-color",

View file

@ -12,6 +12,7 @@
div { div {
background-color: green; background-color: green;
border-color: green; border-color: green;
caret-color: green;
color: green; color: green;
outline-color: green; outline-color: green;
} }
@ -25,6 +26,7 @@
"border-left-color", "border-left-color",
"border-right-color", "border-right-color",
"border-top-color", "border-top-color",
"caret-color",
"color", "color",
"outline-color" "outline-color"
]; ];

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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. // Generate the test matrix for each sourceType + testCase combo.

View file

@ -8,11 +8,7 @@ dictionary WebAppManifest {
DOMString lang; DOMString lang;
USVString name; USVString name;
USVString short_name; USVString short_name;
USVString description;
sequence<ManifestImageResource> icons; sequence<ManifestImageResource> icons;
sequence<ManifestImageResource> screenshots;
sequence<USVString> categories;
DOMString iarc_rating_id;
USVString start_url; USVString start_url;
DisplayModeType display = "browser"; DisplayModeType display = "browser";
OrientationLockType orientation; OrientationLockType orientation;

View file

@ -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>

View file

@ -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>

View file

@ -89,8 +89,8 @@
element.removeAttribute("accent"); element.removeAttribute("accent");
element.setAttribute("accentunder", "TrUe"); element.setAttribute("accentunder", "TrUe");
assert_approx_equals(fontSize(element.children[0]), fontSizeAtScriptLevelZero, epsilon, "base"); 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[1]), fontSizeAtScriptLevelZero, epsilon, "under");
assert_approx_equals(fontSize(element.children[2]), fontSizeAtScriptLevelZero, epsilon, "under"); assert_approx_equals(fontSize(element.children[2]), fontSizeAtScriptLevelZero * .71, epsilon, "over");
}, "checking dynamic/case-insensitive accent/accentunder"); }, "checking dynamic/case-insensitive accent/accentunder");
done(); done();

View file

@ -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>

View file

@ -19,6 +19,18 @@ promise_test((t) => {
return runTest(t, 'resources/claim-blob-url-worker-fetch-iframe.html'); return runTest(t, 'resources/claim-blob-url-worker-fetch-iframe.html');
}, 'fetch() in blob URL Worker should be intercepted after the client is claimed.'); }, '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) { async function runTest(t, iframe_url) {
const resource = 'simple.txt'; const resource = 'simple.txt';
const scope = 'resources/'; const scope = 'resources/';

View file

@ -2,8 +2,9 @@ steps:
# The conflicting google-chrome and chromedriver casks are first uninstalled. # The conflicting google-chrome and chromedriver casks are first uninstalled.
# The raw google-chrome-dev cask URL is used to bypass caching. # The raw google-chrome-dev cask URL is used to bypass caching.
- script: | - script: |
HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall google-chrome || true HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall --cask google-chrome || true
HOMEBREW_NO_AUTO_UPDATE=1 brew cask uninstall chromedriver || true HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall --cask chromedriver || true
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/google-chrome-dev.rb 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' displayName: 'Install Chrome Dev'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin')) condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin'))

View file

@ -1,6 +1,8 @@
steps: steps:
# This is equivalent to `Homebrew/homebrew-cask-versions/firefox-nightly`, # This is equivalent to `Homebrew/homebrew-cask-versions/firefox-nightly`,
# but the raw URL is used to bypass caching. # 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' displayName: 'Install Firefox Nightly'
condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin')) condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin'))

View file

@ -8,7 +8,7 @@ steps:
condition: eq(variables['safaridriver_diagnose'], true) condition: eq(variables['safaridriver_diagnose'], true)
- ${{ if eq(parameters.channel, 'preview') }}: - ${{ if eq(parameters.channel, 'preview') }}:
- script: | - 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: # Workaround for `sudo safardriver --enable` not working on Catalina:
# https://github.com/web-platform-tests/wpt/issues/21751 # https://github.com/web-platform-tests/wpt/issues/21751
mkdir -p ~/Library/WebDriver/ mkdir -p ~/Library/WebDriver/

View file

@ -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 }"
}
}
}
]
}
}

View file

@ -76,3 +76,9 @@ gen-bundle \
-har cross-origin.har \ -har cross-origin.har \
-primaryURL $wpt_test_https_origin/web-bundle/resources/wbn/cors/resource.cors.json \ -primaryURL $wpt_test_https_origin/web-bundle/resources/wbn/cors/resource.cors.json \
-o wbn/cors/cross-origin.wbn -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

View file

@ -8,17 +8,17 @@
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<body> <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. from where cross-orign WebBundles are served.
This test uses the two cross-origin WebBundles: This test uses the two cross-origin WebBundles:
1. https://web-platform.test:8444/web-bundle/resources/wbn/cors/cross-origin.wbn, 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. 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. 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. 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. 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" "https://web-platform.test:8444/web-bundle/resources/wbn/cors/resource.cors.json"
); );
assert_true(response.ok); 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"); }, "A subresource which includes an Access-Control-Allow-Origin response header can be fetched");
promise_test(async (t) => { 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"); }, "A subresource which does not include an Access-Control-Allow-Origin response header can not be fetched");
promise_test(async () => { promise_test(async (t) => {
return addLinkAndWaitForError( const prefix =
"http://web-platform.test:8444/web-bundle/resources/wbn/subreource.wbn" "http://web-platform.test:8444/web-bundle/resources/wbn/no-cors/";
); const resources = [
}, "A cross-origin WebBundle which does not include an Access-Control-Allow-Origin response header should fire an error event on load"); 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) => { return new Promise((resolve, reject) => {
const link = document.createElement("link"); const link = document.createElement("link");
link.rel = "webbundle"; link.rel = "webbundle";
link.href = url; link.href = url;
for (const resource of resources) {
link.resources.add(resource);
}
link.onload = reject; link.onload = reject;
link.onerror = () => resolve(link); link.onerror = () => resolve(link);
document.body.appendChild(link); document.body.appendChild(link);
}); });
} }
function fetchAndWaitForReject(url) {
return new Promise((resolve, reject) => {
fetch(url)
.then(() => {
reject();
})
.catch(() => {
resolve();
});
});
}
</script> </script>
</body> </body>

View file

@ -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] [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 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