aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/MANIFEST.json157
-rw-r--r--tests/wpt/metadata/css/geometry/interfaces.html.ini75
-rw-r--r--tests/wpt/metadata/css/geometry/interfaces.worker.js.ini48
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-consume.html.ini60
-rw-r--r--tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini2
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/misc/shader-with-non-reserved-words.html.ini5
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html72
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/OWNERS2
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/logical-overflow-001.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-ref-005.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-005.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-background-position-with-edge-offset.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/marker.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js7
-rw-r--r--tests/wpt/web-platform-tests/css/geometry/support/interfaces.js2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/geometry.idl15
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-audio-api.idl (renamed from tests/wpt/web-platform-tests/interfaces/webaudio.idl)4
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webauthn.idl119
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webrtc-pc.idl661
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html18
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py8
-rw-r--r--tests/wpt/web-platform-tests/uievents/mouse/mouse_buttons_back_forward-manual.html36
-rw-r--r--tests/wpt/web-platform-tests/wasm/many-memories.window.js19
-rw-r--r--tests/wpt/web-platform-tests/webaudio/idlharness.https.html2
-rw-r--r--tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js30
-rw-r--r--tests/wpt/web-platform-tests/webauthn/interfaces.https.html60
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html46
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html (renamed from tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.html)36
-rw-r--r--tests/wpt/web-platform-tests/webrtc/interfaces.https.html20
32 files changed, 1115 insertions, 580 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 3e6095c3c82..116dcb6a949 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -18805,6 +18805,12 @@
{}
]
],
+ "uievents/mouse/mouse_buttons_back_forward-manual.html": [
+ [
+ "/uievents/mouse/mouse_buttons_back_forward-manual.html",
+ {}
+ ]
+ ],
"uievents/mouse/mouseevent_move_button-manual.html": [
[
"/uievents/mouse/mouseevent_move_button-manual.html",
@@ -99753,6 +99759,30 @@
{}
]
],
+ "css/css-align/gaps/gap-normal-used-001.html": [
+ [
+ "/css/css-align/gaps/gap-normal-used-001.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-align/gaps/gap-normal-used-002.html": [
+ [
+ "/css/css-align/gaps/gap-normal-used-002.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-animations/animation-delay-008.html": [
[
"/css/css-animations/animation-delay-008.html",
@@ -249603,6 +249633,11 @@
{}
]
],
+ "css/css-overflow/OWNERS": [
+ [
+ {}
+ ]
+ ],
"css/css-overflow/reference/input-scrollable-region-001-ref.html": [
[
{}
@@ -285798,17 +285833,17 @@
{}
]
],
- "interfaces/web-nfc.idl": [
+ "interfaces/web-audio-api.idl": [
[
{}
]
],
- "interfaces/web-share.idl": [
+ "interfaces/web-nfc.idl": [
[
{}
]
],
- "interfaces/webaudio.idl": [
+ "interfaces/web-share.idl": [
[
{}
]
@@ -312119,6 +312154,12 @@
{}
]
],
+ "css/css-align/gaps/gap-normal-computed-001.html": [
+ [
+ "/css/css-align/gaps/gap-normal-computed-001.html",
+ {}
+ ]
+ ],
"css/css-align/gaps/gap-parsing-001.html": [
[
"/css/css-align/gaps/gap-parsing-001.html",
@@ -314439,6 +314480,12 @@
{}
]
],
+ "css/css-overflow/logical-overflow-001.html": [
+ [
+ "/css/css-overflow/logical-overflow-001.html",
+ {}
+ ]
+ ],
"css/css-position/position-sticky-bottom.html": [
[
"/css/css-position/position-sticky-bottom.html",
@@ -317019,6 +317066,12 @@
{}
]
],
+ "css/css-transitions/transition-background-position-with-edge-offset.html": [
+ [
+ "/css/css-transitions/transition-background-position-with-edge-offset.html",
+ {}
+ ]
+ ],
"css/css-transitions/transition-delay-001.html": [
[
"/css/css-transitions/transition-delay-001.html",
@@ -318015,6 +318068,12 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/marker.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/marker.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/mask-image.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/mask-image.html",
@@ -364883,12 +364942,6 @@
{}
]
],
- "wasm/many-memories.window.js": [
- [
- "/wasm/many-memories.window.html",
- {}
- ]
- ],
"wasm/wasm_indexeddb_test.https.html": [
[
"/wasm/wasm_indexeddb_test.https.html",
@@ -365969,9 +366022,13 @@
{}
]
],
- "webauthn/interfaces.https.html": [
+ "webauthn/interfaces.https.any.js": [
[
- "/webauthn/interfaces.https.html",
+ "/webauthn/interfaces.https.any.html",
+ {}
+ ],
+ [
+ "/webauthn/interfaces.https.any.worker.html",
{}
]
],
@@ -366997,9 +367054,9 @@
{}
]
],
- "webrtc/RTCRtpReceiver-getStats.html": [
+ "webrtc/RTCRtpReceiver-getStats.https.html": [
[
- "/webrtc/RTCRtpReceiver-getStats.html",
+ "/webrtc/RTCRtpReceiver-getStats.https.html",
{}
]
],
@@ -483348,6 +483405,18 @@
"e2c2dc0ed64e3c8e70959c64108cbb798ea49827",
"testharness"
],
+ "css/css-align/gaps/gap-normal-computed-001.html": [
+ "e7412b730249b49deca715deef9547a24d49b6b9",
+ "testharness"
+ ],
+ "css/css-align/gaps/gap-normal-used-001.html": [
+ "d4e03d7cdb2962dc5adb70772d3dcb4edcd6b648",
+ "reftest"
+ ],
+ "css/css-align/gaps/gap-normal-used-002.html": [
+ "7348776ecf5dbf5236c9118b6d086e5160c89fbc",
+ "reftest"
+ ],
"css/css-align/gaps/gap-parsing-001.html": [
"7eb55e0a8b04384aebfbb5a47922c5b33f93270c",
"testharness"
@@ -505384,10 +505453,18 @@
"0cba1aed016d08e4706bffb8a4f4169c9cfd2108",
"visual"
],
+ "css/css-overflow/OWNERS": [
+ "9f69536c6dc078b1d7ddba66d2c98d1432a9fcbb",
+ "support"
+ ],
"css/css-overflow/input-scrollable-region-001.html": [
"f51bc673da28b0471018cdf945b4449ab00ce717",
"reftest"
],
+ "css/css-overflow/logical-overflow-001.html": [
+ "2fe3c96c09faaa25baa2d7e88215a2ccd47e9381",
+ "testharness"
+ ],
"css/css-overflow/reference/input-scrollable-region-001-ref.html": [
"31e24bb1a2cb6f42703cc05e055fcb345c770a22",
"support"
@@ -516757,7 +516834,7 @@
"support"
],
"css/css-text/word-break/reference/word-break-break-all-ref-005.html": [
- "c376685676b6a5a6c7bb4560d770944510d5d579",
+ "05d1f5271ed2dc1303b3cf2672bf73f209f7059f",
"support"
],
"css/css-text/word-break/reference/word-break-break-all-ref-006.html": [
@@ -516893,7 +516970,7 @@
"reftest"
],
"css/css-text/word-break/word-break-break-all-005.html": [
- "c6c188f4487e485f2ea040cd3e1fe4e0d88be5a6",
+ "e7c101668b0a2acce03a819de0fdbe6988f9e2a7",
"reftest"
],
"css/css-text/word-break/word-break-break-all-006.html": [
@@ -522700,6 +522777,10 @@
"2068fe442683e6242633527409c89940d4e04bda",
"testharness"
],
+ "css/css-transitions/transition-background-position-with-edge-offset.html": [
+ "00d397eb8f6eba4e3f34c03d7af23e056953e2ef",
+ "testharness"
+ ],
"css/css-transitions/transition-delay-000.html": [
"ad61ec6800863b60d7d392fc0666332673319209",
"manual"
@@ -523624,6 +523705,10 @@
"268e2a2844439f1175199034d89d60a56e0e11fd",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/marker.html": [
+ "cbf331428f094497d098ca75f6a5437a57812640",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/mask-image.html": [
"8400ca1a6caf399c5914df06028d6616fb9f9571",
"testharness"
@@ -523705,7 +523790,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [
- "ca6f58ecbab01ee294f4388b456b3b1bdd7a4629",
+ "7dad4e140a70b28cde65ff1c23c5f843223eee6f",
"support"
],
"css/css-typed-om/the-stylepropertymap/properties/right.html": [
@@ -534869,7 +534954,7 @@
"support"
],
"css/geometry/support/interfaces.js": [
- "13d88ccf8c2f03db7e1db7f6fc704ba46a06e0e1",
+ "588093d88e2aa43a81a11baf0cd154a8fa202788",
"support"
],
"css/mediaqueries/OWNERS": [
@@ -573161,7 +573246,7 @@
"support"
],
"interfaces/geometry.idl": [
- "dea55d151bd19d342f9b28bb2f11e5108ab970ff",
+ "9aae8525ee6b27797783495e8d918892ee857a78",
"support"
],
"interfaces/gyroscope.idl": [
@@ -573244,6 +573329,10 @@
"8d00ee62fafedfd3e24925f48eed6ba26b5aafc7",
"support"
],
+ "interfaces/web-audio-api.idl": [
+ "95feed20bd7d63ce1f3daea677e96340576eada9",
+ "support"
+ ],
"interfaces/web-nfc.idl": [
"105e771bdd9587f029091a5ed590187ed6e86e2a",
"support"
@@ -573252,12 +573341,8 @@
"21b54128664c5962c29fd708ebba3d8d90987f26",
"support"
],
- "interfaces/webaudio.idl": [
- "43a244276b9795b137c2e46c194d56dbb957635d",
- "support"
- ],
"interfaces/webauthn.idl": [
- "77076f0828383c0f48f36131a81b25186622b3a3",
+ "1ae8b428644479b352fd5b1996677fd4dcdbb84b",
"support"
],
"interfaces/webidl.idl": [
@@ -573265,7 +573350,7 @@
"support"
],
"interfaces/webrtc-pc.idl": [
- "f3bcd13429b9ab477f7b2422fa4e3ede0bfac88a",
+ "a631e2e0ea0f451c64b5d5f74fe7cbeafc231b8e",
"support"
],
"interfaces/webusb.idl": [
@@ -594457,7 +594542,7 @@
"support"
],
"service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html": [
- "2879ba75fc0135aa9220f5eb5d7e00b8bcf1cbcc",
+ "4d7489b889c98bd66b40369e2d4ed56355ada6ae",
"support"
],
"service-workers/service-worker/resources/fetch-request-xhr-sync-iframe.html": [
@@ -600316,6 +600401,10 @@
"4e96209d99278b974347c6bd636454b0e7daf3c4",
"manual"
],
+ "uievents/mouse/mouse_buttons_back_forward-manual.html": [
+ "1688ee49394e0d96b0af131faeccc175b1723a8e",
+ "manual"
+ ],
"uievents/mouse/mouseevent_move_button-manual.html": [
"9cc673035fef3c2e8677e8d6679babfe8a1af854",
"manual"
@@ -601884,10 +601973,6 @@
"acdf9d22c042ea3b2637c14b1576b4c8ffb4e97a",
"support"
],
- "wasm/many-memories.window.js": [
- "84e98a89e653c39dab16e096286457268dccd195",
- "testharness"
- ],
"wasm/resources/blank.html": [
"0ddb4f1cf84729ed673295719ec58a3e5d600a12",
"support"
@@ -602409,7 +602494,7 @@
"testharness"
],
"webaudio/idlharness.https.html": [
- "f42681173fdf4cb8dad2049351f55f3a7ff0fcac",
+ "2951a126a8b168e6fe4699890d5a3c4772c7f960",
"testharness"
],
"webaudio/js/buffer-loader.js": [
@@ -603020,8 +603105,8 @@
"9ce729fb89ba1863fb14dfc4d567e6b544a5238d",
"support"
],
- "webauthn/interfaces.https.html": [
- "80609bdf53a5919205b235549cd57a859e56ee3b",
+ "webauthn/interfaces.https.any.js": [
+ "bc3e3c5a85f068efa88c4ed256cc2d270c8eca0f",
"testharness"
],
"webauthn/securecontext.http.html": [
@@ -604065,7 +604150,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-track-stats.https.html": [
- "f69d223cb8cd11e4b68b7687e2361ed3ea947f5e",
+ "55ab0ca3d364b020320fa45a14e50d2897dda13a",
"testharness"
],
"webrtc/RTCPeerConnectionIceEvent-constructor.html": [
@@ -604116,8 +604201,8 @@
"ed910cbe15534cae43b79cc008395bd62fbd0637",
"testharness"
],
- "webrtc/RTCRtpReceiver-getStats.html": [
- "f00accac88efd9108078b0a3d72751a44f108864",
+ "webrtc/RTCRtpReceiver-getStats.https.html": [
+ "a74bf84faa66028f23c5c0de8ea7b1e89aeed98b",
"testharness"
],
"webrtc/RTCRtpReceiver-getSynchronizationSources.https.html": [
@@ -604197,7 +604282,7 @@
"support"
],
"webrtc/interfaces.https.html": [
- "efd0c4a62b9c90f27da1188c30e4503755e7f8d2",
+ "ef5a449587001f2bdfe82dad68920972f2aeafb1",
"testharness"
],
"webrtc/no-media-call.html": [
diff --git a/tests/wpt/metadata/css/geometry/interfaces.html.ini b/tests/wpt/metadata/css/geometry/interfaces.html.ini
index 6ce53b79dcd..03e693ce2f3 100644
--- a/tests/wpt/metadata/css/geometry/interfaces.html.ini
+++ b/tests/wpt/metadata/css/geometry/interfaces.html.ini
@@ -297,3 +297,78 @@
[DOMMatrix interface: calling setMatrixValue(DOMString) on DOMMatrix.fromMatrix({is2D: false}) with too few arguments must throw TypeError]
expected: FAIL
+ [DOMPointReadOnly interface: operation toJSON()]
+ expected: FAIL
+
+ [DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMPointReadOnly]
+ expected: FAIL
+
+ [DOMPointReadOnly interface: new DOMPoint() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMPoint]
+ expected: FAIL
+
+ [DOMRectReadOnly interface: operation toJSON()]
+ expected: FAIL
+
+ [DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMRectReadOnly]
+ expected: FAIL
+
+ [DOMRectReadOnly interface: new DOMRect() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMRect]
+ expected: FAIL
+
+ [DOMRectList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DOMRectList interface object length]
+ expected: FAIL
+
+ [DOMRectList interface object name]
+ expected: FAIL
+
+ [DOMRectList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [DOMRectList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DOMRectList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DOMRectList interface: attribute length]
+ expected: FAIL
+
+ [DOMRectList interface: operation item(unsigned long)]
+ expected: FAIL
+
+ [DOMRectList must be primary interface of [object DOMRect\]]
+ expected: FAIL
+
+ [DOMQuad interface: operation toJSON()]
+ expected: FAIL
+
+ [DOMQuad interface: new DOMQuad() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMQuad]
+ expected: FAIL
+
+ [DOMMatrixReadOnly interface: operation toJSON()]
+ expected: FAIL
+
+ [DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMMatrixReadOnly]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini b/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini
index 40e47594b85..45d656e6725 100644
--- a/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini
+++ b/tests/wpt/metadata/css/geometry/interfaces.worker.js.ini
@@ -44,3 +44,51 @@
[DOMRectReadOnly interface: calling fromRect(DOMRectInit) on new DOMRect() with too few arguments must throw TypeError]
expected: FAIL
+ [DOMPointReadOnly interface: operation toJSON()]
+ expected: FAIL
+
+ [DOMPointReadOnly interface: new DOMPointReadOnly() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMPointReadOnly]
+ expected: FAIL
+
+ [DOMPointReadOnly interface: new DOMPoint() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMPoint]
+ expected: FAIL
+
+ [DOMRectReadOnly interface: operation toJSON()]
+ expected: FAIL
+
+ [DOMRectReadOnly interface: new DOMRectReadOnly() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMRectReadOnly]
+ expected: FAIL
+
+ [DOMRectReadOnly interface: new DOMRect() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMRect]
+ expected: FAIL
+
+ [DOMQuad interface: operation toJSON()]
+ expected: FAIL
+
+ [DOMQuad interface: new DOMQuad() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMQuad]
+ expected: FAIL
+
+ [DOMMatrixReadOnly interface: operation toJSON()]
+ expected: FAIL
+
+ [DOMMatrixReadOnly interface: new DOMMatrixReadOnly() must inherit property "toJSON()" with the proper type]
+ expected: FAIL
+
+ [Test default toJSON operation of DOMMatrixReadOnly]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini b/tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini
index 53b98dd9fc5..df31b559a78 100644
--- a/tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini
+++ b/tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini
@@ -30,6 +30,3 @@
[Consume request's body as formData without correct type (error case)]
expected: FAIL
- [Consume empty ArrayBuffer request body as text]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/api/request/request-consume.html.ini b/tests/wpt/metadata/fetch/api/request/request-consume.html.ini
index 5b7c4c75ccf..b8aed8beb35 100644
--- a/tests/wpt/metadata/fetch/api/request/request-consume.html.ini
+++ b/tests/wpt/metadata/fetch/api/request/request-consume.html.ini
@@ -9,63 +9,3 @@
[Consume FormData request's body as FormData]
expected: FAIL
- [Consume ArrayBuffer request's body as blob]
- expected: FAIL
-
- [Consume ArrayBuffer request's body as arrayBuffer]
- expected: FAIL
-
- [Consume ArrayBuffer request's body as JSON]
- expected: FAIL
-
- [Consume Uint8Array request's body as text]
- expected: FAIL
-
- [Consume Uint8Array request's body as blob]
- expected: FAIL
-
- [Consume Uint8Array request's body as arrayBuffer]
- expected: FAIL
-
- [Consume Uint8Array request's body as JSON]
- expected: FAIL
-
- [Consume Int8Array request's body as JSON]
- expected: FAIL
-
- [Consume Float32Array request's body as text]
- expected: FAIL
-
- [Consume ArrayBuffer request's body as text]
- expected: FAIL
-
- [Consume Int8Array request's body as text]
- expected: FAIL
-
- [Consume Int8Array request's body as blob]
- expected: FAIL
-
- [Consume Int8Array request's body as arrayBuffer]
- expected: FAIL
-
- [Consume Float32Array request's body as blob]
- expected: FAIL
-
- [Consume Float32Array request's body as arrayBuffer]
- expected: FAIL
-
- [Consume Float32Array request's body as JSON]
- expected: FAIL
-
- [Consume DataView request's body as text]
- expected: FAIL
-
- [Consume DataView request's body as blob]
- expected: FAIL
-
- [Consume DataView request's body as arrayBuffer]
- expected: FAIL
-
- [Consume DataView request's body as JSON]
- expected: FAIL
-
diff --git a/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini b/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini
deleted file mode 100644
index 65c78fd3a4a..00000000000
--- a/tests/wpt/mozilla/meta/css/iframe/hide_after_load.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[hide_after_load.html]
- expected: TIMEOUT
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
new file mode 100644
index 00000000000..fb8852c9e7a
--- /dev/null
+++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/glsl/misc/shader-with-non-reserved-words.html.ini
@@ -0,0 +1,5 @@
+[shader-with-non-reserved-words.html]
+ expected: TIMEOUT
+ [Overall test]
+ expected: NOTRUN
+
diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html b/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html
new file mode 100644
index 00000000000..45b82ac27a2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-computed-001.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Box Alignment Test: computed value of normal on *-gap properties</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel="help" href="https://www.w3.org/TR/css-align-3/#column-row-gap">
+<meta assert="The computed value of [row-|column-]?gap is normal for all elements it applies to. Checking explicitely because earlier version of the spec called for 0px in some cases.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+#col,
+#grid,
+#flex {
+ /* Not using the shorthand because that's not what we're interested in,
+ and there are implementations that support column-gap without supporting the shorthand */
+ colum-gap: normal;
+ row-gap: normal;
+ float: right; /* for shrinkwrap*/
+}
+#col {
+ column-count: 2;
+ column-width: 50px;
+}
+#grid {
+ display: grid;
+ grid-template-columns: 50px 50px;
+ grid-template-rows: 50px 50px;
+}
+#flex {
+ display: flex;
+}
+#flex * { width: 50px; height: 50px;}
+</style>
+<body>
+ <div id="log"></div>
+
+ <div id=col></div>
+ <div id=grid></div>
+ <div id=flex><span></span><span></span></div>
+
+ <script>
+ test(
+ function(){
+ var target = document.getElementById("col");
+ assert_equals(getComputedStyle(target).columnGap, "normal");
+ }, "colum-gap:normal computes to normal on multicol elements");
+ test(
+ function(){
+ var target = document.getElementById("col");
+ assert_equals(getComputedStyle(target).rowGap, "normal");
+ }, "row-gap:normal computes to normal on multicol elements");
+ test(
+ function(){
+ var target = document.getElementById("grid");
+ assert_equals(getComputedStyle(target).columnGap, "normal");
+ }, "colum-gap:normal computes to normal on grid");
+ test(
+ function(){
+ var target = document.getElementById("grid");
+ assert_equals(getComputedStyle(target).rowGap, "normal");
+ }, "row-gap:normal computes to normal on grid");
+ test(
+ function(){
+ var target = document.getElementById("flex");
+ assert_equals(getComputedStyle(target).columnGap, "normal");
+ }, "colum-gap:normal (main axis) computes to normal on flexbox");
+ test(
+ function(){
+ var target = document.getElementById("flex");
+ assert_equals(getComputedStyle(target).rowGap, "normal");
+ }, "row-gap:normal (cross axis) computes to normal on flexbox");
+ </script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html b/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html
new file mode 100644
index 00000000000..3d7ab10b8cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-used-001.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Box Alignment Test: used value of *-gap:normal on grid</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel="help" href="https://www.w3.org/TR/css-align-3/#column-row-gap">
+<meta assert="The used value of row-gap and column-gap normal for grids is 0">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
+<style>
+#grid {
+ colum-gap: normal;
+ row-gap: normal;
+ display: grid;
+ grid-template-columns: 50px 50px;
+ grid-template-rows: 50px 50px;
+
+ position: absolute;
+}
+#grid * { background: green; }
+#red {
+ width: 100px;
+ height: 100px;
+ background: red;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<div id=grid><span></span><span></span><span></span><span></span></div>
+<div id=red></div>
diff --git a/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html b/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html
new file mode 100644
index 00000000000..0b40646e7ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/gaps/gap-normal-used-002.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Box Alignment Test: used value of *-gap:normal on flexbox</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel="help" href="https://www.w3.org/TR/css-align-3/#column-row-gap">
+<meta assert="The used value row-gap:normal and column:normal normal is 0px in flexbox">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht" />
+<style>
+#flex {
+ colum-gap: normal;
+ row-gap: normal;
+ display: flex;
+ flex-flow: wrap;
+ max-width: 145px; /* more than 100, less than 150, to force wrapping and get 2 items per line*/
+
+ position: absolute;
+}
+#flex * {
+ width: 50px;
+ height: 50px;
+ background: green
+}
+#red {
+ width: 100px;
+ height: 100px;
+ background: red;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<div id=flex><span></span><span></span><span></span><span></span></div>
+<div id=red></div>
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/OWNERS b/tests/wpt/web-platform-tests/css/css-overflow/OWNERS
new file mode 100644
index 00000000000..5c24843cf78
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-overflow/OWNERS
@@ -0,0 +1,2 @@
+@frivoal
+@dbaron
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/logical-overflow-001.html b/tests/wpt/web-platform-tests/css/css-overflow/logical-overflow-001.html
new file mode 100644
index 00000000000..15bf57f793c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-overflow/logical-overflow-001.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Overflow Test: flow-relative versions of overflow-x and -y</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#logical">
+<link rel="help" href="https://drafts.csswg.org/css-logical/#box">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+#d1, #d2 {
+ overflow-block: hidden;
+ overflow-inline: scroll
+}
+#d1 {
+ writing-mode: horizontal-tb;
+}
+#d2 {
+ writing-mode: vertical-rl;
+}
+
+</style>
+<body>
+ <div id="log"></div>
+
+ <div id=d1></div>
+ <div id=d2></div>
+
+ <script>
+ test(
+ function(){
+ var target = document.getElementById("d1");
+ assert_equals(getComputedStyle(target).overflowX, "scroll");
+ assert_equals(getComputedStyle(target).overflowY, "hidden");
+ }, "overflow-x matches overflow-inline, and overflow-y matches overflow-block when the element has a horizontal writing mode");
+ test(
+ function(){
+ var target = document.getElementById("d2");
+ assert_equals(getComputedStyle(target).overflowX, "hidden");
+ assert_equals(getComputedStyle(target).overflowY, "scroll");
+ }, "overflow-y matches overflow-inline, and overflow-x matches overflow-block when the element has a vertical writing mode");
+ </script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-ref-005.html b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-ref-005.html
index 331239cb00e..151aecb752d 100644
--- a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-ref-005.html
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-ref-005.html
@@ -7,7 +7,7 @@
<style type='text/css'>
.test { word-break: break-all; }
/* the CSS below is not part of the test */
-.test, .ref { border: 1px solid orange; margin: 20px; padding: 10px; width: 390px; font: 36px/1.5 sans-serif; }
+.test, .ref { border: 1px solid orange; margin: 20px; padding: 10px; width: 390px; font: 36px/1.5 Arial; }
</style>
</head>
<body>
@@ -15,4 +15,4 @@
<div class="ref" lang="bo"><span>ལྷ་སའི་སྐད་ད་<br/>ལྟ</span></div>
<div class="ref" lang="bo"><span>ལྷ་སའི་སྐད་ད་<br/>ལྟ</span></div>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-005.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-005.html
index 758a245cb09..02f233587b0 100644
--- a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-005.html
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-005.html
@@ -10,7 +10,7 @@
<style type='text/css'>
.test { word-break: break-all; }
/* the CSS below is not part of the test */
-.test, .ref { border: 1px solid orange; margin: 20px; padding: 10px; width: 390px; font: 36px/1.5 sans-serif; }
+.test, .ref { border: 1px solid orange; margin: 20px; padding: 10px; width: 390px; font: 36px/1.5 Arial; }
</style>
</head>
<body>
@@ -22,4 +22,4 @@ var sentenceWidth = document.getElementById('testspan').offsetWidth
document.getElementById('testdiv').style.width = String(sentenceWidth - 5)+'px'
</script>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-background-position-with-edge-offset.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-background-position-with-edge-offset.html
new file mode 100644
index 00000000000..9a74bebfb7a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-background-position-with-edge-offset.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Transitions Test: transition-property - background-position</title>
+<link rel="author" title="Zhuoyu Qian" href="mailto:zhuoyu.qian@samsung.com">
+<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
+<link rel="help" title="5.3.6 background-position" href="https://www.w3.org/TR/CSS1/#background-position">
+<meta name="assert" content="Test checks that the 'background-position' property with edge offset is animatable.">
+<script src="/resources/testharness.js" type="text/javascript"></script>
+<script src="/resources/testharnessreport.js" type="text/javascript"></script>
+<style>
+ #test {
+ border: 1px solid;
+ background-image: url("support/cat.png");
+ background-repeat: no-repeat;
+ height: 200px;
+ transition-duration: 100s;
+ transition-property: background-position;
+ transition-timing-function: step-end;
+ }
+</style>
+<body>
+ <div id="test"></div>
+</body>
+<script>
+var startValue = "left 10px top 10px";
+var endValue = "right 10px bottom 10px";
+var div = document.getElementById("test");
+
+// getComputedStyle helper
+function gCS(aProperty) {
+ return document.defaultView
+ .getComputedStyle(div, "")
+ .getPropertyValue(aProperty);
+}
+
+(function() {
+ div.style.backgroundPosition = startValue;
+
+ // flush styles
+ gCS("background-position");
+
+ // set property to endValue
+ div.setAttribute("style", "background-position: " + endValue);
+
+ test(function() {
+ assert_true(gCS("background-position") != endValue);
+ }, "background-position not equals to end value");
+})();
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/marker.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/marker.html
new file mode 100644
index 00000000000..9b264613c82
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/marker.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'marker-*' properties</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('marker', [
+ 'none', 'url(#m1)'
+]);
+
+for (const suffix of ['start', 'mid', 'end']) {
+ runPropertyTests(`marker-${suffix}`, [
+ { syntax: 'none' },
+ { syntax: '<url>' },
+ ]);
+}
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
index bf2b217177c..1b0a0d71669 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
@@ -152,6 +152,13 @@ const gTestSyntaxExamples = {
}
],
},
+ '<url>': {
+ description: 'a URL',
+ examples: [
+ // TODO(https://github.com/w3c/css-houdini-drafts/issues/716):
+ // We can't test this until CSSURLValue is spec'd.
+ ],
+ },
'<transform>': {
description: 'a transform',
examples: [
diff --git a/tests/wpt/web-platform-tests/css/geometry/support/interfaces.js b/tests/wpt/web-platform-tests/css/geometry/support/interfaces.js
index e5955d1092f..3dca6956a38 100644
--- a/tests/wpt/web-platform-tests/css/geometry/support/interfaces.js
+++ b/tests/wpt/web-platform-tests/css/geometry/support/interfaces.js
@@ -19,6 +19,8 @@ function doTest(idl) {
DOMMatrixReadOnly: ["new DOMMatrixReadOnly()", "DOMMatrixReadOnly.fromMatrix({is2D: false})"],
DOMMatrix: ["new DOMMatrix()", "DOMMatrix.fromMatrix({is2D: false})"],
});
+ idlArray.prevent_multiple_testing("DOMMatrixReadOnly");
+ idlArray.prevent_multiple_testing("DOMMatrix");
idlArray.test();
done();
}
diff --git a/tests/wpt/web-platform-tests/interfaces/geometry.idl b/tests/wpt/web-platform-tests/interfaces/geometry.idl
index 556e8a5cdef..7ee2a5a0561 100644
--- a/tests/wpt/web-platform-tests/interfaces/geometry.idl
+++ b/tests/wpt/web-platform-tests/interfaces/geometry.idl
@@ -1,3 +1,7 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the Geometry Interfaces spec.
+// See https://drafts.fxtf.org/geometry/
+
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
optional unrestricted double z = 0, optional unrestricted double w = 1),
Exposed=(Window,Worker),
@@ -12,7 +16,7 @@ interface DOMPointReadOnly {
DOMPoint matrixTransform(optional DOMMatrixInit matrix);
- [Default] toJSON();
+ [Default] object toJSON();
};
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
@@ -52,7 +56,7 @@ interface DOMRectReadOnly {
readonly attribute unrestricted double bottom;
readonly attribute unrestricted double left;
- [Default] toJSON();
+ [Default] object toJSON();
};
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
@@ -76,8 +80,7 @@ dictionary DOMRectInit {
unrestricted double height = 0;
};
-[NoInterfaceObject,
- LegacyArrayClass]
+[LegacyArrayClass]
interface DOMRectList {
readonly attribute unsigned long length;
getter DOMRect? item(unsigned long index);
@@ -97,7 +100,7 @@ interface DOMQuad {
[SameObject] readonly attribute DOMPoint p4;
[NewObject] DOMRect getBounds();
- [Default] toJSON();
+ [Default] object toJSON();
};
dictionary DOMQuadInit {
@@ -178,7 +181,7 @@ interface DOMMatrixReadOnly {
[NewObject] Float64Array toFloat64Array();
[Exposed=Window] stringifier;
- [Default] toJSON();
+ [Default] object toJSON();
};
[Constructor(optional (DOMString or sequence<unrestricted double>) init),
diff --git a/tests/wpt/web-platform-tests/interfaces/webaudio.idl b/tests/wpt/web-platform-tests/interfaces/web-audio-api.idl
index d20bc7fc559..2514dad45c3 100644
--- a/tests/wpt/web-platform-tests/interfaces/webaudio.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-audio-api.idl
@@ -1,3 +1,7 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the Web Audio API spec.
+// See https://webaudio.github.io/web-audio-api/
+
enum AudioContextState {
"suspended",
"running",
diff --git a/tests/wpt/web-platform-tests/interfaces/webauthn.idl b/tests/wpt/web-platform-tests/interfaces/webauthn.idl
index dcd1f87b5d3..2d2ef507feb 100644
--- a/tests/wpt/web-platform-tests/interfaces/webauthn.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webauthn.idl
@@ -1,12 +1,16 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the Web Authentication spec.
+// See https://w3c.github.io/webauthn/
+
[SecureContext, Exposed=Window]
interface PublicKeyCredential : Credential {
[SameObject] readonly attribute ArrayBuffer rawId;
[SameObject] readonly attribute AuthenticatorResponse response;
- AuthenticationExtensions getClientExtensionResults();
+ AuthenticationExtensionsClientOutputs getClientExtensionResults();
};
partial dictionary CredentialCreationOptions {
- MakePublicKeyCredentialOptions publicKey;
+ PublicKeyCredentialCreationOptions publicKey;
};
partial dictionary CredentialRequestOptions {
@@ -31,7 +35,7 @@ interface AuthenticatorAttestationResponse : AuthenticatorResponse {
interface AuthenticatorAssertionResponse : AuthenticatorResponse {
[SameObject] readonly attribute ArrayBuffer authenticatorData;
[SameObject] readonly attribute ArrayBuffer signature;
- [SameObject] readonly attribute ArrayBuffer userHandle;
+ [SameObject] readonly attribute ArrayBuffer? userHandle;
};
dictionary PublicKeyCredentialParameters {
@@ -39,7 +43,7 @@ dictionary PublicKeyCredentialParameters {
required COSEAlgorithmIdentifier alg;
};
-dictionary MakePublicKeyCredentialOptions {
+dictionary PublicKeyCredentialCreationOptions {
required PublicKeyCredentialRpEntity rp;
required PublicKeyCredentialUserEntity user;
@@ -50,7 +54,7 @@ dictionary MakePublicKeyCredentialOptions {
sequence<PublicKeyCredentialDescriptor> excludeCredentials = [];
AuthenticatorSelectionCriteria authenticatorSelection;
AttestationConveyancePreference attestation = "none";
- AuthenticationExtensions extensions;
+ AuthenticationExtensionsClientInputs extensions;
};
dictionary PublicKeyCredentialEntity {
@@ -90,21 +94,31 @@ dictionary PublicKeyCredentialRequestOptions {
USVString rpId;
sequence<PublicKeyCredentialDescriptor> allowCredentials = [];
UserVerificationRequirement userVerification = "preferred";
- AuthenticationExtensions extensions;
+ AuthenticationExtensionsClientInputs extensions;
+};
+
+dictionary AuthenticationExtensionsClientInputs {
};
-typedef record<DOMString, any> AuthenticationExtensions;
+dictionary AuthenticationExtensionsClientOutputs {
+};
+
+typedef record<DOMString, DOMString> AuthenticationExtensionsAuthenticatorInputs;
dictionary CollectedClientData {
required DOMString type;
required DOMString challenge;
required DOMString origin;
- required DOMString hashAlgorithm;
- DOMString tokenBindingId;
- AuthenticationExtensions clientExtensions;
- AuthenticationExtensions authenticatorExtensions;
+ TokenBinding tokenBinding;
+};
+
+dictionary TokenBinding {
+ required TokenBindingStatus status;
+ DOMString id;
};
+enum TokenBindingStatus { "present", "supported", "not-supported" };
+
enum PublicKeyCredentialType {
"public-key"
};
@@ -129,6 +143,85 @@ enum UserVerificationRequirement {
"discouraged"
};
-typedef sequence<AAGUID> AuthenticatorSelectionList;
+partial dictionary AuthenticationExtensionsClientInputs {
+ USVString appid;
+};
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ boolean appid;
+};
+
+partial dictionary AuthenticationExtensionsClientInputs {
+ USVString txAuthSimple;
+};
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ USVString txAuthSimple;
+};
+
+dictionary txAuthGenericArg {
+ required USVString contentType; // MIME-Type of the content, e.g., "image/png"
+ required ArrayBuffer content;
+};
+
+partial dictionary AuthenticationExtensionsClientInputs {
+ txAuthGenericArg txAuthGeneric;
+};
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ ArrayBuffer txAuthGeneric;
+};
+
+typedef sequence<AAGUID> AuthenticatorSelectionList;
+
+partial dictionary AuthenticationExtensionsClientInputs {
+ AuthenticatorSelectionList authnSel;
+};
+
+typedef BufferSource AAGUID;
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ boolean authnSel;
+};
+
+partial dictionary AuthenticationExtensionsClientInputs {
+ boolean exts;
+};
+
+typedef sequence<USVString> AuthenticationExtensionsSupported;
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ AuthenticationExtensionsSupported exts;
+};
+
+partial dictionary AuthenticationExtensionsClientInputs {
+ boolean uvi;
+};
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ ArrayBuffer uvi;
+};
+
+partial dictionary AuthenticationExtensionsClientInputs {
+ boolean loc;
+};
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ Coordinates loc;
+};
+
+partial dictionary AuthenticationExtensionsClientInputs {
+ boolean uvm;
+};
+
+typedef sequence<unsigned long> UvmEntry;
+typedef sequence<UvmEntry> UvmEntries;
+
+partial dictionary AuthenticationExtensionsClientOutputs {
+ UvmEntries uvm;
+};
-typedef BufferSource AAGUID; \ No newline at end of file
+dictionary authenticatorBiometricPerfBounds{
+ float FAR;
+ float FRR;
+ };
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc-pc.idl b/tests/wpt/web-platform-tests/interfaces/webrtc-pc.idl
index d33562b642f..fde2ba02f80 100644
--- a/tests/wpt/web-platform-tests/interfaces/webrtc-pc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc-pc.idl
@@ -1,15 +1,16 @@
-// IDL definition extracted from
-// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the WebRTC spec.
+// See https://w3c.github.io/webrtc-pc/
dictionary RTCConfiguration {
- sequence<RTCIceServer> iceServers;
- RTCIceTransportPolicy iceTransportPolicy = "all";
- RTCBundlePolicy bundlePolicy = "balanced";
- RTCRtcpMuxPolicy rtcpMuxPolicy = "require";
- DOMString peerIdentity;
- sequence<RTCCertificate> certificates;
- [EnforceRange]
- octet iceCandidatePoolSize = 0;
+ sequence<RTCIceServer> iceServers;
+ RTCIceTransportPolicy iceTransportPolicy = "all";
+ RTCBundlePolicy bundlePolicy = "balanced";
+ RTCRtcpMuxPolicy rtcpMuxPolicy = "require";
+ DOMString peerIdentity;
+ sequence<RTCCertificate> certificates;
+ [EnforceRange]
+ octet iceCandidatePoolSize = 0;
};
enum RTCIceCredentialType {
@@ -18,14 +19,14 @@ enum RTCIceCredentialType {
};
dictionary RTCOAuthCredential {
- required DOMString macKey;
- required DOMString accessToken;
+ required DOMString macKey;
+ required DOMString accessToken;
};
dictionary RTCIceServer {
required (DOMString or sequence<DOMString>) urls;
DOMString username;
- (DOMString or RTCOAuthCredential) credential;
+ (DOMString or RTCOAuthCredential) credential;
RTCIceCredentialType credentialType = "password";
};
@@ -47,70 +48,15 @@ enum RTCRtcpMuxPolicy {
};
dictionary RTCOfferAnswerOptions {
- boolean voiceActivityDetection = true;
+ boolean voiceActivityDetection = true;
};
dictionary RTCOfferOptions : RTCOfferAnswerOptions {
- boolean iceRestart = false;
- boolean offerToReceiveAudio;
- boolean offerToReceiveVideo;
-};
-
-dictionary RTCAnswerOptions : RTCOfferAnswerOptions {
-};
-
-[Constructor(optional RTCConfiguration configuration)]
-interface RTCPeerConnection : EventTarget {
- Promise<RTCSessionDescriptionInit> createOffer(optional RTCOfferOptions options);
- Promise<RTCSessionDescriptionInit> createAnswer(optional RTCAnswerOptions options);
- Promise<void> setLocalDescription(RTCSessionDescriptionInit description);
- readonly attribute RTCSessionDescription? localDescription;
- readonly attribute RTCSessionDescription? currentLocalDescription;
- readonly attribute RTCSessionDescription? pendingLocalDescription;
- Promise<void> setRemoteDescription(RTCSessionDescriptionInit description);
- readonly attribute RTCSessionDescription? remoteDescription;
- readonly attribute RTCSessionDescription? currentRemoteDescription;
- readonly attribute RTCSessionDescription? pendingRemoteDescription;
- Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate);
- readonly attribute RTCSignalingState signalingState;
- readonly attribute RTCIceGatheringState iceGatheringState;
- readonly attribute RTCIceConnectionState iceConnectionState;
- readonly attribute RTCPeerConnectionState connectionState;
- readonly attribute boolean? canTrickleIceCandidates;
- static sequence<RTCIceServer> getDefaultIceServers();
- RTCConfiguration getConfiguration();
- void setConfiguration(RTCConfiguration configuration);
- void close();
- attribute EventHandler onnegotiationneeded;
- attribute EventHandler onicecandidate;
- attribute EventHandler onicecandidateerror;
- attribute EventHandler onsignalingstatechange;
- attribute EventHandler oniceconnectionstatechange;
- attribute EventHandler onicegatheringstatechange;
- attribute EventHandler onconnectionstatechange;
- attribute EventHandler onfingerprintfailure;
+ boolean iceRestart = false;
};
-partial interface RTCPeerConnection {
- Promise<void> createOffer(RTCSessionDescriptionCallback successCallback,
- RTCPeerConnectionErrorCallback failureCallback,
- optional RTCOfferOptions options);
- Promise<void> setLocalDescription(RTCSessionDescriptionInit description,
- VoidFunction successCallback,
- RTCPeerConnectionErrorCallback failureCallback);
- Promise<void> createAnswer(RTCSessionDescriptionCallback successCallback,
- RTCPeerConnectionErrorCallback failureCallback);
- Promise<void> setRemoteDescription(RTCSessionDescriptionInit description,
- VoidFunction successCallback,
- RTCPeerConnectionErrorCallback failureCallback);
- Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate,
- VoidFunction successCallback,
- RTCPeerConnectionErrorCallback failureCallback);
-};
-
-callback RTCPeerConnectionErrorCallback = void (DOMException error);
-
-callback RTCSessionDescriptionCallback = void (RTCSessionDescriptionInit description);
+ dictionary RTCAnswerOptions : RTCOfferAnswerOptions {
+};
enum RTCSignalingState {
"stable",
@@ -141,11 +87,59 @@ enum RTCIceConnectionState {
"checking",
"connected",
"completed",
- "failed",
"disconnected",
+ "failed",
"closed"
};
+ [ Constructor (optional RTCConfiguration configuration), Exposed=Window]
+interface RTCPeerConnection : EventTarget {
+ Promise<RTCSessionDescriptionInit> createOffer (optional RTCOfferOptions options);
+ Promise<RTCSessionDescriptionInit> createAnswer (optional RTCAnswerOptions options);
+ Promise<void> setLocalDescription (RTCSessionDescriptionInit description);
+ readonly attribute RTCSessionDescription? localDescription;
+ readonly attribute RTCSessionDescription? currentLocalDescription;
+ readonly attribute RTCSessionDescription? pendingLocalDescription;
+ Promise<void> setRemoteDescription (RTCSessionDescriptionInit description);
+ readonly attribute RTCSessionDescription? remoteDescription;
+ readonly attribute RTCSessionDescription? currentRemoteDescription;
+ readonly attribute RTCSessionDescription? pendingRemoteDescription;
+ Promise<void> addIceCandidate ((RTCIceCandidateInit or RTCIceCandidate) candidate);
+ readonly attribute RTCSignalingState signalingState;
+ readonly attribute RTCIceGatheringState iceGatheringState;
+ readonly attribute RTCIceConnectionState iceConnectionState;
+ readonly attribute RTCPeerConnectionState connectionState;
+ readonly attribute boolean? canTrickleIceCandidates;
+ static sequence<RTCIceServer> getDefaultIceServers ();
+ RTCConfiguration getConfiguration ();
+ void setConfiguration (RTCConfiguration configuration);
+ void close ();
+ attribute EventHandler onnegotiationneeded;
+ attribute EventHandler onicecandidate;
+ attribute EventHandler onicecandidateerror;
+ attribute EventHandler onsignalingstatechange;
+ attribute EventHandler oniceconnectionstatechange;
+ attribute EventHandler onicegatheringstatechange;
+ attribute EventHandler onconnectionstatechange;
+};
+
+partial interface RTCPeerConnection {
+ Promise<void> createOffer (RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional RTCOfferOptions options);
+ Promise<void> setLocalDescription (RTCSessionDescriptionInit description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
+ Promise<void> createAnswer (RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback);
+ Promise<void> setRemoteDescription (RTCSessionDescriptionInit description, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
+ Promise<void> addIceCandidate ((RTCIceCandidateInit or RTCIceCandidate) candidate, VoidFunction successCallback, RTCPeerConnectionErrorCallback failureCallback);
+};
+
+ callback RTCPeerConnectionErrorCallback = void (DOMException error);
+
+ callback RTCSessionDescriptionCallback = void (RTCSessionDescriptionInit description);
+
+partial dictionary RTCOfferOptions {
+ boolean offerToReceiveAudio;
+ boolean offerToReceiveVideo;
+ };
+
enum RTCSdpType {
"offer",
"pranswer",
@@ -153,10 +147,10 @@ enum RTCSdpType {
"rollback"
};
-[Constructor(RTCSessionDescriptionInit descriptionInitDict)]
+ [ Constructor (RTCSessionDescriptionInit descriptionInitDict), Exposed=Window]
interface RTCSessionDescription {
- readonly attribute RTCSdpType type;
- readonly attribute DOMString sdp;
+ readonly attribute RTCSdpType type;
+ readonly attribute DOMString sdp;
[Default] object toJSON();
};
@@ -165,30 +159,30 @@ dictionary RTCSessionDescriptionInit {
DOMString sdp = "";
};
-[Constructor(optional RTCIceCandidateInit candidateInitDict)]
+ [ Constructor (optional RTCIceCandidateInit candidateInitDict), Exposed=Window]
interface RTCIceCandidate {
- readonly attribute DOMString candidate;
- readonly attribute DOMString? sdpMid;
- readonly attribute unsigned short? sdpMLineIndex;
- readonly attribute DOMString? foundation;
- readonly attribute RTCIceComponent? component;
- readonly attribute unsigned long? priority;
- readonly attribute DOMString? ip;
- readonly attribute RTCIceProtocol? protocol;
- readonly attribute unsigned short? port;
- readonly attribute RTCIceCandidateType? type;
- readonly attribute RTCIceTcpCandidateType? tcpType;
- readonly attribute DOMString? relatedAddress;
- readonly attribute unsigned short? relatedPort;
- readonly attribute DOMString? usernameFragment;
+ readonly attribute DOMString candidate;
+ readonly attribute DOMString? sdpMid;
+ readonly attribute unsigned short? sdpMLineIndex;
+ readonly attribute DOMString? foundation;
+ readonly attribute RTCIceComponent? component;
+ readonly attribute unsigned long? priority;
+ readonly attribute DOMString? ip;
+ readonly attribute RTCIceProtocol? protocol;
+ readonly attribute unsigned short? port;
+ readonly attribute RTCIceCandidateType? type;
+ readonly attribute RTCIceTcpCandidateType? tcpType;
+ readonly attribute DOMString? relatedAddress;
+ readonly attribute unsigned short? relatedPort;
+ readonly attribute DOMString? usernameFragment;
RTCIceCandidateInit toJSON();
};
dictionary RTCIceCandidateInit {
- DOMString candidate = "";
- DOMString? sdpMid = null;
- unsigned short? sdpMLineIndex = null;
- DOMString usernameFragment;
+ DOMString candidate = "";
+ DOMString? sdpMid = null;
+ unsigned short? sdpMLineIndex = null;
+ DOMString usernameFragment;
};
enum RTCIceProtocol {
@@ -209,29 +203,29 @@ enum RTCIceCandidateType {
"relay"
};
-[Constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict)]
+ [ Constructor (DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict), Exposed=Window]
interface RTCPeerConnectionIceEvent : Event {
- readonly attribute RTCIceCandidate? candidate;
- readonly attribute DOMString? url;
+ readonly attribute RTCIceCandidate? candidate;
+ readonly attribute DOMString? url;
};
-dictionary RTCPeerConnectionIceEventInit : EventInit {
- RTCIceCandidate? candidate;
- DOMString? url;
+ dictionary RTCPeerConnectionIceEventInit : EventInit {
+ RTCIceCandidate? candidate;
+ DOMString? url;
};
-[Constructor(DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict)]
+ [ Constructor (DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict), Exposed=Window]
interface RTCPeerConnectionIceErrorEvent : Event {
- readonly attribute DOMString hostCandidate;
- readonly attribute DOMString url;
- readonly attribute unsigned short errorCode;
- readonly attribute USVString errorText;
+ readonly attribute DOMString hostCandidate;
+ readonly attribute DOMString url;
+ readonly attribute unsigned short errorCode;
+ readonly attribute USVString errorText;
};
-dictionary RTCPeerConnectionIceErrorEventInit : EventInit {
+ dictionary RTCPeerConnectionIceErrorEventInit : EventInit {
DOMString hostCandidate;
DOMString url;
- required unsigned short errorCode;
+ required unsigned short errorCode;
USVString statusText;
};
@@ -243,7 +237,7 @@ enum RTCPriorityType {
};
partial interface RTCPeerConnection {
- static Promise<RTCCertificate> generateCertificate(AlgorithmIdentifier keygenAlgorithm);
+ static Promise<RTCCertificate> generateCertificate (AlgorithmIdentifier keygenAlgorithm);
};
dictionary RTCCertificateExpiration {
@@ -251,29 +245,26 @@ dictionary RTCCertificateExpiration {
DOMTimeStamp expires;
};
-interface RTCCertificate {
- readonly attribute DOMTimeStamp expires;
- sequence<RTCDtlsFingerprint> getFingerprints();
- // At risk due to lack of implementers' interest.
- AlgorithmIdentifier getAlgorithm();
+[Exposed=Window] interface RTCCertificate {
+ readonly attribute DOMTimeStamp expires;
+ static sequence<AlgorithmIdentifier> getSupportedAlgorithms();
+ sequence<RTCDtlsFingerprint> getFingerprints ();
};
partial interface RTCPeerConnection {
- sequence<RTCRtpSender> getSenders();
- sequence<RTCRtpReceiver> getReceivers();
- sequence<RTCRtpTransceiver> getTransceivers();
- RTCRtpSender addTrack(MediaStreamTrack track,
- MediaStream... streams);
- void removeTrack(RTCRtpSender sender);
- RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind,
- optional RTCRtpTransceiverInit init);
- attribute EventHandler ontrack;
+ sequence<RTCRtpSender> getSenders ();
+ sequence<RTCRtpReceiver> getReceivers ();
+ sequence<RTCRtpTransceiver> getTransceivers ();
+ RTCRtpSender addTrack (MediaStreamTrack track, MediaStream... streams);
+ void removeTrack (RTCRtpSender sender);
+ RTCRtpTransceiver addTransceiver ((MediaStreamTrack or DOMString) trackOrKind, optional RTCRtpTransceiverInit init);
+ attribute EventHandler ontrack;
};
dictionary RTCRtpTransceiverInit {
- RTCRtpTransceiverDirection direction = "sendrecv";
- sequence<MediaStream> streams;
- sequence<RTCRtpEncodingParameters> sendEncodings;
+ RTCRtpTransceiverDirection direction = "sendrecv";
+ sequence<MediaStream> streams = [];
+ sequence<RTCRtpEncodingParameters> sendEncodings = [];
};
enum RTCRtpTransceiverDirection {
@@ -283,45 +274,42 @@ enum RTCRtpTransceiverDirection {
"inactive"
};
-interface RTCRtpSender {
- readonly attribute MediaStreamTrack? track;
- readonly attribute RTCDtlsTransport? transport;
- readonly attribute RTCDtlsTransport? rtcpTransport;
- // Feature at risk
- static RTCRtpCapabilities getCapabilities(DOMString kind);
- Promise<void> setParameters(optional RTCRtpParameters parameters);
- RTCRtpParameters getParameters();
- Promise<void> replaceTrack(MediaStreamTrack withTrack);
- Promise<RTCStatsReport> getStats();
+[Exposed=Window] interface RTCRtpSender {
+ readonly attribute MediaStreamTrack? track;
+ readonly attribute RTCDtlsTransport? transport;
+ readonly attribute RTCDtlsTransport? rtcpTransport;
+ static RTCRtpCapabilities getCapabilities (DOMString kind);
+ Promise<void> setParameters (optional RTCRtpParameters parameters);
+ RTCRtpParameters getParameters ();
+ Promise<void> replaceTrack (MediaStreamTrack? withTrack);
+ Promise<RTCStatsReport> getStats();
};
dictionary RTCRtpParameters {
- DOMString transactionId;
- sequence<RTCRtpEncodingParameters> encodings;
- sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
- RTCRtcpParameters rtcp;
- sequence<RTCRtpCodecParameters> codecs;
- RTCDegradationPreference degradationPreference;
+ DOMString transactionId;
+ sequence<RTCRtpEncodingParameters> encodings;
+ sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
+ RTCRtcpParameters rtcp;
+ sequence<RTCRtpCodecParameters> codecs;
+ RTCDegradationPreference degradationPreference;
};
dictionary RTCRtpEncodingParameters {
- unsigned long ssrc;
- RTCRtpRtxParameters rtx;
- RTCRtpFecParameters fec;
- RTCDtxStatus dtx;
- boolean active;
- RTCPriorityType priority;
- unsigned long ptime;
- unsigned long maxBitrate;
- double maxFramerate;
- DOMString rid;
- double scaleResolutionDownBy;
+ octet codecPayloadType;
+ RTCDtxStatus dtx;
+ boolean active = true;
+ RTCPriorityType priority = "low";
+ unsigned long ptime;
+ unsigned long maxBitrate;
+ double maxFramerate;
+ DOMString rid;
+ double scaleResolutionDownBy;
};
enum RTCDtxStatus {
- "disabled",
- "enabled"
-};
+ "disabled",
+ "enabled"
+ };
enum RTCDegradationPreference {
"maintain-framerate",
@@ -329,93 +317,81 @@ enum RTCDegradationPreference {
"balanced"
};
-dictionary RTCRtpRtxParameters {
- unsigned long ssrc;
-};
-
-dictionary RTCRtpFecParameters {
- unsigned long ssrc;
-};
-
dictionary RTCRtcpParameters {
- DOMString cname;
- boolean reducedSize;
+ DOMString cname;
+ boolean reducedSize;
};
dictionary RTCRtpHeaderExtensionParameters {
- DOMString uri;
- unsigned short id;
- boolean encrypted;
+ DOMString uri;
+ unsigned short id;
+ boolean encrypted;
};
dictionary RTCRtpCodecParameters {
- unsigned short payloadType;
- DOMString mimeType;
- unsigned long clockRate;
- unsigned short channels;
- DOMString sdpFmtpLine;
+ octet payloadType;
+ DOMString mimeType;
+ unsigned long clockRate;
+ unsigned short channels;
+ DOMString sdpFmtpLine;
};
dictionary RTCRtpCapabilities {
- sequence<RTCRtpCodecCapability> codecs;
- sequence<RTCRtpHeaderExtensionCapability> headerExtensions;
+ sequence<RTCRtpCodecCapability> codecs;
+ sequence<RTCRtpHeaderExtensionCapability> headerExtensions;
};
dictionary RTCRtpCodecCapability {
- DOMString mimeType;
- unsigned long clockRate;
- unsigned short channels;
- DOMString sdpFmtpLine;
+ DOMString mimeType;
+ unsigned long clockRate;
+ unsigned short channels;
+ DOMString sdpFmtpLine;
};
dictionary RTCRtpHeaderExtensionCapability {
- DOMString uri;
+ DOMString uri;
};
-interface RTCRtpReceiver {
- readonly attribute MediaStreamTrack track;
- readonly attribute RTCDtlsTransport? transport;
- readonly attribute RTCDtlsTransport? rtcpTransport;
- // Feature at risk
- static RTCRtpCapabilities getCapabilities(DOMString kind);
- RTCRtpParameters getParameters();
- sequence<RTCRtpContributingSource> getContributingSources();
- sequence<RTCRtpSynchronizationSource> getSynchronizationSources();
- Promise<RTCStatsReport> getStats();
+[Exposed=Window] interface RTCRtpReceiver {
+ readonly attribute MediaStreamTrack track;
+ readonly attribute RTCDtlsTransport? transport;
+ readonly attribute RTCDtlsTransport? rtcpTransport;
+ static RTCRtpCapabilities getCapabilities (DOMString kind);
+ RTCRtpParameters getParameters ();
+ sequence<RTCRtpContributingSource> getContributingSources ();
+ sequence<RTCRtpSynchronizationSource> getSynchronizationSources ();
+ Promise<RTCStatsReport> getStats();
};
-interface RTCRtpContributingSource {
- readonly attribute DOMHighResTimeStamp timestamp;
- readonly attribute unsigned long source;
- readonly attribute byte? audioLevel;
+dictionary RTCRtpContributingSource {
+ required DOMHighResTimeStamp timestamp;
+ required unsigned long source;
+ double audioLevel;
};
-interface RTCRtpSynchronizationSource {
- readonly attribute DOMHighResTimeStamp timestamp;
- readonly attribute unsigned long source;
- readonly attribute byte audioLevel;
- readonly attribute boolean? voiceActivityFlag;
+dictionary RTCRtpSynchronizationSource : RTCRtpContributingSource {
+ boolean voiceActivityFlag;
};
-interface RTCRtpTransceiver {
- readonly attribute DOMString? mid;
+[Exposed=Window] interface RTCRtpTransceiver {
+ readonly attribute DOMString? mid;
[SameObject]
- readonly attribute RTCRtpSender sender;
+ readonly attribute RTCRtpSender sender;
[SameObject]
- readonly attribute RTCRtpReceiver receiver;
- readonly attribute boolean stopped;
- readonly attribute RTCRtpTransceiverDirection direction;
- readonly attribute RTCRtpTransceiverDirection? currentDirection;
- void setDirection(RTCRtpTransceiverDirection direction);
- void stop();
- void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs);
+ readonly attribute RTCRtpReceiver receiver;
+ readonly attribute boolean stopped;
+ attribute RTCRtpTransceiverDirection direction;
+ readonly attribute RTCRtpTransceiverDirection? currentDirection;
+ void stop ();
+ void setCodecPreferences (sequence<RTCRtpCodecCapability> codecs);
};
-interface RTCDtlsTransport {
- readonly attribute RTCIceTransport transport;
- readonly attribute RTCDtlsTransportState state;
- sequence<ArrayBuffer> getRemoteCertificates();
- attribute EventHandler onstatechange;
+[Exposed=Window] interface RTCDtlsTransport : EventTarget {
+ readonly attribute RTCIceTransport transport;
+ readonly attribute RTCDtlsTransportState state;
+ sequence<ArrayBuffer> getRemoteCertificates ();
+ attribute EventHandler onstatechange;
+ attribute EventHandler onerror;
};
enum RTCDtlsTransportState {
@@ -427,33 +403,33 @@ enum RTCDtlsTransportState {
};
dictionary RTCDtlsFingerprint {
- DOMString algorithm;
- DOMString value;
+ DOMString algorithm;
+ DOMString value;
};
-interface RTCIceTransport {
- readonly attribute RTCIceRole role;
- readonly attribute RTCIceComponent component;
- readonly attribute RTCIceTransportState state;
- readonly attribute RTCIceGathererState gatheringState;
- sequence<RTCIceCandidate> getLocalCandidates();
- sequence<RTCIceCandidate> getRemoteCandidates();
- RTCIceCandidatePair? getSelectedCandidatePair();
- RTCIceParameters? getLocalParameters();
- RTCIceParameters? getRemoteParameters();
- attribute EventHandler onstatechange;
- attribute EventHandler ongatheringstatechange;
- attribute EventHandler onselectedcandidatepairchange;
+[Exposed=Window] interface RTCIceTransport : EventTarget {
+ readonly attribute RTCIceRole role;
+ readonly attribute RTCIceComponent component;
+ readonly attribute RTCIceTransportState state;
+ readonly attribute RTCIceGathererState gatheringState;
+ sequence<RTCIceCandidate> getLocalCandidates ();
+ sequence<RTCIceCandidate> getRemoteCandidates ();
+ RTCIceCandidatePair? getSelectedCandidatePair ();
+ RTCIceParameters? getLocalParameters ();
+ RTCIceParameters? getRemoteParameters ();
+ attribute EventHandler onstatechange;
+ attribute EventHandler ongatheringstatechange;
+ attribute EventHandler onselectedcandidatepairchange;
};
dictionary RTCIceParameters {
- DOMString usernameFragment;
- DOMString password;
+ DOMString usernameFragment;
+ DOMString password;
};
dictionary RTCIceCandidatePair {
- RTCIceCandidate local;
- RTCIceCandidate remote;
+ RTCIceCandidate local;
+ RTCIceCandidate remote;
};
enum RTCIceGathererState {
@@ -467,8 +443,8 @@ enum RTCIceTransportState {
"checking",
"connected",
"completed",
- "failed",
"disconnected",
+ "failed",
"closed"
};
@@ -482,13 +458,13 @@ enum RTCIceComponent {
"rtcp"
};
-[Constructor(DOMString type, RTCTrackEventInit eventInitDict)]
+ [ Constructor (DOMString type, RTCTrackEventInit eventInitDict), Exposed=Window]
interface RTCTrackEvent : Event {
- readonly attribute RTCRtpReceiver receiver;
- readonly attribute MediaStreamTrack track;
+ readonly attribute RTCRtpReceiver receiver;
+ readonly attribute MediaStreamTrack track;
[SameObject]
- readonly attribute FrozenArray<MediaStream> streams;
- readonly attribute RTCRtpTransceiver transceiver;
+ readonly attribute FrozenArray<MediaStream> streams;
+ readonly attribute RTCRtpTransceiver transceiver;
};
dictionary RTCTrackEventInit : EventInit {
@@ -499,51 +475,59 @@ dictionary RTCTrackEventInit : EventInit {
};
partial interface RTCPeerConnection {
- readonly attribute RTCSctpTransport? sctp;
- RTCDataChannel createDataChannel(USVString label,
- optional RTCDataChannelInit dataChannelDict);
- attribute EventHandler ondatachannel;
-};
-
-interface RTCSctpTransport {
- readonly attribute RTCDtlsTransport transport;
- readonly attribute unrestricted double maxMessageSize;
-};
-
-interface RTCDataChannel : EventTarget {
- readonly attribute USVString label;
- readonly attribute boolean ordered;
- readonly attribute unsigned short? maxPacketLifeTime;
- readonly attribute unsigned short? maxRetransmits;
- readonly attribute USVString protocol;
- readonly attribute boolean negotiated;
- readonly attribute unsigned short? id;
- readonly attribute RTCPriorityType priority;
- readonly attribute RTCDataChannelState readyState;
- readonly attribute unsigned long bufferedAmount;
- attribute unsigned long bufferedAmountLowThreshold;
- attribute EventHandler onopen;
- attribute EventHandler onbufferedamountlow;
- attribute EventHandler onerror;
- attribute EventHandler onclose;
- void close();
- attribute EventHandler onmessage;
- attribute DOMString binaryType;
- void send(USVString data);
- void send(Blob data);
- void send(ArrayBuffer data);
- void send(ArrayBufferView data);
+ readonly attribute RTCSctpTransport? sctp;
+ RTCDataChannel createDataChannel (USVString label, optional RTCDataChannelInit dataChannelDict);
+ attribute EventHandler ondatachannel;
+};
+
+[Exposed=Window] interface RTCSctpTransport {
+ readonly attribute RTCDtlsTransport transport;
+ readonly attribute RTCSctpTransportState state;
+ readonly attribute unrestricted double maxMessageSize;
+ attribute EventHandler onstatechange;
+};
+
+enum RTCSctpTransportState {
+ "new",
+ "connecting",
+ "connected",
+ "closed"
+};
+
+[Exposed=Window] interface RTCDataChannel : EventTarget {
+ readonly attribute USVString label;
+ readonly attribute boolean ordered;
+ readonly attribute unsigned short? maxPacketLifeTime;
+ readonly attribute unsigned short? maxRetransmits;
+ readonly attribute USVString protocol;
+ readonly attribute boolean negotiated;
+ readonly attribute unsigned short? id;
+ readonly attribute RTCPriorityType priority;
+ readonly attribute RTCDataChannelState readyState;
+ readonly attribute unsigned long bufferedAmount;
+ attribute unsigned long bufferedAmountLowThreshold;
+ attribute EventHandler onopen;
+ attribute EventHandler onbufferedamountlow;
+ attribute EventHandler onerror;
+ attribute EventHandler onclose;
+ void close ();
+ attribute EventHandler onmessage;
+ attribute DOMString binaryType;
+ void send (USVString data);
+ void send (Blob data);
+ void send (ArrayBuffer data);
+ void send (ArrayBufferView data);
};
dictionary RTCDataChannelInit {
- boolean ordered = true;
- unsigned short maxPacketLifeTime;
- unsigned short maxRetransmits;
- USVString protocol = "";
- boolean negotiated = false;
- [EnforceRange]
- unsigned short id;
- RTCPriorityType priority = "low";
+ boolean ordered = true;
+ unsigned short maxPacketLifeTime;
+ unsigned short maxRetransmits;
+ USVString protocol = "";
+ boolean negotiated = false;
+ [EnforceRange]
+ unsigned short id;
+ RTCPriorityType priority = "low";
};
enum RTCDataChannelState {
@@ -553,59 +537,64 @@ enum RTCDataChannelState {
"closed"
};
-[Constructor(DOMString type, RTCDataChannelEventInit eventInitDict)]
+ [ Constructor (DOMString type, RTCDataChannelEventInit eventInitDict), Exposed=Window]
interface RTCDataChannelEvent : Event {
- readonly attribute RTCDataChannel channel;
+ readonly attribute RTCDataChannel channel;
};
dictionary RTCDataChannelEventInit : EventInit {
- required RTCDataChannel channel;
+ required RTCDataChannel channel;
};
partial interface RTCRtpSender {
- readonly attribute RTCDTMFSender? dtmf;
+ readonly attribute RTCDTMFSender? dtmf;
};
-interface RTCDTMFSender : EventTarget {
- void insertDTMF(DOMString tones,
- optional unsigned long duration = 100,
- optional unsigned long interToneGap = 70);
- attribute EventHandler ontonechange;
- readonly attribute DOMString toneBuffer;
+[Exposed=Window] interface RTCDTMFSender : EventTarget {
+ void insertDTMF (DOMString tones, optional unsigned long duration = 100, optional unsigned long interToneGap = 70);
+ attribute EventHandler ontonechange;
+ readonly attribute boolean canInsertDTMF;
+ readonly attribute DOMString toneBuffer;
};
-[Constructor(DOMString type, RTCDTMFToneChangeEventInit eventInitDict)]
+ [ Constructor (DOMString type, RTCDTMFToneChangeEventInit eventInitDict), Exposed=Window]
interface RTCDTMFToneChangeEvent : Event {
- readonly attribute DOMString tone;
+ readonly attribute DOMString tone;
};
dictionary RTCDTMFToneChangeEventInit : EventInit {
- required DOMString tone;
+ required DOMString tone;
};
partial interface RTCPeerConnection {
- Promise<RTCStatsReport> getStats(optional MediaStreamTrack? selector = null);
-};
+ Promise<RTCStatsReport> getStats (optional MediaStreamTrack? selector = null);
+ attribute EventHandler onstatsended;
+ };
-interface RTCStatsReport {
+[Exposed=Window] interface RTCStatsReport {
readonly maplike<DOMString, object>;
};
dictionary RTCStats {
- DOMHighResTimeStamp timestamp;
- RTCStatsType type;
- DOMString id;
+ required DOMHighResTimeStamp timestamp;
+ required RTCStatsType type;
+ required DOMString id;
};
-[Global,
- Exposed=RTCIdentityProviderGlobalScope]
+[ Constructor (DOMString type, RTCStatsEventInit
+ eventInitDict), Exposed=Window]
+ interface RTCStatsEvent : Event {
+ readonly attribute RTCStatsReport report;
+ };
+
+[Global, Exposed=RTCIdentityProviderGlobalScope]
interface RTCIdentityProviderGlobalScope : WorkerGlobalScope {
- readonly attribute RTCIdentityProviderRegistrar rtcIdentityProvider;
+ readonly attribute RTCIdentityProviderRegistrar rtcIdentityProvider;
};
[Exposed=RTCIdentityProviderGlobalScope]
interface RTCIdentityProviderRegistrar {
- void register(RTCIdentityProvider idp);
+ void register (RTCIdentityProvider idp);
};
dictionary RTCIdentityProvider {
@@ -613,12 +602,11 @@ dictionary RTCIdentityProvider {
required ValidateAssertionCallback validateAssertion;
};
-callback GenerateAssertionCallback = Promise<RTCIdentityAssertionResult> (DOMString contents,
- DOMString origin,
- RTCIdentityProviderOptions options);
+ callback GenerateAssertionCallback = Promise<RTCIdentityAssertionResult>
+ (DOMString contents, DOMString origin, RTCIdentityProviderOptions options);
-callback ValidateAssertionCallback = Promise<RTCIdentityValidationResult> (DOMString assertion,
- DOMString origin);
+ callback ValidateAssertionCallback = Promise<RTCIdentityValidationResult>
+ (DOMString assertion, DOMString origin);
dictionary RTCIdentityAssertionResult {
required RTCIdentityProviderDetails idp;
@@ -636,12 +624,11 @@ dictionary RTCIdentityValidationResult {
};
partial interface RTCPeerConnection {
- void setIdentityProvider(DOMString provider,
- optional RTCIdentityProviderOptions options);
- Promise<DOMString> getIdentityAssertion();
- readonly attribute Promise<RTCIdentityAssertion> peerIdentity;
- readonly attribute DOMString? idpLoginUrl;
- readonly attribute DOMString? idpErrorInfo;
+ void setIdentityProvider (DOMString provider, optional RTCIdentityProviderOptions options);
+ Promise<DOMString> getIdentityAssertion ();
+ readonly attribute Promise<RTCIdentityAssertion> peerIdentity;
+ readonly attribute DOMString? idpLoginUrl;
+ readonly attribute DOMString? idpErrorInfo;
};
dictionary RTCIdentityProviderOptions {
@@ -650,41 +637,45 @@ dictionary RTCIdentityProviderOptions {
DOMString peerIdentity;
};
-[Constructor(DOMString idp, DOMString name)]
+[Constructor(DOMString idp, DOMString name), Exposed=Window]
interface RTCIdentityAssertion {
attribute DOMString idp;
attribute DOMString name;
};
partial dictionary MediaStreamConstraints {
- DOMString peerIdentity;
+ DOMString peerIdentity;
};
partial interface MediaStreamTrack {
- readonly attribute boolean isolated;
- attribute EventHandler onisolationchange;
+ readonly attribute boolean isolated;
+ attribute EventHandler onisolationchange;
};
enum RTCErrorDetailType {
- "data-channel-failure",
- "idp-bad-script-failure",
- "idp-execution-failure",
- "idp-load-failure",
- "idp-need-login",
- "idp-timeout",
- "idp-tls-failure",
- "idp-token-expired",
- "idp-token-invalid",
- "sctp-failure",
- "sdp-syntax-error"
-};
+ "data-channel-failure",
+ "dtls-failure",
+ "fingerprint-failure",
+ "idp-bad-script-failure",
+ "idp-execution-failure",
+ "idp-load-failure",
+ "idp-need-login",
+ "idp-timeout",
+ "idp-tls-failure",
+ "idp-token-expired",
+ "idp-token-invalid",
+ "sctp-failure",
+ "sdp-syntax-error",
+ "hardware-encoder-not-available",
+ "hardware-encoder-error"
+ };
[Exposed=Window,
- Constructor(DOMString type, RTCErrorEventInit eventInitDict)]
+ Constructor (DOMString type, RTCErrorEventInit eventInitDict)]
interface RTCErrorEvent : Event {
- readonly attribute RTCError? error;
+ readonly attribute RTCError? error;
};
dictionary RTCErrorEventInit : EventInit {
- RTCError? error = null;
+ RTCError? error = null;
};
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html
index ab3e2a1280b..65fa5171b3d 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html
@@ -19,24 +19,6 @@ function get_boundary(headers) {
return '';
}
-function create_file_system_file(file_name, data) {
- return new Promise(function(resolve, reject) {
- webkitRequestFileSystem(TEMPORARY, 1024, function(fs) {
- fs.root.getFile(
- file_name, {create: true, exclusive: true},
- function(fileEntry) {
- fileEntry.createWriter(function(fileWriter) {
- fileWriter.onwriteend = function(e) {
- fileEntry.file(function(file) { resolve(file); });
- };
- var blob = new Blob([data], {type: 'text/plain'});
- fileWriter.write(blob);
- });
- }, function(e) { reject(e); });
- }, function(e) { reject(e); });
- });
-}
-
function xhr_send(url_base, method, data, with_credentials) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index 2b872e6f8f9..dab11d9a5d0 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -117,13 +117,13 @@ def check_environ(product):
if platform.uname()[0] != "Windows":
message = """Missing hosts file configuration. Run
-python wpt make-hosts-file >> %s
-
-from a shell with Administrator privileges.""" % hosts_path
+./wpt make-hosts-file | sudo tee -a %s""" % hosts_path
else:
message = """Missing hosts file configuration. Run
-./wpt make-hosts-file | sudo tee -a %s""" % hosts_path
+python wpt make-hosts-file >> %s
+
+from a shell with Administrator privileges.""" % hosts_path
raise WptrunError(message)
diff --git a/tests/wpt/web-platform-tests/uievents/mouse/mouse_buttons_back_forward-manual.html b/tests/wpt/web-platform-tests/uievents/mouse/mouse_buttons_back_forward-manual.html
new file mode 100644
index 00000000000..7a676db4c44
--- /dev/null
+++ b/tests/wpt/web-platform-tests/uievents/mouse/mouse_buttons_back_forward-manual.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8" />
+ <title>Mouse Button Back/Forward</title>
+ <link rel="author" title="Google" href="http://www.google.com/" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script>
+ var testMouseUp = async_test('Tests that the mouseup is preventable.');
+ var received_back = false;
+ var received_forward = false;
+ window.addEventListener('mouseup', function(e) {
+ if (e.button == 3) {
+ received_back = true;
+ e.preventDefault();
+ } else if (e.button == 4) {
+ received_forward = true;
+ e.preventDefault();
+ }
+ if (received_back && received_forward) {
+ testMouseUp.done();
+ }
+ });
+ </script>
+
+ </head>
+ <body id="target">
+ <h4>Test Description: Tests that the mouseup event is prevented.
+ <ol>
+ <li>Click the back mouse button</li>
+ <li>Click the back mouse forward</li>
+ </ol>
+ </h4>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/wasm/many-memories.window.js b/tests/wpt/web-platform-tests/wasm/many-memories.window.js
deleted file mode 100644
index 042e645fa70..00000000000
--- a/tests/wpt/web-platform-tests/wasm/many-memories.window.js
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This test makes sure browsers behave reasonably when asked to allocate a
-// larger number of WebAssembly.Memory objects at once.
-test(function() {
- let memories = [];
- try {
- for (let i = 0; i < 20; i++) {
- memories.push(new WebAssembly.Memory({initial: 1}));
- }
- } catch (e) {
- if (e instanceof RangeError) {
- return;
- }
- throw e;
- }
-}, "WebAssembly#CreateManyMemories");
diff --git a/tests/wpt/web-platform-tests/webaudio/idlharness.https.html b/tests/wpt/web-platform-tests/webaudio/idlharness.https.html
index 9e15e4798de..aed91706eb9 100644
--- a/tests/wpt/web-platform-tests/webaudio/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/idlharness.https.html
@@ -20,7 +20,7 @@ promise_test(async t => {
// Needed for MediaStream, MediaStreamTrack
'/interfaces/mediacapture-main.idl',
- '/interfaces/webaudio.idl'
+ '/interfaces/web-audio-api.idl'
].map(url => fetch(url).then(response => response.text())));
const idl_array = new IdlArray();
diff --git a/tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js b/tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js
new file mode 100644
index 00000000000..bd5f9dc4a28
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js
@@ -0,0 +1,30 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+if (self.importScripts) {
+ importScripts('/resources/testharness.js');
+ importScripts('/resources/WebIDLParser.js', '/resources/idlharness.js');
+}
+
+// https://w3c.github.io/webauthn/
+
+promise_test(async () => {
+ const webauthnIdl = await fetch('/interfaces/webauthn.idl').then(r => r.text());
+
+ const idlArray = new IdlArray();
+ idlArray.add_idls(webauthnIdl);
+
+ // static IDL tests
+ idlArray.add_untested_idls('interface CredentialCreationOptions {};');
+ idlArray.add_untested_idls('interface CredentialRequestOptions {};');
+ idlArray.add_untested_idls("interface Navigator { };");
+ // TODO: change to "tested" for real browsers?
+ idlArray.add_untested_idls("partial interface Navigator { readonly attribute WebAuthentication authentication; };");
+ idlArray.add_objects({
+ WebAuthentication: ["navigator.authentication"]
+ });
+ idlArray.test();
+ done();
+}, 'WebAuthn interfaces.');
diff --git a/tests/wpt/web-platform-tests/webauthn/interfaces.https.html b/tests/wpt/web-platform-tests/webauthn/interfaces.https.html
deleted file mode 100644
index c232659c80e..00000000000
--- a/tests/wpt/web-platform-tests/webauthn/interfaces.https.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>WebAuthn WebIDL Tests</title>
-<link rel="author" title="Adam Powers" href="mailto:adam@fidoalliance.org">
-<link rel="help" href="https://w3c.github.io/webauthn/#iface-credential">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src=helpers.js></script>
-<!-- for testing WebIDL -->
-<script src=/resources/WebIDLParser.js></script>
-<script src=/resources/idlharness.js></script>
-<body></body>
-<script>
-standardSetup(function() {
- "use strict";
-
- // loads an IDL file from the webserver
- function fetchIdl(idlUrl) {
- return new Promise(function(resolve, reject) {
- if (typeof idlUrl !== "string") {
- return reject("fetchIdl: expected argument to be URL string");
- }
- var request = new XMLHttpRequest();
- request.open("GET", idlUrl);
- request.send();
- request.onload = function() {
- var idls = request.responseText;
- return resolve(idls);
- };
- });
- }
-
- // this does the real work of running the IDL tests
- function runIdlTests(idls) {
- return new Promise(function(resolve, reject) {
- var idlArray = new window.IdlArray();
-
- // static IDL tests
- idlArray.add_untested_idls("interface Navigator { };");
- // TODO: change to "tested" for real browsers?
- idlArray.add_untested_idls("partial interface Navigator { readonly attribute WebAuthentication authentication; };");
- idlArray.add_objects({
- WebAuthentication: ["navigator.authentication"]
- });
-
- // run test WebIDL tests loaded from the idls file
- idlArray.add_idls(idls);
- return resolve(idlArray.test());
- });
- }
-
- // test harness function
- window.promise_test(function() {
- return fetchIdl("/interfaces/webauthn.idl") // load the IDL file ...
- .then(function(idls) {
- return runIdlTests(idls); // ... then run the tests.
- });
- }, "Validate WebAuthn IDL");
-});
-</script>
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
index 04d4dedc2c8..c6c8ce3e9a8 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
@@ -424,6 +424,52 @@
'senderReport should contain remote-candidate stats');
}, 'RTCRtpSender.getStats() contains only outbound-rtp and related stats');
+ promise_test(async function() {
+ const caller = new RTCPeerConnection();
+ const callee = new RTCPeerConnection();
+ let [tracks, streams] = await getUserMediaTracksAndStreams(2);
+ let sender = caller.addTrack(tracks[0], streams[0]);
+ callee.addTrack(tracks[1], streams[1]);
+ exchangeIceCandidates(caller, callee);
+ await doSignalingHandshake(caller, callee);
+ await onIceConnectionStateCompleted(caller);
+ let receiver = caller.getReceivers()[0];
+
+ // Obtain inbound and outbound RTP stream stats on a full stats report.
+ let fullReport = await caller.getStats();
+ let outboundTrackStats = findStatsByTypeAndId(
+ fullReport, 'track', sender.track.id);
+ let outboundStats = findStatsByTypeAndMember(
+ fullReport, 'outbound-rtp', 'trackId', outboundTrackStats.id);
+ assert_true(outboundStats != null, 'Has stats for outbound RTP stream');
+ let inboundTrackStats = findStatsByTypeAndId(
+ fullReport, 'track', receiver.track.id);
+ let inboundStats = findStatsByTypeAndMember(
+ fullReport, 'inbound-rtp', 'trackId', inboundTrackStats.id);
+ assert_true(inboundStats != null, 'Has stats for inbound RTP stream');
+
+ // Perform stats selection algorithm with receiver selector. The result
+ // should contain the inbound-rtp but not the outbound-rtp.
+ let receiverReport = await receiver.getStats();
+ assert_true(receiverReport.has(inboundStats.id));
+ assert_false(receiverReport.has(outboundStats.id));
+
+ // Validate the stats graph, ensuring all stats objects are reachable and
+ // valid from the outbound-rtp stats.
+ validateStatsGraph(receiverReport, receiverReport.get(inboundStats.id));
+ // Ensure that the stats graph contains some expected dictionaries.
+ assert_equals(findStatsOfType(receiverReport, 'track').length, 1,
+ 'receiverReport should contain track stats');
+ assert_equals(findStatsOfType(receiverReport, 'transport').length, 1,
+ 'receiverReport should contain transport stats');
+ assert_equals(findStatsOfType(receiverReport, 'candidate-pair').length, 1,
+ 'receiverReport should contain candidate-pair stats');
+ assert_equals(findStatsOfType(receiverReport, 'local-candidate').length, 1,
+ 'receiverReport should contain local-candidate stats');
+ assert_equals(findStatsOfType(receiverReport, 'remote-candidate').length, 1,
+ 'receiverReport should contain remote-candidate stats');
+ }, 'RTCRtpReceiver.getStats() contains only inbound-rtp and related stats');
+
// Helpers.
function findStatsByTypeAndId(report, type, identifier) {
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html
index c30c9613c69..f36c85967bb 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpReceiver-getStats.https.html
@@ -3,6 +3,7 @@
<title>RTCRtpReceiver.prototype.getStats</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="RTCPeerConnection-helper.js"></script>
<script src="dictionary-helper.js"></script>
<script src="RTCStats-helper.js"></script>
<script>
@@ -12,6 +13,9 @@
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
// https://w3c.github.io/webrtc-stats/archives/20170614/webrtc-stats.html
+ // The following helper functions are called from RTCPeerConnection-helper.js:
+ // doSignalingHandshake
+
// The following helper function is called from RTCStats-helper.js
// validateStatsReport
// assert_stats_report_has_stats
@@ -40,15 +44,29 @@
added.
*/
- promise_test(() => {
- const pc = new RTCPeerConnection();
- const { receiver } = pc.addTransceiver('audio');
+ promise_test(async () => {
+ const caller = new RTCPeerConnection();
+ const callee = new RTCPeerConnection();
+ const { receiver } = caller.addTransceiver('audio');
+
+ await doSignalingHandshake(caller, callee);
+ const statsReport = await receiver.getStats();
+ validateStatsReport(statsReport);
+ assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
+ }, 'receiver.getStats() via addTransceiver should return stats report containing inbound-rtp stats');
+
+ promise_test(async () => {
+ const caller = new RTCPeerConnection();
+ const callee = new RTCPeerConnection();
+ const stream = await navigator.mediaDevices.getUserMedia({audio:true});
+ const [track] = stream.getTracks();
+ caller.addTrack(track, stream);
- return receiver.getStats()
- .then(statsReport => {
- validateStatsReport(statsReport);
- assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
- });
- }, 'receiver.getStats() should return stats report containing inbound-rtp stats');
+ await doSignalingHandshake(caller, callee);
+ const receiver = callee.getReceivers()[0];
+ const statsReport = await receiver.getStats();
+ validateStatsReport(statsReport);
+ assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
+ }, 'receiver.getStats() via addTrack should return stats report containing inbound-rtp stats');
</script>
diff --git a/tests/wpt/web-platform-tests/webrtc/interfaces.https.html b/tests/wpt/web-platform-tests/webrtc/interfaces.https.html
index e6e6846a7ca..2cb1ecfa3e4 100644
--- a/tests/wpt/web-platform-tests/webrtc/interfaces.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/interfaces.https.html
@@ -107,13 +107,20 @@
}));
}
- // Main function to do the IDL test, using fetched IDL text
- function doIdlTest(idlText) {
+ promise_test(async t => {
+ await asyncInit();
+
const idlArray = new IdlArray();
+ let webrtcIdl = fetch('/interfaces/webrtc-pc.idl').then(r => r.text());
+ let mediacaptureMainIdl = fetch('/interfaces/mediacapture-main.idl').then(r => r.text());
+
+ idlArray.add_untested_idls(mediacaptureMainIdl, { only: ['MediaStreamConstraints'] });
+ idlArray.add_idls(webrtcIdl);
+
idlArray.add_untested_idls('interface EventHandler {};');
+ idlArray.add_idls('interface EventTarget {};');
idlArray.add_idls('interface MediaStreamTrack : EventTarget {};');
- idlArray.add_idls(idlText);
idlArray.add_objects({
'RTCPeerConnection': [`new RTCPeerConnection()`],
@@ -159,13 +166,6 @@
});
idlArray.test();
- }
-
- promise_test(t => {
- return asyncInit()
- .then(() => fetch('/interfaces/webrtc-pc.idl'))
- .then(response => response.text())
- .then(doIdlTest);
}, 'Main test driver');
/*