mirror of
https://github.com/servo/servo.git
synced 2025-07-25 08:10:21 +01:00
Update web-platform-tests to revision fc33be9acfbf8e883fd9683c527aab22d842542b
This commit is contained in:
parent
d232705106
commit
09b1413275
32 changed files with 1112 additions and 577 deletions
|
@ -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": [
|
||||||
[
|
[
|
||||||
"/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": [
|
||||||
[
|
[
|
||||||
"/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": [
|
"css/css-overflow/reference/input-scrollable-region-001-ref.html": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -285798,6 +285833,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"interfaces/web-audio-api.idl": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"interfaces/web-nfc.idl": [
|
"interfaces/web-nfc.idl": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -285808,11 +285848,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"interfaces/webaudio.idl": [
|
|
||||||
[
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"interfaces/webauthn.idl": [
|
"interfaces/webauthn.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": [
|
||||||
[
|
[
|
||||||
"/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": [
|
||||||
[
|
[
|
||||||
"/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": [
|
||||||
[
|
[
|
||||||
"/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": [
|
||||||
[
|
[
|
||||||
"/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": [
|
||||||
[
|
[
|
||||||
"/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",
|
"e2c2dc0ed64e3c8e70959c64108cbb798ea49827",
|
||||||
"testharness"
|
"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": [
|
"css/css-align/gaps/gap-parsing-001.html": [
|
||||||
"7eb55e0a8b04384aebfbb5a47922c5b33f93270c",
|
"7eb55e0a8b04384aebfbb5a47922c5b33f93270c",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -505384,10 +505453,18 @@
|
||||||
"0cba1aed016d08e4706bffb8a4f4169c9cfd2108",
|
"0cba1aed016d08e4706bffb8a4f4169c9cfd2108",
|
||||||
"visual"
|
"visual"
|
||||||
],
|
],
|
||||||
|
"css/css-overflow/OWNERS": [
|
||||||
|
"9f69536c6dc078b1d7ddba66d2c98d1432a9fcbb",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"css/css-overflow/input-scrollable-region-001.html": [
|
"css/css-overflow/input-scrollable-region-001.html": [
|
||||||
"f51bc673da28b0471018cdf945b4449ab00ce717",
|
"f51bc673da28b0471018cdf945b4449ab00ce717",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-overflow/logical-overflow-001.html": [
|
||||||
|
"2fe3c96c09faaa25baa2d7e88215a2ccd47e9381",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-overflow/reference/input-scrollable-region-001-ref.html": [
|
"css/css-overflow/reference/input-scrollable-region-001-ref.html": [
|
||||||
"31e24bb1a2cb6f42703cc05e055fcb345c770a22",
|
"31e24bb1a2cb6f42703cc05e055fcb345c770a22",
|
||||||
"support"
|
"support"
|
||||||
|
@ -516757,7 +516834,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/css-text/word-break/reference/word-break-break-all-ref-005.html": [
|
"css/css-text/word-break/reference/word-break-break-all-ref-005.html": [
|
||||||
"c376685676b6a5a6c7bb4560d770944510d5d579",
|
"05d1f5271ed2dc1303b3cf2672bf73f209f7059f",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/css-text/word-break/reference/word-break-break-all-ref-006.html": [
|
"css/css-text/word-break/reference/word-break-break-all-ref-006.html": [
|
||||||
|
@ -516893,7 +516970,7 @@
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"css/css-text/word-break/word-break-break-all-005.html": [
|
"css/css-text/word-break/word-break-break-all-005.html": [
|
||||||
"c6c188f4487e485f2ea040cd3e1fe4e0d88be5a6",
|
"e7c101668b0a2acce03a819de0fdbe6988f9e2a7",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"css/css-text/word-break/word-break-break-all-006.html": [
|
"css/css-text/word-break/word-break-break-all-006.html": [
|
||||||
|
@ -522700,6 +522777,10 @@
|
||||||
"2068fe442683e6242633527409c89940d4e04bda",
|
"2068fe442683e6242633527409c89940d4e04bda",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/css-transitions/transition-background-position-with-edge-offset.html": [
|
||||||
|
"00d397eb8f6eba4e3f34c03d7af23e056953e2ef",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-transitions/transition-delay-000.html": [
|
"css/css-transitions/transition-delay-000.html": [
|
||||||
"ad61ec6800863b60d7d392fc0666332673319209",
|
"ad61ec6800863b60d7d392fc0666332673319209",
|
||||||
"manual"
|
"manual"
|
||||||
|
@ -523624,6 +523705,10 @@
|
||||||
"268e2a2844439f1175199034d89d60a56e0e11fd",
|
"268e2a2844439f1175199034d89d60a56e0e11fd",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/css-typed-om/the-stylepropertymap/properties/marker.html": [
|
||||||
|
"cbf331428f094497d098ca75f6a5437a57812640",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-typed-om/the-stylepropertymap/properties/mask-image.html": [
|
"css/css-typed-om/the-stylepropertymap/properties/mask-image.html": [
|
||||||
"8400ca1a6caf399c5914df06028d6616fb9f9571",
|
"8400ca1a6caf399c5914df06028d6616fb9f9571",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -523705,7 +523790,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [
|
"css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [
|
||||||
"ca6f58ecbab01ee294f4388b456b3b1bdd7a4629",
|
"7dad4e140a70b28cde65ff1c23c5f843223eee6f",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/css-typed-om/the-stylepropertymap/properties/right.html": [
|
"css/css-typed-om/the-stylepropertymap/properties/right.html": [
|
||||||
|
@ -534869,7 +534954,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/geometry/support/interfaces.js": [
|
"css/geometry/support/interfaces.js": [
|
||||||
"13d88ccf8c2f03db7e1db7f6fc704ba46a06e0e1",
|
"588093d88e2aa43a81a11baf0cd154a8fa202788",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"css/mediaqueries/OWNERS": [
|
"css/mediaqueries/OWNERS": [
|
||||||
|
@ -573161,7 +573246,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/geometry.idl": [
|
"interfaces/geometry.idl": [
|
||||||
"dea55d151bd19d342f9b28bb2f11e5108ab970ff",
|
"9aae8525ee6b27797783495e8d918892ee857a78",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/gyroscope.idl": [
|
"interfaces/gyroscope.idl": [
|
||||||
|
@ -573244,6 +573329,10 @@
|
||||||
"8d00ee62fafedfd3e24925f48eed6ba26b5aafc7",
|
"8d00ee62fafedfd3e24925f48eed6ba26b5aafc7",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"interfaces/web-audio-api.idl": [
|
||||||
|
"95feed20bd7d63ce1f3daea677e96340576eada9",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"interfaces/web-nfc.idl": [
|
"interfaces/web-nfc.idl": [
|
||||||
"105e771bdd9587f029091a5ed590187ed6e86e2a",
|
"105e771bdd9587f029091a5ed590187ed6e86e2a",
|
||||||
"support"
|
"support"
|
||||||
|
@ -573252,12 +573341,8 @@
|
||||||
"21b54128664c5962c29fd708ebba3d8d90987f26",
|
"21b54128664c5962c29fd708ebba3d8d90987f26",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webaudio.idl": [
|
|
||||||
"43a244276b9795b137c2e46c194d56dbb957635d",
|
|
||||||
"support"
|
|
||||||
],
|
|
||||||
"interfaces/webauthn.idl": [
|
"interfaces/webauthn.idl": [
|
||||||
"77076f0828383c0f48f36131a81b25186622b3a3",
|
"1ae8b428644479b352fd5b1996677fd4dcdbb84b",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webidl.idl": [
|
"interfaces/webidl.idl": [
|
||||||
|
@ -573265,7 +573350,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webrtc-pc.idl": [
|
"interfaces/webrtc-pc.idl": [
|
||||||
"f3bcd13429b9ab477f7b2422fa4e3ede0bfac88a",
|
"a631e2e0ea0f451c64b5d5f74fe7cbeafc231b8e",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webusb.idl": [
|
"interfaces/webusb.idl": [
|
||||||
|
@ -594457,7 +594542,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html": [
|
"service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html": [
|
||||||
"2879ba75fc0135aa9220f5eb5d7e00b8bcf1cbcc",
|
"4d7489b889c98bd66b40369e2d4ed56355ada6ae",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"service-workers/service-worker/resources/fetch-request-xhr-sync-iframe.html": [
|
"service-workers/service-worker/resources/fetch-request-xhr-sync-iframe.html": [
|
||||||
|
@ -600316,6 +600401,10 @@
|
||||||
"4e96209d99278b974347c6bd636454b0e7daf3c4",
|
"4e96209d99278b974347c6bd636454b0e7daf3c4",
|
||||||
"manual"
|
"manual"
|
||||||
],
|
],
|
||||||
|
"uievents/mouse/mouse_buttons_back_forward-manual.html": [
|
||||||
|
"1688ee49394e0d96b0af131faeccc175b1723a8e",
|
||||||
|
"manual"
|
||||||
|
],
|
||||||
"uievents/mouse/mouseevent_move_button-manual.html": [
|
"uievents/mouse/mouseevent_move_button-manual.html": [
|
||||||
"9cc673035fef3c2e8677e8d6679babfe8a1af854",
|
"9cc673035fef3c2e8677e8d6679babfe8a1af854",
|
||||||
"manual"
|
"manual"
|
||||||
|
@ -601884,10 +601973,6 @@
|
||||||
"acdf9d22c042ea3b2637c14b1576b4c8ffb4e97a",
|
"acdf9d22c042ea3b2637c14b1576b4c8ffb4e97a",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"wasm/many-memories.window.js": [
|
|
||||||
"84e98a89e653c39dab16e096286457268dccd195",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"wasm/resources/blank.html": [
|
"wasm/resources/blank.html": [
|
||||||
"0ddb4f1cf84729ed673295719ec58a3e5d600a12",
|
"0ddb4f1cf84729ed673295719ec58a3e5d600a12",
|
||||||
"support"
|
"support"
|
||||||
|
@ -602409,7 +602494,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webaudio/idlharness.https.html": [
|
"webaudio/idlharness.https.html": [
|
||||||
"f42681173fdf4cb8dad2049351f55f3a7ff0fcac",
|
"2951a126a8b168e6fe4699890d5a3c4772c7f960",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webaudio/js/buffer-loader.js": [
|
"webaudio/js/buffer-loader.js": [
|
||||||
|
@ -603020,8 +603105,8 @@
|
||||||
"9ce729fb89ba1863fb14dfc4d567e6b544a5238d",
|
"9ce729fb89ba1863fb14dfc4d567e6b544a5238d",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"webauthn/interfaces.https.html": [
|
"webauthn/interfaces.https.any.js": [
|
||||||
"80609bdf53a5919205b235549cd57a859e56ee3b",
|
"bc3e3c5a85f068efa88c4ed256cc2d270c8eca0f",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webauthn/securecontext.http.html": [
|
"webauthn/securecontext.http.html": [
|
||||||
|
@ -604065,7 +604150,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCPeerConnection-track-stats.https.html": [
|
"webrtc/RTCPeerConnection-track-stats.https.html": [
|
||||||
"f69d223cb8cd11e4b68b7687e2361ed3ea947f5e",
|
"55ab0ca3d364b020320fa45a14e50d2897dda13a",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCPeerConnectionIceEvent-constructor.html": [
|
"webrtc/RTCPeerConnectionIceEvent-constructor.html": [
|
||||||
|
@ -604116,8 +604201,8 @@
|
||||||
"ed910cbe15534cae43b79cc008395bd62fbd0637",
|
"ed910cbe15534cae43b79cc008395bd62fbd0637",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCRtpReceiver-getStats.html": [
|
"webrtc/RTCRtpReceiver-getStats.https.html": [
|
||||||
"f00accac88efd9108078b0a3d72751a44f108864",
|
"a74bf84faa66028f23c5c0de8ea7b1e89aeed98b",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCRtpReceiver-getSynchronizationSources.https.html": [
|
"webrtc/RTCRtpReceiver-getSynchronizationSources.https.html": [
|
||||||
|
@ -604197,7 +604282,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"webrtc/interfaces.https.html": [
|
"webrtc/interfaces.https.html": [
|
||||||
"efd0c4a62b9c90f27da1188c30e4503755e7f8d2",
|
"ef5a449587001f2bdfe82dad68920972f2aeafb1",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/no-media-call.html": [
|
"webrtc/no-media-call.html": [
|
||||||
|
|
|
@ -297,3 +297,78 @@
|
||||||
[DOMMatrix interface: calling setMatrixValue(DOMString) on DOMMatrix.fromMatrix({is2D: false}) with too few arguments must throw TypeError]
|
[DOMMatrix interface: calling setMatrixValue(DOMString) on DOMMatrix.fromMatrix({is2D: false}) with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
||||||
|
|
|
@ -44,3 +44,51 @@
|
||||||
[DOMRectReadOnly interface: calling fromRect(DOMRectInit) on new DOMRect() with too few arguments must throw TypeError]
|
[DOMRectReadOnly interface: calling fromRect(DOMRectInit) on new DOMRect() with too few arguments must throw TypeError]
|
||||||
expected: FAIL
|
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
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,3 @@
|
||||||
[Consume request's body as formData without correct type (error case)]
|
[Consume request's body as formData without correct type (error case)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Consume empty ArrayBuffer request body as text]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -9,63 +9,3 @@
|
||||||
[Consume FormData request's body as FormData]
|
[Consume FormData request's body as FormData]
|
||||||
expected: FAIL
|
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
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[hide_after_load.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[shader-with-non-reserved-words.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[Overall test]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
2
tests/wpt/web-platform-tests/css/css-overflow/OWNERS
Normal file
2
tests/wpt/web-platform-tests/css/css-overflow/OWNERS
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
@frivoal
|
||||||
|
@dbaron
|
|
@ -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>
|
|
@ -7,7 +7,7 @@
|
||||||
<style type='text/css'>
|
<style type='text/css'>
|
||||||
.test { word-break: break-all; }
|
.test { word-break: break-all; }
|
||||||
/* the CSS below is not part of the test */
|
/* 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>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<style type='text/css'>
|
<style type='text/css'>
|
||||||
.test { word-break: break-all; }
|
.test { word-break: break-all; }
|
||||||
/* the CSS below is not part of the test */
|
/* 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>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>': {
|
'<transform>': {
|
||||||
description: 'a transform',
|
description: 'a transform',
|
||||||
examples: [
|
examples: [
|
||||||
|
|
|
@ -19,6 +19,8 @@ function doTest(idl) {
|
||||||
DOMMatrixReadOnly: ["new DOMMatrixReadOnly()", "DOMMatrixReadOnly.fromMatrix({is2D: false})"],
|
DOMMatrixReadOnly: ["new DOMMatrixReadOnly()", "DOMMatrixReadOnly.fromMatrix({is2D: false})"],
|
||||||
DOMMatrix: ["new DOMMatrix()", "DOMMatrix.fromMatrix({is2D: false})"],
|
DOMMatrix: ["new DOMMatrix()", "DOMMatrix.fromMatrix({is2D: false})"],
|
||||||
});
|
});
|
||||||
|
idlArray.prevent_multiple_testing("DOMMatrixReadOnly");
|
||||||
|
idlArray.prevent_multiple_testing("DOMMatrix");
|
||||||
idlArray.test();
|
idlArray.test();
|
||||||
done();
|
done();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
|
||||||
optional unrestricted double z = 0, optional unrestricted double w = 1),
|
optional unrestricted double z = 0, optional unrestricted double w = 1),
|
||||||
Exposed=(Window,Worker),
|
Exposed=(Window,Worker),
|
||||||
|
@ -12,7 +16,7 @@ interface DOMPointReadOnly {
|
||||||
|
|
||||||
DOMPoint matrixTransform(optional DOMMatrixInit matrix);
|
DOMPoint matrixTransform(optional DOMMatrixInit matrix);
|
||||||
|
|
||||||
[Default] toJSON();
|
[Default] object toJSON();
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
|
[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 bottom;
|
||||||
readonly attribute unrestricted double left;
|
readonly attribute unrestricted double left;
|
||||||
|
|
||||||
[Default] toJSON();
|
[Default] object toJSON();
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
|
[Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
|
||||||
|
@ -76,8 +80,7 @@ dictionary DOMRectInit {
|
||||||
unrestricted double height = 0;
|
unrestricted double height = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
[NoInterfaceObject,
|
[LegacyArrayClass]
|
||||||
LegacyArrayClass]
|
|
||||||
interface DOMRectList {
|
interface DOMRectList {
|
||||||
readonly attribute unsigned long length;
|
readonly attribute unsigned long length;
|
||||||
getter DOMRect? item(unsigned long index);
|
getter DOMRect? item(unsigned long index);
|
||||||
|
@ -97,7 +100,7 @@ interface DOMQuad {
|
||||||
[SameObject] readonly attribute DOMPoint p4;
|
[SameObject] readonly attribute DOMPoint p4;
|
||||||
[NewObject] DOMRect getBounds();
|
[NewObject] DOMRect getBounds();
|
||||||
|
|
||||||
[Default] toJSON();
|
[Default] object toJSON();
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary DOMQuadInit {
|
dictionary DOMQuadInit {
|
||||||
|
@ -178,7 +181,7 @@ interface DOMMatrixReadOnly {
|
||||||
[NewObject] Float64Array toFloat64Array();
|
[NewObject] Float64Array toFloat64Array();
|
||||||
|
|
||||||
[Exposed=Window] stringifier;
|
[Exposed=Window] stringifier;
|
||||||
[Default] toJSON();
|
[Default] object toJSON();
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(optional (DOMString or sequence<unrestricted double>) init),
|
[Constructor(optional (DOMString or sequence<unrestricted double>) init),
|
||||||
|
|
|
@ -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 {
|
enum AudioContextState {
|
||||||
"suspended",
|
"suspended",
|
||||||
"running",
|
"running",
|
|
@ -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]
|
[SecureContext, Exposed=Window]
|
||||||
interface PublicKeyCredential : Credential {
|
interface PublicKeyCredential : Credential {
|
||||||
[SameObject] readonly attribute ArrayBuffer rawId;
|
[SameObject] readonly attribute ArrayBuffer rawId;
|
||||||
[SameObject] readonly attribute AuthenticatorResponse response;
|
[SameObject] readonly attribute AuthenticatorResponse response;
|
||||||
AuthenticationExtensions getClientExtensionResults();
|
AuthenticationExtensionsClientOutputs getClientExtensionResults();
|
||||||
};
|
};
|
||||||
|
|
||||||
partial dictionary CredentialCreationOptions {
|
partial dictionary CredentialCreationOptions {
|
||||||
MakePublicKeyCredentialOptions publicKey;
|
PublicKeyCredentialCreationOptions publicKey;
|
||||||
};
|
};
|
||||||
|
|
||||||
partial dictionary CredentialRequestOptions {
|
partial dictionary CredentialRequestOptions {
|
||||||
|
@ -31,7 +35,7 @@ interface AuthenticatorAttestationResponse : AuthenticatorResponse {
|
||||||
interface AuthenticatorAssertionResponse : AuthenticatorResponse {
|
interface AuthenticatorAssertionResponse : AuthenticatorResponse {
|
||||||
[SameObject] readonly attribute ArrayBuffer authenticatorData;
|
[SameObject] readonly attribute ArrayBuffer authenticatorData;
|
||||||
[SameObject] readonly attribute ArrayBuffer signature;
|
[SameObject] readonly attribute ArrayBuffer signature;
|
||||||
[SameObject] readonly attribute ArrayBuffer userHandle;
|
[SameObject] readonly attribute ArrayBuffer? userHandle;
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary PublicKeyCredentialParameters {
|
dictionary PublicKeyCredentialParameters {
|
||||||
|
@ -39,7 +43,7 @@ dictionary PublicKeyCredentialParameters {
|
||||||
required COSEAlgorithmIdentifier alg;
|
required COSEAlgorithmIdentifier alg;
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary MakePublicKeyCredentialOptions {
|
dictionary PublicKeyCredentialCreationOptions {
|
||||||
required PublicKeyCredentialRpEntity rp;
|
required PublicKeyCredentialRpEntity rp;
|
||||||
required PublicKeyCredentialUserEntity user;
|
required PublicKeyCredentialUserEntity user;
|
||||||
|
|
||||||
|
@ -50,7 +54,7 @@ dictionary MakePublicKeyCredentialOptions {
|
||||||
sequence<PublicKeyCredentialDescriptor> excludeCredentials = [];
|
sequence<PublicKeyCredentialDescriptor> excludeCredentials = [];
|
||||||
AuthenticatorSelectionCriteria authenticatorSelection;
|
AuthenticatorSelectionCriteria authenticatorSelection;
|
||||||
AttestationConveyancePreference attestation = "none";
|
AttestationConveyancePreference attestation = "none";
|
||||||
AuthenticationExtensions extensions;
|
AuthenticationExtensionsClientInputs extensions;
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary PublicKeyCredentialEntity {
|
dictionary PublicKeyCredentialEntity {
|
||||||
|
@ -90,21 +94,31 @@ dictionary PublicKeyCredentialRequestOptions {
|
||||||
USVString rpId;
|
USVString rpId;
|
||||||
sequence<PublicKeyCredentialDescriptor> allowCredentials = [];
|
sequence<PublicKeyCredentialDescriptor> allowCredentials = [];
|
||||||
UserVerificationRequirement userVerification = "preferred";
|
UserVerificationRequirement userVerification = "preferred";
|
||||||
AuthenticationExtensions extensions;
|
AuthenticationExtensionsClientInputs extensions;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef record<DOMString, any> AuthenticationExtensions;
|
dictionary AuthenticationExtensionsClientInputs {
|
||||||
|
};
|
||||||
|
|
||||||
|
dictionary AuthenticationExtensionsClientOutputs {
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef record<DOMString, DOMString> AuthenticationExtensionsAuthenticatorInputs;
|
||||||
|
|
||||||
dictionary CollectedClientData {
|
dictionary CollectedClientData {
|
||||||
required DOMString type;
|
required DOMString type;
|
||||||
required DOMString challenge;
|
required DOMString challenge;
|
||||||
required DOMString origin;
|
required DOMString origin;
|
||||||
required DOMString hashAlgorithm;
|
TokenBinding tokenBinding;
|
||||||
DOMString tokenBindingId;
|
|
||||||
AuthenticationExtensions clientExtensions;
|
|
||||||
AuthenticationExtensions authenticatorExtensions;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
dictionary TokenBinding {
|
||||||
|
required TokenBindingStatus status;
|
||||||
|
DOMString id;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum TokenBindingStatus { "present", "supported", "not-supported" };
|
||||||
|
|
||||||
enum PublicKeyCredentialType {
|
enum PublicKeyCredentialType {
|
||||||
"public-key"
|
"public-key"
|
||||||
};
|
};
|
||||||
|
@ -129,6 +143,85 @@ enum UserVerificationRequirement {
|
||||||
"discouraged"
|
"discouraged"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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;
|
typedef sequence<AAGUID> AuthenticatorSelectionList;
|
||||||
|
|
||||||
|
partial dictionary AuthenticationExtensionsClientInputs {
|
||||||
|
AuthenticatorSelectionList authnSel;
|
||||||
|
};
|
||||||
|
|
||||||
typedef BufferSource AAGUID;
|
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;
|
||||||
|
};
|
||||||
|
|
||||||
|
dictionary authenticatorBiometricPerfBounds{
|
||||||
|
float FAR;
|
||||||
|
float FRR;
|
||||||
|
};
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// IDL definition extracted from
|
// GENERATED CONTENT - DO NOT EDIT
|
||||||
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
|
// Content of this file was automatically extracted from the WebRTC spec.
|
||||||
|
// See https://w3c.github.io/webrtc-pc/
|
||||||
|
|
||||||
dictionary RTCConfiguration {
|
dictionary RTCConfiguration {
|
||||||
sequence<RTCIceServer> iceServers;
|
sequence<RTCIceServer> iceServers;
|
||||||
|
@ -52,66 +53,11 @@ dictionary RTCOfferAnswerOptions {
|
||||||
|
|
||||||
dictionary RTCOfferOptions : RTCOfferAnswerOptions {
|
dictionary RTCOfferOptions : RTCOfferAnswerOptions {
|
||||||
boolean iceRestart = false;
|
boolean iceRestart = false;
|
||||||
boolean offerToReceiveAudio;
|
|
||||||
boolean offerToReceiveVideo;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCAnswerOptions : RTCOfferAnswerOptions {
|
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;
|
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
enum RTCSignalingState {
|
enum RTCSignalingState {
|
||||||
"stable",
|
"stable",
|
||||||
"have-local-offer",
|
"have-local-offer",
|
||||||
|
@ -141,11 +87,59 @@ enum RTCIceConnectionState {
|
||||||
"checking",
|
"checking",
|
||||||
"connected",
|
"connected",
|
||||||
"completed",
|
"completed",
|
||||||
"failed",
|
|
||||||
"disconnected",
|
"disconnected",
|
||||||
|
"failed",
|
||||||
"closed"
|
"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 {
|
enum RTCSdpType {
|
||||||
"offer",
|
"offer",
|
||||||
"pranswer",
|
"pranswer",
|
||||||
|
@ -153,7 +147,7 @@ enum RTCSdpType {
|
||||||
"rollback"
|
"rollback"
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(RTCSessionDescriptionInit descriptionInitDict)]
|
[ Constructor (RTCSessionDescriptionInit descriptionInitDict), Exposed=Window]
|
||||||
interface RTCSessionDescription {
|
interface RTCSessionDescription {
|
||||||
readonly attribute RTCSdpType type;
|
readonly attribute RTCSdpType type;
|
||||||
readonly attribute DOMString sdp;
|
readonly attribute DOMString sdp;
|
||||||
|
@ -165,7 +159,7 @@ dictionary RTCSessionDescriptionInit {
|
||||||
DOMString sdp = "";
|
DOMString sdp = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(optional RTCIceCandidateInit candidateInitDict)]
|
[ Constructor (optional RTCIceCandidateInit candidateInitDict), Exposed=Window]
|
||||||
interface RTCIceCandidate {
|
interface RTCIceCandidate {
|
||||||
readonly attribute DOMString candidate;
|
readonly attribute DOMString candidate;
|
||||||
readonly attribute DOMString? sdpMid;
|
readonly attribute DOMString? sdpMid;
|
||||||
|
@ -209,18 +203,18 @@ enum RTCIceCandidateType {
|
||||||
"relay"
|
"relay"
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict)]
|
[ Constructor (DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict), Exposed=Window]
|
||||||
interface RTCPeerConnectionIceEvent : Event {
|
interface RTCPeerConnectionIceEvent : Event {
|
||||||
readonly attribute RTCIceCandidate? candidate;
|
readonly attribute RTCIceCandidate? candidate;
|
||||||
readonly attribute DOMString? url;
|
readonly attribute DOMString? url;
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCPeerConnectionIceEventInit : EventInit {
|
dictionary RTCPeerConnectionIceEventInit : EventInit {
|
||||||
RTCIceCandidate? candidate;
|
RTCIceCandidate? candidate;
|
||||||
DOMString? url;
|
DOMString? url;
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict)]
|
[ Constructor (DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict), Exposed=Window]
|
||||||
interface RTCPeerConnectionIceErrorEvent : Event {
|
interface RTCPeerConnectionIceErrorEvent : Event {
|
||||||
readonly attribute DOMString hostCandidate;
|
readonly attribute DOMString hostCandidate;
|
||||||
readonly attribute DOMString url;
|
readonly attribute DOMString url;
|
||||||
|
@ -228,7 +222,7 @@ interface RTCPeerConnectionIceErrorEvent : Event {
|
||||||
readonly attribute USVString errorText;
|
readonly attribute USVString errorText;
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCPeerConnectionIceErrorEventInit : EventInit {
|
dictionary RTCPeerConnectionIceErrorEventInit : EventInit {
|
||||||
DOMString hostCandidate;
|
DOMString hostCandidate;
|
||||||
DOMString url;
|
DOMString url;
|
||||||
required unsigned short errorCode;
|
required unsigned short errorCode;
|
||||||
|
@ -243,7 +237,7 @@ enum RTCPriorityType {
|
||||||
};
|
};
|
||||||
|
|
||||||
partial interface RTCPeerConnection {
|
partial interface RTCPeerConnection {
|
||||||
static Promise<RTCCertificate> generateCertificate(AlgorithmIdentifier keygenAlgorithm);
|
static Promise<RTCCertificate> generateCertificate (AlgorithmIdentifier keygenAlgorithm);
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCCertificateExpiration {
|
dictionary RTCCertificateExpiration {
|
||||||
|
@ -251,29 +245,26 @@ dictionary RTCCertificateExpiration {
|
||||||
DOMTimeStamp expires;
|
DOMTimeStamp expires;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCCertificate {
|
[Exposed=Window] interface RTCCertificate {
|
||||||
readonly attribute DOMTimeStamp expires;
|
readonly attribute DOMTimeStamp expires;
|
||||||
sequence<RTCDtlsFingerprint> getFingerprints();
|
static sequence<AlgorithmIdentifier> getSupportedAlgorithms();
|
||||||
// At risk due to lack of implementers' interest.
|
sequence<RTCDtlsFingerprint> getFingerprints ();
|
||||||
AlgorithmIdentifier getAlgorithm();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
partial interface RTCPeerConnection {
|
partial interface RTCPeerConnection {
|
||||||
sequence<RTCRtpSender> getSenders();
|
sequence<RTCRtpSender> getSenders ();
|
||||||
sequence<RTCRtpReceiver> getReceivers();
|
sequence<RTCRtpReceiver> getReceivers ();
|
||||||
sequence<RTCRtpTransceiver> getTransceivers();
|
sequence<RTCRtpTransceiver> getTransceivers ();
|
||||||
RTCRtpSender addTrack(MediaStreamTrack track,
|
RTCRtpSender addTrack (MediaStreamTrack track, MediaStream... streams);
|
||||||
MediaStream... streams);
|
void removeTrack (RTCRtpSender sender);
|
||||||
void removeTrack(RTCRtpSender sender);
|
RTCRtpTransceiver addTransceiver ((MediaStreamTrack or DOMString) trackOrKind, optional RTCRtpTransceiverInit init);
|
||||||
RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind,
|
|
||||||
optional RTCRtpTransceiverInit init);
|
|
||||||
attribute EventHandler ontrack;
|
attribute EventHandler ontrack;
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCRtpTransceiverInit {
|
dictionary RTCRtpTransceiverInit {
|
||||||
RTCRtpTransceiverDirection direction = "sendrecv";
|
RTCRtpTransceiverDirection direction = "sendrecv";
|
||||||
sequence<MediaStream> streams;
|
sequence<MediaStream> streams = [];
|
||||||
sequence<RTCRtpEncodingParameters> sendEncodings;
|
sequence<RTCRtpEncodingParameters> sendEncodings = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
enum RTCRtpTransceiverDirection {
|
enum RTCRtpTransceiverDirection {
|
||||||
|
@ -283,15 +274,14 @@ enum RTCRtpTransceiverDirection {
|
||||||
"inactive"
|
"inactive"
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCRtpSender {
|
[Exposed=Window] interface RTCRtpSender {
|
||||||
readonly attribute MediaStreamTrack? track;
|
readonly attribute MediaStreamTrack? track;
|
||||||
readonly attribute RTCDtlsTransport? transport;
|
readonly attribute RTCDtlsTransport? transport;
|
||||||
readonly attribute RTCDtlsTransport? rtcpTransport;
|
readonly attribute RTCDtlsTransport? rtcpTransport;
|
||||||
// Feature at risk
|
static RTCRtpCapabilities getCapabilities (DOMString kind);
|
||||||
static RTCRtpCapabilities getCapabilities(DOMString kind);
|
Promise<void> setParameters (optional RTCRtpParameters parameters);
|
||||||
Promise<void> setParameters(optional RTCRtpParameters parameters);
|
RTCRtpParameters getParameters ();
|
||||||
RTCRtpParameters getParameters();
|
Promise<void> replaceTrack (MediaStreamTrack? withTrack);
|
||||||
Promise<void> replaceTrack(MediaStreamTrack withTrack);
|
|
||||||
Promise<RTCStatsReport> getStats();
|
Promise<RTCStatsReport> getStats();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -305,12 +295,10 @@ dictionary RTCRtpParameters {
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCRtpEncodingParameters {
|
dictionary RTCRtpEncodingParameters {
|
||||||
unsigned long ssrc;
|
octet codecPayloadType;
|
||||||
RTCRtpRtxParameters rtx;
|
|
||||||
RTCRtpFecParameters fec;
|
|
||||||
RTCDtxStatus dtx;
|
RTCDtxStatus dtx;
|
||||||
boolean active;
|
boolean active = true;
|
||||||
RTCPriorityType priority;
|
RTCPriorityType priority = "low";
|
||||||
unsigned long ptime;
|
unsigned long ptime;
|
||||||
unsigned long maxBitrate;
|
unsigned long maxBitrate;
|
||||||
double maxFramerate;
|
double maxFramerate;
|
||||||
|
@ -321,7 +309,7 @@ dictionary RTCRtpEncodingParameters {
|
||||||
enum RTCDtxStatus {
|
enum RTCDtxStatus {
|
||||||
"disabled",
|
"disabled",
|
||||||
"enabled"
|
"enabled"
|
||||||
};
|
};
|
||||||
|
|
||||||
enum RTCDegradationPreference {
|
enum RTCDegradationPreference {
|
||||||
"maintain-framerate",
|
"maintain-framerate",
|
||||||
|
@ -329,14 +317,6 @@ enum RTCDegradationPreference {
|
||||||
"balanced"
|
"balanced"
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCRtpRtxParameters {
|
|
||||||
unsigned long ssrc;
|
|
||||||
};
|
|
||||||
|
|
||||||
dictionary RTCRtpFecParameters {
|
|
||||||
unsigned long ssrc;
|
|
||||||
};
|
|
||||||
|
|
||||||
dictionary RTCRtcpParameters {
|
dictionary RTCRtcpParameters {
|
||||||
DOMString cname;
|
DOMString cname;
|
||||||
boolean reducedSize;
|
boolean reducedSize;
|
||||||
|
@ -349,7 +329,7 @@ dictionary RTCRtpHeaderExtensionParameters {
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCRtpCodecParameters {
|
dictionary RTCRtpCodecParameters {
|
||||||
unsigned short payloadType;
|
octet payloadType;
|
||||||
DOMString mimeType;
|
DOMString mimeType;
|
||||||
unsigned long clockRate;
|
unsigned long clockRate;
|
||||||
unsigned short channels;
|
unsigned short channels;
|
||||||
|
@ -372,50 +352,46 @@ dictionary RTCRtpHeaderExtensionCapability {
|
||||||
DOMString uri;
|
DOMString uri;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCRtpReceiver {
|
[Exposed=Window] interface RTCRtpReceiver {
|
||||||
readonly attribute MediaStreamTrack track;
|
readonly attribute MediaStreamTrack track;
|
||||||
readonly attribute RTCDtlsTransport? transport;
|
readonly attribute RTCDtlsTransport? transport;
|
||||||
readonly attribute RTCDtlsTransport? rtcpTransport;
|
readonly attribute RTCDtlsTransport? rtcpTransport;
|
||||||
// Feature at risk
|
static RTCRtpCapabilities getCapabilities (DOMString kind);
|
||||||
static RTCRtpCapabilities getCapabilities(DOMString kind);
|
RTCRtpParameters getParameters ();
|
||||||
RTCRtpParameters getParameters();
|
sequence<RTCRtpContributingSource> getContributingSources ();
|
||||||
sequence<RTCRtpContributingSource> getContributingSources();
|
sequence<RTCRtpSynchronizationSource> getSynchronizationSources ();
|
||||||
sequence<RTCRtpSynchronizationSource> getSynchronizationSources();
|
|
||||||
Promise<RTCStatsReport> getStats();
|
Promise<RTCStatsReport> getStats();
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCRtpContributingSource {
|
dictionary RTCRtpContributingSource {
|
||||||
readonly attribute DOMHighResTimeStamp timestamp;
|
required DOMHighResTimeStamp timestamp;
|
||||||
readonly attribute unsigned long source;
|
required unsigned long source;
|
||||||
readonly attribute byte? audioLevel;
|
double audioLevel;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCRtpSynchronizationSource {
|
dictionary RTCRtpSynchronizationSource : RTCRtpContributingSource {
|
||||||
readonly attribute DOMHighResTimeStamp timestamp;
|
boolean voiceActivityFlag;
|
||||||
readonly attribute unsigned long source;
|
|
||||||
readonly attribute byte audioLevel;
|
|
||||||
readonly attribute boolean? voiceActivityFlag;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCRtpTransceiver {
|
[Exposed=Window] interface RTCRtpTransceiver {
|
||||||
readonly attribute DOMString? mid;
|
readonly attribute DOMString? mid;
|
||||||
[SameObject]
|
[SameObject]
|
||||||
readonly attribute RTCRtpSender sender;
|
readonly attribute RTCRtpSender sender;
|
||||||
[SameObject]
|
[SameObject]
|
||||||
readonly attribute RTCRtpReceiver receiver;
|
readonly attribute RTCRtpReceiver receiver;
|
||||||
readonly attribute boolean stopped;
|
readonly attribute boolean stopped;
|
||||||
readonly attribute RTCRtpTransceiverDirection direction;
|
attribute RTCRtpTransceiverDirection direction;
|
||||||
readonly attribute RTCRtpTransceiverDirection? currentDirection;
|
readonly attribute RTCRtpTransceiverDirection? currentDirection;
|
||||||
void setDirection(RTCRtpTransceiverDirection direction);
|
void stop ();
|
||||||
void stop();
|
void setCodecPreferences (sequence<RTCRtpCodecCapability> codecs);
|
||||||
void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCDtlsTransport {
|
[Exposed=Window] interface RTCDtlsTransport : EventTarget {
|
||||||
readonly attribute RTCIceTransport transport;
|
readonly attribute RTCIceTransport transport;
|
||||||
readonly attribute RTCDtlsTransportState state;
|
readonly attribute RTCDtlsTransportState state;
|
||||||
sequence<ArrayBuffer> getRemoteCertificates();
|
sequence<ArrayBuffer> getRemoteCertificates ();
|
||||||
attribute EventHandler onstatechange;
|
attribute EventHandler onstatechange;
|
||||||
|
attribute EventHandler onerror;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum RTCDtlsTransportState {
|
enum RTCDtlsTransportState {
|
||||||
|
@ -431,16 +407,16 @@ dictionary RTCDtlsFingerprint {
|
||||||
DOMString value;
|
DOMString value;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCIceTransport {
|
[Exposed=Window] interface RTCIceTransport : EventTarget {
|
||||||
readonly attribute RTCIceRole role;
|
readonly attribute RTCIceRole role;
|
||||||
readonly attribute RTCIceComponent component;
|
readonly attribute RTCIceComponent component;
|
||||||
readonly attribute RTCIceTransportState state;
|
readonly attribute RTCIceTransportState state;
|
||||||
readonly attribute RTCIceGathererState gatheringState;
|
readonly attribute RTCIceGathererState gatheringState;
|
||||||
sequence<RTCIceCandidate> getLocalCandidates();
|
sequence<RTCIceCandidate> getLocalCandidates ();
|
||||||
sequence<RTCIceCandidate> getRemoteCandidates();
|
sequence<RTCIceCandidate> getRemoteCandidates ();
|
||||||
RTCIceCandidatePair? getSelectedCandidatePair();
|
RTCIceCandidatePair? getSelectedCandidatePair ();
|
||||||
RTCIceParameters? getLocalParameters();
|
RTCIceParameters? getLocalParameters ();
|
||||||
RTCIceParameters? getRemoteParameters();
|
RTCIceParameters? getRemoteParameters ();
|
||||||
attribute EventHandler onstatechange;
|
attribute EventHandler onstatechange;
|
||||||
attribute EventHandler ongatheringstatechange;
|
attribute EventHandler ongatheringstatechange;
|
||||||
attribute EventHandler onselectedcandidatepairchange;
|
attribute EventHandler onselectedcandidatepairchange;
|
||||||
|
@ -467,8 +443,8 @@ enum RTCIceTransportState {
|
||||||
"checking",
|
"checking",
|
||||||
"connected",
|
"connected",
|
||||||
"completed",
|
"completed",
|
||||||
"failed",
|
|
||||||
"disconnected",
|
"disconnected",
|
||||||
|
"failed",
|
||||||
"closed"
|
"closed"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -482,7 +458,7 @@ enum RTCIceComponent {
|
||||||
"rtcp"
|
"rtcp"
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(DOMString type, RTCTrackEventInit eventInitDict)]
|
[ Constructor (DOMString type, RTCTrackEventInit eventInitDict), Exposed=Window]
|
||||||
interface RTCTrackEvent : Event {
|
interface RTCTrackEvent : Event {
|
||||||
readonly attribute RTCRtpReceiver receiver;
|
readonly attribute RTCRtpReceiver receiver;
|
||||||
readonly attribute MediaStreamTrack track;
|
readonly attribute MediaStreamTrack track;
|
||||||
|
@ -500,17 +476,25 @@ dictionary RTCTrackEventInit : EventInit {
|
||||||
|
|
||||||
partial interface RTCPeerConnection {
|
partial interface RTCPeerConnection {
|
||||||
readonly attribute RTCSctpTransport? sctp;
|
readonly attribute RTCSctpTransport? sctp;
|
||||||
RTCDataChannel createDataChannel(USVString label,
|
RTCDataChannel createDataChannel (USVString label, optional RTCDataChannelInit dataChannelDict);
|
||||||
optional RTCDataChannelInit dataChannelDict);
|
|
||||||
attribute EventHandler ondatachannel;
|
attribute EventHandler ondatachannel;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCSctpTransport {
|
[Exposed=Window] interface RTCSctpTransport {
|
||||||
readonly attribute RTCDtlsTransport transport;
|
readonly attribute RTCDtlsTransport transport;
|
||||||
|
readonly attribute RTCSctpTransportState state;
|
||||||
readonly attribute unrestricted double maxMessageSize;
|
readonly attribute unrestricted double maxMessageSize;
|
||||||
|
attribute EventHandler onstatechange;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCDataChannel : EventTarget {
|
enum RTCSctpTransportState {
|
||||||
|
"new",
|
||||||
|
"connecting",
|
||||||
|
"connected",
|
||||||
|
"closed"
|
||||||
|
};
|
||||||
|
|
||||||
|
[Exposed=Window] interface RTCDataChannel : EventTarget {
|
||||||
readonly attribute USVString label;
|
readonly attribute USVString label;
|
||||||
readonly attribute boolean ordered;
|
readonly attribute boolean ordered;
|
||||||
readonly attribute unsigned short? maxPacketLifeTime;
|
readonly attribute unsigned short? maxPacketLifeTime;
|
||||||
|
@ -526,13 +510,13 @@ interface RTCDataChannel : EventTarget {
|
||||||
attribute EventHandler onbufferedamountlow;
|
attribute EventHandler onbufferedamountlow;
|
||||||
attribute EventHandler onerror;
|
attribute EventHandler onerror;
|
||||||
attribute EventHandler onclose;
|
attribute EventHandler onclose;
|
||||||
void close();
|
void close ();
|
||||||
attribute EventHandler onmessage;
|
attribute EventHandler onmessage;
|
||||||
attribute DOMString binaryType;
|
attribute DOMString binaryType;
|
||||||
void send(USVString data);
|
void send (USVString data);
|
||||||
void send(Blob data);
|
void send (Blob data);
|
||||||
void send(ArrayBuffer data);
|
void send (ArrayBuffer data);
|
||||||
void send(ArrayBufferView data);
|
void send (ArrayBufferView data);
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCDataChannelInit {
|
dictionary RTCDataChannelInit {
|
||||||
|
@ -553,7 +537,7 @@ enum RTCDataChannelState {
|
||||||
"closed"
|
"closed"
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(DOMString type, RTCDataChannelEventInit eventInitDict)]
|
[ Constructor (DOMString type, RTCDataChannelEventInit eventInitDict), Exposed=Window]
|
||||||
interface RTCDataChannelEvent : Event {
|
interface RTCDataChannelEvent : Event {
|
||||||
readonly attribute RTCDataChannel channel;
|
readonly attribute RTCDataChannel channel;
|
||||||
};
|
};
|
||||||
|
@ -566,15 +550,14 @@ partial interface RTCRtpSender {
|
||||||
readonly attribute RTCDTMFSender? dtmf;
|
readonly attribute RTCDTMFSender? dtmf;
|
||||||
};
|
};
|
||||||
|
|
||||||
interface RTCDTMFSender : EventTarget {
|
[Exposed=Window] interface RTCDTMFSender : EventTarget {
|
||||||
void insertDTMF(DOMString tones,
|
void insertDTMF (DOMString tones, optional unsigned long duration = 100, optional unsigned long interToneGap = 70);
|
||||||
optional unsigned long duration = 100,
|
|
||||||
optional unsigned long interToneGap = 70);
|
|
||||||
attribute EventHandler ontonechange;
|
attribute EventHandler ontonechange;
|
||||||
|
readonly attribute boolean canInsertDTMF;
|
||||||
readonly attribute DOMString toneBuffer;
|
readonly attribute DOMString toneBuffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(DOMString type, RTCDTMFToneChangeEventInit eventInitDict)]
|
[ Constructor (DOMString type, RTCDTMFToneChangeEventInit eventInitDict), Exposed=Window]
|
||||||
interface RTCDTMFToneChangeEvent : Event {
|
interface RTCDTMFToneChangeEvent : Event {
|
||||||
readonly attribute DOMString tone;
|
readonly attribute DOMString tone;
|
||||||
};
|
};
|
||||||
|
@ -584,28 +567,34 @@ dictionary RTCDTMFToneChangeEventInit : EventInit {
|
||||||
};
|
};
|
||||||
|
|
||||||
partial interface RTCPeerConnection {
|
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>;
|
readonly maplike<DOMString, object>;
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCStats {
|
dictionary RTCStats {
|
||||||
DOMHighResTimeStamp timestamp;
|
required DOMHighResTimeStamp timestamp;
|
||||||
RTCStatsType type;
|
required RTCStatsType type;
|
||||||
DOMString id;
|
required DOMString id;
|
||||||
};
|
};
|
||||||
|
|
||||||
[Global,
|
[ Constructor (DOMString type, RTCStatsEventInit
|
||||||
Exposed=RTCIdentityProviderGlobalScope]
|
eventInitDict), Exposed=Window]
|
||||||
|
interface RTCStatsEvent : Event {
|
||||||
|
readonly attribute RTCStatsReport report;
|
||||||
|
};
|
||||||
|
|
||||||
|
[Global, Exposed=RTCIdentityProviderGlobalScope]
|
||||||
interface RTCIdentityProviderGlobalScope : WorkerGlobalScope {
|
interface RTCIdentityProviderGlobalScope : WorkerGlobalScope {
|
||||||
readonly attribute RTCIdentityProviderRegistrar rtcIdentityProvider;
|
readonly attribute RTCIdentityProviderRegistrar rtcIdentityProvider;
|
||||||
};
|
};
|
||||||
|
|
||||||
[Exposed=RTCIdentityProviderGlobalScope]
|
[Exposed=RTCIdentityProviderGlobalScope]
|
||||||
interface RTCIdentityProviderRegistrar {
|
interface RTCIdentityProviderRegistrar {
|
||||||
void register(RTCIdentityProvider idp);
|
void register (RTCIdentityProvider idp);
|
||||||
};
|
};
|
||||||
|
|
||||||
dictionary RTCIdentityProvider {
|
dictionary RTCIdentityProvider {
|
||||||
|
@ -613,12 +602,11 @@ dictionary RTCIdentityProvider {
|
||||||
required ValidateAssertionCallback validateAssertion;
|
required ValidateAssertionCallback validateAssertion;
|
||||||
};
|
};
|
||||||
|
|
||||||
callback GenerateAssertionCallback = Promise<RTCIdentityAssertionResult> (DOMString contents,
|
callback GenerateAssertionCallback = Promise<RTCIdentityAssertionResult>
|
||||||
DOMString origin,
|
(DOMString contents, DOMString origin, RTCIdentityProviderOptions options);
|
||||||
RTCIdentityProviderOptions options);
|
|
||||||
|
|
||||||
callback ValidateAssertionCallback = Promise<RTCIdentityValidationResult> (DOMString assertion,
|
callback ValidateAssertionCallback = Promise<RTCIdentityValidationResult>
|
||||||
DOMString origin);
|
(DOMString assertion, DOMString origin);
|
||||||
|
|
||||||
dictionary RTCIdentityAssertionResult {
|
dictionary RTCIdentityAssertionResult {
|
||||||
required RTCIdentityProviderDetails idp;
|
required RTCIdentityProviderDetails idp;
|
||||||
|
@ -636,9 +624,8 @@ dictionary RTCIdentityValidationResult {
|
||||||
};
|
};
|
||||||
|
|
||||||
partial interface RTCPeerConnection {
|
partial interface RTCPeerConnection {
|
||||||
void setIdentityProvider(DOMString provider,
|
void setIdentityProvider (DOMString provider, optional RTCIdentityProviderOptions options);
|
||||||
optional RTCIdentityProviderOptions options);
|
Promise<DOMString> getIdentityAssertion ();
|
||||||
Promise<DOMString> getIdentityAssertion();
|
|
||||||
readonly attribute Promise<RTCIdentityAssertion> peerIdentity;
|
readonly attribute Promise<RTCIdentityAssertion> peerIdentity;
|
||||||
readonly attribute DOMString? idpLoginUrl;
|
readonly attribute DOMString? idpLoginUrl;
|
||||||
readonly attribute DOMString? idpErrorInfo;
|
readonly attribute DOMString? idpErrorInfo;
|
||||||
|
@ -650,7 +637,7 @@ dictionary RTCIdentityProviderOptions {
|
||||||
DOMString peerIdentity;
|
DOMString peerIdentity;
|
||||||
};
|
};
|
||||||
|
|
||||||
[Constructor(DOMString idp, DOMString name)]
|
[Constructor(DOMString idp, DOMString name), Exposed=Window]
|
||||||
interface RTCIdentityAssertion {
|
interface RTCIdentityAssertion {
|
||||||
attribute DOMString idp;
|
attribute DOMString idp;
|
||||||
attribute DOMString name;
|
attribute DOMString name;
|
||||||
|
@ -667,6 +654,8 @@ partial interface MediaStreamTrack {
|
||||||
|
|
||||||
enum RTCErrorDetailType {
|
enum RTCErrorDetailType {
|
||||||
"data-channel-failure",
|
"data-channel-failure",
|
||||||
|
"dtls-failure",
|
||||||
|
"fingerprint-failure",
|
||||||
"idp-bad-script-failure",
|
"idp-bad-script-failure",
|
||||||
"idp-execution-failure",
|
"idp-execution-failure",
|
||||||
"idp-load-failure",
|
"idp-load-failure",
|
||||||
|
@ -676,11 +665,13 @@ enum RTCErrorDetailType {
|
||||||
"idp-token-expired",
|
"idp-token-expired",
|
||||||
"idp-token-invalid",
|
"idp-token-invalid",
|
||||||
"sctp-failure",
|
"sctp-failure",
|
||||||
"sdp-syntax-error"
|
"sdp-syntax-error",
|
||||||
};
|
"hardware-encoder-not-available",
|
||||||
|
"hardware-encoder-error"
|
||||||
|
};
|
||||||
|
|
||||||
[Exposed=Window,
|
[Exposed=Window,
|
||||||
Constructor(DOMString type, RTCErrorEventInit eventInitDict)]
|
Constructor (DOMString type, RTCErrorEventInit eventInitDict)]
|
||||||
interface RTCErrorEvent : Event {
|
interface RTCErrorEvent : Event {
|
||||||
readonly attribute RTCError? error;
|
readonly attribute RTCError? error;
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,24 +19,6 @@ function get_boundary(headers) {
|
||||||
return '';
|
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) {
|
function xhr_send(url_base, method, data, with_credentials) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
|
|
|
@ -117,13 +117,13 @@ def check_environ(product):
|
||||||
if platform.uname()[0] != "Windows":
|
if platform.uname()[0] != "Windows":
|
||||||
message = """Missing hosts file configuration. Run
|
message = """Missing hosts file configuration. Run
|
||||||
|
|
||||||
python wpt make-hosts-file >> %s
|
./wpt make-hosts-file | sudo tee -a %s""" % hosts_path
|
||||||
|
|
||||||
from a shell with Administrator privileges.""" % hosts_path
|
|
||||||
else:
|
else:
|
||||||
message = """Missing hosts file configuration. Run
|
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)
|
raise WptrunError(message)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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>
|
|
@ -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");
|
|
|
@ -20,7 +20,7 @@ promise_test(async t => {
|
||||||
// Needed for MediaStream, MediaStreamTrack
|
// Needed for MediaStream, MediaStreamTrack
|
||||||
'/interfaces/mediacapture-main.idl',
|
'/interfaces/mediacapture-main.idl',
|
||||||
|
|
||||||
'/interfaces/webaudio.idl'
|
'/interfaces/web-audio-api.idl'
|
||||||
].map(url => fetch(url).then(response => response.text())));
|
].map(url => fetch(url).then(response => response.text())));
|
||||||
|
|
||||||
const idl_array = new IdlArray();
|
const idl_array = new IdlArray();
|
||||||
|
|
|
@ -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.');
|
|
@ -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>
|
|
|
@ -424,6 +424,52 @@
|
||||||
'senderReport should contain remote-candidate stats');
|
'senderReport should contain remote-candidate stats');
|
||||||
}, 'RTCRtpSender.getStats() contains only outbound-rtp and related 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.
|
// Helpers.
|
||||||
|
|
||||||
function findStatsByTypeAndId(report, type, identifier) {
|
function findStatsByTypeAndId(report, type, identifier) {
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
<title>RTCRtpReceiver.prototype.getStats</title>
|
<title>RTCRtpReceiver.prototype.getStats</title>
|
||||||
<script src="/resources/testharness.js"></script>
|
<script src="/resources/testharness.js"></script>
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="RTCPeerConnection-helper.js"></script>
|
||||||
<script src="dictionary-helper.js"></script>
|
<script src="dictionary-helper.js"></script>
|
||||||
<script src="RTCStats-helper.js"></script>
|
<script src="RTCStats-helper.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
@ -12,6 +13,9 @@
|
||||||
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
|
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
|
||||||
// https://w3c.github.io/webrtc-stats/archives/20170614/webrtc-stats.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
|
// The following helper function is called from RTCStats-helper.js
|
||||||
// validateStatsReport
|
// validateStatsReport
|
||||||
// assert_stats_report_has_stats
|
// assert_stats_report_has_stats
|
||||||
|
@ -40,15 +44,29 @@
|
||||||
added.
|
added.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
promise_test(() => {
|
promise_test(async () => {
|
||||||
const pc = new RTCPeerConnection();
|
const caller = new RTCPeerConnection();
|
||||||
const { receiver } = pc.addTransceiver('audio');
|
const callee = new RTCPeerConnection();
|
||||||
|
const { receiver } = caller.addTransceiver('audio');
|
||||||
|
|
||||||
return receiver.getStats()
|
await doSignalingHandshake(caller, callee);
|
||||||
.then(statsReport => {
|
const statsReport = await receiver.getStats();
|
||||||
validateStatsReport(statsReport);
|
validateStatsReport(statsReport);
|
||||||
assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
|
assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
|
||||||
});
|
}, 'receiver.getStats() via addTransceiver should return stats report containing inbound-rtp stats');
|
||||||
}, 'receiver.getStats() 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);
|
||||||
|
|
||||||
|
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>
|
</script>
|
|
@ -107,13 +107,20 @@
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main function to do the IDL test, using fetched IDL text
|
promise_test(async t => {
|
||||||
function doIdlTest(idlText) {
|
await asyncInit();
|
||||||
|
|
||||||
const idlArray = new IdlArray();
|
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_untested_idls('interface EventHandler {};');
|
||||||
|
idlArray.add_idls('interface EventTarget {};');
|
||||||
idlArray.add_idls('interface MediaStreamTrack : EventTarget {};');
|
idlArray.add_idls('interface MediaStreamTrack : EventTarget {};');
|
||||||
idlArray.add_idls(idlText);
|
|
||||||
|
|
||||||
idlArray.add_objects({
|
idlArray.add_objects({
|
||||||
'RTCPeerConnection': [`new RTCPeerConnection()`],
|
'RTCPeerConnection': [`new RTCPeerConnection()`],
|
||||||
|
@ -159,13 +166,6 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
idlArray.test();
|
idlArray.test();
|
||||||
}
|
|
||||||
|
|
||||||
promise_test(t => {
|
|
||||||
return asyncInit()
|
|
||||||
.then(() => fetch('/interfaces/webrtc-pc.idl'))
|
|
||||||
.then(response => response.text())
|
|
||||||
.then(doIdlTest);
|
|
||||||
}, 'Main test driver');
|
}, 'Main test driver');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue