aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-03-19 21:30:49 -0400
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-03-19 23:12:10 -0400
commitd67bfb7ff893bab8d509d46a7fd2f7a379213f1e (patch)
tree10b649a821acc5910c321e7a9f2b31aae1eaf947
parente9fdcdc78584d0e7928ab132f4e2b2fd6fa95547 (diff)
downloadservo-d67bfb7ff893bab8d509d46a7fd2f7a379213f1e.tar.gz
servo-d67bfb7ff893bab8d509d46a7fd2f7a379213f1e.zip
Update web-platform-tests to revision 3ec34e5a2c8cbeeb7fad521cce0daf923b272a92
-rw-r--r--tests/wpt/metadata/MANIFEST.json399
-rw-r--r--tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom/getComputedStyle-dynamic-subdoc.html.ini4
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/misc/shader-with-non-reserved-words.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/FileAPI/FileReader/workers.html2
-rw-r--r--tests/wpt/web-platform-tests/config.default.json4
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht4
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-128.pngbin0 -> 8099 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-830.pngbin0 -> 88988 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/snap-inline-block.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/object-fit.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-path.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/table-layout.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html29
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html37
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/builtin-coverage.html903
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webaudio.idl596
-rw-r--r--tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html (renamed from tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html)0
-rw-r--r--tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html (renamed from tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html)0
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html2
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/serve.py13
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py9
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py10
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_products.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py31
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py9
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py3
-rw-r--r--tests/wpt/web-platform-tests/webaudio/idlharness.https.html91
-rw-r--r--tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html2
-rw-r--r--tests/wpt/web-platform-tests/webmessaging/message-channels/worker.html2
-rw-r--r--tests/wpt/web-platform-tests/websockets/Create-on-worker-shutdown.html4
58 files changed, 2014 insertions, 848 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 2af64324bfb..70ce5240076 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -159175,6 +159175,102 @@
{}
]
],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html": [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html",
+ [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html": [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html",
+ [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html": [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html",
+ [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html": [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html",
+ [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html": [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html",
+ [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html": [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html",
+ [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html": [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html",
+ [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html": [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html",
+ [
+ [
+ "/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-writing-modes/svg-aliasing-001.html": [
[
"/css/css-writing-modes/svg-aliasing-001.html",
@@ -215207,6 +215303,16 @@
{}
]
],
+ "css/CSS2/backgrounds/support/cat-128.png": [
+ [
+ {}
+ ]
+ ],
+ "css/CSS2/backgrounds/support/cat-830.png": [
+ [
+ {}
+ ]
+ ],
"css/CSS2/backgrounds/support/cat.png": [
[
{}
@@ -260157,6 +260263,36 @@
{}
]
],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-writing-modes/support/100x100-lime.png": [
[
{}
@@ -285222,6 +285358,11 @@
{}
]
],
+ "interfaces/webaudio.idl": [
+ [
+ {}
+ ]
+ ],
"interfaces/webauthn.idl": [
[
{}
@@ -314109,6 +314250,12 @@
{}
]
],
+ "css/css-scroll-snap/snap-inline-block.html": [
+ [
+ "/css/css-scroll-snap/snap-inline-block.html",
+ {}
+ ]
+ ],
"css/css-scroll-snap/snap-to-visible-areas.html": [
[
"/css/css-scroll-snap/snap-to-visible-areas.html",
@@ -317199,12 +317346,60 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/object-fit.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/object-fit.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/object-position.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/object-position.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-distance.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-path.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/offset-path.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-position.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/offset-position.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/offset.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/opacity.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/opacity.html",
@@ -317277,6 +317472,12 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/table-layout.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/table-layout.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-align.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/text-align.html",
@@ -317301,6 +317502,12 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-orientation.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-transform.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/text-transform.html",
@@ -318609,6 +318816,12 @@
{}
]
],
+ "css/cssom/getComputedStyle-dynamic-subdoc.html": [
+ [
+ "/css/cssom/getComputedStyle-dynamic-subdoc.html",
+ {}
+ ]
+ ],
"css/cssom/getComputedStyle-pseudo.html": [
[
"/css/cssom/getComputedStyle-pseudo.html",
@@ -342207,6 +342420,18 @@
{}
]
],
+ "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html": [
+ [
+ "/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html",
+ {}
+ ]
+ ],
+ "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html": [
+ [
+ "/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html",
+ {}
+ ]
+ ],
"offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html": [
[
"/offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html",
@@ -349251,18 +349476,6 @@
{}
]
],
- "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html": [
- [
- "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html",
- {}
- ]
- ],
- "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html": [
- [
- "/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html",
- {}
- ]
- ],
"offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html": [
[
"/offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html",
@@ -364327,6 +364540,12 @@
{}
]
],
+ "webaudio/idlharness.https.html": [
+ [
+ "/webaudio/idlharness.https.html",
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-analysernode-interface/test-analyser-gain.html": [
[
"/webaudio/the-audio-api/the-analysernode-interface/test-analyser-gain.html",
@@ -390991,7 +391210,7 @@
"support"
],
"./config.default.json": [
- "939f06a73458155a62c9d81f198ac0194ad26234",
+ "54422ca469a8d54fa4b8252803bb0e2c91459858",
"support"
],
"./lint.whitelist": [
@@ -395143,7 +395362,7 @@
"manual"
],
"FileAPI/FileReader/workers.html": [
- "d7894a0abb064411d4811d8cfb9c3ce65f99babd",
+ "b93f6c447184bc20cc59e895ae446ee95ebdb406",
"testharness"
],
"FileAPI/FileReaderSync.worker.js": [
@@ -425275,7 +425494,7 @@
"manual"
],
"css/CSS2/backgrounds/background-attachment-004.xht": [
- "ffa99116e4615792f0308b7c430efab4bc31073a",
+ "3586ab83a0d7b2173ec33964575b26fb00f92bc8",
"manual"
],
"css/CSS2/backgrounds/background-attachment-005.xht": [
@@ -427738,6 +427957,14 @@
"435db9c6ad02d80fe1545ad7fbc97d5009a32ebf",
"support"
],
+ "css/CSS2/backgrounds/support/cat-128.png": [
+ "4dd27ea01f998476c3a50fd748175af07ca3632e",
+ "support"
+ ],
+ "css/CSS2/backgrounds/support/cat-830.png": [
+ "73e44a633f1d26b915e093a65ca53650c03b9c56",
+ "support"
+ ],
"css/CSS2/backgrounds/support/cat.png": [
"461fd17b274662b88500cdf42bab7f3b79e6019d",
"support"
@@ -507570,6 +507797,10 @@
"51f08f58135901b332ff43d15fbdc8d0a22f962c",
"manual"
],
+ "css/css-scroll-snap/snap-inline-block.html": [
+ "4fc646db848f597af6f4562e7b60815e9ca4ef2b",
+ "testharness"
+ ],
"css/css-scroll-snap/snap-to-visible-areas.html": [
"dfaf8675bec557c9f2178ad48b29c803f94056b5",
"testharness"
@@ -522263,7 +522494,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/height.html": [
- "36b8677eb45f8555da4381e1644624df2f2060e0",
+ "617ec941ab1cbd02b31b8a9bb7ce6da311109476",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/isolation.html": [
@@ -522294,10 +522525,42 @@
"2a20c6818e9d71adbf3902fde74cb26136917e72",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html": [
+ "43a29c4680d0f93c586f3e7d772fe64a56947d87",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/object-fit.html": [
+ "9e16a0dac44abcdb6b17475c429694ec78c5ae0a",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/object-position.html": [
"c3040ca9284c50c2149dc09502fde5f20d0a4baa",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html": [
+ "6f6411b7eb198d0f76ea077f80e5974b50dd5ee1",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-distance.html": [
+ "57718eea1d7c224115d7a82b0a19f368354200a7",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-path.html": [
+ "5822486bf8d79310965dddcb5bcbe6bf69ac89c4",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-position.html": [
+ "a0e3b777d15caecaee854c3e5fb050df8c736d0a",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html": [
+ "f405f78977c3521f2dfd78316b78ad2bbe61845d",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/offset.html": [
+ "87b8d31906a2bf96a38e5112600fcd8970642d53",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/opacity.html": [
"3812b01e648e3b043abbd2fe82c3733309da49ad",
"testharness"
@@ -522350,6 +522613,10 @@
"3189c7b3903d30f31836ea845aebecf599198c79",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/table-layout.html": [
+ "e56449111778ad18152a42d54fc88097950f15f0",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-align.html": [
"88a1f5866a767c25dec2ef75728c68c5631d371f",
"testharness"
@@ -522366,6 +522633,10 @@
"9419ab219034d1fb732965ebd3a03934bcaddf5a",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-orientation.html": [
+ "919ebc1fadf6e097071a0f1618afeed0849f18e6",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-transform.html": [
"53f0482b667f049170dcdfb5de29dedc6897d09a",
"testharness"
@@ -522403,7 +522674,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/width.html": [
- "d429f7a88012179ef3d604b79b3db4aaba0ca426",
+ "205915eb7162e23fd5600488304dd8dfa8e51ee2",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/writing-mode.html": [
@@ -530270,6 +530541,62 @@
"770cfe7939de94e221926b65bccfa057ee7711f2",
"reftest"
],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html": [
+ "dc2667e1dee2cb1c22f678aabe4d617bb4f64f69",
+ "support"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html": [
+ "efa71c02524fa57eac92e8311b7c95befd06bda1",
+ "reftest"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html": [
+ "da28e37e576350d3eec7061f0dab66d5d7d4a261",
+ "support"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html": [
+ "109856fd1d885f7d5f8cd4a6c0db0eb8cec83dc0",
+ "reftest"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html": [
+ "bea55f8e91d4ff012e7a2ce5efa70b653893c565",
+ "support"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html": [
+ "186bbff0e10a299950a3594349115956a977d2d8",
+ "reftest"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html": [
+ "663ce0026de3c61a649c77aa6ac0097940ab1a47",
+ "reftest"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html": [
+ "3b68b98fd6e8be39b56d2882e0fe739d46b826d0",
+ "support"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html": [
+ "2d4ccf4c626ead622054753ebdabadc2626483f8",
+ "reftest"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html": [
+ "6d45ce1c05f792c126bd5c912f6f0232cd6a8fb9",
+ "support"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html": [
+ "582ce006ae8576c9b44f2532fea73641a7f4ad9b",
+ "reftest"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html": [
+ "a2a544c867707e4ac9715495c3ba7b6d26670818",
+ "support"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html": [
+ "b4a0abd69a69f19ef671042ee972a7fe62675fc6",
+ "reftest"
+ ],
+ "css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html": [
+ "2543ef7b6e41b2b0614c32167f4e0a85319dae0c",
+ "reftest"
+ ],
"css/css-writing-modes/support/100x100-lime.png": [
"b02fc2d0ad1d95a2aeb6011022e63928841b183f",
"support"
@@ -532478,6 +532805,10 @@
"c9ed57c7ef7a035c25feff4ea60547a57d727f31",
"testharness"
],
+ "css/cssom/getComputedStyle-dynamic-subdoc.html": [
+ "45d94c17f0a88877a8218135c94d331afcdf7df4",
+ "testharness"
+ ],
"css/cssom/getComputedStyle-pseudo.html": [
"a2033405d6852cdeb4c3b8cf628f7c1d8f7cd1aa",
"testharness"
@@ -544451,7 +544782,7 @@
"testharness"
],
"custom-elements/builtin-coverage.html": [
- "a33f3950860fead2c1cbe249d73394b1888facd0",
+ "14cda641d06979600b461a4985f36c1fbc3defc9",
"testharness"
],
"custom-elements/connected-callbacks.html": [
@@ -571726,6 +572057,10 @@
"d3ab33fa078f1b3bd4b29e174369073aab3963d5",
"support"
],
+ "interfaces/webaudio.idl": [
+ "43a244276b9795b137c2e46c194d56dbb957635d",
+ "support"
+ ],
"interfaces/webauthn.idl": [
"77076f0828383c0f48f36131a81b25186622b3a3",
"support"
@@ -575854,6 +576189,14 @@
"aebe4c1ad096a35fce7aa8c12d7655b525b5cd2a",
"testharness"
],
+ "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html": [
+ "4268a275ad695dfded9f6ed8de1850fafb649f95",
+ "testharness"
+ ],
+ "offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html": [
+ "8466fb824c584d343ca20a52fd8d316fc2cd0d1c",
+ "testharness"
+ ],
"offscreen-canvas/drawing-images-to-the-canvas/2d.drawImage.3arg.html": [
"f2e95967ca89ad85787c121f3cae4ed35e825b44",
"testharness"
@@ -580554,14 +580897,6 @@
"ca1cedea429efabeaaf1132b54fe45a7626f7f86",
"testharness"
],
- "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html": [
- "4268a275ad695dfded9f6ed8de1850fafb649f95",
- "testharness"
- ],
- "offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html": [
- "8466fb824c584d343ca20a52fd8d316fc2cd0d1c",
- "testharness"
- ],
"offscreen-canvas/the-offscreen-canvas/offscreencanvas.getcontext.html": [
"2961422d4081a0fc55cb8bde62e6d33cb2877832",
"testharness"
@@ -590315,7 +590650,7 @@
"testharness"
],
"resource-timing/resource_initiator_types.html": [
- "11ad45e383c110eee2496c481abbff9642f6e6ee",
+ "b05a2dfad953398d6b31f11055606f2f3694a9af",
"testharness"
],
"resource-timing/resource_memory_cached.sub.html": [
@@ -600810,6 +601145,10 @@
"93068df297042344669093ce899f0230c87ebf54",
"testharness"
],
+ "webaudio/idlharness.https.html": [
+ "7876e16ea643f69315e18c3e17af0d7f95769420",
+ "testharness"
+ ],
"webaudio/js/buffer-loader.js": [
"4d564eae0b3d7d1045626d1f144cd2638dba64e5",
"support"
@@ -601895,7 +602234,7 @@
"testharness"
],
"webmessaging/broadcastchannel/workers.html": [
- "ef608ad90a3dfbcdbf3cbb0b51ee8cacfb3a3a65",
+ "483e03e9528f1e80fc1b250caee46f7f256d63c1",
"testharness"
],
"webmessaging/event.data.sub.htm": [
@@ -601947,7 +602286,7 @@
"testharness"
],
"webmessaging/message-channels/worker.html": [
- "9c6e11c2a0d5cdbca5682c7be5a23f081f419e0f",
+ "25778166691434e77f361a609742a170c4f787e8",
"testharness"
],
"webmessaging/messageerror.html": [
@@ -602699,7 +603038,7 @@
"testharness"
],
"websockets/Create-on-worker-shutdown.html": [
- "e710493c0cd84630a1c853ada23c37908bece9cb",
+ "75112264efdc3b310f4ba2ab4517b7608aacf2f2",
"testharness"
],
"websockets/Create-protocol-with-space.htm": [
diff --git a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini
deleted file mode 100644
index 26435e28b09..00000000000
--- a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[vh_not_refreshing_on_chrome.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom/getComputedStyle-dynamic-subdoc.html.ini b/tests/wpt/metadata/css/cssom/getComputedStyle-dynamic-subdoc.html.ini
new file mode 100644
index 00000000000..b39d7c251c5
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/getComputedStyle-dynamic-subdoc.html.ini
@@ -0,0 +1,4 @@
+[getComputedStyle-dynamic-subdoc.html]
+ [getComputedStyle cross-doc properly reflects media query changes]
+ expected: FAIL
+
diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/misc/shader-with-non-reserved-words.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/misc/shader-with-non-reserved-words.html.ini
index c508ae3ae71..ad64e1afe0b 100644
--- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/misc/shader-with-non-reserved-words.html.ini
+++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/misc/shader-with-non-reserved-words.html.ini
@@ -1,5 +1,6 @@
[shader-with-non-reserved-words.html]
type: testharness
+ expected: TIMEOUT
[WebGL test #1696: shader with: 'dmat2' failed to compile]
expected: FAIL
@@ -144,3 +145,6 @@
[WebGL test #1862: shader with: 'dmat4x4' failed to compile]
expected: FAIL
+ [Overall test]
+ expected: NOTRUN
+
diff --git a/tests/wpt/web-platform-tests/FileAPI/FileReader/workers.html b/tests/wpt/web-platform-tests/FileAPI/FileReader/workers.html
index 1b6dcfce0b4..8e114eeaf86 100644
--- a/tests/wpt/web-platform-tests/FileAPI/FileReader/workers.html
+++ b/tests/wpt/web-platform-tests/FileAPI/FileReader/workers.html
@@ -15,7 +15,7 @@ async_test(t => {
postMessage(true);
}
- var workerBlob = new Blob([workerCode.toSource() + ";workerCode();"], {type:"application/javascript"});
+ var workerBlob = new Blob([workerCode.toString() + ";workerCode();"], {type:"application/javascript"});
var w = new Worker(URL.createObjectURL(workerBlob));
w.onmessage = function(e) {
diff --git a/tests/wpt/web-platform-tests/config.default.json b/tests/wpt/web-platform-tests/config.default.json
index c8bbe14ce44..d08d7c4a3fe 100644
--- a/tests/wpt/web-platform-tests/config.default.json
+++ b/tests/wpt/web-platform-tests/config.default.json
@@ -1,7 +1,7 @@
-{"host": "web-platform.test",
+{"browser_host": "web-platform.test",
"doc_root": null,
"ws_doc_root": null,
- "host_ip": null,
+ "server_host": null,
"ports":{"http":[8000, "auto"],
"https":[8443],
"ws":["auto"],
diff --git a/tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht
index 9bf2fd0490b..d738fc8735c 100644
--- a/tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht
+++ b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/background-attachment-004.xht
@@ -8,8 +8,8 @@
<meta name="flags" content="interact"/>
<style type="text/css">
* { background: transparent; }
- body { background: transparent url(http://www.hixie.ch/resources/images/astrophy/128) no-repeat fixed center; }
- .a { background: transparent url(http://www.hixie.ch/resources/images/astrophy/830) no-repeat fixed center; height: 100px; }
+ body { background: transparent url(support/cat-128.png) no-repeat fixed center; }
+ .a { background: transparent url(support/cat-830.png) no-repeat fixed center; height: 100px; }
pre { font: 100 24px/2 Arial, sans-serif; letter-spacing: 1em; word-spacing: 1.2em; margin: 1em; }
</style>
</head>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-128.png b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-128.png
new file mode 100644
index 00000000000..a7b61bced86
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-128.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-830.png b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-830.png
new file mode 100644
index 00000000000..34c4f5b2a27
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/backgrounds/support/cat-830.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-inline-block.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-inline-block.html
new file mode 100644
index 00000000000..d41dcc8a759
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/snap-inline-block.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1" />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+div {
+ position: absolute;
+ margin: 0px;
+}
+#scroller {
+ width: 400px;
+ height: 350px;
+ overflow: scroll;
+ scroll-snap-type: both mandatory;
+}
+#space {
+ width: 1000px;
+ height: 1000px;
+}
+#target {
+ width: 200px;
+ height: 200px;
+ left: 300px;
+ top: 300px;
+ scroll-snap-align: start end;
+}
+</style>
+
+<div id="scroller">
+ <div id="space"></div>
+ <div id="target"></div>
+</div>
+
+<script>
+var scroller = document.getElementById("scroller");
+var width = scroller.clientWidth;
+var height = scroller.clientHeight;
+[
+ ["horizontal-tb", 300, 500 - height],
+ ["vertical-lr", 500 - width, 300],
+ ["vertical-rl", 300, 300]
+].forEach(([writing_mode, left, top]) => {
+ test(() => {
+ scroller.style.writingMode = writing_mode;
+ if (writing_mode == "vertical-rl")
+ document.getElementById("target").style.left = (width - 700) + "px";
+ scroller.scrollTo(0, 0);
+ assert_equals(scroller.scrollLeft, left, "aligns correctly on x");
+ assert_equals(scroller.scrollTop, top, "aligns correctly on y");
+ }, "Snaps correctly for " + writing_mode +
+ " writing mode with 'inline' and 'block' alignments");
+})
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html
index 4ec1a7a4ba0..55af0947c2a 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/height.html
@@ -19,4 +19,27 @@ runPropertyTests('height', [
{ syntax: '<length>', specified: assert_is_equal_with_range_handling },
]);
+runPropertyTests('min-height', [
+ {
+ syntax: '<percentage>',
+ specified: assert_is_equal_with_range_handling
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
+]);
+
+runPropertyTests('max-height', [
+ { syntax: 'none' },
+ {
+ syntax: '<percentage>',
+ specified: assert_is_equal_with_range_handling
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
+]);
+
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html
new file mode 100644
index 00000000000..5509d878135
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'mix-blend-mode' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('mix-blend-mode', [
+ { syntax: 'normal' },
+ { syntax: 'multiply' },
+ { syntax: 'screen' },
+ { syntax: 'overlay' },
+ { syntax: 'darken' },
+ { syntax: 'lighten' },
+ { syntax: 'color-dodge' },
+ { syntax: 'color-burn' },
+ { syntax: 'hard-light' },
+ { syntax: 'soft-light' },
+ { syntax: 'difference' },
+ { syntax: 'exclusion' },
+ { syntax: 'hue' },
+ { syntax: 'saturation' },
+ { syntax: 'color' },
+ { syntax: 'luminosity' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/object-fit.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/object-fit.html
new file mode 100644
index 00000000000..1d1ee0afd1f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/object-fit.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'object-fit' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('object-fit', [
+ { syntax: 'fill' },
+ { syntax: 'contain' },
+ { syntax: 'cover' },
+ { syntax: 'none' },
+ { syntax: 'scale-down' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html
new file mode 100644
index 00000000000..590e9eb776d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-anchor.html
@@ -0,0 +1,20 @@
+<meta charset="utf-8">
+<title>'offset-anchor' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('offset-anchor', [
+ { syntax: 'auto' },
+ { syntax: '<position>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html
new file mode 100644
index 00000000000..fc4adaff9da
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-distance.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'offset-distance' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('offset-distance', [
+ { syntax: '<length>' },
+ { syntax: '<percentage>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-path.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-path.html
new file mode 100644
index 00000000000..1cf1b094bbe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-path.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'offset-path' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('offset-path', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('offset-path', [
+ 'ray(45deg closest-side)',
+ 'path("M 100 100 L 300 100 L 200 300 Z")',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html
new file mode 100644
index 00000000000..fb843bf6822
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-position.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'offset-position' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('offset-position', [
+ { syntax: 'auto' },
+ { syntax: '<position>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html
new file mode 100644
index 00000000000..56a8580cb80
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html
@@ -0,0 +1,20 @@
+<meta charset="utf-8">
+<title>'offset-rotate' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('offset-rotate', [
+ 'auto 90deg',
+ 'reverse -90deg',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset.html
new file mode 100644
index 00000000000..5b7e713bec9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'offset' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('offset', [
+ 'auto', '10px 30px', 'none',
+ 'ray(45deg closest-side)',
+ 'path("M 100 100 L 300 100 L 200 300 z")',
+ 'ray(45deg closest-side) / 40px 20px'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/table-layout.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/table-layout.html
new file mode 100644
index 00000000000..e58d019958b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/table-layout.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'table-layout' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('table-layout', [
+ { syntax: 'auto' },
+ { syntax: 'fixed' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html
new file mode 100644
index 00000000000..8bc74b7b3c4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-orientation' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-orientation', [
+ { syntax: 'mixed' },
+ { syntax: 'upright' },
+ { syntax: 'sideways' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html
index f79eda147c6..29b3382b1dd 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/width.html
@@ -25,4 +25,27 @@ runPropertyTests('width', [
},
]);
+runPropertyTests('min-width', [
+ {
+ syntax: '<percentage>',
+ specified: assert_is_equal_with_range_handling
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
+]);
+
+runPropertyTests('max-width', [
+ { syntax: 'none' },
+ {
+ syntax: '<percentage>',
+ specified: assert_is_equal_with_range_handling
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
+]);
+
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html
new file mode 100644
index 00000000000..d8edfb69df8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 200px;
+ width: 500px;
+}
+.element {
+ background: magenta;
+ font: 25px/1 Ahem;
+ margin: 50px;
+ height: 100px;
+ writing-mode: vertical-lr;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html
new file mode 100644
index 00000000000..d5a77cd23ae
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-001.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins</title>
+<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-auto">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#dimension-mapping">
+<link rel="match" href="sizing-orthogonal-percentage-margin-001-ref.html">
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<meta name="assert" content="This test checks that a verticalLR element inside an horizontal container computes properly its percentage margins against the container's inline size (the container's width in this test), and the element is sized accordingly subtracting those margins from the available size.">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 200px;
+ width: 500px;
+}
+.element {
+ background: magenta;
+ font: 25px/1 Ahem;
+ margin: 10%; /* This should be computed against the container's inline size (500px), so it should be 50px and element's height should be 100px. */
+ writing-mode: vertical-lr;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html
new file mode 100644
index 00000000000..98e6d770ff0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 200px;
+ width: 500px;
+}
+.element {
+ background: magenta;
+ font: 25px/1 Ahem;
+ margin: 50px;
+ height: 100px;
+ writing-mode: vertical-rl;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html
new file mode 100644
index 00000000000..55e266fd9ff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-002.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins</title>
+<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-auto">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#dimension-mapping">
+<link rel="match" href="sizing-orthogonal-percentage-margin-002-ref.html">
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<meta name="assert" content="This test checks that a verticalRL element inside an horizontal container computes properly its percentage margins against the container's inline size (the container's width in this test), and the element is sized accordingly subtracting those margins from the available size.">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 200px;
+ width: 500px;
+}
+.element {
+ background: magenta;
+ font: 25px/1 Ahem;
+ margin: 10%; /* This should be computed against the container's inline size (500px), so it should be 50px and element's height should be 100px. */
+ writing-mode: vertical-rl;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html
new file mode 100644
index 00000000000..f035f59db16
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 200px;
+ width: 500px;
+ writing-mode: vertical-lr;
+}
+.element {
+ background: magenta;
+ font: 50px/1 Ahem;
+ margin: 20px;
+ width: 460px;
+ writing-mode: horizontal-tb;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html
new file mode 100644
index 00000000000..d722504a699
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-003.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins</title>
+<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-auto">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#dimension-mapping">
+<link rel="match" href="sizing-orthogonal-percentage-margin-003-ref.html">
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<meta name="assert" content="This test checks that an horizontal element inside a verticalLR container computes properly its percentage margins against the container's inline size (the container's height in this test), and the element is sized accordingly subtracting those margins from the available size.">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 200px;
+ width: 500px;
+ writing-mode: vertical-lr;
+}
+.element {
+ background: magenta;
+ font: 50px/1 Ahem;
+ margin: 10%; /* This should be computed against the container's inline size (200px), so it should be 20px and element's width should be 460px. */
+ writing-mode: horizontal-tb;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html
new file mode 100644
index 00000000000..2cd59eb6d1f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-004.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins</title>
+<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-auto">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#dimension-mapping">
+<link rel="match" href="sizing-orthogonal-percentage-margin-003-ref.html">
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<meta name="assert" content="This test checks that an horizontal element inside a verticalLR container computes properly its percentage margins against the container's inline size (the container's height in this test), and the element is sized accordingly subtracting those margins from the available size.">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 200px;
+ width: 500px;
+ writing-mode: vertical-rl;
+}
+.element {
+ background: magenta;
+ font: 50px/1 Ahem;
+ margin: 10%; /* This should be computed against the container's inline size (200px), so it should be 20px and element's width should be 460px. */
+ writing-mode: horizontal-tb;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html
new file mode 100644
index 00000000000..40e44125aba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 500px;
+ width: 200px;
+}
+.element {
+ background: magenta;
+ font: 50px/1 Ahem;
+ margin: 20px;
+ height: 460px;
+ writing-mode: vertical-lr;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html
new file mode 100644
index 00000000000..79801424565
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-005.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins</title>
+<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-auto">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#dimension-mapping">
+<link rel="match" href="sizing-orthogonal-percentage-margin-005-ref.html">
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<meta name="assert" content="This test checks that a verticalLR element inside an horizontal container computes properly its percentage margins against the container's inline size (the container's width in this test), and the element is sized accordingly subtracting those margins from the available size.">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 500px;
+ width: 200px;
+}
+.element {
+ background: magenta;
+ font: 50px/1 Ahem;
+ margin: 10%; /* This should be computed against the container's inline size (200px), so it should be 20px and element's height should be 460px. */
+ writing-mode: vertical-lr;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html
new file mode 100644
index 00000000000..3b25252862d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 500px;
+ width: 200px;
+}
+.element {
+ background: magenta;
+ font: 50px/1 Ahem;
+ margin: 20px;
+ height: 460px;
+ writing-mode: vertical-rl;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html
new file mode 100644
index 00000000000..f945dec8f64
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-006.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins</title>
+<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-auto">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#dimension-mapping">
+<link rel="match" href="sizing-orthogonal-percentage-margin-006-ref.html">
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<meta name="assert" content="This test checks that a verticalRL element inside an horizontal container computes properly its percentage margins against the container's inline size (the container's width in this test), and the element is sized accordingly subtracting those margins from the available size.">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 500px;
+ width: 200px;
+}
+.element {
+ background: magenta;
+ font: 50px/1 Ahem;
+ margin: 10%; /* This should be computed against the container's inline size (200px), so it should be 20px and element's height should be 460px. */
+ writing-mode: vertical-rl;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html
new file mode 100644
index 00000000000..02dfe07eb1c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins reference file</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 500px;
+ width: 200px;
+ writing-mode: vertical-lr;
+}
+.element {
+ background: magenta;
+ font: 25px/1 Ahem;
+ margin: 50px;
+ width: 100px;
+ writing-mode: horizontal-tb;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html
new file mode 100644
index 00000000000..93f50533489
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-007.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins</title>
+<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-auto">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#dimension-mapping">
+<link rel="match" href="sizing-orthogonal-percentage-margin-007-ref.html">
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<meta name="assert" content="This test checks that an horizontal element inside a verticalLR container computes properly its percentage margins against the container's inline size (the container's height in this test), and the element is sized accordingly subtracting those margins from the available size.">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 500px;
+ width: 200px;
+ writing-mode: vertical-lr;
+}
+.element {
+ background: magenta;
+ font: 25px/1 Ahem;
+ margin: 10%; /* This should be computed against the container's inline size (500px), so it should be 50px and element's width should be 100px. */
+ writing-mode: horizontal-tb;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html
new file mode 100644
index 00000000000..39bf4f5cf13
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/sizing-orthogonal-percentage-margin-008.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Writing Modes Test: Orthogonal element sizing and percentage margins</title>
+<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-auto">
+<link rel="help" href="http://www.w3.org/TR/css-writing-modes-3/#dimension-mapping">
+<link rel="match" href="sizing-orthogonal-percentage-margin-007-ref.html">
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<meta name="assert" content="This test checks that an horizontal element inside a verticalLR container computes properly its percentage margins against the container's inline size (the container's height in this test), and the element is sized accordingly subtracting those margins from the available size.">
+<style>
+.container {
+ background: cyan;
+ border: solid thick;
+ height: 500px;
+ width: 200px;
+ writing-mode: vertical-rl;
+}
+.element {
+ background: magenta;
+ font: 25px/1 Ahem;
+ margin: 10%; /* This should be computed against the container's inline size (500px), so it should be 50px and element's width should be 100px. */
+ writing-mode: horizontal-tb;
+}
+</style>
+
+<p>The test passes if it has the same visual effect as reference.</p>
+
+<div class="container">
+ <div class="element">XX X X X XX X X XX X XX</div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html
new file mode 100644
index 00000000000..13bd694d97d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSSOM: getComputedStyle cross-doc properly reflects media query changes</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<!--
+ NOTE: The way this test is written doesn't match the spec, but matches all
+ implementations, see https://github.com/w3c/csswg-drafts/issues/2403
+-->
+<iframe id="frm" style="width: 100px; height: 100px"></iframe>
+<script>
+test(function() {
+ let frm = document.getElementById('frm');
+ let frmDoc = frm.contentWindow.document;
+ frmDoc.open();
+ frmDoc.write('<style>body { color: red } @media all and (min-width: 101px) { body { color: green } }</style><body>Should be green</body>');
+ frmDoc.close();
+
+ document.body.offsetTop;
+
+ assert_equals(
+ getComputedStyle(frmDoc.body).color,
+ "rgb(255, 0, 0)",
+ "Initial color should be red"
+ );
+
+ frm.style.width = "200px";
+
+ assert_equals(
+ getComputedStyle(frmDoc.body).color,
+ "rgb(0, 128, 0)",
+ "style should have been updated to account for media query changes"
+ );
+}, "getComputedStyle cross-doc properly reflects media query changes");
+</script>
diff --git a/tests/wpt/web-platform-tests/custom-elements/builtin-coverage.html b/tests/wpt/web-platform-tests/custom-elements/builtin-coverage.html
index bd084e968a4..e3001a2c485 100644
--- a/tests/wpt/web-platform-tests/custom-elements/builtin-coverage.html
+++ b/tests/wpt/web-platform-tests/custom-elements/builtin-coverage.html
@@ -9,805 +9,146 @@
<body is="my-body">
<div id="container"></div>
<script>
-class MyA extends HTMLAnchorElement {
- constructor() {
- super();
- }
-}
-
-class MyAbbr extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyAddress extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyArea extends HTMLAreaElement {
- constructor() {
- super();
- }
-}
-
-class MyArticle extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyAside extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyAudio extends HTMLAudioElement {
- constructor() {
- super();
- }
-}
-
-class MyB extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyBase extends HTMLBaseElement {
- constructor() {
- super();
- }
-}
-
-class MyBdi extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyBdo extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyBlockquote extends HTMLQuoteElement {
- constructor() {
- super();
- }
-}
-
-class MyBody extends HTMLBodyElement {
- constructor() {
- super();
- }
-}
-
-class MyBr extends HTMLBRElement {
- constructor() {
- super();
- }
-}
-
-class MyButton extends HTMLButtonElement {
- constructor() {
- super();
- }
-}
-
-class MyCanvas extends HTMLCanvasElement {
- constructor() {
- super();
- }
-}
-
-class MyCaption extends HTMLTableCaptionElement {
- constructor() {
- super();
- }
-}
-
-class MyCite extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyCode extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyCol extends HTMLTableColElement {
- constructor() {
- super();
- }
-}
-
-class MyColgroup extends HTMLTableColElement {
- constructor() {
- super();
- }
-}
-
-class MyData extends HTMLDataElement {
- constructor() {
- super();
- }
-}
-
-class MyDd extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyDel extends HTMLModElement {
- constructor() {
- super();
- }
-}
-
-class MyDetails extends HTMLDetailsElement {
- constructor() {
- super();
- }
-}
-
-class MyDfn extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyDiv extends HTMLDivElement {
- constructor() {
- super();
- }
-}
-
-class MyDl extends HTMLDListElement {
- constructor() {
- super();
- }
-}
-
-class MyDt extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyEm extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyEmbed extends HTMLEmbedElement {
- constructor() {
- super();
- }
-}
-
-class MyFieldset extends HTMLFieldSetElement {
- constructor() {
- super();
- }
-}
-
-class MyFigcaption extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyFigure extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyFooter extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyForm extends HTMLFormElement {
- constructor() {
- super();
- }
-}
-
-class MyH1 extends HTMLHeadingElement {
- constructor() {
- super();
- }
-}
-
-class MyH2 extends HTMLHeadingElement {
- constructor() {
- super();
- }
-}
-
-class MyH3 extends HTMLHeadingElement {
- constructor() {
- super();
- }
-}
-
-class MyH4 extends HTMLHeadingElement {
- constructor() {
- super();
- }
-}
-
-class MyH5 extends HTMLHeadingElement {
- constructor() {
- super();
- }
-}
-
-class MyH6 extends HTMLHeadingElement {
- constructor() {
- super();
- }
-}
-
-class MyHeader extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyHgroup extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyHr extends HTMLHRElement {
- constructor() {
- super();
- }
-}
-
-class MyHtml extends HTMLHtmlElement {
- constructor() {
- super();
- }
-}
-
-class MyI extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyIframe extends HTMLIFrameElement {
- constructor() {
- super();
- }
-}
-
-class MyImg extends HTMLImageElement {
- constructor() {
- super();
- }
-}
-
-class MyInput extends HTMLInputElement {
- constructor() {
- super();
- }
-}
-
-class MyIns extends HTMLModElement {
- constructor() {
- super();
- }
-}
-
-class MyKbd extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyLabel extends HTMLLabelElement {
- constructor() {
- super();
- }
-}
-
-class MyLegend extends HTMLLegendElement {
- constructor() {
- super();
- }
-}
-
-class MyLi extends HTMLLIElement {
- constructor() {
- super();
- }
-}
-
-class MyLink extends HTMLLinkElement {
- constructor() {
- super();
- }
-}
-
-class MyMain extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyMap extends HTMLMapElement {
- constructor() {
- super();
- }
-}
-
-class MyMark extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyMenu extends HTMLMenuElement {
- constructor() {
- super();
- }
-}
-
-class MyMeta extends HTMLMetaElement {
- constructor() {
- super();
- }
-}
-
-class MyMeter extends HTMLMeterElement {
- constructor() {
- super();
- }
-}
-
-class MyNav extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyNoscript extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyObject extends HTMLObjectElement {
- constructor() {
- super();
- }
-}
-
-class MyOl extends HTMLOListElement {
- constructor() {
- super();
- }
-}
-
-class MyOptgroup extends HTMLOptGroupElement {
- constructor() {
- super();
- }
-}
-
-class MyOption extends HTMLOptionElement {
- constructor() {
- super();
- }
-}
-
-class MyOutput extends HTMLOutputElement {
- constructor() {
- super();
- }
-}
-
-class MyP extends HTMLParagraphElement {
- constructor() {
- super();
- }
-}
-
-class MyParam extends HTMLParamElement {
- constructor() {
- super();
- }
-}
-
-class MyPicture extends HTMLPictureElement {
- constructor() {
- super();
- }
-}
-
-class MyPre extends HTMLPreElement {
- constructor() {
- super();
- }
-}
-
-class MyProgress extends HTMLProgressElement {
- constructor() {
- super();
- }
-}
-
-class MyQ extends HTMLQuoteElement {
- constructor() {
- super();
- }
-}
-
-class MyRp extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyRt extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyRuby extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyS extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MySamp extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyScript extends HTMLScriptElement {
- constructor() {
- super();
- }
-}
-
-class MySection extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MySelect extends HTMLSelectElement {
- constructor() {
- super();
- }
-}
-
-class MySmall extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MySource extends HTMLSourceElement {
- constructor() {
- super();
- }
-}
-
-class MySpan extends HTMLSpanElement {
- constructor() {
- super();
- }
-}
-
-class MyStrong extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyStyle extends HTMLStyleElement {
- constructor() {
- super();
- }
-}
-
-class MySub extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MySummary extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MySup extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyTable extends HTMLTableElement {
- constructor() {
- super();
- }
-}
-
-class MyTbody extends HTMLTableSectionElement {
- constructor() {
- super();
- }
-}
-
-class MyTd extends HTMLTableCellElement {
- constructor() {
- super();
- }
-}
-
-class MyTemplate extends HTMLTemplateElement {
- constructor() {
- super();
- }
-}
-
-class MyTextarea extends HTMLTextAreaElement {
- constructor() {
- super();
- }
-}
-
-class MyTfoot extends HTMLTableSectionElement {
- constructor() {
- super();
- }
-}
-
-class MyTh extends HTMLTableCellElement {
- constructor() {
- super();
- }
-}
-
-class MyThead extends HTMLTableSectionElement {
- constructor() {
- super();
- }
-}
-
-class MyTime extends HTMLTimeElement {
- constructor() {
- super();
- }
-}
-
-class MyTitle extends HTMLTitleElement {
- constructor() {
- super();
- }
-}
-
-class MyTr extends HTMLTableRowElement {
- constructor() {
- super();
- }
-}
-
-class MyTrack extends HTMLTrackElement {
- constructor() {
- super();
- }
-}
-
-class MyU extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyUl extends HTMLUListElement {
- constructor() {
- super();
- }
-}
-
-class MyVar extends HTMLElement {
- constructor() {
- super();
- }
-}
-
-class MyVideo extends HTMLVideoElement {
- constructor() {
- super();
- }
-}
-
-class MyWbr extends HTMLElement {
- constructor() {
- super();
- }
-}
-
let testData = [
- {tag: 'a', klass: MyA},
- {tag: 'abbr', klass: MyAbbr},
- {tag: 'address', klass: MyAddress},
- {tag: 'area', klass: MyArea},
- {tag: 'article', klass: MyArticle},
- {tag: 'aside', klass: MyAside},
- {tag: 'audio', klass: MyAudio},
- {tag: 'b', klass: MyB},
- {tag: 'base', klass: MyBase},
- {tag: 'bdi', klass: MyBdi},
- {tag: 'bdo', klass: MyBdo},
- {tag: 'blockquote', klass: MyBlockquote},
- {tag: 'body', klass: MyBody, parsing: 'document'},
- {tag: 'br', klass: MyBr},
- {tag: 'button', klass: MyButton},
- {tag: 'canvas', klass: MyCanvas},
- {tag: 'caption', klass: MyCaption, parsing: 'table'},
- {tag: 'cite', klass: MyCite},
- {tag: 'code', klass: MyCode},
- {tag: 'col', klass: MyCol, parsing: 'table'},
- {tag: 'colgroup', klass: MyColgroup, parsing: 'table'},
- {tag: 'data', klass: MyData},
- {tag: 'dd', klass: MyDd},
- {tag: 'del', klass: MyDel},
- {tag: 'details', klass: MyDetails},
- {tag: 'dfn', klass: MyDfn},
- {tag: 'div', klass: MyDiv},
- {tag: 'dl', klass: MyDl},
- {tag: 'dt', klass: MyDt},
- {tag: 'em', klass: MyEm},
- {tag: 'embed', klass: MyEmbed},
- {tag: 'fieldset', klass: MyFieldset},
- {tag: 'figcaption', klass: MyFigcaption},
- {tag: 'figure', klass: MyFigure},
- {tag: 'footer', klass: MyFooter},
- {tag: 'form', klass: MyForm},
- {tag: 'h1', klass: MyH1},
- {tag: 'h2', klass: MyH2},
- {tag: 'h3', klass: MyH3},
- {tag: 'h4', klass: MyH4},
- {tag: 'h5', klass: MyH5},
- {tag: 'h6', klass: MyH6},
- {tag: 'header', klass: MyHeader},
- {tag: 'hgroup', klass: MyHgroup},
- {tag: 'hr', klass: MyHr},
- {tag: 'html', klass: MyHtml, parsing: 'document'},
- {tag: 'i', klass: MyI},
- {tag: 'iframe', klass: MyIframe},
- {tag: 'img', klass: MyImg},
- {tag: 'input', klass: MyInput},
- {tag: 'ins', klass: MyIns},
- {tag: 'kbd', klass: MyKbd},
- {tag: 'label', klass: MyLabel},
- {tag: 'legend', klass: MyLegend},
- {tag: 'li', klass: MyLi},
- {tag: 'link', klass: MyLink},
- {tag: 'main', klass: MyMain},
- {tag: 'map', klass: MyMap},
- {tag: 'mark', klass: MyMark},
- {tag: 'menu', klass: MyMenu},
- {tag: 'meta', klass: MyMeta},
- {tag: 'meter', klass: MyMeter},
- {tag: 'nav', klass: MyNav},
- {tag: 'noscript', klass: MyNoscript},
- {tag: 'object', klass: MyObject},
- {tag: 'ol', klass: MyOl},
- {tag: 'optgroup', klass: MyOptgroup},
- {tag: 'option', klass: MyOption},
- {tag: 'output', klass: MyOutput},
- {tag: 'p', klass: MyP},
- {tag: 'param', klass: MyParam},
- {tag: 'picture', klass: MyPicture},
- {tag: 'pre', klass: MyPre},
- {tag: 'progress', klass: MyProgress},
- {tag: 'q', klass: MyQ},
- {tag: 'rp', klass: MyRp},
- {tag: 'rt', klass: MyRt},
- {tag: 'ruby', klass: MyRuby},
- {tag: 's', klass: MyS},
- {tag: 'samp', klass: MySamp},
- {tag: 'script', klass: MyScript},
- {tag: 'section', klass: MySection},
- {tag: 'select', klass: MySelect},
- {tag: 'small', klass: MySmall},
- {tag: 'source', klass: MySource},
- {tag: 'span', klass: MySpan},
- {tag: 'strong', klass: MyStrong},
- {tag: 'style', klass: MyStyle},
- {tag: 'sub', klass: MySub},
- {tag: 'summary', klass: MySummary},
- {tag: 'sup', klass: MySup},
- {tag: 'table', klass: MyTable},
- {tag: 'tbody', klass: MyTbody, parsing: 'table'},
- {tag: 'td', klass: MyTd, parsing: 'table'},
- {tag: 'template', klass: MyTemplate},
- {tag: 'textarea', klass: MyTextarea},
- {tag: 'tfoot', klass: MyTfoot, parsing: 'table'},
- {tag: 'th', klass: MyTh, parsing: 'table'},
- {tag: 'thead', klass: MyThead, parsing: 'table'},
- {tag: 'time', klass: MyTime},
- {tag: 'title', klass: MyTitle},
- {tag: 'tr', klass: MyTr, parsing: 'table'},
- {tag: 'track', klass: MyTrack},
- {tag: 'u', klass: MyU},
- {tag: 'ul', klass: MyUl},
- {tag: 'var', klass: MyVar},
- {tag: 'video', klass: MyVideo},
- {tag: 'wbr', klass: MyWbr},
+ {tag: 'a', interface: 'HTMLAnchorElement'},
+ {tag: 'abbr', interface: 'HTMLElement'},
+ {tag: 'address', interface: 'HTMLElement'},
+ {tag: 'area', interface: 'HTMLAreaElement'},
+ {tag: 'article', interface: 'HTMLElement'},
+ {tag: 'aside', interface: 'HTMLElement'},
+ {tag: 'audio', interface: 'HTMLAudioElement'},
+ {tag: 'b', interface: 'HTMLElement'},
+ {tag: 'base', interface: 'HTMLBaseElement'},
+ {tag: 'bdi', interface: 'HTMLElement'},
+ {tag: 'bdo', interface: 'HTMLElement'},
+ {tag: 'blockquote', interface: 'HTMLQuoteElement'},
+ {tag: 'body', interface: 'HTMLBodyElement', parsing: 'document'},
+ {tag: 'br', interface: 'HTMLBRElement'},
+ {tag: 'button', interface: 'HTMLButtonElement'},
+ {tag: 'canvas', interface: 'HTMLCanvasElement'},
+ {tag: 'caption', interface: 'HTMLTableCaptionElement', parsing: 'table'},
+ {tag: 'cite', interface: 'HTMLElement'},
+ {tag: 'code', interface: 'HTMLElement'},
+ {tag: 'col', interface: 'HTMLTableColElement', parsing: 'table'},
+ {tag: 'colgroup', interface: 'HTMLTableColElement', parsing: 'table'},
+ {tag: 'data', interface: 'HTMLDataElement'},
+ {tag: 'dd', interface: 'HTMLElement'},
+ {tag: 'del', interface: 'HTMLModElement'},
+ {tag: 'details', interface: 'HTMLDetailsElement'},
+ {tag: 'dfn', interface: 'HTMLElement'},
+ {tag: 'div', interface: 'HTMLDivElement'},
+ {tag: 'dl', interface: 'HTMLDListElement'},
+ {tag: 'dt', interface: 'HTMLElement'},
+ {tag: 'em', interface: 'HTMLElement'},
+ {tag: 'embed', interface: 'HTMLEmbedElement'},
+ {tag: 'fieldset', interface: 'HTMLFieldSetElement'},
+ {tag: 'figcaption', interface: 'HTMLElement'},
+ {tag: 'figure', interface: 'HTMLElement'},
+ {tag: 'footer', interface: 'HTMLElement'},
+ {tag: 'form', interface: 'HTMLFormElement'},
+ {tag: 'h1', interface: 'HTMLHeadingElement'},
+ {tag: 'h2', interface: 'HTMLHeadingElement'},
+ {tag: 'h3', interface: 'HTMLHeadingElement'},
+ {tag: 'h4', interface: 'HTMLHeadingElement'},
+ {tag: 'h5', interface: 'HTMLHeadingElement'},
+ {tag: 'h6', interface: 'HTMLHeadingElement'},
+ {tag: 'header', interface: 'HTMLElement'},
+ {tag: 'hgroup', interface: 'HTMLElement'},
+ {tag: 'hr', interface: 'HTMLHRElement'},
+ {tag: 'html', interface: 'HTMLHtmlElement', parsing: 'document'},
+ {tag: 'i', interface: 'HTMLElement'},
+ {tag: 'iframe', interface: 'HTMLIFrameElement'},
+ {tag: 'img', interface: 'HTMLImageElement'},
+ {tag: 'input', interface: 'HTMLInputElement'},
+ {tag: 'ins', interface: 'HTMLModElement'},
+ {tag: 'kbd', interface: 'HTMLElement'},
+ {tag: 'label', interface: 'HTMLLabelElement'},
+ {tag: 'legend', interface: 'HTMLLegendElement'},
+ {tag: 'li', interface: 'HTMLLIElement'},
+ {tag: 'link', interface: 'HTMLLinkElement'},
+ {tag: 'main', interface: 'HTMLElement'},
+ {tag: 'map', interface: 'HTMLMapElement'},
+ {tag: 'mark', interface: 'HTMLElement'},
+ {tag: 'menu', interface: 'HTMLMenuElement'},
+ {tag: 'meta', interface: 'HTMLMetaElement'},
+ {tag: 'meter', interface: 'HTMLMeterElement'},
+ {tag: 'nav', interface: 'HTMLElement'},
+ {tag: 'noscript', interface: 'HTMLElement'},
+ {tag: 'object', interface: 'HTMLObjectElement'},
+ {tag: 'ol', interface: 'HTMLOListElement'},
+ {tag: 'optgroup', interface: 'HTMLOptGroupElement'},
+ {tag: 'option', interface: 'HTMLOptionElement'},
+ {tag: 'output', interface: 'HTMLOutputElement'},
+ {tag: 'p', interface: 'HTMLParagraphElement'},
+ {tag: 'param', interface: 'HTMLParamElement'},
+ {tag: 'picture', interface: 'HTMLPictureElement'},
+ {tag: 'pre', interface: 'HTMLPreElement'},
+ {tag: 'progress', interface: 'HTMLProgressElement'},
+ {tag: 'q', interface: 'HTMLQuoteElement'},
+ {tag: 'rp', interface: 'HTMLElement'},
+ {tag: 'rt', interface: 'HTMLElement'},
+ {tag: 'ruby', interface: 'HTMLElement'},
+ {tag: 's', interface: 'HTMLElement'},
+ {tag: 'samp', interface: 'HTMLElement'},
+ {tag: 'script', interface: 'HTMLScriptElement'},
+ {tag: 'section', interface: 'HTMLElement'},
+ {tag: 'select', interface: 'HTMLSelectElement'},
+ {tag: 'small', interface: 'HTMLElement'},
+ {tag: 'source', interface: 'HTMLSourceElement'},
+ {tag: 'span', interface: 'HTMLSpanElement'},
+ {tag: 'strong', interface: 'HTMLElement'},
+ {tag: 'style', interface: 'HTMLStyleElement'},
+ {tag: 'sub', interface: 'HTMLElement'},
+ {tag: 'summary', interface: 'HTMLElement'},
+ {tag: 'sup', interface: 'HTMLElement'},
+ {tag: 'table', interface: 'HTMLTableElement'},
+ {tag: 'tbody', interface: 'HTMLTableSectionElement', parsing: 'table'},
+ {tag: 'td', interface: 'HTMLTableCellElement', parsing: 'table'},
+ {tag: 'template', interface: 'HTMLTemplateElement'},
+ {tag: 'textarea', interface: 'HTMLTextAreaElement'},
+ {tag: 'tfoot', interface: 'HTMLTableSectionElement', parsing: 'table'},
+ {tag: 'th', interface: 'HTMLTableCellElement', parsing: 'table'},
+ {tag: 'thead', interface: 'HTMLTableSectionElement', parsing: 'table'},
+ {tag: 'time', interface: 'HTMLTimeElement'},
+ {tag: 'title', interface: 'HTMLTitleElement'},
+ {tag: 'tr', interface: 'HTMLTableRowElement', parsing: 'table'},
+ {tag: 'track', interface: 'HTMLTrackElement'},
+ {tag: 'u', interface: 'HTMLElement'},
+ {tag: 'ul', interface: 'HTMLUListElement'},
+ {tag: 'var', interface: 'HTMLElement'},
+ {tag: 'video', interface: 'HTMLVideoElement'},
+ {tag: 'wbr', interface: 'HTMLElement'},
];
// HTMLDataListElement isn't implemented by all major browsers yet.
if (window.HTMLDataListElement) {
- testData.push({tag: 'datalist', klass: class extends HTMLDataListElement {
- constructor() {
- super();
- }
- }});
+ testData.push({tag: 'datalist', interface: 'HTMLDataListElement'});
}
// HTMLDialogElement isn't implemented by all major browsers yet.
if (window.HTMLDialogElement) {
- testData.push({tag: 'dialog', klass: class MyDialog extends HTMLDialogElement {
- constructor() {
- super();
- }
- }});
+ testData.push({tag: 'dialog', interface: 'HTMLDialogElement'});
}
// HTMLSlotElement isn't implemented by all major browsers yet.
if (window.HTMLSlotElement) {
- testData.push({tag: 'slot', klass: class extends HTMLSlotElement {
- constructor() {
- super();
- }
- }});
+ testData.push({tag: 'slot', interface: 'HTMLSlotElement'});
}
for (const t of testData) {
test(() => {
let name = 'my-' + t.tag;
- customElements.define(name, t.klass, { extends: t.tag });
+ let klass = eval(`(class extends ${t.interface} {})`);
+ customElements.define(name, klass, { extends: t.tag });
test(() => {
- let customized = new t.klass();
- assert_equals(customized.constructor, t.klass);
- assert_equals(customized.cloneNode().constructor, t.klass,
+ let customized = new klass();
+ assert_equals(customized.constructor, klass);
+ assert_equals(customized.cloneNode().constructor, klass,
'Cloning a customized built-in element should succeed.');
}, `${t.tag}: Operator 'new' should instantiate a customized built-in element`);
test(() => {
let customized = document.createElement(t.tag, { is: name });
- assert_equals(customized.constructor, t.klass);
- assert_equals(customized.cloneNode().constructor, t.klass,
+ assert_equals(customized.constructor, klass);
+ assert_equals(customized.cloneNode().constructor, klass,
'Cloning a customized built-in element should succeed.');
}, `${t.tag}: document.createElement() should instantiate a customized built-in element`);
@@ -815,8 +156,8 @@ for (const t of testData) {
let test = async_test(`${t.tag}: document parser should instantiate a customized built-in element`);
window.addEventListener('load', test.step_func_done(() => {
let customized = document.querySelector(t.tag);
- assert_equals(customized.constructor, t.klass);
- assert_equals(customized.cloneNode().constructor, t.klass,
+ assert_equals(customized.constructor, klass);
+ assert_equals(customized.cloneNode().constructor, klass,
'Cloning a customized built-in element should succeed.');
}));
return;
@@ -829,8 +170,8 @@ for (const t of testData) {
container.innerHTML = `<${t.tag} is="${name}" id="${name}">`;
}
let customized = document.getElementById(name);
- assert_equals(customized.constructor, t.klass);
- assert_equals(customized.cloneNode().constructor, t.klass,
+ assert_equals(customized.constructor, klass);
+ assert_equals(customized.cloneNode().constructor, klass,
'Cloning a customized built-in element should succeed.');
}, `${t.tag}: innerHTML should instantiate a customized built-in element`);
diff --git a/tests/wpt/web-platform-tests/interfaces/webaudio.idl b/tests/wpt/web-platform-tests/interfaces/webaudio.idl
new file mode 100644
index 00000000000..d20bc7fc559
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/webaudio.idl
@@ -0,0 +1,596 @@
+enum AudioContextState {
+ "suspended",
+ "running",
+ "closed"
+};
+
+callback DecodeErrorCallback = void (DOMException error);
+
+callback DecodeSuccessCallback = void (AudioBuffer decodedData);
+
+[Exposed=Window]
+interface BaseAudioContext : EventTarget {
+ readonly attribute AudioDestinationNode destination;
+ readonly attribute float sampleRate;
+ readonly attribute double currentTime;
+ readonly attribute AudioListener listener;
+ readonly attribute AudioContextState state;
+ [SameObject, SecureContext]
+ readonly attribute AudioWorklet audioWorklet;
+ Promise<void> resume ();
+ attribute EventHandler onstatechange;
+ AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate);
+ Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData,
+ optional DecodeSuccessCallback successCallback,
+ optional DecodeErrorCallback errorCallback);
+ AudioBufferSourceNode createBufferSource ();
+ ConstantSourceNode createConstantSource ();
+ ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize = 0,
+ optional unsigned long numberOfInputChannels = 2,
+ optional unsigned long numberOfOutputChannels = 2);
+ AnalyserNode createAnalyser ();
+ GainNode createGain ();
+ DelayNode createDelay (optional double maxDelayTime = 1.0);
+ BiquadFilterNode createBiquadFilter ();
+ IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback);
+ WaveShaperNode createWaveShaper ();
+ PannerNode createPanner ();
+ StereoPannerNode createStereoPanner ();
+ ConvolverNode createConvolver ();
+ ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6);
+ ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6);
+ DynamicsCompressorNode createDynamicsCompressor ();
+ OscillatorNode createOscillator ();
+ PeriodicWave createPeriodicWave (sequence<float> real, sequence<float> imag, optional PeriodicWaveConstraints constraints);
+};
+
+[Exposed=Window]
+enum AudioContextLatencyCategory {
+ "balanced",
+ "interactive",
+ "playback"
+};
+
+[Exposed=Window,
+ Constructor (optional AudioContextOptions contextOptions)]
+interface AudioContext : BaseAudioContext {
+ readonly attribute double baseLatency;
+ readonly attribute double outputLatency;
+ AudioTimestamp getOutputTimestamp ();
+ Promise<void> suspend ();
+ Promise<void> close ();
+ MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement mediaElement);
+ MediaStreamAudioSourceNode createMediaStreamSource (MediaStream mediaStream);
+ MediaStreamTrackAudioSourceNode createMediaStreamTrackSource (MediaStreamTrack mediaStreamTrack);
+ MediaStreamAudioDestinationNode createMediaStreamDestination ();
+};
+
+[Exposed=Window]
+dictionary AudioContextOptions {
+ (AudioContextLatencyCategory or double) latencyHint = "interactive";
+ float sampleRate;
+};
+
+[Exposed=Window]
+dictionary AudioTimestamp {
+ double contextTime;
+ DOMHighResTimeStamp performanceTime;
+};
+
+[Exposed=Window,
+ Constructor (OfflineAudioContextOptions contextOptions),
+ Constructor (unsigned long numberOfChannels, unsigned long length, float sampleRate)]
+interface OfflineAudioContext : BaseAudioContext {
+ Promise<AudioBuffer> startRendering();
+ Promise<void> suspend(double suspendTime);
+ readonly attribute unsigned long length;
+ attribute EventHandler oncomplete;
+};
+
+[Exposed=Window]
+dictionary OfflineAudioContextOptions {
+ unsigned long numberOfChannels = 1;
+ required unsigned long length;
+ required float sampleRate;
+};
+
+[Exposed=Window,
+ Constructor (DOMString type, OfflineAudioCompletionEventInit eventInitDict)]
+interface OfflineAudioCompletionEvent : Event {
+ readonly attribute AudioBuffer renderedBuffer;
+};
+
+[Exposed=Window]
+dictionary OfflineAudioCompletionEventInit : EventInit {
+ required AudioBuffer renderedBuffer;
+};
+
+[Exposed=Window,
+ Constructor (AudioBufferOptions options)]
+interface AudioBuffer {
+ readonly attribute float sampleRate;
+ readonly attribute unsigned long length;
+ readonly attribute double duration;
+ readonly attribute unsigned long numberOfChannels;
+ Float32Array getChannelData (unsigned long channel);
+ void copyFromChannel (Float32Array destination, unsigned long channelNumber, optional unsigned long startInChannel = 0);
+ void copyToChannel (Float32Array source, unsigned long channelNumber, optional unsigned long startInChannel = 0);
+};
+
+dictionary AudioBufferOptions {
+ unsigned long numberOfChannels = 1;
+ required unsigned long length;
+ required float sampleRate;
+};
+
+[Exposed=Window]
+interface AudioNode : EventTarget {
+ AudioNode connect (AudioNode destinationNode,
+ optional unsigned long output = 0,
+ optional unsigned long input = 0);
+ void connect (AudioParam destinationParam, optional unsigned long output = 0);
+ void disconnect ();
+ void disconnect (unsigned long output);
+ void disconnect (AudioNode destinationNode);
+ void disconnect (AudioNode destinationNode, unsigned long output);
+ void disconnect (AudioNode destinationNode, unsigned long output, unsigned long input);
+ void disconnect (AudioParam destinationParam);
+ void disconnect (AudioParam destinationParam, unsigned long output);
+ readonly attribute BaseAudioContext context;
+ readonly attribute unsigned long numberOfInputs;
+ readonly attribute unsigned long numberOfOutputs;
+ attribute unsigned long channelCount;
+ attribute ChannelCountMode channelCountMode;
+ attribute ChannelInterpretation channelInterpretation;
+};
+
+[Exposed=Window]
+enum ChannelCountMode {
+ "max",
+ "clamped-max",
+ "explicit"
+};
+
+[Exposed=Window]
+enum ChannelInterpretation {
+ "speakers",
+ "discrete"
+};
+
+dictionary AudioNodeOptions {
+ unsigned long channelCount;
+ ChannelCountMode channelCountMode;
+ ChannelInterpretation channelInterpretation;
+};
+
+[Exposed=Window]
+interface AudioParam {
+ attribute float value;
+ readonly attribute float defaultValue;
+ readonly attribute float minValue;
+ readonly attribute float maxValue;
+ AudioParam setValueAtTime (float value, double startTime);
+ AudioParam linearRampToValueAtTime (float value, double endTime);
+ AudioParam exponentialRampToValueAtTime (float value, double endTime);
+ AudioParam setTargetAtTime (float target, double startTime, float timeConstant);
+ AudioParam setValueCurveAtTime (sequence<float> values, double startTime, double duration);
+ AudioParam cancelScheduledValues (double cancelTime);
+ AudioParam cancelAndHoldAtTime (double cancelTime);
+};
+
+[Exposed=Window]
+interface AudioScheduledSourceNode : AudioNode {
+ attribute EventHandler onended;
+ void start(optional double when = 0);
+ void stop(optional double when = 0);
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional AnalyserOptions options)]
+interface AnalyserNode : AudioNode {
+ void getFloatFrequencyData (Float32Array array);
+ void getByteFrequencyData (Uint8Array array);
+ void getFloatTimeDomainData (Float32Array array);
+ void getByteTimeDomainData (Uint8Array array);
+ attribute unsigned long fftSize;
+ readonly attribute unsigned long frequencyBinCount;
+ attribute double minDecibels;
+ attribute double maxDecibels;
+ attribute double smoothingTimeConstant;
+};
+
+dictionary AnalyserOptions : AudioNodeOptions {
+ unsigned long fftSize = 2048;
+ double maxDecibels = -30;
+ double minDecibels = -100;
+ double smoothingTimeConstant = 0.8;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional AudioBufferSourceOptions options)]
+interface AudioBufferSourceNode : AudioScheduledSourceNode {
+ attribute AudioBuffer? buffer;
+ readonly attribute AudioParam playbackRate;
+ readonly attribute AudioParam detune;
+ attribute boolean loop;
+ attribute double loopStart;
+ attribute double loopEnd;
+ void start (optional double when = 0,
+ optional double offset,
+ optional double duration);
+ void stop (optional double when = 0);
+};
+
+dictionary AudioBufferSourceOptions {
+ AudioBuffer? buffer;
+ float detune = 0;
+ boolean loop = false;
+ double loopEnd = 0;
+ double loopStart = 0;
+ float playbackRate = 1;
+};
+
+[Exposed=Window]
+interface AudioDestinationNode : AudioNode {
+ readonly attribute unsigned long maxChannelCount;
+};
+
+[Exposed=Window]
+interface AudioListener {
+ readonly attribute AudioParam positionX;
+ readonly attribute AudioParam positionY;
+ readonly attribute AudioParam positionZ;
+ readonly attribute AudioParam forwardX;
+ readonly attribute AudioParam forwardY;
+ readonly attribute AudioParam forwardZ;
+ readonly attribute AudioParam upX;
+ readonly attribute AudioParam upY;
+ readonly attribute AudioParam upZ;
+ void setPosition (float x, float y, float z);
+ void setOrientation (float x, float y, float z, float xUp, float yUp, float zUp);
+};
+
+[Exposed=Window,
+ Constructor (DOMString type, AudioProcessingEventInit eventInitDict)]
+interface AudioProcessingEvent : Event {
+ readonly attribute double playbackTime;
+ readonly attribute AudioBuffer inputBuffer;
+ readonly attribute AudioBuffer outputBuffer;
+};
+
+dictionary AudioProcessingEventInit : EventInit {
+ required double playbackTime;
+ required AudioBuffer inputBuffer;
+ required AudioBuffer outputBuffer;
+};
+
+enum BiquadFilterType {
+ "lowpass",
+ "highpass",
+ "bandpass",
+ "lowshelf",
+ "highshelf",
+ "peaking",
+ "notch",
+ "allpass"
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional BiquadFilterOptions options)]
+interface BiquadFilterNode : AudioNode {
+ attribute BiquadFilterType type;
+ readonly attribute AudioParam frequency;
+ readonly attribute AudioParam detune;
+ readonly attribute AudioParam Q;
+ readonly attribute AudioParam gain;
+ void getFrequencyResponse (Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse);
+};
+
+dictionary BiquadFilterOptions : AudioNodeOptions {
+ BiquadFilterType type = "lowpass";
+ float Q = 1;
+ float detune = 0;
+ float frequency = 350;
+ float gain = 0;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional ChannelMergerOptions options)]
+interface ChannelMergerNode : AudioNode {
+};
+
+dictionary ChannelMergerOptions : AudioNodeOptions {
+ unsigned long numberOfInputs = 6;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional ChannelSplitterNode options)]
+interface ChannelSplitterNode : AudioNode {
+};
+
+dictionary ChannelSplitterOptions : AudioNodeOptions {
+ unsigned long numberOfOutputs = 6;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional ConstantSourceOptions options)]
+interface ConstantSourceNode : AudioScheduledSourceNode {
+ readonly attribute AudioParam offset;
+};
+
+dictionary ConstantSourceOptions {
+ float offset = 1;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional ConvolverOptions options)]
+interface ConvolverNode : AudioNode {
+ attribute AudioBuffer? buffer;
+ attribute boolean normalize;
+};
+
+dictionary ConvolverOptions : AudioNodeOptions {
+ AudioBuffer? buffer;
+ boolean disableNormalization = false;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional DelayOptions options)]
+interface DelayNode : AudioNode {
+ readonly attribute AudioParam delayTime;
+};
+
+dictionary DelayOptions : AudioNodeOptions {
+ double maxDelayTime = 1;
+ double delayTime = 0;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional DynamicsCompressorOptions options)]
+interface DynamicsCompressorNode : AudioNode {
+ readonly attribute AudioParam threshold;
+ readonly attribute AudioParam knee;
+ readonly attribute AudioParam ratio;
+ readonly attribute float reduction;
+ readonly attribute AudioParam attack;
+ readonly attribute AudioParam release;
+};
+
+dictionary DynamicsCompressorOptions : AudioNodeOptions {
+ float attack = 0.003;
+ float knee = 30;
+ float ratio = 12;
+ float release = 0.25;
+ float threshold = -24;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional GainOptions options)]
+interface GainNode : AudioNode {
+ readonly attribute AudioParam gain;
+};
+
+dictionary GainOptions : AudioNodeOptions {
+ float gain = 1.0;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, IIRFilterOptions options)]
+interface IIRFilterNode : AudioNode {
+ void getFrequencyResponse (Float32Array frequencyHz, Float32Array magResponse, Float32Array phaseResponse);
+};
+
+dictionary IIRFilterOptions : AudioNodeOptions {
+ required sequence<double> feedforward;
+ required sequence<double> feedback;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, MediaElementAudioSourceOptions options)]
+interface MediaElementAudioSourceNode : AudioNode {
+ [SameObject] readonly attribute HTMLMediaElement mediaElement;
+};
+
+dictionary MediaElementAudioSourceOptions {
+ required HTMLMediaElement mediaElement;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional AudioNodeOptions options)]
+interface MediaStreamAudioDestinationNode : AudioNode {
+ readonly attribute MediaStream stream;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, MediaStreamAudioSourceOptions options)]
+interface MediaStreamAudioSourceNode : AudioNode {
+ [SameObject] readonly attribute MediaStream mediaStream;
+};
+
+dictionary MediaStreamAudioSourceOptions {
+ required MediaStream mediaStream;
+};
+
+[Exposed=Window,
+ Constructor (AudioContext context, MediaStreamTrackAudioSourceOptions options)]
+interface MediaStreamTrackAudioSourceNode : AudioNode {
+};
+
+dictionary MediaStreamTrackAudioSourceOptions {
+ required MediaStreamTrack mediaStreamTrack;
+};
+
+enum OscillatorType {
+ "sine",
+ "square",
+ "sawtooth",
+ "triangle",
+ "custom"
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional OscillatorOptions options)]
+interface OscillatorNode : AudioScheduledSourceNode {
+ attribute OscillatorType type;
+ readonly attribute AudioParam frequency;
+ readonly attribute AudioParam detune;
+ void setPeriodicWave (PeriodicWave periodicWave);
+};
+
+dictionary OscillatorOptions : AudioNodeOptions {
+ OscillatorType type = "sine";
+ float frequency = 440;
+ float detune = 0;
+ PeriodicWave periodicWave;
+};
+
+enum PanningModelType {
+ "equalpower",
+ "HRTF"
+};
+
+enum DistanceModelType {
+ "linear",
+ "inverse",
+ "exponential"
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional PannerOptions options)]
+interface PannerNode : AudioNode {
+ attribute PanningModelType panningModel;
+ readonly attribute AudioParam positionX;
+ readonly attribute AudioParam positionY;
+ readonly attribute AudioParam positionZ;
+ readonly attribute AudioParam orientationX;
+ readonly attribute AudioParam orientationY;
+ readonly attribute AudioParam orientationZ;
+ attribute DistanceModelType distanceModel;
+ attribute double refDistance;
+ attribute double maxDistance;
+ attribute double rolloffFactor;
+ attribute double coneInnerAngle;
+ attribute double coneOuterAngle;
+ attribute double coneOuterGain;
+ void setPosition (float x, float y, float z);
+ void setOrientation (float x, float y, float z);
+};
+
+dictionary PannerOptions : AudioNodeOptions {
+ PanningModelType panningModel = "equalpower";
+ DistanceModelType distanceModel = "inverse";
+ float positionX = 0;
+ float positionY = 0;
+ float positionZ = 0;
+ float orientationX = 1;
+ float orientationY = 0;
+ float orientationZ = 0;
+ double refDistance = 1;
+ double maxDistance = 10000;
+ double rolloffFactor = 1;
+ double coneInnerAngle = 360;
+ double coneOuterAngle = 360;
+ double coneOuterGain = 0;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional PeriodicWaveOptions options)]
+interface PeriodicWave {
+};
+
+dictionary PeriodicWaveConstraints {
+ boolean disableNormalization = false;
+};
+
+dictionary PeriodicWaveOptions : PeriodicWaveConstraints {
+ sequence<float> real;
+ sequence<float> imag;
+};
+
+[Exposed=Window]
+interface ScriptProcessorNode : AudioNode {
+ attribute EventHandler onaudioprocess;
+ readonly attribute long bufferSize;
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional StereoPannerOptions options)]
+interface StereoPannerNode : AudioNode {
+ readonly attribute AudioParam pan;
+};
+
+dictionary StereoPannerOptions : AudioNodeOptions {
+ float pan = 0;
+};
+
+enum OverSampleType {
+ "none",
+ "2x",
+ "4x"
+};
+
+[Exposed=Window,
+ Constructor (BaseAudioContext context, optional WaveShaperOptions options)]
+interface WaveShaperNode : AudioNode {
+ attribute Float32Array? curve;
+ attribute OverSampleType oversample;
+};
+
+dictionary WaveShaperOptions : AudioNodeOptions {
+ sequence<float> curve;
+ OverSampleType oversample = "none";
+};
+
+[Exposed=Window, SecureContext]
+interface AudioWorklet : Worklet {
+};
+
+[Global=(Worklet, AudioWorklet), Exposed=AudioWorklet]
+interface AudioWorkletGlobalScope : WorkletGlobalScope {
+ void registerProcessor (DOMString name, VoidFunction processorCtor);
+ readonly attribute double currentTime;
+ readonly attribute float sampleRate;
+};
+
+[Exposed=Window]
+interface AudioParamMap {
+ readonly maplike<DOMString, AudioParam>;
+};
+
+enum AudioWorkletProcessorState {
+ "pending",
+ "running",
+ "stopped",
+ "error"
+};
+
+[Exposed=Window,
+ SecureContext,
+ Constructor (BaseAudioContext context, DOMString name, optional AudioWorkletNodeOptions options)]
+interface AudioWorkletNode : AudioNode {
+ readonly attribute AudioParamMap parameters;
+ readonly attribute MessagePort port;
+ readonly attribute AudioWorkletProcessorState processorState;
+ attribute EventHandler onprocessorstatechange;
+};
+
+dictionary AudioWorkletNodeOptions : AudioNodeOptions {
+ unsigned long numberOfInputs = 1;
+ unsigned long numberOfOutputs = 1;
+ sequence<unsigned long> outputChannelCount;
+ record<DOMString, double> parameterData;
+ object processorOptions = null;
+};
+
+[Exposed=AudioWorklet,
+Constructor (optional AudioWorkletNodeOptions options)]
+interface AudioWorkletProcessor {
+ readonly attribute MessagePort port;
+};
+
+dictionary AudioParamDescriptor {
+ required DOMString name;
+ float defaultValue = 0;
+ float minValue = -3.4028235e38;
+ float maxValue = 3.4028235e38;
+};
diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html b/tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html
index fce08e56a77..fce08e56a77 100644
--- a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.html
+++ b/tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.html
diff --git a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html b/tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html
index a6c4b4b7f93..a6c4b4b7f93 100644
--- a/tests/wpt/web-platform-tests/offscreen-canvas/the-offscreen-canvas/offscreencanvas.convert.to.blob.w.html
+++ b/tests/wpt/web-platform-tests/offscreen-canvas/convert-to-blob/offscreencanvas.convert.to.blob.w.html
diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html b/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html
index 69cb23b91d9..d593f13db7e 100644
--- a/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html
+++ b/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html
@@ -112,7 +112,7 @@ function perform_test() {
addEntryIfExists(entries, expected_entries, pathname + 'blue.png?id=video-poster', 'video');
addEntryIfExists(entries, expected_entries, '/media/test.mp4?id=video-src', 'video');
addEntryIfExists(entries, expected_entries, '/media/test.mp4?id=video-source', 'source');
- addEntryIfExists(entries, expected_entries, '/media/test.ogg?id=video-source', 'source');
+ addEntryIfExists(entries, expected_entries, '/media/test.ogv?id=video-source', 'source');
addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=video-track', 'track');
addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=audio-src', 'audio');
addEntryIfExists(entries, expected_entries, pathname + 'empty.py?id=audio-source-wav', 'source');
diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py
index e1c629538fe..388140b2a83 100644
--- a/tests/wpt/web-platform-tests/tools/serve/serve.py
+++ b/tests/wpt/web-platform-tests/tools/serve/serve.py
@@ -646,7 +646,12 @@ def get_ports(config, ssl_environment):
def normalise_config(config, ports):
- host = config["host"]
+ if "host" in config:
+ logger.warning("host in config is deprecated; use browser_host instead")
+ host = config["host"]
+ else:
+ host = config["browser_host"]
+
domains = get_subdomains(host)
not_domains = get_not_subdomains(host)
@@ -675,6 +680,8 @@ def normalise_config(config, ports):
config_["not_domains"] = not_domains
config_["ports"] = ports_
config_["bind_address"] = bind_address
+ if config.get("server_host", None) is None:
+ config_["server_host"] = host
return config_
@@ -692,7 +699,7 @@ def get_ssl_config(config, ssl_environment):
def start(config, ssl_environment, routes, **kwargs):
- host = config.get("host_ip") or config["host"]
+ host = config["server_host"]
ports = get_ports(config, ssl_environment)
paths = get_paths(config)
bind_address = config["bind_address"]
@@ -815,7 +822,7 @@ def run(**kwargs):
with get_ssl_environment(config) as ssl_env:
ports = get_ports(config, ssl_env)
config = normalise_config(config, ports)
- host = config["host"]
+ host = config["browser_host"]
bind_address = config["bind_address"]
if config["check_subdomains"]:
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index 98a609e7174..2b872e6f8f9 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -96,10 +96,11 @@ otherwise install OpenSSL and ensure that it's on your $PATH.""")
def check_environ(product):
if product not in ("firefox", "servo"):
- expected_hosts = {".".join(x)
- for x in serve.get_subdomains("web-platform.test").values()}
- expected_hosts |= {".".join(x)
- for x in serve.get_not_subdomains("web-platform.test").values()}
+ config = serve.load_config(os.path.join(wpt_root, "config.default.json"),
+ os.path.join(wpt_root, "config.json"))
+ config = serve.normalise_config(config, {})
+ expected_hosts = (set(config["domains"].itervalues()) ^
+ set(config["not_domains"].itervalues()))
missing_hosts = set(expected_hosts)
if platform.uname()[0] != "Windows":
hosts_path = "/etc/hosts"
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
index 796fcc89b12..7acb0f7d924 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
@@ -122,10 +122,8 @@ def env_options():
# domains to localhost without relying on the network stack.
#
# https://github.com/w3c/web-platform-tests/pull/9480
- return {"host_ip": "127.0.0.1",
- "host": "web-platform.test",
+ return {"server_host": "127.0.0.1",
"bind_address": False,
- "certificate_domain": "web-platform.test",
"supports_debugger": True}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py
index e14e18ad452..dd54fb0525e 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servo.py
@@ -52,8 +52,7 @@ def env_extras(**kwargs):
def env_options():
- return {"host": "web-platform.test",
- "host_ip": "127.0.0.1",
+ return {"server_host": "127.0.0.1",
"bind_address": False,
"testharnessreport": "testharnessreport-servo.js",
"supports_debugger": True}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py
index 2578fb64365..f2ee00a7ab0 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/servodriver.py
@@ -53,8 +53,7 @@ def env_extras(**kwargs):
def env_options():
- return {"host_ip": "127.0.0.1",
- "host": "web-platform.test",
+ return {"server_host": "127.0.0.1",
"testharnessreport": "testharnessreport-servodriver.js",
"supports_debugger": True}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
index 5866b60de40..f53919978b8 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
@@ -147,8 +147,8 @@ class TestEnvironment(object):
"ssl": {}
}
- if "host" in self.options:
- local_config["host"] = self.options["host"]
+ if "browser_host" in self.options:
+ local_config["browser_host"] = self.options["browser_host"]
if "bind_address" in self.options:
local_config["bind_address"] = self.options["bind_address"]
@@ -156,7 +156,7 @@ class TestEnvironment(object):
with open(default_config_path) as f:
default_config = json.load(f)
- local_config["host_ip"] = self.options.get("host_ip", None)
+ local_config["server_host"] = self.options.get("server_host", None)
local_config["ssl"]["encrypt_after_connect"] = self.options.get("encrypt_after_connect", False)
config = serve.merge_json(default_config, local_config)
@@ -165,7 +165,7 @@ class TestEnvironment(object):
if not self.ssl_env.ssl_enabled:
config["ports"]["https"] = [None]
- host = self.options.get("certificate_domain", config["host"])
+ host = config["browser_host"]
hosts = [host]
hosts.extend("%s.%s" % (item[0], host) for item in serve.get_subdomains(host).values())
key_file, certificate = self.ssl_env.host_cert_path(hosts)
@@ -240,7 +240,7 @@ class TestEnvironment(object):
def test_servers(self):
failed = []
- host = self.config.get("host_ip") or self.config.get("host")
+ host = self.config["server_host"]
for scheme, servers in self.servers.iteritems():
for port, server in servers:
if self.test_server_port:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
index a19af3da914..708903f5dcd 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
@@ -172,7 +172,7 @@ class TestExecutor(object):
def server_url(self, protocol):
return "%s://%s:%s" % (protocol,
- self.server_config["host"],
+ self.server_config["browser_host"],
self.server_config["ports"][protocol][0])
def test_url(self, test):
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_products.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_products.py
index 6c7310b5282..c7109c525fd 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_products.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_products.py
@@ -58,6 +58,8 @@ def test_server_start_config(product):
start.assert_called_once()
args = start.call_args
config = args[0][0]
- if "host" in env_options:
- assert config["host"] == env_options["host"]
+ if "server_host" in env_options:
+ assert config["server_host"] == env_options["server_host"]
+ else:
+ assert config["server_host"] == config["browser_host"]
assert isinstance(config["bind_address"], bool)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
index 17fb2f0a04d..75e5d8aca43 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
@@ -4,6 +4,7 @@ import os
import sys
from collections import OrderedDict
from distutils.spawn import find_executable
+from datetime import datetime, timedelta
import config
import wpttest
@@ -82,6 +83,36 @@ scheme host and port.""")
mode_group.add_argument("--verify-log-full", action="store_true",
default=False,
help="Output per-iteration test results when running verify")
+ mode_group.add_argument("--verify-repeat-loop", action="store",
+ default=10,
+ help="Number of iterations for a run that reloads each test without restart.",
+ type=int)
+ mode_group.add_argument("--verify-repeat-restart", action="store",
+ default=5,
+ help="Number of iterations, for a run that restarts the runner between each iteration",
+ type=int)
+ chaos_mode_group = mode_group.add_mutually_exclusive_group()
+ chaos_mode_group.add_argument("--verify-no-chaos-mode", action="store_false",
+ default=True,
+ dest="verify_chaos_mode",
+ help="Disable chaos mode when running on Firefox")
+ chaos_mode_group.add_argument("--verify-chaos-mode", action="store_true",
+ default=True,
+ dest="verify_chaos_mode",
+ help="Enable chaos mode when running on Firefox")
+ mode_group.add_argument("--verify-max-time", action="store",
+ default=None,
+ help="The maximum number of minutes for the job to run",
+ type=lambda x: timedelta(minutes=float(x)))
+ output_results_group = mode_group.add_mutually_exclusive_group()
+ output_results_group.add_argument("--verify-no-output-results", action="store_false",
+ dest="verify_output_results",
+ default=True,
+ help="Prints individuals test results and messages")
+ output_results_group.add_argument("--verify-output-results", action="store_true",
+ dest="verify_output_results",
+ default=True,
+ help="Disable printing individuals test results and messages")
test_selection_group = parser.add_argument_group("Test Selection")
test_selection_group.add_argument("--test-types", action="store",
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
index 951eea3faf7..40863d8d862 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
@@ -288,8 +288,13 @@ def run_tests(config, test_paths, product, **kwargs):
def check_stability(**kwargs):
import stability
- return stability.check_stability(logger, **kwargs)
-
+ return stability.check_stability(logger,
+ max_time=kwargs['verify_max_time'],
+ chaos_mode=kwargs['verify_chaos_mode'],
+ repeat_loop=kwargs['verify_repeat_loop'],
+ repeat_restart=kwargs['verify_repeat_restart'],
+ output_results=kwargs['verify_output_results'],
+ **kwargs)
def start(**kwargs):
if kwargs["list_test_groups"]:
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py
index 534afed6b6d..126a68e32eb 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py
@@ -398,6 +398,8 @@ def template(request, content, escape_type="html"):
value = request.server.config['not_domains']
else:
value = request.server.config['domains']
+ elif field == "host":
+ value = request.server.config["browser_host"]
elif field in request.server.config:
value = request.server.config[tokens[0][1]]
elif field == "location":
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
index 86dc5a61bc2..d1ef750861c 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
@@ -168,7 +168,8 @@ class WebTestServer(ThreadingMixIn, BaseHTTPServer.HTTPServer):
Server.config = config
else:
self.logger.debug("Using default configuration")
- Server.config = {"host": server_address[0],
+ Server.config = {"browser_host": server_address[0],
+ "server_host": server_address[0],
"domains": {"": server_address[0]},
"ports": {"http": [self.server_address[1]]}}
diff --git a/tests/wpt/web-platform-tests/webaudio/idlharness.https.html b/tests/wpt/web-platform-tests/webaudio/idlharness.https.html
new file mode 100644
index 00000000000..a8be8d0ea53
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/idlharness.https.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>WebAudio IDL tests</title>
+<link rel="help" href="https://webaudio.github.io/web-audio-api/"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/WebIDLParser.js"></script>
+<script src="/resources/idlharness.js"></script>
+<script>
+'use strict';
+
+promise_test(async t => {
+ const [html, dom, mediacapture, webaudio] = await Promise.all([
+ // Needed for EventTarget, HTMLMediaElement
+ '/interfaces/html.idl',
+
+ // Needed for Event, EventListener
+ '/interfaces/dom.idl',
+
+ // Needed for MediaStream, MediaStreamTrack
+ '/interfaces/mediacapture-main.idl',
+
+ '/interfaces/webaudio.idl'
+ ].map(url => fetch(url).then(response => response.text())));
+
+ const idl_array = new IdlArray();
+
+
+ idl_array.add_untested_idls('interface LinkStyle {};'); // Dependency of HTML
+ idl_array.add_untested_idls(html);
+ idl_array.add_untested_idls(dom);
+ idl_array.add_untested_idls(mediacapture);
+ idl_array.add_untested_idls('interface Worklet {};');
+ idl_array.add_idls(webaudio);
+
+ const sample_rate = 44100;
+ const context = new AudioContext;
+ const buffer = new AudioBuffer({length: 1, sampleRate: sample_rate});
+ await context.audioWorklet.addModule(
+ 'the-audio-api/the-audioworklet-interface/processors/dummy-processor.js');
+ const worklet_node = new AudioWorkletNode(context, 'dummy');
+
+ idl_array.add_objects({
+ BaseAudioContext: [],
+ AudioContext: [context],
+ OfflineAudioContext: [new OfflineAudioContext(1, 1, sample_rate)],
+ OfflineAudioCompletionEvent: [
+ new OfflineAudioCompletionEvent('', {renderedBuffer: buffer})],
+ AudioBuffer: [buffer],
+ AudioNode: [],
+ AudioParam: [new AudioBufferSourceNode(context).playbackRate],
+ AudioScheduledSourceNode: [],
+ AnalyserNode: [new AnalyserNode(context)],
+ AudioBufferSourceNode: [new AudioBufferSourceNode(context)],
+ AudioDestinationNode: [context.destination],
+ AudioListener: [context.listener],
+ AudioProcessingEvent: [new AudioProcessingEvent('', {
+ playbackTime: 0, inputBuffer: buffer, outputBuffer: buffer
+ })],
+ BiquadFilterNode: [new BiquadFilterNode(context)],
+ ChannelMergerNode: [new ChannelMergerNode(context)],
+ ChannelSplitterNode: [new ChannelSplitterNode(context)],
+ ConstantSourceNode: [new ConstantSourceNode(context)],
+ ConvolverNode: [new ConvolverNode(context)],
+ DelayNode: [new DelayNode(context)],
+ DynamicsCompressorNode: [new DynamicsCompressorNode(context)],
+ GainNode: [new GainNode(context)],
+ IIRFilterNode: [
+ new IIRFilterNode(context, {feedforward: [1], feedback: [1]})],
+ MediaElementAudioSourceNode: [
+ new MediaElementAudioSourceNode(context, {mediaElement: new Audio})],
+ MediaStreamAudioDestinationNode: [
+ new MediaStreamAudioDestinationNode(context)],
+ MediaStreamAudioSourceNode: [],
+ MediaStreamTrackAudioSourceNode: [],
+ OscillatorNode: [new OscillatorNode(context)],
+ PannerNode: [new PannerNode(context)],
+ PeriodicWave: [new PeriodicWave(context)],
+ ScriptProcessorNode: [context.createScriptProcessor()],
+ StereoPannerNode: [new StereoPannerNode(context)],
+ WaveShaperNode: [new WaveShaperNode(context)],
+ AudioWorklet: [context.audioWorklet],
+ AudioWorkletGlobalScope: [],
+ AudioParamMap: [worklet_node.parameters],
+ AudioWorkletNode: [worklet_node],
+ AudioWorkletProcessor: [],
+ });
+ idl_array.test();
+
+}, 'Test driver');
+</script>
diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html
index 76d2f10d71f..861b5504752 100644
--- a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html
+++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html
@@ -112,7 +112,7 @@ async_test(t => {
postMessage(true);
}
- var workerBlob = new Blob([workerCode.toSource() + ";workerCode();"], {type:"application/javascript"});
+ var workerBlob = new Blob([workerCode.toString() + ";workerCode();"], {type:"application/javascript"});
var w = new Worker(URL.createObjectURL(workerBlob));
w.onmessage = function(e) {
diff --git a/tests/wpt/web-platform-tests/webmessaging/message-channels/worker.html b/tests/wpt/web-platform-tests/webmessaging/message-channels/worker.html
index be2155ee4b0..0502021fff1 100644
--- a/tests/wpt/web-platform-tests/webmessaging/message-channels/worker.html
+++ b/tests/wpt/web-platform-tests/webmessaging/message-channels/worker.html
@@ -14,7 +14,7 @@ async_test(t => {
postMessage(true);
}
- var workerBlob = new Blob([workerCode.toSource() + ";workerCode();"], {type:"application/javascript"});
+ var workerBlob = new Blob([workerCode.toString() + ";workerCode();"], {type:"application/javascript"});
var w = new Worker(URL.createObjectURL(workerBlob));
w.onmessage = function(e) {
diff --git a/tests/wpt/web-platform-tests/websockets/Create-on-worker-shutdown.html b/tests/wpt/web-platform-tests/websockets/Create-on-worker-shutdown.html
index 14128ef6f2f..2bdf5498900 100644
--- a/tests/wpt/web-platform-tests/websockets/Create-on-worker-shutdown.html
+++ b/tests/wpt/web-platform-tests/websockets/Create-on-worker-shutdown.html
@@ -13,11 +13,11 @@
async_test(t => {
function workerCode() {
close();
- var ws = new WebSocket(self.location)
+ var ws = new WebSocket(self.location.origin.replace('http', 'ws'));
postMessage(ws.readyState == WebSocket.CONNECTING);
}
- var workerBlob = new Blob([workerCode.toSource() + ";workerCode();"], {type:"application/javascript"});
+ var workerBlob = new Blob([workerCode.toString() + ";workerCode();"], {type:"application/javascript"});
var w = new Worker(URL.createObjectURL(workerBlob));
w.onmessage = function(e) {