mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #27728 - servo-wpt-sync:wpt_update_31-10-2020, r=jdm
Sync WPT with upstream (31-10-2020) Automated downstream sync of changes from upstream as of 31-10-2020. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
c1dbf011b5
102 changed files with 2164 additions and 281 deletions
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[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 @@
|
|||
[border-radius-clip-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[border-radius-clip-002.htm]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[box-shadow-029.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[box-shadow-039.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[box-shadow-040.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[box-shadow-041.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[box-shadow-042.html]
|
||||
expected: FAIL
|
|
@ -1,4 +1,10 @@
|
|||
[rotate-composition.html]
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (0.75) should be [0.27 0.53 0.8 90deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [none\] to replace [0 1 0 100deg\] at (0) should be [1 2 3 90deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [none\] to replace [0 1 0 100deg\] at (-1) should be [0.31 -0.22 0.92 131.66deg\]]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -71,9 +77,6 @@
|
|||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (2) should be [-3.3235e-17 -1 -9.97049e-17 160deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [none\] to replace [0 1 0 100deg\] at (0) should be [1 2 3 90deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [100deg\] from add [10deg\] to add [30deg\] at (1) should be [130deg\]]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -197,3 +200,126 @@
|
|||
[Compositing: property <rotate> underlying [1 0 0 90deg\] from add [0 1 0 180deg\] to replace [0 0 1 90deg\] at (0) should be [-4.32978e-17 -0.707107 -0.707107 180deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (-1) should be [0.27 0.53 0.8 10deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0) should be [0.27 0.53 0.8 50deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0.25) should be [y 25deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (2) should be [y 200deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (-1) should be [0.27 0.53 0.8 540deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (-1) should be [y -100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (-1) should be [0 -1 0 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (2) should be [0.27 0.53 0.8 -360deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (1) should be [0 0.71 0.71 135deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (0.75) should be [y 75deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0) should be [0.27 0.53 0.8 360deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (0.25) should be [0.27 0.53 0.8 270deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (1) should be [y 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (2) should be [0.27 0.53 0.8 -270deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (0.25) should be [0.54 0.8 0.26 94.83deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0.75) should be [y 75deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (2) should be [y 200deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (0.25) should be [y 25deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (-1) should be [0.67 -0.06 -0.74 124.97deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (1) should be [0.27 0.53 0.8 0deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0) should be [0.27 0.53 0.8 270deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0.75) should be [y 75deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0.25) should be [0.27 0.53 0.8 60deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (0) should be [y 0deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (2) should be [-0.52 0.29 0.81 208.96deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0.75) should be [0.27 0.53 0.8 80deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (1) should be [0.27 0.53 0.8 0deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (1) should be [y 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (2) should be [0.27 0.53 0.8 130deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0.25) should be [0.27 0.53 0.8 202.5deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (0) should be [0.71 0.71 0 90deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0.25) should be [y 25deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (2) should be [y 200deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (1) should be [y 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (0) should be [0.27 0.53 0.8 360deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (1) should be [0.27 0.53 0.8 90deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (0.75) should be [0.17 0.78 0.61 118.68deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (-1) should be [0 -1 0 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0) should be [0.27 0.53 0.8 360deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (-1) should be [0.27 0.53 0.8 720deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0.75) should be [0.27 0.53 0.8 67.5deg\]]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[rotate-transform-equivalent.html]
|
||||
expected: TIMEOUT
|
|
@ -318,18 +318,18 @@
|
|||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,9 +56,3 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[Content-Type-Options%3A%20nosniff]
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
[idlharness.window.html]
|
||||
[idlharness]
|
||||
expected: FAIL
|
||||
|
||||
[idlharness.https.window.html]
|
||||
[GamepadEvent must be primary interface of new GamepadEvent("gamepad")]
|
||||
expected: FAIL
|
||||
[Stringification of new GamepadEvent("gamepad")]
|
||||
expected: FAIL
|
||||
|
||||
[GamepadEvent interface: new GamepadEvent("gamepad") must inherit property "gamepad" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of new GamepadEvent("gamepad")]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -171,6 +171,3 @@
|
|||
[XHTML img usemap="#hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,9 +2,3 @@
|
|||
[DOMParser]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument]
|
||||
expected: FAIL
|
||||
|
||||
[<template>]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[async_004.htm]
|
||||
[async script executes as soon as possible after a download is complete]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[module-static-import-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
||||
|
|
@ -3,6 +3,3 @@
|
|||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[audiobuffersource-duration-loop.html]
|
||||
[X The array length does not match.]
|
||||
expected: FAIL
|
||||
|
|
@ -221,3 +221,6 @@
|
|||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-3.5237828125000000e+4\t9.3139332532882690e-1\t3.5238759518325329e+4\t3.7834455712772411e+4\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 3.5238759518325329e+4 at index of 28696.\n\tMax RelError of 3.7834455712772411e+4 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.0115346998129159e-34\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[audiocontext-not-fully-active.html]
|
||||
expected: TIMEOUT
|
||||
[frame in navigated remote-site frame]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -1,5 +1,4 @@
|
|||
[003.html]
|
||||
expected: ERROR
|
||||
[shared]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -126563,6 +126563,32 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"border-radius-clip-001.html": [
|
||||
"585b62677f4c439deb077a5ab4aba96559366c72",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-backgrounds/reference/border-radius-clipping-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"border-radius-clip-002.htm": [
|
||||
"c6aa0c6a3e10b639673541d7a16e1c7a43ac8fd2",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-backgrounds/reference/border-radius-clip-002-ref.htm",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"border-radius-clipping-002.html": [
|
||||
"eea0ee104fc2610a722f5bbae200c8f6d1ac9823",
|
||||
[
|
||||
|
@ -126576,19 +126602,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"border-radius-clipping.html": [
|
||||
"331bc61f20392a7f815014b738a7e01ea92db850",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-backgrounds/reference/border-radius-clipping-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"border-radius-dynamic-from-no-radius.html": [
|
||||
"335548f33ad4bb9d7c42b4b07323c0a398aa28fc",
|
||||
[
|
||||
|
@ -126888,6 +126901,71 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"box-shadow-029.html": [
|
||||
"aa0fbfd6ddfd976fb1254d0f7df8ef2ccad9698c",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"box-shadow-039.html": [
|
||||
"c3badbc211b7995aa8bd4db165d3667eb61848c9",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-backgrounds/reference/box-shadow-039-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"box-shadow-040.html": [
|
||||
"dea5d5bfaf443ca11c0e1619931a5e929e3e3571",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-backgrounds/reference/box-shadow-040-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"box-shadow-041.html": [
|
||||
"907ca82a6df5ab070b7531a5893b965ddcc6dcfa",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-backgrounds/reference/box-shadow-041-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"box-shadow-042.html": [
|
||||
"ec9212e5b6c9ace7787a5d0321dfa6be17f7ae75",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-backgrounds/reference/box-shadow-042-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"box-shadow-body.html": [
|
||||
"88d888a7710c7bdd2831a4908a30108b3a34670a",
|
||||
[
|
||||
|
@ -169042,6 +169120,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"placeholder-excluded-properties.html": [
|
||||
"dc5718164ce23a6cb35ba85644e6bc5f2f0dcc69",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-pseudo/reference/placeholder-excluded-properties-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"placeholder-input-number.html": [
|
||||
"a557f1091ec29dd90cd4290cf96ac4752b04ff3f",
|
||||
[
|
||||
|
@ -191643,6 +191734,19 @@
|
|||
]
|
||||
],
|
||||
"animation": {
|
||||
"rotate-transform-equivalent.html": [
|
||||
"7474c79e7e6d974133abd226368ec636f0e4f49c",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-transforms/animation/rotate-transform-equivalent-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"transform-interpolation-matrix.html": [
|
||||
"b5f9c3cd3084024756ef95e46e85d0110273cab5",
|
||||
[
|
||||
|
@ -299536,8 +299640,12 @@
|
|||
"22c5f4dfb8b40fddeb3eeb0af52056dfebf623e1",
|
||||
[]
|
||||
],
|
||||
"border-radius-clip-002-ref.htm": [
|
||||
"2a68ea3587a23e6eef1dce22511a7f14ffc0d3a3",
|
||||
[]
|
||||
],
|
||||
"border-radius-clipping-ref.html": [
|
||||
"344cd01c7a1b339cb7edbd8cd050b2180507abc9",
|
||||
"2aeef90eb05afc930b3836c50d97e2e3484d95db",
|
||||
[]
|
||||
],
|
||||
"border-radius-horizontal-value-is-zero-ref.html": [
|
||||
|
@ -299556,6 +299664,22 @@
|
|||
"81a5cbf6b8e06f6435bc133287f128ed6af8ed62",
|
||||
[]
|
||||
],
|
||||
"box-shadow-039-ref.html": [
|
||||
"6f364d09a2b2a33a085af99c9ea92c83e1d07a39",
|
||||
[]
|
||||
],
|
||||
"box-shadow-040-ref.html": [
|
||||
"14159cfcdf5d06021d98e04d0ee6367d16cdeda7",
|
||||
[]
|
||||
],
|
||||
"box-shadow-041-ref.html": [
|
||||
"8b93bbdf112e09c3a5e4242b8905d01afda6297a",
|
||||
[]
|
||||
],
|
||||
"box-shadow-042-ref.html": [
|
||||
"ccc209a02d281b9aa05b590ca9292328e2f60f12",
|
||||
[]
|
||||
],
|
||||
"box-shadow-body-ref.html": [
|
||||
"d2ae1ebd84b7ed80bcee9e0b457a41c0b8f17cf9",
|
||||
[]
|
||||
|
@ -314388,6 +314512,10 @@
|
|||
"17d69f306d77411f2ef0a7dab682b119c5b59e50",
|
||||
[]
|
||||
],
|
||||
"placeholder-excluded-properties-ref.html": [
|
||||
"0e573cb3d6cbac837c9e10552e360aa713fee60b",
|
||||
[]
|
||||
],
|
||||
"selection-contenteditable-011-ref.html": [
|
||||
"0677a4b6b39f26aa4b3acc7480240b9d061e4929",
|
||||
[]
|
||||
|
@ -319604,6 +319732,10 @@
|
|||
[]
|
||||
],
|
||||
"animation": {
|
||||
"rotate-transform-equivalent-ref.html": [
|
||||
"e95e62be888216d9bcd2487c54c1da602973de75",
|
||||
[]
|
||||
],
|
||||
"support": {
|
||||
"transform-interpolation-reftests.js": [
|
||||
"0094b8a2c7590151e551aa1fde5be67e82779b6a",
|
||||
|
@ -326764,7 +326896,7 @@
|
|||
[]
|
||||
],
|
||||
"interpolation-testcommon.js": [
|
||||
"16a1c0e7f7fb83f52b3b5d55fda4d49462fa9fe6",
|
||||
"999a1e0542858689f66c2afac50f43fd742476f8",
|
||||
[]
|
||||
],
|
||||
"numeric-testcommon.js": [
|
||||
|
@ -348675,7 +348807,7 @@
|
|||
[]
|
||||
],
|
||||
"gamepad.idl": [
|
||||
"c8a2fc590a84937912f873a15ef666ab55013c77",
|
||||
"e8252e2a85b3867fe0390706449ea3269762b7d7",
|
||||
[]
|
||||
],
|
||||
"generic-sensor.idl": [
|
||||
|
@ -366550,7 +366682,7 @@
|
|||
[]
|
||||
],
|
||||
"firefox_android.py": [
|
||||
"bea0d9f4ee33ab051b00cba5b8a4afc017c37501",
|
||||
"b219079de3df793ba5c74de8706d4c9ad0526194",
|
||||
[]
|
||||
],
|
||||
"ie.py": [
|
||||
|
@ -408340,6 +408472,20 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"getclientrects-000.html": [
|
||||
"be11ba99493c12d75e8dd42ed55ca998bbe66001",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"getclientrects-001.html": [
|
||||
"630e5ee0f77166a14a911dbf11c68ec41aeabc68",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"going-out-of-flow-after-spanner.html": [
|
||||
"2fe0e42a7522647b7eca4db1e6f710a9975faaa4",
|
||||
[
|
||||
|
@ -415648,7 +415794,7 @@
|
|||
]
|
||||
],
|
||||
"rotate-composition.html": [
|
||||
"fa0118d50f457b3021a28a7e12a21c96c1c5a23c",
|
||||
"f9a4527342ffb44cf389cf9ab5ded0e59492b9e3",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -452724,10 +452870,10 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"idlharness.window.js": [
|
||||
"idlharness.https.window.js": [
|
||||
"0bbb0b3c701515743c24ca8ca67a96b5c61fa3cc",
|
||||
[
|
||||
"gamepad/idlharness.window.html",
|
||||
"gamepad/idlharness.https.window.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
|
@ -496872,6 +497018,13 @@
|
|||
]
|
||||
},
|
||||
"mediacapture-fromelement": {
|
||||
"HTMLCanvasElement-getImageData-noframe.html": [
|
||||
"48d445f897d7f80b013204f78f52670e31da1c1c",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"capture.html": [
|
||||
"74858737f13f818ed4f52d71221580957302676f",
|
||||
[
|
||||
|
@ -503446,6 +503599,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"fcp-ensure-update-the-rendering-step.html": [
|
||||
"700707de33a6ada29220d3c914000d1868edd36e",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"fcp-gradient.html": [
|
||||
"c1e147472ff076cb2aa72b7dfc45cd6d3a00ed34",
|
||||
[
|
||||
|
@ -519182,7 +519342,7 @@
|
|||
]
|
||||
],
|
||||
"scroll-timeline-cssom.tentative.html": [
|
||||
"d9e4cc08cbe1649ed8c60697f28fd43b86053584",
|
||||
"1e6f581992f239f863e6a0afea27654d142ee291",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -540866,6 +541026,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"audiobuffersource-duration-loop.html": [
|
||||
"5fb8536b137ea7c18ff6d77bc29855e772e669f6",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"audiobuffersource-ended.html": [
|
||||
"b9922f61ef399bf558a2f6d3c61154b9f14a512f",
|
||||
[
|
||||
|
@ -575699,20 +575866,6 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"border-radius-clip-001.htm": [
|
||||
"bf754be90ff0cf3ee2d65e68c758d88686506787",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"border-radius-clip-002.htm": [
|
||||
"c8eba29fe9d34d3b5a6b34b9745a03a1c639aa18",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"border-radius-content-edge-001.htm": [
|
||||
"72cd3a6f2afe26b771fd92d7fe5c568a36b68928",
|
||||
[
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[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 @@
|
|||
[border-radius-clip-001.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[border-radius-clip-002.htm]
|
||||
expected: FAIL
|
|
@ -1,3 +0,0 @@
|
|||
[border-radius-clipping.html]
|
||||
type: reftest
|
||||
disabled: https://github.com/servo/webrender/issues/1256
|
|
@ -0,0 +1,2 @@
|
|||
[box-shadow-041.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[box-shadow-042.html]
|
||||
expected: FAIL
|
|
@ -185,3 +185,126 @@
|
|||
[Compositing: property <rotate> underlying [1 0 0 90deg\] from add [0 1 0 180deg\] to replace [0 0 1 90deg\] at (0) should be [-4.32978e-17 -0.707107 -0.707107 180deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (-1) should be [0.27 0.53 0.8 10deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0) should be [0.27 0.53 0.8 50deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0.25) should be [y 25deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (2) should be [y 200deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (-1) should be [0.27 0.53 0.8 540deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (-1) should be [y -100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (-1) should be [0 -1 0 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (2) should be [0.27 0.53 0.8 -360deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (1) should be [0 0.71 0.71 135deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (0.75) should be [y 75deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0) should be [0.27 0.53 0.8 360deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (0.25) should be [0.27 0.53 0.8 270deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (1) should be [y 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (2) should be [0.27 0.53 0.8 -270deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (0.25) should be [0.54 0.8 0.26 94.83deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (0.75) should be [y 75deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (2) should be [y 200deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (0.25) should be [y 25deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (-1) should be [0.67 -0.06 -0.74 124.97deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (1) should be [0.27 0.53 0.8 0deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0) should be [0.27 0.53 0.8 270deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0.75) should be [y 75deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0.25) should be [0.27 0.53 0.8 60deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (0) should be [y 0deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (2) should be [-0.52 0.29 0.81 208.96deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (0.75) should be [0.27 0.53 0.8 80deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (1) should be [0.27 0.53 0.8 0deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (1) should be [y 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (2) should be [0.27 0.53 0.8 130deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0.25) should be [0.27 0.53 0.8 202.5deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (0) should be [0.71 0.71 0 90deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0.25) should be [y 25deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [none\] to replace [0 1 0 100deg\] at (2) should be [y 200deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (1) should be [y 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (0) should be [0.27 0.53 0.8 360deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 40deg\] from add [2 4 6 10deg\] to add [3 6 9 50deg\] at (1) should be [0.27 0.53 0.8 90deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 0 0 0deg\] from add [1 1 0 90deg\] to replace [0 1 1 135deg\] at (0.75) should be [0.17 0.78 0.61 118.68deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 270deg\] from add [1 2 3 90deg\] to replace [0 1 0 100deg\] at (-1) should be [0 -1 0 100deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [0 1 0 100deg\] at (0) should be [0.27 0.53 0.8 360deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [1 2 3 90deg\] from add [2 4 6 270deg\] to replace [none\] at (-1) should be [0.27 0.53 0.8 720deg\]]
|
||||
expected: FAIL
|
||||
|
||||
[Compositing: property <rotate> underlying [none\] from add [2 4 6 270deg\] to replace [none\] at (0.75) should be [0.27 0.53 0.8 67.5deg\]]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[rotate-transform-equivalent.html]
|
||||
expected: TIMEOUT
|
|
@ -318,18 +318,18 @@
|
|||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,9 +56,3 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[Content-Type-Options%3A%20nosniff]
|
||||
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
10
tests/wpt/metadata/gamepad/idlharness.https.window.js.ini
Normal file
10
tests/wpt/metadata/gamepad/idlharness.https.window.js.ini
Normal file
|
@ -0,0 +1,10 @@
|
|||
[idlharness.https.window.html]
|
||||
[GamepadEvent must be primary interface of new GamepadEvent("gamepad")]
|
||||
expected: FAIL
|
||||
|
||||
[GamepadEvent interface: new GamepadEvent("gamepad") must inherit property "gamepad" with the proper type]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of new GamepadEvent("gamepad")]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -172,6 +172,3 @@
|
|||
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,9 +2,3 @@
|
|||
[DOMParser]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument]
|
||||
expected: FAIL
|
||||
|
||||
[<template>]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[async_004.htm]
|
||||
[async script executes as soon as possible after a download is complete]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[module-static-import-delayed.html]
|
||||
[document.write in an imported module]
|
||||
expected: FAIL
|
||||
|
|
@ -4,6 +4,3 @@
|
|||
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: TIMEOUT
|
||||
|
||||
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[realtimeanalyser-fft-scaling.html]
|
||||
expected: TIMEOUT
|
||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[audiobuffersource-duration-loop.html]
|
||||
[X The array length does not match.]
|
||||
expected: FAIL
|
||||
|
|
@ -449,3 +449,6 @@
|
|||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-3.5237828125000000e+4\t9.3139332532882690e-1\t3.5238759518325329e+4\t3.7834455712772411e+4\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 3.5238759518325329e+4 at index of 28696.\n\tMax RelError of 3.7834455712772411e+4 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.0115346998129159e-34\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
[audiocontext-not-fully-active.html]
|
||||
expected: TIMEOUT
|
||||
[frame in navigated remote-site frame]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -1,6 +1,5 @@
|
|||
[003.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[shared]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>CSS Test: 'Overflow' clips to the curve of the rounded corner.</title>
|
||||
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
|
||||
<link rel="help" href="http://www.w3.org/TR/css3-background/#border-radius" />
|
||||
<meta name="flags" content="" />
|
||||
<meta name="assert" content="'Overflow' clips to the curve of the rounded corner." />
|
||||
<style type="text/css">
|
||||
div
|
||||
{
|
||||
border: solid black;
|
||||
border-radius: 40px;
|
||||
height: 1in;
|
||||
width: 2in;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test passes if the 'Filler Text' below is clipped to the curve of the rounded corners.</p>
|
||||
<div>
|
||||
Filler Text. Filler Text.
|
||||
Filler Text. Filler Text.
|
||||
Filler Text. Filler Text.
|
||||
Filler Text. Filler Text.
|
||||
Filler Text. Filler Text.
|
||||
Filler Text. Filler Text.
|
||||
Filler Text. Filler Text.
|
||||
Filler Text. Filler Text.
|
||||
Filler Text. Filler Text.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,73 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Backgrounds and Borders Test: 'border-radius' and corner-clipping of content</title>
|
||||
|
||||
<link rel="author" title="zhouli" href="mailto:liz@oupeng.com">
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
|
||||
<link rel="help" href="http://www.w3.org/TR/css-background-3/#corner-clipping">
|
||||
<link rel="match" href="reference/border-radius-clipping-ref.html">
|
||||
|
||||
<meta name="assert" content="Test passes if a box with border-radius that clips its content to a box edge clips to the border-radius curve in the corners.">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
body > div { float: left; }
|
||||
.round
|
||||
{
|
||||
border: transparent double 20px;
|
||||
border-radius: 50%;
|
||||
padding: 10px;
|
||||
}
|
||||
#bg, #txt, #img-contain
|
||||
{
|
||||
overflow: hidden;
|
||||
width: 80px;
|
||||
}
|
||||
#bg > div
|
||||
{
|
||||
margin: -10px;
|
||||
background-image: url("support/100x100-green-with-red-corners.png");
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
#txt > div
|
||||
{
|
||||
margin: -10px;
|
||||
color: green;
|
||||
font: 50px/1 Ahem;
|
||||
}
|
||||
|
||||
img
|
||||
{
|
||||
display: block;
|
||||
}
|
||||
#img-contain > img
|
||||
{
|
||||
margin: -10px;
|
||||
}
|
||||
#img-self
|
||||
{
|
||||
margin: -10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if there are four filled green circles and <strong>no red</strong>.
|
||||
|
||||
<div id="bg" class="round">
|
||||
<div></div>
|
||||
</div>
|
||||
|
||||
<div id="txt" class="round">
|
||||
<div>XX<br>XX</div>
|
||||
</div>
|
||||
|
||||
<div id="img-contain" class="round">
|
||||
<img src="support/swatch-green.png" width=100 height=100>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<img id="img-self" class="round" src="support/swatch-green.png" width=100>
|
||||
</div>
|
|
@ -1,36 +1,58 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>CSS Test: Background is clipped to the curve of the content-box when 'background-clip: content-box'</title>
|
||||
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
|
||||
<link rel="help" href="http://www.w3.org/TR/css3-background/#border-radius" />
|
||||
<meta name="flags" content="" />
|
||||
<meta name="assert" content="Background is clipped to the curve of the content-box when 'background-clip: content-box'" />
|
||||
<link rel="author" title="Microsoft" href="http://www.microsoft.com/">
|
||||
<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact">
|
||||
<link rel="match" href="reference/border-radius-clip-002-ref.htm">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#corner-clipping">
|
||||
<meta name="assert" content="Background is clipped to the curve of the content-box when 'background-clip: content-box'">
|
||||
<style type="text/css">
|
||||
#test
|
||||
#test-base
|
||||
{
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border: 10px solid black;
|
||||
padding: 10px;
|
||||
width: 98px;
|
||||
height: 98px;
|
||||
border: 10px double black;
|
||||
padding: 11px;
|
||||
border-radius: 40px;
|
||||
background: red;
|
||||
background: red url(support/swatch-red.png);
|
||||
background-clip: content-box;
|
||||
}
|
||||
#reference
|
||||
#reference-cover
|
||||
{
|
||||
margin-top: -120px;
|
||||
margin-left: 20px;
|
||||
margin: -120px 0 40px 20px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 20px;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
#reference-base
|
||||
{
|
||||
width: 98px;
|
||||
height: 98px;
|
||||
margin-left: 20px;
|
||||
border-radius: 20px;
|
||||
background: red url(support/swatch-red.png);
|
||||
}
|
||||
#test-cover
|
||||
{
|
||||
margin-top: -120px;
|
||||
border: 10px double black;
|
||||
padding: 10px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 40px;
|
||||
background-color: black;
|
||||
background-clip: content-box;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test passes if there is no red visible on the page.</p>
|
||||
<div id="test"></div>
|
||||
<div id="reference"></div>
|
||||
<div id="test-base"></div>
|
||||
<div id="reference-cover"></div>
|
||||
<div id="reference-base"></div>
|
||||
<div id="test-cover"></div>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Backgrounds and Borders Test: 'border-radius' and corner-clipping of content elements</title>
|
||||
|
||||
<link rel="author" title="zhouli" href="mailto:liz@oupeng.com">
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="http://www.w3.org/TR/css3-background/#corner-clipping">
|
||||
<link rel="match" href="reference/border-radius-clipping-ref.html">
|
||||
|
||||
<meta content="" name="flag">
|
||||
<meta name="assert" content="When set with 'overflow: hidden', an outer container must clip background area of its child element at its corners. In this test, the outer container has a 'border-radius' declaration which implies that the clipping must occur at its curves.">
|
||||
|
||||
<style>
|
||||
div#parent
|
||||
{
|
||||
border: transparent solid 20px;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
div#son
|
||||
{
|
||||
background-color: red;
|
||||
background-image: url("support/100x100-green-with-red-corners.png");
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green circle and <strong>no red</strong>.
|
||||
|
||||
<div id="parent">
|
||||
<div id="son"></div>
|
||||
</div>
|
|
@ -0,0 +1,63 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
|
||||
<title>CSS Backgrounds Test: box-shadow and empty box (edge)</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#the-box-shadow">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
|
||||
<meta content="" name="flags">
|
||||
<meta content="This test checks that an empty box can have a box shadow." name="assert">
|
||||
|
||||
<!--
|
||||
|
||||
<shadow> = inset? && <length>{2,4} && <color>?
|
||||
|
||||
A comma-separated pair of numbers in curly braces {A,B}
|
||||
indicates that the preceding type, word, or group occurs
|
||||
at least A and at most B times.
|
||||
|
||||
A question mark (?) indicates that the preceding type,
|
||||
word, or group is optional (occurs zero or one times).
|
||||
|
||||
The components of each <shadow> are interpreted as follows:
|
||||
|
||||
1st <length>
|
||||
Specifies the horizontal offset
|
||||
of the shadow. A positive value draws a shadow that is offset to the right of the box, a negative length to the left.
|
||||
2nd <length>
|
||||
Specifies the vertical offset
|
||||
of the shadow. A positive value offsets the shadow down, a negative one up.
|
||||
4th <length>
|
||||
Specifies the spread distance. Positive values cause the shadow to expand in all directions by the specified radius. Negative values cause the shadow to contract.
|
||||
|
||||
-->
|
||||
|
||||
<style>
|
||||
div#green-overlapping-test
|
||||
{
|
||||
background-color: red;
|
||||
height: 0px;
|
||||
width: 0px;
|
||||
|
||||
box-shadow: green 50px 50px 0px 50px;
|
||||
}
|
||||
|
||||
div#red-overlapped-reference
|
||||
{
|
||||
background-color: red;
|
||||
height: 100px;
|
||||
position: relative;
|
||||
width: 100px;
|
||||
z-index: -1;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.
|
||||
|
||||
<div id="green-overlapping-test"></div>
|
||||
|
||||
<div id="red-overlapped-reference"></div>
|
|
@ -0,0 +1,78 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Backgrounds Test: box-shadow in 3 sub-tests with not inset and Npx 0px</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#the-box-shadow">
|
||||
<link rel="match" href="reference/box-shadow-039-ref.html">
|
||||
|
||||
<meta content="" name="flags">
|
||||
|
||||
<!--
|
||||
|
||||
<shadow> = inset? && <length>{2,4} && <color>?
|
||||
|
||||
A comma-separated pair of numbers in curly braces {A,B}
|
||||
indicates that the preceding type, word, or group occurs
|
||||
at least A and at most B times.
|
||||
|
||||
A question mark (?) indicates that the preceding type,
|
||||
word, or group is optional (occurs zero or one times).
|
||||
|
||||
The components of each <shadow> are interpreted as follows:
|
||||
|
||||
1st <length>
|
||||
Specifies the horizontal offset
|
||||
of the shadow. A positive value draws a shadow that is offset to
|
||||
the right of the box, a negative length to the left.
|
||||
|
||||
2nd <length>
|
||||
Specifies the vertical offset
|
||||
of the shadow. A positive value offsets the shadow down, a negative one up.
|
||||
|
||||
4th <length>
|
||||
Specifies the spread distance.
|
||||
Positive values cause the shadow to expand in all directions
|
||||
by the specified radius.
|
||||
Negative values cause the shadow to contract.
|
||||
|
||||
-->
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
background-color: rgba(0, 0, 255, 0.5); /* semi-transparent blue */
|
||||
border: black double 18px;
|
||||
height: 36px;
|
||||
margin-bottom: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
/* Npx 0px, zero spread, not-inset */
|
||||
div#sub-test1
|
||||
{
|
||||
box-shadow: 36px 0px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
|
||||
/* Npx 0px, positive spread, not-inset */
|
||||
div#sub-test2
|
||||
{
|
||||
box-shadow: 36px 0px 0px 18px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
|
||||
/* Npx 0px, negative spread, not-inset */
|
||||
div#sub-test3
|
||||
{
|
||||
box-shadow: 36px 0px 0px -18px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
</style>
|
||||
|
||||
<h3>Not inset and Npx 0px: 36px 0px</h3>
|
||||
|
||||
<div id="sub-test1"></div>
|
||||
|
||||
<div id="sub-test2"></div>
|
||||
|
||||
<div id="sub-test3"></div>
|
|
@ -0,0 +1,78 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Backgrounds Test: box-shadow in 3 sub-tests with not inset and Npx Mpx</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#the-box-shadow">
|
||||
<link rel="match" href="reference/box-shadow-040-ref.html">
|
||||
|
||||
<meta content="" name="flags">
|
||||
|
||||
<!--
|
||||
|
||||
<shadow> = inset? && <length>{2,4} && <color>?
|
||||
|
||||
A comma-separated pair of numbers in curly braces {A,B}
|
||||
indicates that the preceding type, word, or group occurs
|
||||
at least A and at most B times.
|
||||
|
||||
A question mark (?) indicates that the preceding type,
|
||||
word, or group is optional (occurs zero or one times).
|
||||
|
||||
The components of each <shadow> are interpreted as follows:
|
||||
|
||||
1st <length>
|
||||
Specifies the horizontal offset
|
||||
of the shadow. A positive value draws a shadow that is offset to
|
||||
the right of the box, a negative length to the left.
|
||||
|
||||
2nd <length>
|
||||
Specifies the vertical offset
|
||||
of the shadow. A positive value offsets the shadow down, a negative one up.
|
||||
|
||||
4th <length>
|
||||
Specifies the spread distance.
|
||||
Positive values cause the shadow to expand in all directions
|
||||
by the specified radius.
|
||||
Negative values cause the shadow to contract.
|
||||
|
||||
-->
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
background-color: rgba(0, 0, 255, 0.5); /* semi-transparent blue */
|
||||
border: black double 18px;
|
||||
height: 36px;
|
||||
margin-bottom: 54px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
/* Npx Mpx, zero spread, not-inset */
|
||||
div#sub-test4
|
||||
{
|
||||
box-shadow: 36px 18px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
|
||||
/* Npx Mpx, positive spread, not-inset */
|
||||
div#sub-test5
|
||||
{
|
||||
box-shadow: 36px 18px 0px 18px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
|
||||
/* Npx Mpx, negative spread, not-inset */
|
||||
div#sub-test6
|
||||
{
|
||||
box-shadow: 36px 18px 0px -18px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
</style>
|
||||
|
||||
<h3>Not inset and Npx Mpx: 36px 18px</h3>
|
||||
|
||||
<div id="sub-test4"></div>
|
||||
|
||||
<div id="sub-test5"></div>
|
||||
|
||||
<div id="sub-test6"></div>
|
|
@ -0,0 +1,78 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Backgrounds Test: box-shadow in 3 sub-tests with inset and Npx 0px</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#the-box-shadow">
|
||||
<link rel="match" href="reference/box-shadow-041-ref.html">
|
||||
|
||||
<meta content="" name="flags">
|
||||
|
||||
<!--
|
||||
|
||||
<shadow> = inset? && <length>{2,4} && <color>?
|
||||
|
||||
A comma-separated pair of numbers in curly braces {A,B}
|
||||
indicates that the preceding type, word, or group occurs
|
||||
at least A and at most B times.
|
||||
|
||||
A question mark (?) indicates that the preceding type,
|
||||
word, or group is optional (occurs zero or one times).
|
||||
|
||||
The components of each <shadow> are interpreted as follows:
|
||||
|
||||
1st <length>
|
||||
Specifies the horizontal offset
|
||||
of the shadow. A positive value draws a shadow that is offset to
|
||||
the right of the box, a negative length to the left.
|
||||
|
||||
2nd <length>
|
||||
Specifies the vertical offset
|
||||
of the shadow. A positive value offsets the shadow down, a negative one up.
|
||||
|
||||
4th <length>
|
||||
Specifies the spread distance.
|
||||
Positive values cause the shadow to expand in all directions
|
||||
by the specified radius.
|
||||
Negative values cause the shadow to contract.
|
||||
|
||||
-->
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
background-color: rgba(0, 0, 255, 0.5); /* semi-transparent blue */
|
||||
border: black double 18px;
|
||||
height: 36px;
|
||||
margin-bottom: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
/* inset, Npx 0px, zero spread */
|
||||
div#sub-test7
|
||||
{
|
||||
box-shadow: inset 18px 0px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
|
||||
/* inset, Npx 0px, positive spread */
|
||||
div#sub-test8
|
||||
{
|
||||
box-shadow: inset 18px 0px 0px 12px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
|
||||
/* inset, Npx 0px, negative spread */
|
||||
div#sub-test9
|
||||
{
|
||||
box-shadow: inset 18px 0px 0px -6px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
</style>
|
||||
|
||||
<h3>With inset and Npx 0px: 18px 0px</h3>
|
||||
|
||||
<div id="sub-test7"></div>
|
||||
|
||||
<div id="sub-test8"></div>
|
||||
|
||||
<div id="sub-test9"></div>
|
|
@ -0,0 +1,78 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Backgrounds Test: box-shadow in 3 sub-tests with inset and Npx Mpx</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-backgrounds-3/#the-box-shadow">
|
||||
<link rel="match" href="reference/box-shadow-042-ref.html">
|
||||
|
||||
<meta content="" name="flags">
|
||||
|
||||
<!--
|
||||
|
||||
<shadow> = inset? && <length>{2,4} && <color>?
|
||||
|
||||
A comma-separated pair of numbers in curly braces {A,B}
|
||||
indicates that the preceding type, word, or group occurs
|
||||
at least A and at most B times.
|
||||
|
||||
A question mark (?) indicates that the preceding type,
|
||||
word, or group is optional (occurs zero or one times).
|
||||
|
||||
The components of each <shadow> are interpreted as follows:
|
||||
|
||||
1st <length>
|
||||
Specifies the horizontal offset
|
||||
of the shadow. A positive value draws a shadow that is offset to
|
||||
the right of the box, a negative length to the left.
|
||||
|
||||
2nd <length>
|
||||
Specifies the vertical offset
|
||||
of the shadow. A positive value offsets the shadow down, a negative one up.
|
||||
|
||||
4th <length>
|
||||
Specifies the spread distance.
|
||||
Positive values cause the shadow to expand in all directions
|
||||
by the specified radius.
|
||||
Negative values cause the shadow to contract.
|
||||
|
||||
-->
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
background-color: rgba(0, 0, 255, 0.5); /* semi-transparent blue */
|
||||
border: black double 18px;
|
||||
height: 36px;
|
||||
margin-bottom: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
/* inset, Npx Mpx, zero spread */
|
||||
div#sub-test10
|
||||
{
|
||||
box-shadow: inset 18px 12px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
|
||||
/* inset, Npx Mpx, positive spread */
|
||||
div#sub-test11
|
||||
{
|
||||
box-shadow: inset 18px 12px 0px 12px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
|
||||
/* inset, Npx Mpx, negative spread */
|
||||
div#sub-test12
|
||||
{
|
||||
box-shadow: inset 18px 12px 0px -6px rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
}
|
||||
</style>
|
||||
|
||||
<h3>With inset and Npx Mpx: 18px 12px</h3>
|
||||
|
||||
<div id="sub-test10"></div>
|
||||
|
||||
<div id="sub-test11"></div>
|
||||
|
||||
<div id="sub-test12"></div>
|
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>CSS Test: Background is clipped to the curve of the content-box when 'background-clip: content-box'</title>
|
||||
<link rel="author" title="Microsoft" href="http://www.microsoft.com/">
|
||||
<style type="text/css">
|
||||
.base
|
||||
{
|
||||
width: 98px;
|
||||
height: 98px;
|
||||
border: 10px double black;
|
||||
padding: 11px;
|
||||
border-radius: 40px;
|
||||
}
|
||||
.cover
|
||||
{
|
||||
margin: -120px 0 40px 20px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 20px;
|
||||
background-color: black;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test passes if there is no red visible on the page.</p>
|
||||
<div class="base"></div>
|
||||
<div class="cover"></div>
|
||||
<div class="base"></div>
|
||||
<div class="cover"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -11,14 +11,19 @@
|
|||
{
|
||||
background-color: green;
|
||||
border-radius: 50%;
|
||||
margin: 20px;
|
||||
height: 100px;
|
||||
left: 20px;
|
||||
position: relative;
|
||||
top: 20px;
|
||||
width: 100px;
|
||||
float: left;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if there is a filled green circle and <strong>no red</strong>.
|
||||
<p>Test passes if there are four filled green circles and <strong>no red</strong>.
|
||||
|
||||
<div></div>
|
||||
|
||||
<div></div>
|
||||
|
||||
<div></div>
|
||||
|
||||
<div></div>
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Reference Test</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
|
||||
<style>
|
||||
div.blue
|
||||
{
|
||||
background-color: rgba(0, 0, 255, 0.5); /* semi-transparent blue */
|
||||
border: black double 18px;
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test1-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 72px; /* offsetHeight == 72px */
|
||||
height: 72px;
|
||||
left: 72px; /* offsetWidth == 72px */
|
||||
position: relative;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test21-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 126px; /* 18px + 72px + 36px == 126px */
|
||||
height: 18px;
|
||||
left: 18px;
|
||||
position: relative;
|
||||
width: 108px;
|
||||
}
|
||||
|
||||
div#sub-test22-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 126px;
|
||||
height: 72px;
|
||||
left: 72px;
|
||||
position: relative;
|
||||
width: 54px;
|
||||
}
|
||||
|
||||
div#sub-test23-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 126px;
|
||||
height: 18px;
|
||||
left: 18px;
|
||||
position: relative;
|
||||
width: 108px;
|
||||
}
|
||||
|
||||
div#sub-test3-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 162px;
|
||||
height: 36px;
|
||||
left: 72px;
|
||||
position: relative;
|
||||
width: 18px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<h3>Not inset and Npx 0px: 36px 0px</h3>
|
||||
|
||||
<div class="blue"></div><div id="sub-test1-orange"></div>
|
||||
|
||||
<div class="blue" style="position: relative; bottom: 36px;"></div><div id="sub-test21-orange"></div><div id="sub-test22-orange"></div><div id="sub-test23-orange"></div>
|
||||
|
||||
<div class="blue" style="position: relative; bottom: 108px;"></div><div id="sub-test3-orange"></div>
|
|
@ -0,0 +1,75 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Reference Test</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
|
||||
<style>
|
||||
div.blue
|
||||
{
|
||||
background-color: rgba(0, 0, 255, 0.5); /* semi-transparent blue */
|
||||
border: black double 18px;
|
||||
height: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test41-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 54px; /* offsetHeight == 54px */
|
||||
height: 54px;
|
||||
left: 72px;
|
||||
position: relative;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test42-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 54px;
|
||||
height: 18px;
|
||||
left: 36px;
|
||||
position: relative;
|
||||
width: 72px;
|
||||
}
|
||||
|
||||
div#sub-test51-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 90px; /* 18px + 72px == 90px */
|
||||
height: 72px;
|
||||
left: 72px;
|
||||
position: relative;
|
||||
width: 54px;
|
||||
}
|
||||
|
||||
div#sub-test52-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 90px;
|
||||
height: 36px;
|
||||
left: 18px;
|
||||
position: relative;
|
||||
width: 108px;
|
||||
}
|
||||
|
||||
div#sub-test6-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
bottom: 108px;
|
||||
height: 36px;
|
||||
left: 72px;
|
||||
position: relative;
|
||||
width: 18px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<h3>Not inset and Npx Mpx: 36px 18px</h3>
|
||||
|
||||
<div class="blue"></div><div id="sub-test41-orange"></div><div id="sub-test42-orange"></div>
|
||||
|
||||
<div class="blue" style="position: relative; bottom: 18px;"></div><div id="sub-test51-orange"></div><div id="sub-test52-orange"></div>
|
||||
|
||||
<div class="blue" style="position: relative; bottom: 72px;"></div><div id="sub-test6-orange"></div>
|
|
@ -0,0 +1,54 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Reference Test</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
|
||||
<style>
|
||||
div.blue
|
||||
{
|
||||
background-color: rgba(0, 0, 255, 0.5); /* semi-transparent blue */
|
||||
border: black double 18px;
|
||||
height: 36px;
|
||||
margin-bottom: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test7-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 36px;
|
||||
width: 18px;
|
||||
}
|
||||
|
||||
div#sub-test81-orange , div#sub-test83-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 12px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test82-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 12px;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
div#sub-test9-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 36px;
|
||||
width: 12px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<h3>With inset and Npx 0px: 18px 0px</h3>
|
||||
|
||||
<div class="blue"><div id="sub-test7-orange"></div></div>
|
||||
|
||||
<div class="blue"><div id="sub-test81-orange"></div><div id="sub-test82-orange"></div><div id="sub-test83-orange"></div></div>
|
||||
|
||||
<div class="blue"><div id="sub-test9-orange"></div></div>
|
|
@ -0,0 +1,68 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Reference Test</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
|
||||
<style>
|
||||
div.blue
|
||||
{
|
||||
background-color: rgba(0, 0, 255, 0.5); /* semi-transparent blue */
|
||||
border: black double 18px;
|
||||
height: 36px;
|
||||
margin-bottom: 36px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test101-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 12px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test102-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 24px;
|
||||
width: 18px;
|
||||
}
|
||||
|
||||
div#sub-test111-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 24px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test112-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 12px;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
div#sub-test121-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 6px;
|
||||
width: 36px;
|
||||
}
|
||||
|
||||
div#sub-test122-orange
|
||||
{
|
||||
background-color: rgba(255, 165, 0, 0.5); /* semi-transparent orange */
|
||||
height: 30px;
|
||||
width: 12px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<h3>With inset and Npx Mpx: 18px 12px</h3>
|
||||
|
||||
<div class="blue"><div id="sub-test101-orange"></div><div id="sub-test102-orange"></div></div>
|
||||
|
||||
<div class="blue"><div id="sub-test111-orange"></div><div id="sub-test112-orange"></div></div>
|
||||
|
||||
<div class="blue"><div id="sub-test121-orange"></div><div id="sub-test122-orange"></div></div>
|
|
@ -0,0 +1,148 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://developer.mozilla.org/en-US/docs/Web/API/Element/getClientRects">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol/">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
.multicol {
|
||||
visibility: hidden;
|
||||
position: absolute;
|
||||
left: 100px;
|
||||
top: 50px;
|
||||
columns: 3;
|
||||
column-gap: 10px;
|
||||
inline-size: 290px;
|
||||
font: 20px/1 Ahem;
|
||||
orphans: 1;
|
||||
widows: 1;
|
||||
}
|
||||
#horizontalTbLtr {
|
||||
writing-mode: horizontal-tb;
|
||||
}
|
||||
#verticalLrLtr {
|
||||
writing-mode: vertical-lr;
|
||||
}
|
||||
#verticalRlLtr {
|
||||
writing-mode: vertical-rl;
|
||||
}
|
||||
#horizontalTbRtl {
|
||||
writing-mode: horizontal-tb;
|
||||
direction: rtl;
|
||||
}
|
||||
#verticalLrRtl {
|
||||
writing-mode: vertical-lr;
|
||||
direction: rtl;
|
||||
}
|
||||
#verticalRlRtl {
|
||||
writing-mode: vertical-rl;
|
||||
direction: rtl;
|
||||
}
|
||||
</style>
|
||||
<div class="multicol" id="horizontalTbLtr">
|
||||
<div style="block-size:20px;"></div>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="verticalLrLtr">
|
||||
<div style="block-size:20px;"></div>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="verticalRlLtr">
|
||||
<div style="block-size:20px;"></div>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="horizontalTbRtl" >
|
||||
<div style="block-size:20px;"></div>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="verticalLrRtl">
|
||||
<div style="block-size:20px;"></div>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="verticalRlRtl">
|
||||
<div style="block-size:20px;"></div>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
test(()=> {
|
||||
var span = document.querySelector("#horizontalTbLtr span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 100);
|
||||
assert_equals(rects[0].top, 70);
|
||||
assert_equals(rects[1].left, 200);
|
||||
assert_equals(rects[1].top, 50);
|
||||
assert_equals(rects[2].left, 200);
|
||||
assert_equals(rects[2].top, 70);
|
||||
assert_equals(rects[3].left, 300);
|
||||
assert_equals(rects[3].top, 50);
|
||||
}, "horizontal-tb ltr");
|
||||
|
||||
test(()=> {
|
||||
var span = document.querySelector("#verticalLrLtr span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 120);
|
||||
assert_equals(rects[0].top, 50);
|
||||
assert_equals(rects[1].left, 100);
|
||||
assert_equals(rects[1].top, 150);
|
||||
assert_equals(rects[2].left, 120);
|
||||
assert_equals(rects[2].top, 150);
|
||||
assert_equals(rects[3].left, 100);
|
||||
assert_equals(rects[3].top, 250);
|
||||
}, "vertical-lr ltr");
|
||||
|
||||
test(()=> {
|
||||
var span = document.querySelector("#verticalRlLtr span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 100);
|
||||
assert_equals(rects[0].top, 50);
|
||||
assert_equals(rects[1].left, 120);
|
||||
assert_equals(rects[1].top, 150);
|
||||
assert_equals(rects[2].left, 100);
|
||||
assert_equals(rects[2].top, 150);
|
||||
assert_equals(rects[3].left, 120);
|
||||
assert_equals(rects[3].top, 250);
|
||||
}, "vertical-rl ltr");
|
||||
test(()=> {
|
||||
var span = document.querySelector("#horizontalTbRtl span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 310);
|
||||
assert_equals(rects[0].top, 70);
|
||||
assert_equals(rects[1].left, 210);
|
||||
assert_equals(rects[1].top, 50);
|
||||
assert_equals(rects[2].left, 210);
|
||||
assert_equals(rects[2].top, 70);
|
||||
assert_equals(rects[3].left, 110);
|
||||
assert_equals(rects[3].top, 50);
|
||||
}, "horizontal-tb rtl");
|
||||
test(()=> {
|
||||
var span = document.querySelector("#verticalLrRtl span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 120);
|
||||
assert_equals(rects[0].top, 260);
|
||||
assert_equals(rects[1].left, 100);
|
||||
assert_equals(rects[1].top, 160);
|
||||
assert_equals(rects[2].left, 120);
|
||||
assert_equals(rects[2].top, 160);
|
||||
assert_equals(rects[3].left, 100);
|
||||
assert_equals(rects[3].top, 60);
|
||||
}, "vertical-lr rtl");
|
||||
test(()=> {
|
||||
var span = document.querySelector("#verticalRlRtl span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 100);
|
||||
assert_equals(rects[0].top, 260);
|
||||
assert_equals(rects[1].left, 120);
|
||||
assert_equals(rects[1].top, 160);
|
||||
assert_equals(rects[2].left, 100);
|
||||
assert_equals(rects[2].top, 160);
|
||||
assert_equals(rects[3].left, 120);
|
||||
assert_equals(rects[3].top, 60);
|
||||
}, "vertical-rl rtl");
|
||||
</script>
|
|
@ -0,0 +1,148 @@
|
|||
<!DOCTYPE html>
|
||||
<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
|
||||
<link rel="help" href="https://developer.mozilla.org/en-US/docs/Web/API/Element/getClientRects">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-multicol/">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
|
||||
<style>
|
||||
.multicol {
|
||||
visibility: hidden;
|
||||
position: absolute;
|
||||
left: 100px;
|
||||
top: 50px;
|
||||
columns: 3;
|
||||
column-gap: 10px;
|
||||
inline-size: 290px;
|
||||
font: 20px/1 Ahem;
|
||||
orphans: 1;
|
||||
widows: 1;
|
||||
}
|
||||
#horizontalTbLtr {
|
||||
writing-mode: horizontal-tb;
|
||||
}
|
||||
#verticalLrLtr {
|
||||
writing-mode: vertical-lr;
|
||||
}
|
||||
#verticalRlLtr {
|
||||
writing-mode: vertical-rl;
|
||||
}
|
||||
#horizontalTbRtl {
|
||||
writing-mode: horizontal-tb;
|
||||
direction: rtl;
|
||||
}
|
||||
#verticalLrRtl {
|
||||
writing-mode: vertical-lr;
|
||||
direction: rtl;
|
||||
}
|
||||
#verticalRlRtl {
|
||||
writing-mode: vertical-rl;
|
||||
direction: rtl;
|
||||
}
|
||||
</style>
|
||||
<div class="multicol" id="horizontalTbLtr">
|
||||
<br>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="verticalLrLtr">
|
||||
<br>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="verticalRlLtr">
|
||||
<br>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="horizontalTbRtl" >
|
||||
<br>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="verticalLrRtl">
|
||||
<br>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<div class="multicol" id="verticalRlRtl">
|
||||
<br>
|
||||
<span>XXXX XXXX XXXX XXXX</span>
|
||||
</div>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
test(()=> {
|
||||
var span = document.querySelector("#horizontalTbLtr span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 100);
|
||||
assert_equals(rects[0].top, 70);
|
||||
assert_equals(rects[1].left, 200);
|
||||
assert_equals(rects[1].top, 50);
|
||||
assert_equals(rects[2].left, 200);
|
||||
assert_equals(rects[2].top, 70);
|
||||
assert_equals(rects[3].left, 300);
|
||||
assert_equals(rects[3].top, 50);
|
||||
}, "horizontal-tb ltr");
|
||||
|
||||
test(()=> {
|
||||
var span = document.querySelector("#verticalLrLtr span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 120);
|
||||
assert_equals(rects[0].top, 50);
|
||||
assert_equals(rects[1].left, 100);
|
||||
assert_equals(rects[1].top, 150);
|
||||
assert_equals(rects[2].left, 120);
|
||||
assert_equals(rects[2].top, 150);
|
||||
assert_equals(rects[3].left, 100);
|
||||
assert_equals(rects[3].top, 250);
|
||||
}, "vertical-lr ltr");
|
||||
|
||||
test(()=> {
|
||||
var span = document.querySelector("#verticalRlLtr span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 100);
|
||||
assert_equals(rects[0].top, 50);
|
||||
assert_equals(rects[1].left, 120);
|
||||
assert_equals(rects[1].top, 150);
|
||||
assert_equals(rects[2].left, 100);
|
||||
assert_equals(rects[2].top, 150);
|
||||
assert_equals(rects[3].left, 120);
|
||||
assert_equals(rects[3].top, 250);
|
||||
}, "vertical-rl ltr");
|
||||
test(()=> {
|
||||
var span = document.querySelector("#horizontalTbRtl span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 310);
|
||||
assert_equals(rects[0].top, 70);
|
||||
assert_equals(rects[1].left, 210);
|
||||
assert_equals(rects[1].top, 50);
|
||||
assert_equals(rects[2].left, 210);
|
||||
assert_equals(rects[2].top, 70);
|
||||
assert_equals(rects[3].left, 110);
|
||||
assert_equals(rects[3].top, 50);
|
||||
}, "horizontal-tb rtl");
|
||||
test(()=> {
|
||||
var span = document.querySelector("#verticalLrRtl span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 120);
|
||||
assert_equals(rects[0].top, 260);
|
||||
assert_equals(rects[1].left, 100);
|
||||
assert_equals(rects[1].top, 160);
|
||||
assert_equals(rects[2].left, 120);
|
||||
assert_equals(rects[2].top, 160);
|
||||
assert_equals(rects[3].left, 100);
|
||||
assert_equals(rects[3].top, 60);
|
||||
}, "vertical-lr rtl");
|
||||
test(()=> {
|
||||
var span = document.querySelector("#verticalRlRtl span");
|
||||
var rects = span.getClientRects();
|
||||
assert_equals(rects.length, 4);
|
||||
assert_equals(rects[0].left, 100);
|
||||
assert_equals(rects[0].top, 260);
|
||||
assert_equals(rects[1].left, 120);
|
||||
assert_equals(rects[1].top, 160);
|
||||
assert_equals(rects[2].left, 100);
|
||||
assert_equals(rects[2].top, 160);
|
||||
assert_equals(rects[3].left, 120);
|
||||
assert_equals(rects[3].top, 60);
|
||||
}, "vertical-rl rtl");
|
||||
</script>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<title>::placeholder should not support 'writing-mode', 'direction', and 'text-orientation'</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#placeholder-pseudo">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-line-styling">
|
||||
<link rel="match" href="reference/placeholder-excluded-properties-ref.html">
|
||||
<style>
|
||||
.horizontal::placeholder {
|
||||
writing-mode: vertical-rl;
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.vertical {
|
||||
writing-mode: vertical-rl;
|
||||
}
|
||||
.vertical::placeholder {
|
||||
text-orientation: upright;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<input class="horizontal" placeholder="placeholder">
|
||||
<input class="vertical" placeholder="placeholder">
|
||||
</body>
|
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
.vertical {
|
||||
writing-mode: vertical-rl;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<input placeholder="placeholder">
|
||||
<input class="vertical" placeholder="placeholder">
|
||||
</body>
|
|
@ -10,11 +10,59 @@
|
|||
|
||||
<body>
|
||||
<script>
|
||||
// Numerical precision may cause an axis aligned rotation to appear slightly
|
||||
// misaligned. Convert to (x, y, z, angle) form with rounding for comparison.
|
||||
function parseRotation(args) {
|
||||
const array = args.split(' ');
|
||||
if (array.length == 1) {
|
||||
// Angle or 'none'.
|
||||
return !!parseFloat(args) ? roundNumbers('0 0 1 ' + args) : args;
|
||||
}
|
||||
if (array.length == 2) {
|
||||
// Axis name + angle
|
||||
let axis = array[0];
|
||||
let angle = array[1];
|
||||
switch (array[0]) {
|
||||
case 'x':
|
||||
axis = '1 0 0 ';
|
||||
break;
|
||||
case 'y':
|
||||
axis = '0 1 0';
|
||||
break;
|
||||
case 'z':
|
||||
axis = '0 0 1';
|
||||
break;
|
||||
}
|
||||
return roundNumbers(axis + ' ' + angle);
|
||||
}
|
||||
if (array.length == 4) {
|
||||
// Axis as [x,y,z] triplet + angle.
|
||||
// Normalize the axis (if possible) for comparison.
|
||||
let x = parseFloat(array[0]);
|
||||
let y = parseFloat(array[1]);
|
||||
let z = parseFloat(array[2]);
|
||||
const angle = array[3];
|
||||
const length = Math.sqrt(x*x + y*y + z*z);
|
||||
if (length > 1e-4) {
|
||||
x /= length;
|
||||
y /= length;
|
||||
z /= length;
|
||||
}
|
||||
return roundNumbers(`${x} ${y} ${z} ${angle}`);
|
||||
}
|
||||
return args;
|
||||
}
|
||||
|
||||
function compareRotations(actual, expected) {
|
||||
assert_equals(parseRotation(actual), parseRotation(expected));
|
||||
}
|
||||
|
||||
test_composition({
|
||||
property: 'rotate',
|
||||
underlying: '100deg',
|
||||
addFrom: '10deg',
|
||||
addTo: '30deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '90deg'},
|
||||
{at: 0, expect: '110deg'},
|
||||
|
@ -29,6 +77,7 @@ test_composition({
|
|||
underlying: '1 0 0 200deg',
|
||||
addFrom: '1 0 0 -100deg',
|
||||
replaceTo: '1 0 0 40deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '1 0 0 160deg'},
|
||||
{at: 0, expect: '1 0 0 100deg'},
|
||||
|
@ -43,6 +92,7 @@ test_composition({
|
|||
underlying: '0 1 0 -40deg',
|
||||
replaceFrom: '0 1 0 50deg',
|
||||
addTo: '0 1 0 10deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '0 1 0 130deg'},
|
||||
{at: 0, expect: '0 1 0 50deg'},
|
||||
|
@ -57,13 +107,14 @@ test_composition({
|
|||
underlying: '1 2 3 40deg',
|
||||
addFrom: '2 4 6 10deg',
|
||||
addTo: '3 6 9 50deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '1 2 3 10deg'},
|
||||
{at: 0, expect: '1 2 3 50deg'},
|
||||
{at: 0.25, expect: '1 2 3 60deg'},
|
||||
{at: 0.75, expect: '1 2 3 80deg'},
|
||||
{at: 1, expect: '1 2 3 90deg'},
|
||||
{at: 2, expect: '1 2 3 130deg'},
|
||||
{at: -1, expect: '0.27 0.53 0.8 10deg'},
|
||||
{at: 0, expect: '0.27 0.53 0.8 50deg'},
|
||||
{at: 0.25, expect: '0.27 0.53 0.8 60deg'},
|
||||
{at: 0.75, expect: '0.27 0.53 0.8 80deg'},
|
||||
{at: 1, expect: '0.27 0.53 0.8 90deg'},
|
||||
{at: 2, expect: '0.27 0.53 0.8 130deg'},
|
||||
]);
|
||||
|
||||
test_composition({
|
||||
|
@ -71,13 +122,15 @@ test_composition({
|
|||
underlying: '1 2 3 270deg',
|
||||
addFrom: '1 2 3 90deg',
|
||||
replaceTo: '0 1 0 100deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '-5.49276e-17 -1 -1.64783e-16 100deg'},
|
||||
{at: 0, expect: '1 2 3 360deg'},
|
||||
{at: 0.25, expect: '-1.20172e-16 1 -3.60516e-16 25deg'},
|
||||
{at: 0.75, expect: '-1.51909e-17 1 -4.55726e-17 75deg'},
|
||||
{at: 1, expect: '0 1 0 100deg'},
|
||||
{at: 2, expect: '-3.3235e-17 -1 -9.97049e-17 160deg'},
|
||||
{at: -1, expect: '0 -1 0 100deg'},
|
||||
{at: 0, expect: '0.27 0.53 0.8 360deg'},
|
||||
{at: 0.25, expect: 'y 25deg'},
|
||||
{at: 0.75, expect: 'y 75deg'},
|
||||
{at: 1, expect: 'y 100deg'},
|
||||
// Accept both the SLERP and the common axis solution, which are equivalent.
|
||||
{at: 2, expect: '0 -1 0 160deg', option: 'y 200deg'},
|
||||
]);
|
||||
|
||||
test_composition({
|
||||
|
@ -85,27 +138,30 @@ test_composition({
|
|||
underlying: '1 2 3 90deg',
|
||||
addFrom: '2 4 6 270deg',
|
||||
replaceTo: '0 1 0 100deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '-5.49276e-17 -1 -1.64783e-16 100deg'},
|
||||
{at: 0, expect: '1 2 3 360deg'},
|
||||
{at: 0.25, expect: '-1.20172e-16 1 -3.60516e-16 25deg'},
|
||||
{at: 0.75, expect: '-1.51909e-17 1 -4.55726e-17 75deg'},
|
||||
{at: 1, expect: '0 1 0 100deg'},
|
||||
{at: 2, expect: '-3.3235e-17 -1 -9.97049e-17 160deg'},
|
||||
{at: -1, expect: '0 -1 0 100deg'},
|
||||
{at: 0, expect: '0.27 0.53 0.8 360deg'},
|
||||
{at: 0.25, expect: 'y 25deg'},
|
||||
{at: 0.75, expect: 'y 75deg'},
|
||||
{at: 1, expect: 'y 100deg'},
|
||||
// Accept both the SLERP and the common axis solution, which are equivalent.
|
||||
{at: 2, expect: '0 -1 0 160deg', option: 'y 200deg'},
|
||||
]);
|
||||
|
||||
test_composition({
|
||||
property: 'rotate',
|
||||
underlying: '1 0 0 90deg',
|
||||
addFrom: '0 1 0 180deg',
|
||||
replaceTo: '0 0 1 90deg',
|
||||
underlying: '1 0 0 0deg',
|
||||
addFrom: '1 1 0 90deg',
|
||||
replaceTo: '0 1 1 135deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '-6.12323e-17 -1 1.57009e-16 90deg'},
|
||||
{at: 0, expect: '-4.32978e-17 -0.707107 -0.707107 180deg'},
|
||||
{at: 0.25, expect: '-1.48952e-16 -0.894427 -0.447214 131.81deg'},
|
||||
{at: 0.75, expect: '-2.94392e-17 -0.707107 0.707107 70.5288deg'},
|
||||
{at: 1, expect: '90deg'},
|
||||
{at: 2, expect: '-6.12323e-17 -1 -4.71028e-16 90deg'},
|
||||
{at: -1, expect: '0.67 -0.06 -0.74 124.97deg'},
|
||||
{at: 0, expect: '0.71 0.71 0 90deg'},
|
||||
{at: 0.25, expect: '0.54 0.8 0.26 94.83deg'},
|
||||
{at: 0.75, expect: '0.17 0.78 0.61 118.68deg'},
|
||||
{at: 1, expect: '0 0.71 0.71 135deg'},
|
||||
{at: 2, expect: '-0.52 0.29 0.81 208.96deg'},
|
||||
]);
|
||||
|
||||
test_composition({
|
||||
|
@ -113,13 +169,14 @@ test_composition({
|
|||
underlying: 'none',
|
||||
addFrom: 'none',
|
||||
replaceTo: '0 1 0 100deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '0 1 0 -100deg'},
|
||||
{at: 0, expect: 'none'},
|
||||
{at: 0.25, expect: '0 1 0 25deg'},
|
||||
{at: 0.75, expect: '0 1 0 75deg'},
|
||||
{at: 1, expect: '0 1 0 100deg'},
|
||||
{at: 2, expect: '0 1 0 200deg'},
|
||||
{at: -1, expect: 'y -100deg'},
|
||||
{at: 0, expect: 'y 0deg'},
|
||||
{at: 0.25, expect: 'y 25deg'},
|
||||
{at: 0.75, expect: 'y 75deg'},
|
||||
{at: 1, expect: 'y 100deg'},
|
||||
{at: 2, expect: 'y 200deg'},
|
||||
]);
|
||||
|
||||
test_composition({
|
||||
|
@ -127,13 +184,14 @@ test_composition({
|
|||
underlying: 'none',
|
||||
addFrom: '2 4 6 270deg',
|
||||
replaceTo: 'none',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '2 4 6 540deg'},
|
||||
{at: 0, expect: '2 4 6 270deg'},
|
||||
{at: 0.25, expect: '2 4 6 202.5deg'},
|
||||
{at: 0.75, expect: '2 4 6 67.5deg'},
|
||||
{at: 1, expect: 'none'},
|
||||
{at: 2, expect: '2 4 6 -270deg'},
|
||||
{at: -1, expect: '0.27 0.53 0.8 540deg'},
|
||||
{at: 0, expect: '0.27 0.53 0.8 270deg'},
|
||||
{at: 0.25, expect: '0.27 0.53 0.8 202.5deg'},
|
||||
{at: 0.75, expect: '0.27 0.53 0.8 67.5deg'},
|
||||
{at: 1, expect: '0.27 0.53 0.8 0deg'},
|
||||
{at: 2, expect: '0.27 0.53 0.8 -270deg'},
|
||||
]);
|
||||
|
||||
test_composition({
|
||||
|
@ -141,6 +199,7 @@ test_composition({
|
|||
underlying: '1 2 3 90deg',
|
||||
addFrom: 'none',
|
||||
replaceTo: '0 1 0 100deg',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '0.31 -0.22 0.92 131.66deg'},
|
||||
{at: 0, expect: '1 2 3 90deg'},
|
||||
|
@ -155,13 +214,14 @@ test_composition({
|
|||
underlying: '1 2 3 90deg',
|
||||
addFrom: '2 4 6 270deg',
|
||||
replaceTo: 'none',
|
||||
comparisonFunction: compareRotations
|
||||
}, [
|
||||
{at: -1, expect: '1 2 3 720deg'},
|
||||
{at: 0, expect: '1 2 3 360deg'},
|
||||
{at: 0.25, expect: '1 2 3 270deg'},
|
||||
{at: 0.75, expect: '1 2 3 90deg'},
|
||||
{at: 1, expect: 'none'},
|
||||
{at: 2, expect: '1 2 3 -360deg'},
|
||||
{at: -1, expect: '0.27 0.53 0.8 720deg'},
|
||||
{at: 0, expect: '0.27 0.53 0.8 360deg'},
|
||||
{at: 0.25, expect: '0.27 0.53 0.8 270deg'},
|
||||
{at: 0.75, expect: '0.27 0.53 0.8 90deg'},
|
||||
{at: 1, expect: '0.27 0.53 0.8 0deg'},
|
||||
{at: 2, expect: '0.27 0.53 0.8 -360deg'},
|
||||
]);
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
<!doctype html>
|
||||
<html class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<title>Reference for rotate transform equivalent</title>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<style>
|
||||
.block {
|
||||
border: 2px solid white; /* Avoid anti-aliasing artifacts */
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
position: absolute;
|
||||
left: 100px;
|
||||
top: 100px;
|
||||
}
|
||||
|
||||
.overlay {
|
||||
background: green;
|
||||
z-index: 2;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div id="transform" class="block overlay"></div>
|
||||
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
async function waitForNextFrame() {
|
||||
return new Promise(resolve => {
|
||||
window.requestAnimationFrame(() => {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function createAnimation(elementName, keyframes) {
|
||||
const element = document.getElementById(elementName);
|
||||
const anim = element.animate(keyframes, 1000);
|
||||
anim.pause();
|
||||
anim.currentTime = 500;
|
||||
return anim.ready;
|
||||
}
|
||||
|
||||
onload = async function() {
|
||||
await waitForNextFrame();
|
||||
|
||||
await createAnimation('transform', [
|
||||
{transform: 'matrix3d(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1)'},
|
||||
{transform: 'matrix(0, 1, -1, 0, 0, 0)'}]);
|
||||
|
||||
await waitForNextFrame();
|
||||
takeScreenshot();
|
||||
};
|
||||
</script>
|
||||
</body>
|
|
@ -0,0 +1,73 @@
|
|||
<!doctype html>
|
||||
<html class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<title>Rotate transform equivalent</title>
|
||||
<link rel="match" href="rotate-transform-equivalent-ref.html">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm">
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<style>
|
||||
.block {
|
||||
border: 2px solid white; /* Avoid anti-aliasing artifacts */
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
position: absolute;
|
||||
left: 100px;
|
||||
top: 100px;
|
||||
}
|
||||
|
||||
.rotation {
|
||||
background: red;
|
||||
}
|
||||
|
||||
.overlay {
|
||||
background: green;
|
||||
}
|
||||
|
||||
#rotateAdd {
|
||||
rotate: 1 0 0 45deg;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div id="rotateAdd" class="block rotation"></div>
|
||||
<div id="rotateReplace" class="block rotation"></div>
|
||||
<div id="transform" class="block overlay"></div>
|
||||
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
async function waitForNextFrame() {
|
||||
return new Promise(resolve => {
|
||||
window.requestAnimationFrame(() => {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function createAnimation(elementName, keyframes) {
|
||||
const element = document.getElementById(elementName);
|
||||
const anim = element.animate(keyframes, 1000);
|
||||
anim.pause();
|
||||
anim.currentTime = 500;
|
||||
return anim.ready;
|
||||
}
|
||||
|
||||
onload = async function() {
|
||||
await waitForNextFrame();
|
||||
|
||||
await createAnimation('rotateAdd', [
|
||||
{rotate: '1 0 0 45deg', composite: 'add'},
|
||||
{rotate: '0 0 1 90deg'}]);
|
||||
await createAnimation('rotateReplace', [
|
||||
{rotate: '1 0 0 90deg'},
|
||||
{rotate: '0 0 1 90deg'}]);
|
||||
|
||||
await createAnimation('transform', [
|
||||
{transform: 'matrix3d(1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1)'},
|
||||
{transform: 'matrix(0, 1, -1, 0, 0, 0)'}]);
|
||||
|
||||
await waitForNextFrame();
|
||||
takeScreenshot();
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
|
|
@ -421,4 +421,5 @@
|
|||
window.test_no_interpolation = test_no_interpolation;
|
||||
window.test_composition = test_composition;
|
||||
window.neutralKeyframe = neutralKeyframe;
|
||||
window.roundNumbers = roundNumbers;
|
||||
})();
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
// (https://github.com/w3c/webref)
|
||||
// Source: Gamepad (https://w3c.github.io/gamepad/)
|
||||
|
||||
[Exposed=Window]
|
||||
[Exposed=Window, SecureContext]
|
||||
interface Gamepad {
|
||||
readonly attribute DOMString id;
|
||||
readonly attribute long index;
|
||||
|
@ -14,7 +14,7 @@ interface Gamepad {
|
|||
readonly attribute FrozenArray<GamepadButton> buttons;
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
[Exposed=Window, SecureContext]
|
||||
interface GamepadButton {
|
||||
readonly attribute boolean pressed;
|
||||
readonly attribute boolean touched;
|
||||
|
@ -31,7 +31,7 @@ partial interface Navigator {
|
|||
sequence<Gamepad?> getGamepads();
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
[Exposed=Window, SecureContext]
|
||||
|
||||
interface GamepadEvent: Event {
|
||||
constructor(DOMString type, GamepadEventInit eventInitDict);
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<canvas id="canvas"></canvas>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script>
|
||||
promise_test(async t => {
|
||||
const canvas = document.getElementById("canvas");
|
||||
const ctx = canvas.getContext("2d");
|
||||
const stream = canvas.captureStream();
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
|
||||
const video = document.createElement("video");
|
||||
video.srcObject = stream;
|
||||
|
||||
ctx.getImageData(0, 0, canvas.width, canvas.height);
|
||||
|
||||
assert_equals(video.readyState, video.HAVE_NOTHING,
|
||||
"Video element was just created");
|
||||
|
||||
// Wait a bit so the video element can update readyState in case of a frame.
|
||||
await new Promise(r => t.step_timeout(r, 100));
|
||||
|
||||
assert_equals(video.readyState, video.HAVE_NOTHING,
|
||||
"Video element did not get a frame from the canvas");
|
||||
}, "CanvasRenderingContext2D.getImageData() does not lead to a frame being captured");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,55 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<title>
|
||||
Ensure the timing is marked during the `update the rendering` step.
|
||||
</title>
|
||||
</head>
|
||||
<style>
|
||||
#main {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
left: 0px;
|
||||
position: relative;
|
||||
top: 0;
|
||||
background-image: url(../resources/circles.png);
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#main.contentful {
|
||||
opacity: 0.1;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<script src="../resources/utils.js"></script>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<div id="main"></div>
|
||||
<script>
|
||||
setup({"hide_test_state": true});
|
||||
async_test(function (t) {
|
||||
assert_implements(window.PerformancePaintTiming, "Paint Timing isn't supported.");
|
||||
let fired = false;
|
||||
const main = document.getElementById('main');
|
||||
let animationFrameStamps = [];
|
||||
requestAnimationFrame(function frame(stamp) {
|
||||
animationFrameStamps.unshift(stamp);
|
||||
main.className = "contentful";
|
||||
while (performance.now() - stamp <= 5) {
|
||||
/* Busy-wait */
|
||||
}
|
||||
if(!fired)
|
||||
requestAnimationFrame(frame);
|
||||
});
|
||||
new PerformanceObserver(t.step_func(list=>{
|
||||
for (let entry of list.getEntries()) {
|
||||
if (entry.name == "first-contentful-paint") {
|
||||
fired = true;
|
||||
assert_any(assert_approx_equals, entry.startTime, animationFrameStamps, 1, "One of the past requestAnimationFrame should have the same timestamp as paint entry");
|
||||
t.done();
|
||||
}
|
||||
}
|
||||
})).observe({type: "paint"});
|
||||
}, 'The first-contentful-paint timestamp should be same as the last RAF');
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -100,6 +100,75 @@ test_name('a\\9 b', 'a\tb'); // U+0009 CHARACTER TABULATION
|
|||
test_name('"foo"', 'foo');
|
||||
test_name('"none"', 'none');
|
||||
|
||||
// CSSScrollTimelineRule.cssText
|
||||
|
||||
function test_csstext(description, specified, expected) {
|
||||
if (typeof(expected) == 'undefined')
|
||||
expected = specified;
|
||||
test_stylesheet(specified, (rules) => {
|
||||
assert_equals(rules.length, 1);
|
||||
assert_equals(rules[0].constructor.name, 'CSSScrollTimelineRule');
|
||||
assert_equals(rules[0].cssText, expected);
|
||||
}, `CSSScrollTimelineRule.cssText: ${description}`);
|
||||
}
|
||||
|
||||
test_csstext(
|
||||
'empty rule',
|
||||
`@scroll-timeline timeline {}`,
|
||||
`@scroll-timeline timeline { }`);
|
||||
|
||||
// U+0009 CHARACTER TABULATION
|
||||
test_csstext(
|
||||
'escaped name',
|
||||
`@scroll-timeline tab\\9 tab {}`,
|
||||
`@scroll-timeline tab\\9 tab { }`);
|
||||
|
||||
test_csstext(
|
||||
'source descriptor',
|
||||
`@scroll-timeline timeline { source: selector(#foo); }`);
|
||||
|
||||
test_csstext(
|
||||
'orientation descriptor',
|
||||
`@scroll-timeline timeline { orientation: inline; }`);
|
||||
|
||||
test_csstext(
|
||||
'start descriptor (px)',
|
||||
`@scroll-timeline timeline { start: 100px; }`);
|
||||
|
||||
test_csstext(
|
||||
'start descriptor (offset)',
|
||||
`@scroll-timeline timeline { start: selector(#bar); }`);
|
||||
|
||||
test_csstext(
|
||||
'start descriptor (offset with edge)',
|
||||
`@scroll-timeline timeline { start: selector(#bar) start; }`);
|
||||
|
||||
test_csstext(
|
||||
'start descriptor (offset with threshold)',
|
||||
`@scroll-timeline timeline { start: selector(#bar) 1; }`);
|
||||
|
||||
test_csstext(
|
||||
'start descriptor (offset with edge and threshold)',
|
||||
`@scroll-timeline timeline { start: selector(#bar) start 1; }`);
|
||||
|
||||
test_csstext(
|
||||
'start descriptor (offset with threshold and edge)',
|
||||
`@scroll-timeline timeline { start: selector(#bar) 1 start; }`,
|
||||
`@scroll-timeline timeline { start: selector(#bar) start 1; }`);
|
||||
|
||||
test_csstext(
|
||||
'time-range descriptor',
|
||||
`@scroll-timeline timeline { time-range: 10s; }`);
|
||||
|
||||
test_csstext(
|
||||
'defaults',
|
||||
`@scroll-timeline timeline { source: none; orientation: auto; start: auto; end: auto; time-range: auto; }`);
|
||||
|
||||
test_csstext(
|
||||
'order',
|
||||
`@scroll-timeline timeline { orientation: auto; time-range: auto; source: none; end: auto; start: auto; }`,
|
||||
`@scroll-timeline timeline { source: none; orientation: auto; start: auto; end: auto; time-range: auto; }`);
|
||||
|
||||
// CSSScrollTimelineRule.source
|
||||
|
||||
function test_source(specified, expected) {
|
||||
|
|
|
@ -87,10 +87,10 @@ def env_options():
|
|||
|
||||
|
||||
class ProfileCreator(FirefoxProfileCreator):
|
||||
def __init__(self, logger, prefs_root, config, test_type, extra_prefs, e10s,
|
||||
def __init__(self, logger, prefs_root, config, test_type, extra_prefs,
|
||||
enable_fission, browser_channel, certutil_binary, ca_certificate_path):
|
||||
super(ProfileCreator, self).__init__(logger, prefs_root, config, test_type, extra_prefs,
|
||||
e10s, enable_fission, browser_channel, None,
|
||||
True, enable_fission, browser_channel, None,
|
||||
certutil_binary, ca_certificate_path)
|
||||
|
||||
def _set_required_prefs(self, profile):
|
||||
|
@ -100,11 +100,9 @@ class ProfileCreator(FirefoxProfileCreator):
|
|||
"places.history.enabled": False,
|
||||
"dom.send_after_paint_to_content": True,
|
||||
"network.preload": True,
|
||||
"browser.tabs.remote.autostart": True,
|
||||
})
|
||||
|
||||
if self.e10s:
|
||||
profile.set_preferences({"browser.tabs.remote.autostart": True})
|
||||
|
||||
if self.test_type == "reftest":
|
||||
self.logger.info("Setting android reftest preferences")
|
||||
profile.set_preferences({
|
||||
|
@ -142,7 +140,7 @@ class FirefoxAndroidBrowser(Browser):
|
|||
self.stackwalk_binary = stackwalk_binary
|
||||
self.certutil_binary = certutil_binary
|
||||
self.ca_certificate_path = ca_certificate_path
|
||||
self.e10s = e10s
|
||||
self.e10s = True
|
||||
self.enable_webrender = enable_webrender
|
||||
self.stackfix_dir = stackfix_dir
|
||||
self.binary_args = binary_args
|
||||
|
@ -162,7 +160,6 @@ class FirefoxAndroidBrowser(Browser):
|
|||
config,
|
||||
test_type,
|
||||
extra_prefs,
|
||||
e10s,
|
||||
False,
|
||||
browser_channel,
|
||||
certutil_binary,
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue