mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Auto merge of #23579 - servo-wpt-sync:wpt_update_16-06-2019, r=jdm
Sync WPT with upstream (16-06-2019) Automated downstream sync of changes from upstream as of 16-06-2019. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23579) <!-- Reviewable:end -->
This commit is contained in:
commit
ce9f35e0e3
91 changed files with 1840 additions and 299 deletions
|
@ -34,3 +34,6 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -141767,6 +141767,30 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text-decor/text-underline-offset-001.html": [
|
||||
[
|
||||
"css/css-text-decor/text-underline-offset-001.html",
|
||||
[
|
||||
[
|
||||
"/css/css-text-decor/reference/text-underline-offset-001-notref.html",
|
||||
"!="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text-decor/text-underline-offset-002.html": [
|
||||
[
|
||||
"css/css-text-decor/text-underline-offset-002.html",
|
||||
[
|
||||
[
|
||||
"/css/css-text-decor/reference/text-underline-offset-002-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-text/boundary-shaping/boundary-shaping-001.html": [
|
||||
[
|
||||
"css/css-text/boundary-shaping/boundary-shaping-001.html",
|
||||
|
@ -176977,6 +177001,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-edge-clipping.html": [
|
||||
[
|
||||
"css/filter-effects/backdrop-filter-edge-clipping.html",
|
||||
[
|
||||
[
|
||||
"/css/filter-effects/backdrop-filter-paint-order-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-edge-pixels.html": [
|
||||
[
|
||||
"css/filter-effects/backdrop-filter-edge-pixels.html",
|
||||
|
@ -177049,6 +177085,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-plus-filter.html": [
|
||||
[
|
||||
"css/filter-effects/backdrop-filter-plus-filter.html",
|
||||
[
|
||||
[
|
||||
"/css/filter-effects/backdrop-filter-plus-filter-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-reference-filter.html": [
|
||||
[
|
||||
"css/filter-effects/backdrop-filter-reference-filter.html",
|
||||
|
@ -201125,6 +201173,30 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction-overall.html": [
|
||||
[
|
||||
"mathml/presentation-markup/direction/direction-overall.html",
|
||||
[
|
||||
[
|
||||
"/mathml/presentation-markup/direction/direction-overall-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction-token.html": [
|
||||
[
|
||||
"mathml/presentation-markup/direction/direction-token.html",
|
||||
[
|
||||
[
|
||||
"/mathml/presentation-markup/direction/direction-token-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"mathml/presentation-markup/fractions/frac-bar-001.html": [
|
||||
[
|
||||
"mathml/presentation-markup/fractions/frac-bar-001.html",
|
||||
|
@ -202805,6 +202877,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"svg/render/reftests/change-sync-for-nested-use.html": [
|
||||
[
|
||||
"svg/render/reftests/change-sync-for-nested-use.html",
|
||||
[
|
||||
[
|
||||
"/svg/render/reftests/change-sync-for-nested-use-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"svg/render/reftests/filter-effects-on-pattern.html": [
|
||||
[
|
||||
"svg/render/reftests/filter-effects-on-pattern.html",
|
||||
|
@ -203705,6 +203789,18 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/start_alignment.html": [
|
||||
[
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/start_alignment.html",
|
||||
[
|
||||
[
|
||||
"/webvtt/rendering/cues-with-video/processing-model/bidi/start_alignment-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/u002E_LF_u05D0.html": [
|
||||
[
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/u002E_LF_u05D0.html",
|
||||
|
@ -250843,6 +250939,12 @@
|
|||
"css/css-text-decor/reference/text-emphasis-style-string-001-ref.xht": [
|
||||
[]
|
||||
],
|
||||
"css/css-text-decor/reference/text-underline-offset-001-notref.html": [
|
||||
[]
|
||||
],
|
||||
"css/css-text-decor/reference/text-underline-offset-002-ref.html": [
|
||||
[]
|
||||
],
|
||||
"css/css-text/META.yml": [
|
||||
[]
|
||||
],
|
||||
|
@ -256672,6 +256774,9 @@
|
|||
"css/filter-effects/backdrop-filter-paint-order-ref.html": [
|
||||
[]
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-plus-filter-ref.html": [
|
||||
[]
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-update-ref.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -270598,6 +270703,12 @@
|
|||
"mathml/README.md": [
|
||||
[]
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction-overall-ref.html": [
|
||||
[]
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction-token-ref.html": [
|
||||
[]
|
||||
],
|
||||
"mathml/presentation-markup/fractions/frac-bar-001-ref.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -277804,6 +277915,9 @@
|
|||
"svg/render/reftests/blending-svg-root-ref.html": [
|
||||
[]
|
||||
],
|
||||
"svg/render/reftests/change-sync-for-nested-use-ref.html": [
|
||||
[]
|
||||
],
|
||||
"svg/render/reftests/filter-effects-on-pattern-ref.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -284044,6 +284158,9 @@
|
|||
"webvtt/rendering/cues-with-video/processing-model/bidi/bidi_ruby-ref.html": [
|
||||
[]
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/start_alignment-ref.html": [
|
||||
[]
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/u002E_LF_u05D0-ref.html": [
|
||||
[]
|
||||
],
|
||||
|
@ -284878,6 +284995,9 @@
|
|||
"webvtt/rendering/cues-with-video/processing-model/support/size_50.vtt": [
|
||||
[]
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/support/start_alignment.vtt": [
|
||||
[]
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/support/test.vtt": [
|
||||
[]
|
||||
],
|
||||
|
@ -312312,6 +312432,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/css-overflow/overfow-outside-padding.html": [
|
||||
[
|
||||
"css/css-overflow/overfow-outside-padding.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/css-overflow/parsing/block-ellipsis-invalid.html": [
|
||||
[
|
||||
"css/css-overflow/parsing/block-ellipsis-invalid.html",
|
||||
|
@ -321670,6 +321796,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"css/cssom/getComputedStyle-width-scroll.tentative.html": [
|
||||
[
|
||||
"css/cssom/getComputedStyle-width-scroll.tentative.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"css/cssom/historical.html": [
|
||||
[
|
||||
"css/cssom/historical.html",
|
||||
|
@ -355971,6 +356103,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"intersection-observer/root-margin-root-element.html": [
|
||||
[
|
||||
"intersection-observer/root-margin-root-element.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"intersection-observer/root-margin-rounding.html": [
|
||||
[
|
||||
"intersection-observer/root-margin-rounding.html",
|
||||
|
@ -356625,6 +356763,12 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction.html": [
|
||||
[
|
||||
"mathml/presentation-markup/direction/direction.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"mathml/presentation-markup/fractions/frac-1.html": [
|
||||
[
|
||||
"mathml/presentation-markup/fractions/frac-1.html",
|
||||
|
@ -357198,7 +357342,9 @@
|
|||
"media-source/mediasource-play.html": [
|
||||
[
|
||||
"media-source/mediasource-play.html",
|
||||
{}
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"media-source/mediasource-preload.html": [
|
||||
|
@ -393910,6 +394056,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"trusted-types/Element-insertAdjacentText.tentative.html": [
|
||||
[
|
||||
"trusted-types/Element-insertAdjacentText.tentative.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"trusted-types/Element-outerHTML.tentative.html": [
|
||||
[
|
||||
"trusted-types/Element-outerHTML.tentative.html",
|
||||
|
@ -394150,6 +394302,12 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"trusted-types/block-text-node-insertion-into-script-element.tentative.html": [
|
||||
[
|
||||
"trusted-types/block-text-node-insertion-into-script-element.tentative.html",
|
||||
{}
|
||||
]
|
||||
],
|
||||
"trusted-types/idlharness.window.js": [
|
||||
[
|
||||
"trusted-types/idlharness.window.html",
|
||||
|
@ -432133,7 +432291,7 @@
|
|||
},
|
||||
"paths": {
|
||||
".azure-pipelines.yml": [
|
||||
"1a8950b870fbad7bb343889c9cf5f091bb56a3fa",
|
||||
"80748691d6fd3c16a659c4c6c57115ca9341a38e",
|
||||
"support"
|
||||
],
|
||||
".codecov.yml": [
|
||||
|
@ -547105,11 +547263,11 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/absolute-positioning-grid-container-containing-block-001.html": [
|
||||
"e456af8ce0a30b430ab2696c892c6fde8884007c",
|
||||
"4be43ddba2dec27a1dd2d1af95402e5158c7c9e6",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/absolute-positioning-grid-container-parent-001.html": [
|
||||
"a7a38ad0a0ab8c8fa13b7fac0a75268e1a026cbb",
|
||||
"7025ccf55e9d70e5fa3db5159cd975e061003837",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/descendant-static-position-001-ref.html": [
|
||||
|
@ -547161,7 +547319,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-children-writing-modes-001.html": [
|
||||
"eb855279ca8b2be674180dd5240ed3860663ae45",
|
||||
"d63b1894927bf12cec6b918b100d62ff8a7ed103",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-item-dynamic-change-001.html": [
|
||||
|
@ -547201,7 +547359,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-background-001.html": [
|
||||
"19ee662e04e12e77ac0eec52b8da951ef1f27b5c",
|
||||
"54146bce2581db8749ea75622edfdcd148d266bb",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-background-rtl-001-ref.html": [
|
||||
|
@ -547209,7 +547367,7 @@
|
|||
"support"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-background-rtl-001.html": [
|
||||
"9ed046b421533c12cf905dd175c682458279e10a",
|
||||
"97ec1052f4be3ce0b26491c60d3c02184328dd12",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-content-alignment-001.html": [
|
||||
|
@ -547237,11 +547395,11 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-implicit-grid-001.html": [
|
||||
"71f096aa74b9d9e012b115a21825843aa0d41e79",
|
||||
"4b1a3d0f342f84b3a901513ce99bfcc96b635511",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-implicit-grid-line-001.html": [
|
||||
"7b8fa4ef7bd632fcbcfae5084cb41e8424f4363f",
|
||||
"8fc8918ee68b215da3e93fb73282ab8e0b2ef287",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-padding-001.html": [
|
||||
|
@ -547249,7 +547407,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-unknown-named-grid-line-001.html": [
|
||||
"6e61f7c2de36a1d799aba0de6d10c52147d406d6",
|
||||
"663dab45b3dbe76075c6a32a3e7b0b6a59213181",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html": [
|
||||
|
@ -547257,7 +547415,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/grid-sizing-positioned-items-001.html": [
|
||||
"0e8cd3369f7f154725f746ce4725940bec746582",
|
||||
"e74b2b96fe62e102f4313c00bcc730bec76a667a",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html": [
|
||||
|
@ -547629,11 +547787,11 @@
|
|||
"reftest"
|
||||
],
|
||||
"css/css-grid/abspos/positioned-grid-items-should-not-create-implicit-tracks-001.html": [
|
||||
"5ef006ae137c5604e9b53e322aeec60bf4841e55",
|
||||
"adb4a7acf27514550682429e998feadb2af5676d",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/positioned-grid-items-should-not-take-up-space-001.html": [
|
||||
"597e778019b6276cdfd01676f2abf6f521faff29",
|
||||
"50f9984370baa88d2940b5457b54067a9497a812",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-grid/abspos/positioned-grid-items-sizing-001-ref.html": [
|
||||
|
@ -554172,6 +554330,10 @@
|
|||
"f425636c3bb4297e4e6564d1c2629dc10dde5607",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-overflow/overfow-outside-padding.html": [
|
||||
"792f7b87351bfcbda7baecc67ea6dedc2b05f3a5",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-overflow/parsing/block-ellipsis-invalid.html": [
|
||||
"2b9c059a45d0e315a350e0c09fd7cd86be72c61e",
|
||||
"testharness"
|
||||
|
@ -562280,6 +562442,14 @@
|
|||
"6bf79ba4527f99af740bdeca945449e8f9ed7a57",
|
||||
"support"
|
||||
],
|
||||
"css/css-text-decor/reference/text-underline-offset-001-notref.html": [
|
||||
"c56078a32ae26647c8aece448ce1d6b268f38abd",
|
||||
"support"
|
||||
],
|
||||
"css/css-text-decor/reference/text-underline-offset-002-ref.html": [
|
||||
"ed2e3cefff82a120c3d33f504fd8d6ee78d9fe8c",
|
||||
"support"
|
||||
],
|
||||
"css/css-text-decor/text-decoration-001-manual.html": [
|
||||
"9b620132697dfbf68f0d10575afaf7d902e649da",
|
||||
"manual"
|
||||
|
@ -562720,6 +562890,14 @@
|
|||
"1c108faabd33fbbd4827bb1fca9a3d4834037deb",
|
||||
"testharness"
|
||||
],
|
||||
"css/css-text-decor/text-underline-offset-001.html": [
|
||||
"41a7d418a21db617dfc13ad501c72a209be35302",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text-decor/text-underline-offset-002.html": [
|
||||
"56ba764a0fa035fcc41c993f4462acf4c2ccacfd",
|
||||
"reftest"
|
||||
],
|
||||
"css/css-text-decor/text-underline-offset-computed.html": [
|
||||
"32dfd24fbaa5633c60d9307d78847f9cae3e9b97",
|
||||
"testharness"
|
||||
|
@ -587900,6 +588078,10 @@
|
|||
"12ad5e89653564f91006c78baeac353c12865c00",
|
||||
"testharness"
|
||||
],
|
||||
"css/cssom/getComputedStyle-width-scroll.tentative.html": [
|
||||
"8f629c70161b436758044eafc8fc42648f38f3dd",
|
||||
"testharness"
|
||||
],
|
||||
"css/cssom/historical.html": [
|
||||
"44f3f6c8f15a13b2c32dad2672ea9383330e8082",
|
||||
"testharness"
|
||||
|
@ -588336,6 +588518,10 @@
|
|||
"bc25b25944f47d6f053580939752803f0b929c99",
|
||||
"reftest"
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-edge-clipping.html": [
|
||||
"5d09c414497de3d1d34bf2a6032c94c87a9bdb82",
|
||||
"reftest"
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-edge-pixels-ref.html": [
|
||||
"bbd562856f7a0ee305874575935c66e8b4830c1d",
|
||||
"support"
|
||||
|
@ -588380,6 +588566,14 @@
|
|||
"88531532fc33296e8c8eca5452da04d5d612662d",
|
||||
"reftest"
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-plus-filter-ref.html": [
|
||||
"bf476ea63f81a6caca33dd8d27b8208b3ae52c4e",
|
||||
"support"
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-plus-filter.html": [
|
||||
"3a2d8feaeefc82c20afd3de2c2cf9ce9bf6aed11",
|
||||
"reftest"
|
||||
],
|
||||
"css/filter-effects/backdrop-filter-reference-filter.html": [
|
||||
"6c61a9620aa82d23375fd31900d87bcfd873a5e1",
|
||||
"reftest"
|
||||
|
@ -622117,11 +622311,11 @@
|
|||
"testharness"
|
||||
],
|
||||
"html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines-ref.html": [
|
||||
"92c1e9fedf9aead22f80dbe5575e46d427288e96",
|
||||
"137a9334f286f418b8d0c3b35ed995e956f22c76",
|
||||
"support"
|
||||
],
|
||||
"html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html": [
|
||||
"0da8c6f83d54195c6ccea34bdd8d1af6cad6c2b6",
|
||||
"ec350ff44d56c601f508485d0227ba9855394917",
|
||||
"reftest"
|
||||
],
|
||||
"html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-positioning.html": [
|
||||
|
@ -622149,11 +622343,11 @@
|
|||
"testharness"
|
||||
],
|
||||
"html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end-ref.html": [
|
||||
"c0415367cc13be70aba2076bf6b445b553ee4b5d",
|
||||
"1c8f751c2cebba1a89f2f1b06e0deb73236e7b5b",
|
||||
"support"
|
||||
],
|
||||
"html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html": [
|
||||
"c90313c887c07f05101f5ceaec698954be1510be",
|
||||
"df816ffe2b9b0fd4cfd8021ea6d4c98f3872e128",
|
||||
"reftest"
|
||||
],
|
||||
"html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-unsupported-markup.html": [
|
||||
|
@ -631353,7 +631547,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/geometry.idl": [
|
||||
"b5b56e780542ec0e623b47fc6a8b76dd0c3bb6f1",
|
||||
"5d5fe4fc2c48305c0ea7e9ce0859af3700d9b14c",
|
||||
"support"
|
||||
],
|
||||
"interfaces/gyroscope.idl": [
|
||||
|
@ -631621,7 +631815,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/web-nfc.idl": [
|
||||
"26f32a04ac981db772d26f34cbe3a40cdc78a83f",
|
||||
"a50d53b57cd1bfa0fb44b8921c215dbc8d51279f",
|
||||
"support"
|
||||
],
|
||||
"interfaces/web-share.idl": [
|
||||
|
@ -631661,7 +631855,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/webrtc.idl": [
|
||||
"4b5d1c1c581869cdfcefab4584c2b05b2dcb1f86",
|
||||
"b18d4ac2b46e2b9924820ab227d21b78a86fa349",
|
||||
"support"
|
||||
],
|
||||
"interfaces/webusb.idl": [
|
||||
|
@ -631673,7 +631867,7 @@
|
|||
"support"
|
||||
],
|
||||
"interfaces/webxr.idl": [
|
||||
"9b48a0f904026752510d90e05b85652062d87088",
|
||||
"f9bfdce58425350d1404c4beaac719e04c94a498",
|
||||
"support"
|
||||
],
|
||||
"interfaces/worklets.idl": [
|
||||
|
@ -631808,6 +632002,10 @@
|
|||
"295bbf047e6523313ce74f2e383ed769c0d5c81b",
|
||||
"support"
|
||||
],
|
||||
"intersection-observer/root-margin-root-element.html": [
|
||||
"6016d45bdf52ab8455ff20edc7da8fdcef3a24b9",
|
||||
"testharness"
|
||||
],
|
||||
"intersection-observer/root-margin-rounding.html": [
|
||||
"f5e33230199eb77a16f8fe99eeb1c9c1618c3e19",
|
||||
"testharness"
|
||||
|
@ -632360,6 +632558,26 @@
|
|||
"9524d275e479ba2db2aaaab9fdbc1203c79009cb",
|
||||
"support"
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction-overall-ref.html": [
|
||||
"1f823e5b0c359cb5347ee0d1165571ee8286753b",
|
||||
"support"
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction-overall.html": [
|
||||
"7f377e540f4388088a401fb6995947d488d3f76f",
|
||||
"reftest"
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction-token-ref.html": [
|
||||
"95f182bc8c716e84e1e76cfce7013a16cf4c5ada",
|
||||
"support"
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction-token.html": [
|
||||
"a02793cc84ac61c814b6f884869ae8a920a2b748",
|
||||
"reftest"
|
||||
],
|
||||
"mathml/presentation-markup/direction/direction.html": [
|
||||
"05ea8b74fb5fcdeb994cfc6d80dc88d2cd8ccde4",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/presentation-markup/fractions/frac-1.html": [
|
||||
"6b9fb2844298cbc228f91a23c6439e0f67f4f20b",
|
||||
"testharness"
|
||||
|
@ -633217,7 +633435,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"media-source/mediasource-play.html": [
|
||||
"62fb04681ae2feffcf568b14548811baf3ea3037",
|
||||
"2129b8f4730fcba72d27958016355887e36c6ff9",
|
||||
"testharness"
|
||||
],
|
||||
"media-source/mediasource-preload.html": [
|
||||
|
@ -633837,7 +634055,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mediacapture-streams/MediaStream-MediaElement-firstframe.https.html": [
|
||||
"1c6292458865bdeb3cfb5a64a7d4e4c9c215c866",
|
||||
"714ae01b19ccc23dad2d601a8843adc44bb7b842",
|
||||
"testharness"
|
||||
],
|
||||
"mediacapture-streams/MediaStream-MediaElement-preload-none-manual.https.html": [
|
||||
|
@ -633845,7 +634063,7 @@
|
|||
"manual"
|
||||
],
|
||||
"mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [
|
||||
"4b9a3c8246d04aafff5877fc78001a5f9d00f82d",
|
||||
"3b16006e0f52ca966c0298bef59a10a19e4038a3",
|
||||
"testharness"
|
||||
],
|
||||
"mediacapture-streams/MediaStream-add-audio-track.https.html": [
|
||||
|
@ -633957,7 +634175,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mediasession/setactionhandler.html": [
|
||||
"dc7c3359e122db46f93aad4ef91daed1495f36ec",
|
||||
"06d145b37d1603680ef61de4b2953f5bfc4ed650",
|
||||
"testharness"
|
||||
],
|
||||
"mimesniff/META.yml": [
|
||||
|
@ -658413,7 +658631,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"service-workers/service-worker/fetch-event-async-respond-with.https.html": [
|
||||
"ae64fcb9a5445843afb75679d0dafa45a3366677",
|
||||
"d9147f85494c21e54d39a4fd7af16efa1a126384",
|
||||
"testharness"
|
||||
],
|
||||
"service-workers/service-worker/fetch-event-is-history-backward-navigation-manual.https.html": [
|
||||
|
@ -665504,6 +665722,14 @@
|
|||
"7cbf68d39a05d9b3e27f2613b65eaf64f63ed54b",
|
||||
"reftest"
|
||||
],
|
||||
"svg/render/reftests/change-sync-for-nested-use-ref.html": [
|
||||
"e52fa18d3f305a2933df180dac7f8f331d885b3c",
|
||||
"support"
|
||||
],
|
||||
"svg/render/reftests/change-sync-for-nested-use.html": [
|
||||
"9a6e13435094eabc055d451e05de58c80c4fe679",
|
||||
"reftest"
|
||||
],
|
||||
"svg/render/reftests/filter-effects-on-pattern-ref.html": [
|
||||
"a61f17bf199374af3b6d106d3f5a72bc532449b8",
|
||||
"support"
|
||||
|
@ -666489,11 +666715,11 @@
|
|||
"support"
|
||||
],
|
||||
"tools/lint/lint.py": [
|
||||
"6a71dc860feb47d7c57df48a0fbfb12791f7b9f7",
|
||||
"062c6a42d0f91836aaba5b308854ea6b5896b9aa",
|
||||
"support"
|
||||
],
|
||||
"tools/lint/rules.py": [
|
||||
"685bac3474ecf00a22e130dae78d3e6d384dc877",
|
||||
"9b78f3495b2291044243170c54af5c3cd6b61046",
|
||||
"support"
|
||||
],
|
||||
"tools/lint/tests/__init__.py": [
|
||||
|
@ -666641,7 +666867,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/lint/tests/test_path_lints.py": [
|
||||
"9f6f49e14a12e65979b7fcccc70e405cda213afb",
|
||||
"558b0ed4f648f41e7888d33b04c97bce720ca5da",
|
||||
"support"
|
||||
],
|
||||
"tools/localpaths.py": [
|
||||
|
@ -671349,7 +671575,7 @@
|
|||
"support"
|
||||
],
|
||||
"tools/wptrunner/setup.py": [
|
||||
"0a16aa537b33b211622ef7799c149a135c7c4660",
|
||||
"ab96bd10357cd6b3022364d471e5cebf0cb652dd",
|
||||
"support"
|
||||
],
|
||||
"tools/wptrunner/test/metadata/testharness/firefox/__dir__.ini": [
|
||||
|
@ -672292,6 +672518,10 @@
|
|||
"6a9329b3fbf2fdfb4f00ce2acde7c38d6843d92f",
|
||||
"testharness"
|
||||
],
|
||||
"trusted-types/Element-insertAdjacentText.tentative.html": [
|
||||
"f6221362c17d6231e0921d866b1cdc642fea9d39",
|
||||
"testharness"
|
||||
],
|
||||
"trusted-types/Element-outerHTML.tentative.html": [
|
||||
"c8daddfe9955196bf0b69410263cb7c01e473e5e",
|
||||
"testharness"
|
||||
|
@ -672456,6 +672686,10 @@
|
|||
"c66a16d5c00535c3def556afc5daff3a7614c62c",
|
||||
"testharness"
|
||||
],
|
||||
"trusted-types/block-text-node-insertion-into-script-element.tentative.html": [
|
||||
"a6aa061f7307330e027c3e8b26e6b931cee2bb7c",
|
||||
"testharness"
|
||||
],
|
||||
"trusted-types/idlharness.window.js": [
|
||||
"de13697764ed487060de3dd425cd39cba73ff13b",
|
||||
"testharness"
|
||||
|
@ -675189,7 +675423,7 @@
|
|||
"support"
|
||||
],
|
||||
"web-nfc/NFCErrorEvent_constructor.https.html": [
|
||||
"8a08fe0a70edaebb542a4d2ec3f033476fc8b865",
|
||||
"1cc9ce160be46955a9b15485ee4c040605722961",
|
||||
"testharness"
|
||||
],
|
||||
"web-nfc/NFCReader-manual.https.html": [
|
||||
|
@ -675229,11 +675463,11 @@
|
|||
"manual"
|
||||
],
|
||||
"web-nfc/NFCReadingEvent_constructor.https.html": [
|
||||
"6cfcc0d3bddae2430152504fce839d1b96b12ce0",
|
||||
"460e92b2508ba438a058d5ce9ab34db0d24349cf",
|
||||
"testharness"
|
||||
],
|
||||
"web-nfc/NFCWriter_push.https.html": [
|
||||
"5badeb4083855549c9d9f241391ac6e0948f01e2",
|
||||
"b1559b30fec513aaa5b8fa46f104c98388fcf166",
|
||||
"testharness"
|
||||
],
|
||||
"web-nfc/NFCWriter_push_signal-manual.https.html": [
|
||||
|
@ -675241,7 +675475,7 @@
|
|||
"manual"
|
||||
],
|
||||
"web-nfc/idlharness.https.window.js": [
|
||||
"ab0d6cd191a5b576674c0c038087ef17ece4cdfd",
|
||||
"c19458aed83f505472e35c8f3affa3247a814989",
|
||||
"testharness"
|
||||
],
|
||||
"web-nfc/nfc_hw_disabled-manual.https.html": [
|
||||
|
@ -678449,7 +678683,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"webrtc/idlharness.https.window.js": [
|
||||
"66abc25b0840335f8de783c010796942793fb14f",
|
||||
"85fc7a68b9dff83ce4470b6caa2986932af43b75",
|
||||
"testharness"
|
||||
],
|
||||
"webrtc/legacy/README.txt": [
|
||||
|
@ -680689,7 +680923,7 @@
|
|||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up-ref.html": [
|
||||
"4be9d6a5c1ca78bbad01a26ea76889654ff5aeba",
|
||||
"17222bdc7b3cf03cbdc99959c718158860fcf8c6",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html": [
|
||||
|
@ -680705,7 +680939,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_partially_move_up-ref.html": [
|
||||
"d6117b32571459c889503778771016e9347f2b1a",
|
||||
"22a711af6878bdaf8f9e7ee6d574a6de84c3a788",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_partially_move_up.html": [
|
||||
|
@ -680745,7 +680979,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html": [
|
||||
"9f79bf8e3bf65e1b17ce5acde44217f08196001c",
|
||||
"c37ae7a7dfadd9481102eb542c7d9b10e5baa323",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html": [
|
||||
|
@ -680753,7 +680987,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html": [
|
||||
"cc52e2db73324327c199558ea3ddd963fb01bdc3",
|
||||
"108495e4b00e52a78a83975f064e6d86ad9a08ba",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html": [
|
||||
|
@ -680761,7 +680995,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html": [
|
||||
"02a7ae458494cbd6aed63cc55b928d3085dd62f7",
|
||||
"296369332cf8f542e14548a9b7d884ea810b2634",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html": [
|
||||
|
@ -680769,7 +681003,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html": [
|
||||
"d67f0a8c04ae82ba6aaee98e0c0ff3aaaa8002a2",
|
||||
"55aed284b7a5560b70f5634cf7e7b0ab79852087",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html": [
|
||||
|
@ -680785,7 +681019,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [
|
||||
"70b32cfc9bad2f67d17081aa76d67164bad5f41c",
|
||||
"eee75f138fdef2d3745f6ce99313c056d45073a7",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [
|
||||
|
@ -680801,7 +681035,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_start_wrapped-ref.html": [
|
||||
"d3c28fc36194293611c614cbb9525a6c943c31f0",
|
||||
"45cb287e2f6c8b38731f91bc635d040e5709931f",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/align_start_wrapped.html": [
|
||||
|
@ -680832,6 +681066,14 @@
|
|||
"ed2b2e019d6ffb57134e93c18bc1a533e2c386a0",
|
||||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/start_alignment-ref.html": [
|
||||
"78ca8979c95a31196d67a16c52ddc49a781cacef",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/start_alignment.html": [
|
||||
"2b6cd76c20109c39c2a5ed06540a92c782f639b1",
|
||||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/bidi/u002E_LF_u05D0-ref.html": [
|
||||
"3c968da7c2920fe2efb4d2eb8edd23f417548d82",
|
||||
"support"
|
||||
|
@ -681149,11 +681391,11 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/navigate_cue_position-1.html": [
|
||||
"0139f0c8339554bc53274c50bebd43500a71c757",
|
||||
"87f3834e3d788ac998993c996876e761cc0b3b4f",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/navigate_cue_position-ref-1.html": [
|
||||
"fb954a42302781824e320b3ad77f89a38c730895",
|
||||
"5ee98043ec2da7042943de2b2ac3e5be79dad5a8",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/navigate_cue_position-ref.html": [
|
||||
|
@ -682637,7 +682879,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/support/2_cues_overlapping_completely_move_up.vtt": [
|
||||
"d4a9679248215d2a23c3e2937e63d2e59c162a84",
|
||||
"1ca56e56f6a8be9c485cb11081c30108573a1b54",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/support/2_cues_overlapping_partially_move_down.vtt": [
|
||||
|
@ -682645,7 +682887,7 @@
|
|||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/support/2_cues_overlapping_partially_move_up.vtt": [
|
||||
"6c99ce3b1fe1ab60d41e1afdfb79bd689cba62f7",
|
||||
"7160f3791ee0cdffd143e29afa8fe869a738b40c",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt": [
|
||||
|
@ -682808,6 +683050,10 @@
|
|||
"b165af1533b0cf1688ce3835eeeaccfe348979df",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/support/start_alignment.vtt": [
|
||||
"9a92729381b3d974ef10dabd720d25f05c984717",
|
||||
"support"
|
||||
],
|
||||
"webvtt/rendering/cues-with-video/processing-model/support/test.vtt": [
|
||||
"ab71ec59840363d72574ca4d3a44e0892a466de3",
|
||||
"support"
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
[text-underline-offset-001.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -0,0 +1,2 @@
|
|||
[backdrop-filter-plus-filter.html]
|
||||
expected: FAIL
|
|
@ -249,9 +249,6 @@
|
|||
[Request: combined response Content-Type: text/html;" " text/plain]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain ]
|
||||
expected: FAIL
|
||||
|
||||
[fetch(): combined response Content-Type: text/plain */*]
|
||||
expected: NOTRUN
|
||||
|
||||
|
@ -312,27 +309,24 @@
|
|||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
[<iframe>: separate response Content-Type: text/plain;charset=gbk text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
[combined x/x;" x/y;\\" text/javascript;charset=windows-1252;" text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[combined x/x text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -38,12 +35,6 @@
|
|||
[separate x/x;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript; charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[combined text/javascript;charset=windows-1252 x/x text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -62,9 +53,9 @@
|
|||
[separate text/javascript;" x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,3 +11,9 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20no%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
[Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[traverse_the_history_4.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,24 @@
|
|||
[open-features-negative-innerwidth-innerheight.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=-404.5" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=-404.5" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=-404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=-404e1" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=-404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=-404e1" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,24 @@
|
|||
[open-features-negative-screenx-screeny.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=-204" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=-204" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=-204.5" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=-0" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=-0" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=-204.5" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,24 @@
|
|||
[open-features-negative-top-left.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for `top`, `left`]
|
||||
expected: FAIL
|
||||
|
||||
[features "top=-204" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "top=-204.5" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=-204" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "top=-0" should NOT set "top=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=-204.5" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=-0" should NOT set "left=204"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,24 @@
|
|||
[open-features-negative-width-height.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for `width`, `height`]
|
||||
expected: FAIL
|
||||
|
||||
[features "height=-404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=-404e1" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=-404.5" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=-404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=-404e1" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=-404.5" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,32 +1,48 @@
|
|||
[open-features-non-integer-height.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `height`]
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405*3" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=405.32" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=405e1" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=405/5" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=405^4" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=405.5" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=405e-1" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=405 " should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=405LLl" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=/404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[top=0,left=0: absence of feature "height" should be treated same as "height=0"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=_404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "height=L404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,32 +1,42 @@
|
|||
[open-features-non-integer-innerheight.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405e-1" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=405LLl" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=405^4" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=405e1" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=405 " should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=405/5" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=405.32" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=405.5" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=405*3" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=_404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=L404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerheight=/404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,32 +1,42 @@
|
|||
[open-features-non-integer-innerwidth.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405e-1" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=405*3" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=405.5" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=405e1" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=405.32" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=405 " should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=405LLl" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=405/5" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=405^4" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=/404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=_404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "innerwidth=L404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,32 +1,42 @@
|
|||
[open-features-non-integer-left.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `left`]
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105e1" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=105 " should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=105/5" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=105e-1" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=105^4" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=105LLl" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=105.32" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=105*3" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=105.5" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=L104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=/104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "left=_104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,32 +1,42 @@
|
|||
[open-features-non-integer-screenx.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105.5" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=105e1" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=105 " should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=105*3" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=105e-1" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=105^4" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=105LLl" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=105/5" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=105.32" should set "left=105"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=_104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=L104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screenx=/104" should NOT set "left=104"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,32 +1,42 @@
|
|||
[open-features-non-integer-screeny.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405^4" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=405e-1" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=405LLl" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=405e1" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=405 " should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=405/5" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=405*3" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=405.32" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=405.5" should set "height=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=_404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=L404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "screeny=/404" should NOT set "height=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,32 +1,48 @@
|
|||
[open-features-non-integer-width.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `width`]
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405^4" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=405.5" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=405e1" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=405 " should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=405.32" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=405LLl" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=405*3" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=405e-1" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=405/5" should set "width=405"]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[top=0,left=0: absence of feature "width" should be treated same as "width=0"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=_404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=/404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[features "width=L404" should NOT set "width=404"]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -40,4 +40,3 @@
|
|||
|
||||
[test_height_width_larger_than_max]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -1,2 +0,0 @@
|
|||
[transition_calc_implicit.html]
|
||||
expected: TIMEOUT
|
|
@ -21,7 +21,7 @@ jobs:
|
|||
# The affected tests jobs are unconditional for speed, as most PRs have one or
|
||||
# more affected tests: https://github.com/web-platform-tests/wpt/issues/13936.
|
||||
- job: affected_safari_preview
|
||||
displayName: 'affected tests (Safari Technology Preview)'
|
||||
displayName: 'affected tests: Safari Technology Preview'
|
||||
condition: eq(variables['Build.Reason'], 'PullRequest')
|
||||
pool:
|
||||
vmImage: 'macOS-10.13'
|
||||
|
@ -35,7 +35,7 @@ jobs:
|
|||
artifactName: safari-preview-affected-tests
|
||||
|
||||
- job: affected_without_changes_safari_preview
|
||||
displayName: 'affected tests without changes (Safari Technology Preview)'
|
||||
displayName: 'affected tests without changes: Safari Technology Preview'
|
||||
condition: eq(variables['Build.Reason'], 'PullRequest')
|
||||
pool:
|
||||
vmImage: 'macOS-10.13'
|
||||
|
@ -68,7 +68,7 @@ jobs:
|
|||
displayName: 'Run ./wpt test-jobs'
|
||||
|
||||
- job: infrastructure_macOS
|
||||
displayName: 'infrastructure/ tests (macOS)'
|
||||
displayName: 'infrastructure/ tests: macOS'
|
||||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wptrunner_infrastructure']
|
||||
pool:
|
||||
|
@ -86,11 +86,11 @@ jobs:
|
|||
- template: tools/ci/azure/update_hosts.yml
|
||||
- template: tools/ci/azure/update_manifest.yml
|
||||
- script: no_proxy='*' ./wpt run --yes --no-manifest-update --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl $(Build.ArtifactStagingDirectory)/chrome.tbpl.log --log-tbpl-level info --channel dev chrome infrastructure/
|
||||
displayName: 'Run tests (Chrome Dev)'
|
||||
displayName: 'Run tests: Chrome Dev'
|
||||
- script: no_proxy='*' ./wpt run --yes --no-manifest-update --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl $(Build.ArtifactStagingDirectory)/firefox.tbpl.log --log-tbpl-level info --channel nightly firefox infrastructure/
|
||||
displayName: 'Run tests (Firefox Nightly)'
|
||||
displayName: 'Run tests: Firefox Nightly'
|
||||
- script: no_proxy='*' ./wpt run --yes --no-manifest-update --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl $(Build.ArtifactStagingDirectory)/safari.tbpl.log --log-tbpl-level info --channel preview safari infrastructure/
|
||||
displayName: 'Run tests (Safari Technology Preview)'
|
||||
displayName: 'Run tests: Safari Technology Preview'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish results'
|
||||
inputs:
|
||||
|
@ -98,7 +98,7 @@ jobs:
|
|||
condition: always()
|
||||
|
||||
- job: tools_unittest_macOS
|
||||
displayName: 'tools/ unittests (macOS)'
|
||||
displayName: 'tools/ unittests: macOS'
|
||||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
||||
pool:
|
||||
|
@ -111,7 +111,7 @@ jobs:
|
|||
toxenv: py27
|
||||
|
||||
- job: wptrunner_unittest_macOS
|
||||
displayName: 'tools/wptrunner/ unittests (macOS)'
|
||||
displayName: 'tools/wptrunner/ unittests: macOS'
|
||||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest']
|
||||
pool:
|
||||
|
@ -123,7 +123,7 @@ jobs:
|
|||
directory: tools/wptrunner/
|
||||
|
||||
- job: wpt_integration_macOS
|
||||
displayName: 'tools/wpt/ tests (macOS)'
|
||||
displayName: 'tools/wpt/ tests: macOS'
|
||||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wpt_integration']
|
||||
pool:
|
||||
|
@ -139,7 +139,7 @@ jobs:
|
|||
directory: tools/wpt/
|
||||
|
||||
- job: tools_unittest_win
|
||||
displayName: 'tools/ unittests (Windows)'
|
||||
displayName: 'tools/ unittests: Windows'
|
||||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
||||
pool:
|
||||
|
@ -155,7 +155,7 @@ jobs:
|
|||
toxenv: py27
|
||||
|
||||
- job: tools_unittest_win_py3
|
||||
displayName: 'tools/ unittests (Windows Python 3)'
|
||||
displayName: 'tools/ unittests: Windows Python 3'
|
||||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.tools_unittest']
|
||||
pool:
|
||||
|
@ -171,7 +171,7 @@ jobs:
|
|||
toxenv: py36
|
||||
|
||||
- job: wptrunner_unittest_win
|
||||
displayName: 'tools/wptrunner/ unittests (Windows)'
|
||||
displayName: 'tools/wptrunner/ unittests: Windows'
|
||||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wptrunner_unittest']
|
||||
pool:
|
||||
|
@ -186,7 +186,7 @@ jobs:
|
|||
directory: tools/wptrunner/
|
||||
|
||||
- job: wpt_integration_win
|
||||
displayName: 'tools/wpt/ tests (Windows)'
|
||||
displayName: 'tools/wpt/ tests: Windows'
|
||||
dependsOn: decision
|
||||
condition: dependencies.decision.outputs['test_jobs.wpt_integration']
|
||||
pool:
|
||||
|
@ -207,7 +207,7 @@ jobs:
|
|||
directory: tools/wpt/
|
||||
|
||||
- job: infrastructure_win10
|
||||
displayName: 'infrastructure/ tests (Windows 10)'
|
||||
displayName: 'infrastructure/ tests: Windows 10'
|
||||
# This job is only triggered manually until it has been shown to be robust.
|
||||
condition: and(eq(variables['Build.Reason'], 'Manual'), variables['run_infrastructure_win10'])
|
||||
pool:
|
||||
|
@ -224,7 +224,7 @@ jobs:
|
|||
- template: tools/ci/azure/update_hosts.yml
|
||||
- template: tools/ci/azure/update_manifest.yml
|
||||
- script: python ./wpt run --yes --no-manifest-update --install-fonts --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl $(Build.ArtifactStagingDirectory)/edge.tbpl.log --log-tbpl-level info --channel dev edgechromium infrastructure/
|
||||
displayName: 'Run tests (Edge Dev)'
|
||||
displayName: 'Run tests: Edge Dev'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish results'
|
||||
inputs:
|
||||
|
@ -235,7 +235,7 @@ jobs:
|
|||
# All `./wpt run` tests are run from epochs/* branches on a schedule. See
|
||||
# documentation at the top of this file for required setup.
|
||||
- job: results_edge
|
||||
displayName: 'all tests (Edge)'
|
||||
displayName: 'all tests: Edge'
|
||||
condition: |
|
||||
or(eq(variables['Build.Reason'], 'Schedule'),
|
||||
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge']))
|
||||
|
@ -257,7 +257,7 @@ jobs:
|
|||
- template: tools/ci/azure/update_hosts.yml
|
||||
- template: tools/ci/azure/update_manifest.yml
|
||||
- script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --channel dev edgechromium
|
||||
displayName: 'Run tests (Edge Dev)'
|
||||
displayName: 'Run tests: Edge Dev'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish results'
|
||||
inputs:
|
||||
|
@ -269,7 +269,7 @@ jobs:
|
|||
artifactName: edge-results
|
||||
|
||||
- job: results_safari
|
||||
displayName: 'all tests (Safari)'
|
||||
displayName: 'all tests: Safari'
|
||||
condition: |
|
||||
or(eq(variables['Build.Reason'], 'Schedule'),
|
||||
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_safari']))
|
||||
|
@ -305,7 +305,7 @@ jobs:
|
|||
artifactName: safari-results
|
||||
|
||||
- job: results_safari_preview
|
||||
displayName: 'all tests (Safari Technology Preview)'
|
||||
displayName: 'all tests: Safari Technology Preview'
|
||||
condition: |
|
||||
or(eq(variables['Build.Reason'], 'Schedule'),
|
||||
and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_safari_preview']))
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<meta name="assert" content="This test checks the behavior of the absolutely positioned elements with a grid container as containing block.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link rel="stylesheet" href="support/grid.css">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<meta name="assert" content="This test checks the behavior of the absolutely positioned elements with a grid container as parent.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link rel="stylesheet" href="support/grid.css">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<link rel="match" href="grid-positioned-children-writing-modes-001-ref.html">
|
||||
<meta name="assert" content="This test checks the behavior of the positioned grid children in combination with the writing modes and text direction properties.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link rel="stylesheet" href="support/grid.css">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<link rel="match" href="grid-positioned-items-background-001-ref.html">
|
||||
<meta name="assert" content="This test checks that the background of positioned items is painted in the right position">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link rel="stylesheet" href="support/grid.css">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<link rel="match" href="grid-positioned-items-background-rtl-001-ref.html">
|
||||
<meta name="assert" content="This test checks that the background of positioned items is painted in the right position using RTL direction.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link rel="stylesheet" href="support/grid.css">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#implicit-grids" title="7.5. The Implicit Grid">
|
||||
<meta name="assert" content="This test checks the behavior of the absolutely positioned grid items placed on the implicit grid.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link rel="stylesheet" href="support/grid.css">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#implicit-grids" title="7.5. The Implicit Grid">
|
||||
<meta name="assert" content="This test checks that grid placement properties of absolutely positioned items using implicit grid lines are treated as 'auto'.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link rel="stylesheet" href="support/grid.css">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<meta name="assert" content="This test checks that grid placement properties of absolutely positioned items can reference implicit grid lines.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link rel="stylesheet" href="support/grid.css">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<meta name="assert" content="This test checks the different size options for absolutely positioned grid items.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link href="support/grid.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<meta name="assert" content="This test checks that positioned items shouldn't create implicit tracks on the grid.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link href="support/grid.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#abspos" title="9. Absolute Positioning">
|
||||
<meta name="assert" content="This test checks that positioned items shouldn't take up space or otherwise participate in the layout of the grid.">
|
||||
<link rel="stylesheet" href="/fonts/ahem.css">
|
||||
<link href="support/grid.css" rel="stylesheet">
|
||||
<style>
|
||||
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
<!DOCTYPE html>
|
||||
<title>CSS Overflow and Transforms: css-overflow-3</title>
|
||||
<link rel="author" href="mailto:atotic@google.com">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-overflow-3/#scrollable">
|
||||
<meta name="assert" content="blocks wholly outside padding edges should not contribute to overflow">
|
||||
<style>
|
||||
.container {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border: 5px solid rgba(0,0,0,0.5);
|
||||
border-width: 0px 0px 50px 80px;
|
||||
overflow: auto;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
background: gray;
|
||||
}
|
||||
.target {
|
||||
position: absolute;
|
||||
width: 1000px;
|
||||
height: 1000px;
|
||||
background: red;
|
||||
}
|
||||
.htb {
|
||||
writing-mode: horizontal-tb;
|
||||
}
|
||||
.vrl {
|
||||
writing-mode: vertical-rl;
|
||||
}
|
||||
.vlr {
|
||||
writing-mode: vertical-lr;
|
||||
}
|
||||
.rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
</style>
|
||||
<!-- -->
|
||||
<div class="container htb">
|
||||
<div class="target" style="top: -1000px"></div>
|
||||
htb
|
||||
</div>
|
||||
<div class="container htb rtl">
|
||||
<div class="target" style="right: -1000px" ></div>
|
||||
htb rtl
|
||||
</div>
|
||||
<div class="container vrl">
|
||||
<div class="target" style="top: -1000px"></div>
|
||||
vrl
|
||||
</div>
|
||||
<div class="container vrl rtl">
|
||||
<div class="target" style="bottom: -1000px"></div>
|
||||
vrl rtl
|
||||
</div>
|
||||
<div class="container vlr">
|
||||
<div class="target" style="top: -1000px"></div>
|
||||
vlr
|
||||
</div>
|
||||
<div class="container vlr rtl">
|
||||
<div class="target" style="left: -1000px"></div>
|
||||
vlr rtl
|
||||
</div>
|
||||
<script>
|
||||
test(() => {
|
||||
Array.from(document.querySelectorAll(".container")).forEach( el => {
|
||||
assert_equals(el.scrollWidth, 200);
|
||||
});
|
||||
}, '#target did not trigger scroll overflow');
|
||||
</script>
|
|
@ -0,0 +1,32 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Non-reference case for text-underline-offset</title>
|
||||
<style>
|
||||
#main {
|
||||
margin: 2em;
|
||||
display:flex
|
||||
}
|
||||
div span {
|
||||
text-decoration: green underline;
|
||||
font: 20px/1 Ahem;
|
||||
color: transparent;
|
||||
padding-bottom: 20px;
|
||||
border: 1px dotted transparent;
|
||||
border-bottom-color: cyan;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p class="instructions">Test passes if the box on the right has a lower underline than the box on the left</p>
|
||||
<div id="main">
|
||||
<div>
|
||||
<p>left<span>XXXX</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p><span id="rightbox">XXXX</span>right</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Reference case for text-underline-offset</title>
|
||||
<style>
|
||||
#main{
|
||||
border-bottom: 1px solid cyan;
|
||||
display: flex;
|
||||
}
|
||||
#text, #norm{
|
||||
text-decoration: green underline;
|
||||
text-underline-offset: 0px;
|
||||
font: 20px/1 Ahem;
|
||||
color: transparent;
|
||||
position: relative;
|
||||
top: 21px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body >
|
||||
<p class="instructions">Test passes if the lines are at the same level</p>
|
||||
<div id="main">
|
||||
<div>
|
||||
<p>left<span id="text">XXXX</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p><span id="norm">XXXX</span>right</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,40 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>text-underline-offset test case</title>
|
||||
<meta name="assert" content="text-decoration:underline; there is a line at or under the alphabetic baseline">
|
||||
<link rel="author" title="Charlie Marlow" href="mailto:cmarlow@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
|
||||
<link rel="mismatch" href="reference/text-underline-offset-001-notref.html">
|
||||
<style>
|
||||
#main {
|
||||
margin: 2em;
|
||||
display:flex
|
||||
}
|
||||
div span {
|
||||
text-decoration: green underline;
|
||||
font: 20px/1 Ahem;
|
||||
color: transparent;
|
||||
padding-bottom: 20px;
|
||||
border: 1px dotted transparent;
|
||||
border-bottom-color: cyan;
|
||||
}
|
||||
#rightbox {
|
||||
text-underline-offset: -24px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p class="instructions">Test passes if the box on the right has a lower underline than the box on the left</p>
|
||||
<div id="main">
|
||||
<div>
|
||||
<p>left<span>XXXX</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p><span id="rightbox">XXXX</span>right</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,43 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test case for text-underline-offset</title>
|
||||
<link rel="author" title="Charlie Marlow" href="mailto:cmarlow@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-offset">
|
||||
<link rel="match" href="reference/text-underline-offset-002-ref.html">
|
||||
<style>
|
||||
#main{
|
||||
border-bottom: 1px solid cyan;
|
||||
display: flex;
|
||||
}
|
||||
#text, #norm{
|
||||
text-decoration: green underline;
|
||||
font: 20px/1 Ahem;
|
||||
color: transparent;
|
||||
position: relative;
|
||||
margin-right: 10px;
|
||||
}
|
||||
#text{
|
||||
top: 10px;
|
||||
text-underline-offset: -11px;
|
||||
}
|
||||
#norm{
|
||||
top: 21px;
|
||||
text-underline-offset: 0px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body >
|
||||
<p class="instructions">Test passes if the lines are at the same level</p>
|
||||
<div id="main">
|
||||
<div>
|
||||
<p>left<span id="text">XXXX</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p><span id="norm">XXXX</span>right</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,26 @@
|
|||
<!doctype html>
|
||||
<title>getComputedStyle() round-trips in presence of scrollbars.</title>
|
||||
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
|
||||
<link rel="author" href="https://mozilla.org" title="Mozilla">
|
||||
<link rel="help" href="https://drafts.csswg.org/cssom/#resolved-value">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<div style="width: 100px; height: 100px; overflow: scroll"></div>
|
||||
<script>
|
||||
// NOTE(emilio): This is a .tentative.html because the spec is not clear on
|
||||
// what the used value of `width` or `height` is, but I think this behavior
|
||||
// should be uncontroversial.
|
||||
test(function() {
|
||||
let e = document.querySelector("div");
|
||||
let cs = getComputedStyle(e);
|
||||
|
||||
let originalWidth = cs.width;
|
||||
let originalHeight = cs.height;
|
||||
|
||||
e.style.width = originalWidth;
|
||||
e.style.height = originalHeight;
|
||||
|
||||
assert_equals(cs.width, originalWidth, "width round-trips");
|
||||
assert_equals(cs.height, originalHeight, "height round-trips");
|
||||
}, "getComputedStyle() round-trips in presence of scrollbars")
|
||||
</script>
|
|
@ -0,0 +1,62 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>backdrop-filter: Filter input is at element bounds</title>
|
||||
<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty">
|
||||
<link rel="match" href="backdrop-filter-paint-order-ref.html">
|
||||
|
||||
<div>
|
||||
<p>Expected: A pure white box with a blue border, surrounded by green.<br>
|
||||
No green should be observed within the white box.<br>
|
||||
No dark/black should be observed within the white box either.</p>
|
||||
</div>
|
||||
|
||||
<div class="greenbox top"></div>
|
||||
<div class="greenbox right"></div>
|
||||
<div class="greenbox bottom"></div>
|
||||
<div class="filterbox">
|
||||
<div class="children" style="top:-31px;left:35px;"></div>
|
||||
<div class="children" style="top:101px;left:35px;"></div>
|
||||
<div class="children" style="top:35px;left:101px;"></div>
|
||||
<div class="children" style="top:35px;left:-31px;"></div>
|
||||
</div>
|
||||
<style>
|
||||
.filterbox {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
top: 150px;
|
||||
left: 0px;
|
||||
border: 1px solid blue;
|
||||
backdrop-filter: blur(20px);
|
||||
}
|
||||
.greenbox {
|
||||
position:absolute;
|
||||
width: 150px;
|
||||
height: 50px;
|
||||
background: green;
|
||||
}
|
||||
.top {
|
||||
top:100px;
|
||||
left: 10px;
|
||||
}
|
||||
.right {
|
||||
top:130px;
|
||||
left: 102px;
|
||||
width: 58px;
|
||||
height: 150px;
|
||||
}
|
||||
.bottom {
|
||||
top:252px;
|
||||
left: 10px;
|
||||
}
|
||||
.children {
|
||||
position: absolute;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>backdrop-filter: Only filter objects painted before</title>
|
||||
<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
|
||||
|
||||
|
||||
|
||||
<p>Expected: A green box with an overlapping purple box.<br>
|
||||
The overlapping portion of the boxes should be bright magenta.<br>
|
||||
|
||||
<div class="container">
|
||||
<div class="orangebox"></div>
|
||||
<div class="bluebox blur-bd"></div>
|
||||
<div class="invert"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<style>
|
||||
div {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.container {
|
||||
width:200px;
|
||||
height:200px;
|
||||
top: 50px;
|
||||
position:absolute;
|
||||
}
|
||||
.blur-bd {
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
.orangebox {
|
||||
left: 10px;
|
||||
top: 50px;
|
||||
background: green;
|
||||
}
|
||||
.bluebox {
|
||||
left: 60px;
|
||||
top: 110px;
|
||||
background: #00ff0055;
|
||||
}
|
||||
.invert {
|
||||
left: 60px;
|
||||
top: 110px;
|
||||
background: transparent;
|
||||
backdrop-filter: invert(1);
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,45 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>backdrop-filter: Correctly apply filters to backdrop-filter content</title>
|
||||
<link rel="author" title="Mason Freed" href="mailto:masonfreed@chromium.org">
|
||||
<link rel="help" href="https://drafts.fxtf.org/filter-effects-2/#BackdropFilterProperty">
|
||||
<link rel="match" href="backdrop-filter-plus-filter-ref.html">
|
||||
|
||||
<p>Expected: A green box with an overlapping purple box.<br>
|
||||
The overlapping portion of the boxes should be bright magenta.<br>
|
||||
|
||||
<div class="container">
|
||||
<div class="orangebox"></div>
|
||||
<div class="bluebox blur blur-bd"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<style>
|
||||
div {
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.container {
|
||||
width:200px;
|
||||
height:200px;
|
||||
top: 50px;
|
||||
position:absolute;
|
||||
}
|
||||
.blur {
|
||||
filter: invert(1);
|
||||
}
|
||||
.blur-bd {
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
.orangebox {
|
||||
left: 10px;
|
||||
top: 50px;
|
||||
background: green;
|
||||
}
|
||||
.bluebox {
|
||||
left: 60px;
|
||||
top: 110px;
|
||||
background: #00ff0055;
|
||||
}
|
||||
</style>
|
|
@ -10,12 +10,12 @@
|
|||
}
|
||||
.cue {
|
||||
position: absolute;
|
||||
top: 48px;
|
||||
top: 30px;
|
||||
left: 0px;
|
||||
font-family: sans-serif;
|
||||
background: green;
|
||||
color: rgba(255, 255, 255, 1);
|
||||
font-size: 12px;
|
||||
padding: 0px 2px;
|
||||
font-size: 7.5px;
|
||||
}
|
||||
</style>
|
||||
<div class="container">
|
||||
|
@ -26,4 +26,4 @@
|
|||
</video>
|
||||
<span class="cue">Bear is Coming!!!!!</span>
|
||||
</div>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -21,4 +21,4 @@ track.addCue(cue);
|
|||
track.mode = "showing";
|
||||
video.src = getVideoURI("/media/test");
|
||||
</script>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -15,9 +15,11 @@ var cue = new VTTCue(0, 3, "cue 2");
|
|||
cue.line = -2;
|
||||
track.addCue(cue);
|
||||
track.mode = "showing";
|
||||
|
||||
video.onloadeddata = function() {
|
||||
video.play();
|
||||
video.onplaying = function() {
|
||||
video.onplaying=null;
|
||||
video.pause();
|
||||
takeScreenshot();
|
||||
};
|
||||
</script>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -11,20 +11,16 @@
|
|||
// Add two cues, where the first cue ends before the second.
|
||||
var video = document.querySelector("video");
|
||||
var track = video.addTextTrack("captions");
|
||||
track.addCue(new VTTCue(0, 1, "cue 1"));
|
||||
track.addCue(new VTTCue(0, 3, "cue 2"));
|
||||
let cue1 = new VTTCue(-1, 1, "cue 1");
|
||||
track.addCue(cue1);
|
||||
// As video's duration is 10s, it ensures that this cue would always be displayed.
|
||||
track.addCue(new VTTCue(0, 10, "cue 2"));
|
||||
track.mode = "showing";
|
||||
|
||||
video.onloadeddata = function() {
|
||||
// Double nesting of requestAnimationFrame to
|
||||
// make sure cue layout and paint happens.
|
||||
window.requestAnimationFrame(function() {
|
||||
window.requestAnimationFrame(function() {
|
||||
// Seek past the end of the first cue. The second cue should not move.
|
||||
video.currentTime = 2;
|
||||
video.onseeked = function() { takeScreenshot(); };
|
||||
});
|
||||
});
|
||||
video.play();
|
||||
cue1.onexit = () => {
|
||||
cue1.onexit = null;
|
||||
video.pause();
|
||||
takeScreenshot();
|
||||
};
|
||||
</script>
|
||||
</html>
|
||||
</html>
|
||||
|
|
|
@ -81,6 +81,7 @@ dictionary DOMRectInit {
|
|||
unrestricted double height = 0;
|
||||
};
|
||||
|
||||
[Exposed=Window]
|
||||
interface DOMRectList {
|
||||
readonly attribute unsigned long length;
|
||||
getter DOMRect? item(unsigned long index);
|
||||
|
|
|
@ -43,7 +43,7 @@ interface NFCReader : EventTarget {
|
|||
[Constructor(DOMString type, NFCReadingEventInit readingEventInitDict), SecureContext, Exposed=Window]
|
||||
interface NFCReadingEvent : Event {
|
||||
readonly attribute DOMString serialNumber;
|
||||
readonly attribute NDEFMessage message;
|
||||
readonly attribute object message; // NDEFMessage
|
||||
};
|
||||
|
||||
dictionary NFCReadingEventInit : EventInit {
|
||||
|
|
|
@ -612,7 +612,7 @@ dictionary RTCStatsEventInit : EventInit {
|
|||
|
||||
[
|
||||
Exposed=Window,
|
||||
Constructor(RTCErrorInit init, optional DOMString message = "")] interface RTCError {
|
||||
Constructor(RTCErrorInit init, optional DOMString message = "")] interface RTCError : DOMException {
|
||||
readonly attribute RTCErrorDetailType errorDetail;
|
||||
readonly attribute long? sdpLineNumber;
|
||||
readonly attribute long? httpRequestStatusCode;
|
||||
|
|
|
@ -28,9 +28,16 @@ enum XREnvironmentBlendMode {
|
|||
"alpha-blend",
|
||||
};
|
||||
|
||||
enum XRVisibilityState {
|
||||
"visible",
|
||||
"visible-blurred",
|
||||
"hidden",
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRSession : EventTarget {
|
||||
// Attributes
|
||||
readonly attribute XREnvironmentBlendMode environmentBlendMode;
|
||||
readonly attribute XRVisibilityState visibilityState;
|
||||
[SameObject] readonly attribute XRRenderState renderState;
|
||||
[SameObject] readonly attribute XRInputSourceArray inputSources;
|
||||
|
||||
|
@ -44,29 +51,26 @@ enum XREnvironmentBlendMode {
|
|||
Promise<void> end();
|
||||
|
||||
// Events
|
||||
attribute EventHandler onblur;
|
||||
attribute EventHandler onfocus;
|
||||
attribute EventHandler onend;
|
||||
attribute EventHandler onselect;
|
||||
attribute EventHandler oninputsourceschange;
|
||||
attribute EventHandler onselectstart;
|
||||
attribute EventHandler onselectend;
|
||||
attribute EventHandler onvisibilitychange;
|
||||
};
|
||||
|
||||
dictionary XRRenderStateInit {
|
||||
double depthNear;
|
||||
double depthFar;
|
||||
double inlineVerticalFieldOfView;
|
||||
XRLayer? baseLayer;
|
||||
XRPresentationContext? outputContext;
|
||||
XRWebGLLayer? baseLayer;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRRenderState {
|
||||
readonly attribute double depthNear;
|
||||
readonly attribute double depthFar;
|
||||
readonly attribute double? inlineVerticalFieldOfView;
|
||||
readonly attribute XRLayer? baseLayer;
|
||||
readonly attribute XRPresentationContext? outputContext;
|
||||
readonly attribute XRWebGLLayer? baseLayer;
|
||||
};
|
||||
|
||||
callback XRFrameRequestCallback = void (DOMHighResTimeStamp time, XRFrame frame);
|
||||
|
@ -182,8 +186,6 @@ enum GamepadMappingType {
|
|||
"xr-standard",
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRLayer {};
|
||||
|
||||
typedef (WebGLRenderingContext or
|
||||
WebGL2RenderingContext) XRWebGLRenderingContext;
|
||||
|
||||
|
@ -199,7 +201,7 @@ dictionary XRWebGLLayerInit {
|
|||
[SecureContext, Exposed=Window, Constructor(XRSession session,
|
||||
XRWebGLRenderingContext context,
|
||||
optional XRWebGLLayerInit layerInit)]
|
||||
interface XRWebGLLayer : XRLayer {
|
||||
interface XRWebGLLayer {
|
||||
// Attributes
|
||||
[SameObject] readonly attribute XRWebGLRenderingContext context;
|
||||
|
||||
|
@ -225,10 +227,6 @@ partial interface mixin WebGLRenderingContextBase {
|
|||
Promise<void> makeXRCompatible();
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window] interface XRPresentationContext {
|
||||
[SameObject] readonly attribute HTMLCanvasElement canvas;
|
||||
};
|
||||
|
||||
[SecureContext, Exposed=Window, Constructor(DOMString type, XRSessionEventInit eventInitDict)]
|
||||
interface XRSessionEvent : Event {
|
||||
[SameObject] readonly attribute XRSession session;
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="./resources/intersection-observer-test-utils.js"></script>
|
||||
|
||||
<style>
|
||||
pre, #log {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 200px;
|
||||
}
|
||||
.spacer {
|
||||
height: calc(100vh + 100px);
|
||||
}
|
||||
#root {
|
||||
display: inline-block;
|
||||
overflow-y: scroll;
|
||||
height: 200px;
|
||||
border: 3px solid black;
|
||||
}
|
||||
#target {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background-color: green;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="spacer"></div>
|
||||
<div id="root">
|
||||
<div style="height: 300px;"></div>
|
||||
<div id="target"></div>
|
||||
</div>
|
||||
<div class="spacer"></div>
|
||||
|
||||
<script>
|
||||
var vw = document.documentElement.clientWidth;
|
||||
var vh = document.documentElement.clientHeight;
|
||||
|
||||
var entries = [];
|
||||
var root, target;
|
||||
|
||||
runTestCycle(function() {
|
||||
target = document.getElementById("target");
|
||||
assert_true(!!target, "target exists");
|
||||
root = document.getElementById("root");
|
||||
assert_true(!!root, "root exists");
|
||||
var observer = new IntersectionObserver(function(changes) {
|
||||
entries = entries.concat(changes)
|
||||
}, { root: root, rootMargin: "10px 20% 40% 30px" });
|
||||
observer.observe(target);
|
||||
entries = entries.concat(observer.takeRecords());
|
||||
assert_equals(entries.length, 0, "No initial notifications.");
|
||||
runTestCycle(step0, "First rAF");
|
||||
}, "Root margin with explicit root.");
|
||||
|
||||
function step0() {
|
||||
document.scrollingElement.scrollTop = vh;
|
||||
runTestCycle(step1, "document.scrollingElement.scrollTop = window.innerHeight.");
|
||||
checkLastEntry(entries, 0, [ 11, 111, vh + 411, vh + 511, 0, 0, 0, 0, -19, 131, vh + 101, vh + 391, false]);
|
||||
}
|
||||
|
||||
function step1() {
|
||||
root.scrollTop = 50;
|
||||
runTestCycle(step2, "root.scrollTop = 50, putting target into root margin");
|
||||
assert_equals(entries.length, 1, "No notifications after scrolling frame.");
|
||||
}
|
||||
|
||||
function step2() {
|
||||
document.scrollingElement.scrollTop = 0;
|
||||
runTestCycle(step3, "document.scrollingElement.scrollTop = 0.");
|
||||
checkLastEntry(entries, 1, [11, 111, 361, 461, 11, 111, 361, 391, -19, 131, 101, 391, true]);
|
||||
}
|
||||
|
||||
function step3() {
|
||||
root.scrollTop = 0;
|
||||
runTestCycle(step4, "root.scrollTop = 0");
|
||||
checkLastEntry(entries, 1);
|
||||
}
|
||||
|
||||
function step4() {
|
||||
root.scrollTop = 50;
|
||||
runTestCycle(step5, "root.scrollTop = 50 with root scrolled out of view.");
|
||||
checkLastEntry(entries, 2, [ 11, 111, vh + 411, vh + 511, 0, 0, 0, 0, -19, 131, vh + 101, vh + 391, false]);
|
||||
}
|
||||
|
||||
// This tests that notifications are generated even when the root element is off screen.
|
||||
function step5() {
|
||||
checkLastEntry(entries, 3, [11, 111, vh + 361, vh + 461, 11, 111, vh + 361, vh + 391, -19, 131, vh + 101, vh + 391, true]);
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>Verify dir attribute on various containers</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
math:
|
||||
<math>
|
||||
<mspace width="25px" height="25px" mathbackground="blue"/>
|
||||
<mspace width="25px" height="25px" mathbackground="green"/>
|
||||
<mspace width="25px" height="25px" mathbackground="red"/>
|
||||
</math>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
mrow:
|
||||
<math>
|
||||
<mrow>
|
||||
<mspace width="25px" height="25px" mathbackground="blue"/>
|
||||
<mspace width="25px" height="25px" mathbackground="green"/>
|
||||
<mspace width="25px" height="25px" mathbackground="red"/>
|
||||
</mrow>
|
||||
</math>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
mstyle:
|
||||
<math>
|
||||
<mstyle>
|
||||
<mspace width="25px" height="25px" mathbackground="blue"/>
|
||||
<mspace width="25px" height="25px" mathbackground="green"/>
|
||||
<mspace width="25px" height="25px" mathbackground="red"/>
|
||||
</mstyle>
|
||||
</math>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
msqrt:
|
||||
<math>
|
||||
<msqrt>
|
||||
<mspace width="25px" height="25px" mathbackground="red"/>
|
||||
<mspace width="25px" height="25px" mathbackground="green"/>
|
||||
<mspace width="25px" height="25px" mathbackground="blue"/>
|
||||
</msqrt>
|
||||
</math>
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,61 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>Verify dir attribute on various containers</title>
|
||||
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#attributes-common-to-html-and-mathml-elements">
|
||||
<meta name="assert" content="Verify dir attribute on various containers.">
|
||||
<link rel="match" href="direction-overall-ref.html">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- Test dir="rtl" on <math>, <mrow> and <mstyle> elements. The rectangle
|
||||
inside these elements should be displayed right-to-left. -->
|
||||
|
||||
<p>
|
||||
math:
|
||||
<math dir="rtl">
|
||||
<mspace width="25px" height="25px" mathbackground="red"/>
|
||||
<mspace width="25px" height="25px" mathbackground="green"/>
|
||||
<mspace width="25px" height="25px" mathbackground="blue"/>
|
||||
</math>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
mrow:
|
||||
<math>
|
||||
<mrow dir="rtl">
|
||||
<mspace width="25px" height="25px" mathbackground="red"/>
|
||||
<mspace width="25px" height="25px" mathbackground="green"/>
|
||||
<mspace width="25px" height="25px" mathbackground="blue"/>
|
||||
</mrow>
|
||||
</math>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
mstyle:
|
||||
<math>
|
||||
<mstyle dir="rtl">
|
||||
<mspace width="25px" height="25px" mathbackground="red"/>
|
||||
<mspace width="25px" height="25px" mathbackground="green"/>
|
||||
<mspace width="25px" height="25px" mathbackground="blue"/>
|
||||
</mstyle>
|
||||
</math>
|
||||
</p>
|
||||
|
||||
<!-- dir="rtl" on <msqrt> should be ignored. The rectangle
|
||||
inside this element should be displayed left-to-right. -->
|
||||
|
||||
<p>
|
||||
msqrt:
|
||||
<math>
|
||||
<msqrt dir="rtl">
|
||||
<mspace width="25px" height="25px" mathbackground="red"/>
|
||||
<mspace width="25px" height="25px" mathbackground="green"/>
|
||||
<mspace width="25px" height="25px" mathbackground="blue"/>
|
||||
</msqrt>
|
||||
</math>
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html dir="rtl">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>Verify dir attribute on token elements</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- Test dir="rtl" on MathML token elements. The text contains RTL and
|
||||
LTR characters, so the attribute is needed to specify the actual
|
||||
direction. -->
|
||||
|
||||
<p><math><mtext dir="rtl">חוק \left חסר או חוק \right מיותר</mtext></math></p>
|
||||
<p><math><ms dir="rtl">חוק \left חסר או חוק \right מיותר</ms></math></p>
|
||||
<p><math><mo dir="rtl">חוק \left חסר או חוק \right מיותר</mo></math></p>
|
||||
<p><math><mi dir="rtl">חוק \left חסר או חוק \right מיותר</mi></math></p>
|
||||
<p><math><mn dir="rtl">חוק \left חסר או חוק \right מיותר</mn></math></p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html dir="rtl">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>Verify dir attribute on token elements</title>
|
||||
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#attributes-common-to-html-and-mathml-elements">
|
||||
<meta name="assert" content="Verify dir attribute on various token elements.">
|
||||
<link rel="match" href="direction-token-ref.html">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- Test dir="rtl" on MathML token elements. The text contains RTL and
|
||||
LTR characters, so the attribute is needed to specify the actual
|
||||
direction. -->
|
||||
|
||||
<p><math><mtext dir="rtl">חוק \left חסר או חוק \right מיותר</mtext></math></p>
|
||||
<p><math><ms dir="rtl">חוק \left חסר או חוק \right מיותר</ms></math></p>
|
||||
<p><math><mo dir="rtl">חוק \left חסר או חוק \right מיותר</mo></math></p>
|
||||
<p><math><mi dir="rtl">חוק \left חסר או חוק \right מיותר</mi></math></p>
|
||||
<p><math><mn dir="rtl">חוק \left חסר או חוק \right מיותר</mn></math></p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,38 @@
|
|||
<!DOCTYPE html>
|
||||
<html dir="rtl">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>Verify computed direction</title>
|
||||
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#attributes-common-to-html-and-mathml-elements">
|
||||
<meta name="assert" content="Verify computed direction value.">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
setup({ explicit_done: true });
|
||||
window.addEventListener("load", runTests);
|
||||
function runTests() {
|
||||
test(function() {
|
||||
assert_equals(window.getComputedStyle(document.getElementById('x1')).direction, "ltr");
|
||||
assert_equals(window.getComputedStyle(document.getElementById('x2')).direction, "ltr");
|
||||
assert_equals(window.getComputedStyle(document.getElementById('x3')).direction, "ltr");
|
||||
assert_equals(window.getComputedStyle(document.getElementById('x4')).direction, "rtl");
|
||||
}, "Check direction");
|
||||
|
||||
done();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Test the CSS direction and dir attribute on the <math> element. It
|
||||
should be "ltr", except if an explicit dir="rtl" is used. -->
|
||||
|
||||
<p>שורשי משוואה מודגשת זו <math id="x1"> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> מודגשים גם הם</p>
|
||||
|
||||
<p>שורשי משוואה מודגשת זו <math id="x2" dir="ltr"> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> מודגשים גם הם</p>
|
||||
|
||||
<p>שורשי משוואה מודגשת זו <math id="x3" dir="invalid"> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> מודגשים גם הם</p>
|
||||
|
||||
<p>שורשי משוואה מודגשת זו <math id="x4" dir="rtl"> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> מודגשים גם הם</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -3,6 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Simple MediaSource playback test case.</title>
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="mediasource-util.js"></script>
|
||||
|
|
|
@ -38,9 +38,12 @@ promise_test(async t => {
|
|||
promise,
|
||||
wait(time).then(() => Promise.reject(new Error(msg)))
|
||||
]);
|
||||
const unexpected = e => { throw new Error(`Got unexpected event ${e.name}`); };
|
||||
const unexpected = e => assert_unreached(`Got unexpected event ${e.type}`);
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
t.add_cleanup(() => {
|
||||
vid.ondurationchange = null;
|
||||
stream.getTracks().forEach(track => track.stop())
|
||||
});
|
||||
vid.srcObject = stream;
|
||||
|
||||
vid.onloadstart = unexpected;
|
||||
|
|
|
@ -22,52 +22,247 @@ via the <code>srcObject</code> attribute.</p>
|
|||
const vid = document.getElementById("vid");
|
||||
|
||||
promise_test(async t => {
|
||||
const wait = ms => new Promise(r => t.step_timeout(r, ms));
|
||||
const timeout = (promise, time, msg) =>
|
||||
Promise.race([promise, wait(time).then(() => Promise.reject(new Error(msg)))]);
|
||||
|
||||
const stream = await timeout(navigator.mediaDevices.getUserMedia({video: true}), 10000, "getUserMedia timeout");
|
||||
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
|
||||
vid.defaultPlaybackRate = 0.4;
|
||||
vid.playbackRate = 0.4;
|
||||
vid.preload = "metadata";
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
vid.srcObject = stream;
|
||||
vid.onratechange = t.unreached_func('ratechange event must not be fired');
|
||||
vid.play();
|
||||
}, "Tests that a MediaStream can be assigned to a video element with srcObject");
|
||||
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
vid.srcObject = stream;
|
||||
|
||||
assert_true(!vid.seeking, "A MediaStream is not seekable");
|
||||
assert_equals(vid.seekable.length, 0, "A MediaStream is not seekable");
|
||||
}, "Tests that a MediaStream assigned to a video element is not seekable");
|
||||
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
vid.srcObject = stream;
|
||||
|
||||
assert_equals(vid.readyState, vid.HAVE_NOTHING,
|
||||
"readyState is HAVE_NOTHING initially");
|
||||
await new Promise(r => vid.onloadeddata = r);
|
||||
assert_equals(vid.readyState, vid.HAVE_ENOUGH_DATA,
|
||||
"Upon having loaded a media stream, the UA sets readyState to HAVE_ENOUGH_DATA");
|
||||
}, "Tests that a MediaStream assigned to a video element is in readyState HAVE_NOTHING initially");
|
||||
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
vid.srcObject = stream;
|
||||
|
||||
assert_equals(vid.duration, NaN,
|
||||
"A MediaStream does not have any duration initially.");
|
||||
await new Promise(r => vid.ondurationchange = r);
|
||||
assert_equals(vid.duration, Infinity,
|
||||
"A loaded MediaStream does not have a pre-defined duration.");
|
||||
|
||||
vid.play();
|
||||
await new Promise(r => vid.ontimeupdate = r);
|
||||
for (const t of stream.getTracks()) {
|
||||
t.stop();
|
||||
}
|
||||
|
||||
await new Promise(r => vid.ondurationchange = r);
|
||||
assert_equals(vid.duration, vid.currentTime,
|
||||
"After ending playback, duration gets set to currentTime");
|
||||
}, "Tests that a MediaStream assigned to a video element has expected duration");
|
||||
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
|
||||
vid.preload = "metadata";
|
||||
vid.srcObject = stream;
|
||||
|
||||
assert_equals(vid.buffered.length, 0,
|
||||
"A MediaStream cannot be preloaded. Therefore, there are no buffered timeranges");
|
||||
assert_equals(vid.preload, "none", "preload must always be none");
|
||||
vid.preload = "auto";
|
||||
assert_equals(vid.preload, "none", "Setting preload must be ignored");
|
||||
|
||||
await new Promise(r => vid.onloadeddata = r);
|
||||
assert_equals(vid.buffered.length, 0,
|
||||
"A MediaStream cannot be preloaded. Therefore, there are no buffered timeranges");
|
||||
|
||||
vid.srcObject = null;
|
||||
|
||||
assert_equals(vid.preload, "metadata",
|
||||
"The preload attribute returns the value it had before using a MediaStream");
|
||||
}, "Tests that a video element with a MediaStream assigned is not preloaded");
|
||||
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
|
||||
vid.defaultPlaybackRate = 0.3;
|
||||
vid.playbackRate = 0.3;
|
||||
vid.onratechange = t.unreached_func("ratechange event must not be fired");
|
||||
vid.srcObject = stream;
|
||||
|
||||
assert_equals(vid.defaultPlaybackRate, 1, "playback rate is always 1");
|
||||
vid.defaultPlaybackRate = 0.5;
|
||||
assert_equals(vid.defaultPlaybackRate, 1, "Setting defaultPlaybackRate must be ignored");
|
||||
assert_equals(vid.defaultPlaybackRate, 1,
|
||||
"Setting defaultPlaybackRate must be ignored");
|
||||
|
||||
assert_equals(vid.playbackRate, 1, "playback rate is always 1");
|
||||
vid.playbackRate = 0.5;
|
||||
assert_equals(vid.playbackRate, 1, "Setting playbackRate must be ignored");
|
||||
assert_equals(vid.buffered.length, 0, "A MediaStream cannot be preloaded. Therefore, there is no buffered timeranges");
|
||||
assert_equals(vid.readyState, vid.HAVE_NOTHING, "readyState is HAVE_NOTHING initially");
|
||||
assert_equals(vid.duration, NaN, "A MediaStream does not have any duration initially.");
|
||||
assert_equals(vid.preload, "none", "preload must always be none");
|
||||
vid.preload = "metadata";
|
||||
assert_equals(vid.preload, "none", "Setting preload must be ignored");
|
||||
|
||||
const haveLoadedData = new Promise(r => vid.addEventListener("loadeddata", r, {once: true}));
|
||||
vid.srcObject = null;
|
||||
assert_equals(vid.defaultPlaybackRate, 0.3,
|
||||
"The defaultPlaybackRate attribute returns the value it had before using a MediaStream");
|
||||
assert_equals(vid.playbackRate, 0.3,
|
||||
"The playbackRate attribute is set to the value of the defaultPlaybackRate attribute when unsetting srcObject");
|
||||
|
||||
await new Promise(r => vid.addEventListener("timeupdate", r, {once: true}));
|
||||
assert_equals(vid.played.length, 1, "A MediaStream's timeline always consists of a single range");
|
||||
assert_equals(vid.played.start(0), 0, "A MediaStream's timeline always starts at zero");
|
||||
assert_equals(vid.played.end(0), vid.currentTime, "A MediaStream's end MUST return the last known currentTime, says mediacapture-main");
|
||||
assert_equals(vid.duration, Infinity, "A MediaStream does not have a pre-defined duration. ");
|
||||
// Check that there's no ratechange event
|
||||
await new Promise(r => t.step_timeout(r, 100));
|
||||
}, "Tests that a video element with a MediaStream assigned ignores playbackRate attributes (defaultPlaybackRate is identical)");
|
||||
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
|
||||
vid.defaultPlaybackRate = 0.3;
|
||||
vid.playbackRate = 0.4;
|
||||
vid.onratechange = t.unreached_func("ratechange event must not be fired");
|
||||
vid.srcObject = stream;
|
||||
|
||||
assert_equals(vid.defaultPlaybackRate, 1, "playback rate is always 1");
|
||||
vid.defaultPlaybackRate = 0.5;
|
||||
assert_equals(vid.defaultPlaybackRate, 1,
|
||||
"Setting defaultPlaybackRate must be ignored");
|
||||
|
||||
assert_equals(vid.playbackRate, 1, "playback rate is always 1");
|
||||
vid.playbackRate = 0.5;
|
||||
assert_equals(vid.playbackRate, 1, "Setting playbackRate must be ignored");
|
||||
|
||||
vid.srcObject = null;
|
||||
assert_equals(vid.defaultPlaybackRate, 0.3,
|
||||
"The defaultPlaybackRate attribute returns the value it had before using a MediaStream");
|
||||
assert_equals(vid.playbackRate, 0.3,
|
||||
"The playbackRate attribute is set to the value of the defaultPlaybackRate attribute when unsetting srcObject (and fires ratechange)");
|
||||
await new Promise(r => vid.onratechange = r);
|
||||
}, "Tests that a video element with a MediaStream assigned ignores playbackRate attributes (defaultPlaybackRate is different)");
|
||||
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
vid.srcObject = stream;
|
||||
await new Promise(r => vid.oncanplay = r);
|
||||
vid.play();
|
||||
await new Promise(r => vid.ontimeupdate = r);
|
||||
assert_greater_than(vid.currentTime, 0,
|
||||
"currentTime is greater than 0 after first timeupdate");
|
||||
|
||||
assert_equals(vid.played.length, 1,
|
||||
"A MediaStream's timeline always consists of a single range");
|
||||
assert_equals(vid.played.start(0), 0,
|
||||
"A MediaStream's timeline always starts at zero");
|
||||
assert_equals(vid.played.end(0), vid.currentTime,
|
||||
"A MediaStream's end MUST return the last known currentTime");
|
||||
|
||||
const time = vid.currentTime;
|
||||
vid.currentTime = 0;
|
||||
assert_equals(vid.currentTime, time, "The UA MUST ignore attempts to set the currentTime attribute");
|
||||
assert_equals(vid.currentTime, time,
|
||||
"The UA MUST ignore attempts to set the currentTime attribute");
|
||||
}, "Tests that a media element with an assigned MediaStream reports the played attribute as expected");
|
||||
|
||||
await haveLoadedData;
|
||||
assert_equals(vid.readyState, vid.HAVE_ENOUGH_DATA, "Upon having loaded a media stream, the UA sets readyState to HAVE_ENOUGH_DATA");
|
||||
assert_equals(vid.duration, Infinity, "A MediaStream does not have a pre-defined duration.");
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
vid.srcObject = stream;
|
||||
|
||||
// TODO add test that duration must be set to currentTime
|
||||
// when mediastream is destroyed
|
||||
}, "Tests that a MediaStream can be assigned to a video element with srcObject");
|
||||
assert_equals(vid.currentTime, 0, "The initial value is 0");
|
||||
vid.currentTime = 42;
|
||||
assert_equals(vid.currentTime, 0,
|
||||
"The UA MUST ignore attempts to set the currentTime attribute (default playback start position)");
|
||||
|
||||
await new Promise(r => vid.onloadeddata = r);
|
||||
assert_equals(vid.currentTime, 0, "The initial value is 0");
|
||||
vid.currentTime = 42;
|
||||
assert_equals(vid.currentTime, 0,
|
||||
"The UA MUST ignore attempts to set the currentTime attribute (official playback position)");
|
||||
|
||||
vid.play();
|
||||
await new Promise(r => vid.ontimeupdate = r);
|
||||
assert_greater_than(vid.currentTime, 0,
|
||||
"currentTime is greater than 0 after first timeupdate");
|
||||
|
||||
const lastTime = vid.currentTime;
|
||||
vid.currentTime = 0;
|
||||
assert_equals(vid.currentTime, lastTime,
|
||||
"The UA MUST ignore attempts to set the currentTime attribute (restart)");
|
||||
|
||||
for(const t of stream.getTracks()) {
|
||||
t.stop();
|
||||
}
|
||||
await new Promise(r => vid.onended = r);
|
||||
assert_greater_than_equal(vid.currentTime, lastTime,
|
||||
"currentTime advanced after stopping");
|
||||
}, "Tests that a media element with an assigned MediaStream reports the currentTime attribute as expected");
|
||||
|
||||
|
||||
promise_test(async t => {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({video: true});
|
||||
t.add_cleanup(() => {
|
||||
vid.srcObject = null;
|
||||
stream.getTracks().forEach(track => track.stop());
|
||||
});
|
||||
assert_equals(vid.loop, false, "loop is false by default");
|
||||
vid.srcObject = stream;
|
||||
|
||||
vid.loop = true;
|
||||
assert_equals(vid.loop, true,
|
||||
"loop can be changed when assigned a MediaStream");
|
||||
|
||||
await new Promise(r => vid.onloadeddata = r);
|
||||
vid.loop = false;
|
||||
assert_equals(vid.loop, false,
|
||||
"loop can be changed when having loaded a MediaStream");
|
||||
|
||||
vid.play();
|
||||
await new Promise(r => vid.ontimeupdate = r);
|
||||
vid.loop = true;
|
||||
assert_equals(vid.loop, true,
|
||||
"loop can be changed when playing a MediaStream");
|
||||
|
||||
for(const t of stream.getTracks()) {
|
||||
t.stop();
|
||||
}
|
||||
// If loop is ignored, we get "ended",
|
||||
// otherwise the media element sets currentTime to 0 without ending.
|
||||
await new Promise(r => vid.onended = r);
|
||||
}, "Tests that the loop attribute has no effect on a media element with an assigned MediaStream");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -11,6 +11,7 @@ test(function(t) {
|
|||
window.navigator.mediaSession.setActionHandler("nexttrack", null);
|
||||
window.navigator.mediaSession.setActionHandler("seekbackward", null);
|
||||
window.navigator.mediaSession.setActionHandler("seekforward", null);
|
||||
window.navigator.mediaSession.setActionHandler("stop", null);
|
||||
}, "Test that setActionHandler() can be executed for supported actions");
|
||||
|
||||
test(function(t) {
|
||||
|
|
|
@ -44,10 +44,12 @@ async function do_test(url) {
|
|||
assert_equals(response, 'messageHandlerInitialized');
|
||||
|
||||
// Start a fetch.
|
||||
frame.contentWindow.fetch(url);
|
||||
const fetchPromise = frame.contentWindow.fetch(url);
|
||||
|
||||
// Receive the test result from the service worker.
|
||||
return wait_for_message();
|
||||
const result = wait_for_message();
|
||||
await fetchPromise.then(()=> {}, () => {});
|
||||
return result;
|
||||
};
|
||||
|
||||
promise_test(async (t) => {
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<title>Change sync for nested use</title>
|
||||
<svg width="400" height="500">
|
||||
<rect id="r1" width="40" height="40" style="fill:navy" />
|
||||
<rect id="r2" x="50" y="50" width="40" height="40" style="fill:purple" />
|
||||
<g id="g1">
|
||||
<use id="u1" x="120" href="#r1" />
|
||||
<use id="u2" x="120" href="#r2" />
|
||||
<rect x="120" y="120" width="50" height="50" style="fill:skyblue" />
|
||||
</g>
|
||||
<use id="u3" x="120" href="#g1" />
|
||||
<use id="u4" y="170" href="#u2" />
|
||||
<use id="u5" x="-30" y="220" href="#u2" />
|
||||
</svg>
|
||||
</html>
|
|
@ -0,0 +1,30 @@
|
|||
<!doctype html>
|
||||
<html class="reftest-wait">
|
||||
<title>Change sync for nested use</title>
|
||||
<link rel="match" href="change-sync-for-nested-use-ref.html">
|
||||
<svg width="400" height="500" onload="main()">
|
||||
<rect id="r1" width="40" height="40" style="fill:red" />
|
||||
<rect id="r2" x="50" y="50" width="40" height="40" style="fill:gray" />
|
||||
<g id="g1">
|
||||
<use id="u1" x="120" href="#r1" />
|
||||
<use id="u2" x="120" href="#r2" />
|
||||
<rect x="120" y="120" width="50" height="50" style="fill:skyblue" />
|
||||
</g>
|
||||
<use id="u3" x="120" href="#g1" />
|
||||
<use id="u4" y="170" href="#u2" />
|
||||
<use id="u5" x="-30" y="220" href="#u2" />
|
||||
</svg>
|
||||
|
||||
<script>
|
||||
function main() {
|
||||
let r1 = document.getElementById("r1"),
|
||||
r2 = document.getElementById("r2");
|
||||
|
||||
requestAnimationFrame(() => requestAnimationFrame(() => {
|
||||
r1.style.fill = "navy";
|
||||
r2.style.fill = "purple";
|
||||
document.documentElement.removeAttribute("class");
|
||||
}));
|
||||
};
|
||||
</script>
|
||||
</html>
|
|
@ -146,6 +146,13 @@ def check_path_length(repo_root, path):
|
|||
return []
|
||||
|
||||
|
||||
def check_file_type(repo_root, path):
|
||||
# type: (str, str) -> List[rules.Error]
|
||||
if os.path.islink(path):
|
||||
return [rules.FileType.error(path, (path, "symlink"))]
|
||||
return []
|
||||
|
||||
|
||||
def check_worker_collision(repo_root, path):
|
||||
# type: (str, str) -> List[rules.Error]
|
||||
endings = [(".any.html", ".any.js"),
|
||||
|
@ -907,7 +914,8 @@ def lint(repo_root, paths, output_format):
|
|||
logger.info(line)
|
||||
return sum(itervalues(error_count))
|
||||
|
||||
path_lints = [check_path_length, check_worker_collision, check_ahem_copy, check_gitignore_file]
|
||||
path_lints = [check_file_type, check_path_length, check_worker_collision, check_ahem_copy,
|
||||
check_gitignore_file]
|
||||
all_paths_lints = [check_css_globally_unique]
|
||||
file_lints = [check_regexp_line, check_parsed, check_python_ast, check_script_metadata]
|
||||
|
||||
|
|
|
@ -57,6 +57,11 @@ class PathLength(Rule):
|
|||
description = "/%s longer than maximum path length (%d > 150)"
|
||||
|
||||
|
||||
class FileType(Rule):
|
||||
name = "FILE TYPE"
|
||||
description = "/%s is an unsupported file type (%s)"
|
||||
|
||||
|
||||
class WorkerCollision(Rule):
|
||||
name = "WORKER COLLISION"
|
||||
description = ("path ends with %s which collides with generated tests "
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from __future__ import unicode_literals
|
||||
|
||||
import mock
|
||||
import os
|
||||
|
||||
from ..lint import check_path
|
||||
|
@ -32,7 +33,7 @@ def test_forbidden_path_length():
|
|||
(".any.worker.html", ".any.js"),
|
||||
(".any.html", ".any.js")])
|
||||
def test_forbidden_path_endings(path_ending, generated):
|
||||
path = "/test/test" + path_ending
|
||||
path = "test/test" + path_ending
|
||||
|
||||
message = ("path ends with %s which collides with generated tests from %s files" %
|
||||
(path_ending, generated))
|
||||
|
@ -42,6 +43,17 @@ def test_forbidden_path_endings(path_ending, generated):
|
|||
assert errors == [("WORKER COLLISION", message, path, None)]
|
||||
|
||||
|
||||
def test_file_type():
|
||||
path = "test/test"
|
||||
|
||||
message = "/%s is an unsupported file type (symlink)" % (path,)
|
||||
|
||||
with mock.patch("os.path.islink", returnvalue=True):
|
||||
errors = check_path("/foo/", path)
|
||||
|
||||
assert errors == [("FILE TYPE", message, path, None)]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("path", ["ahem.ttf",
|
||||
"Ahem.ttf",
|
||||
"ahem.tTf",
|
||||
|
|
|
@ -57,7 +57,6 @@ setup(name=PACKAGE_NAME,
|
|||
"prefs/*"]},
|
||||
include_package_data=True,
|
||||
data_files=[("requirements", requirements_files)],
|
||||
install_requires=deps
|
||||
)
|
||||
|
||||
if "install" in sys.argv:
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="support/helper.sub.js"></script>
|
||||
<body>
|
||||
<div id="container"></div>
|
||||
<script>
|
||||
var container = document.querySelector('#container');
|
||||
|
||||
test(t => {
|
||||
let p = createHTML_policy(window, 1);
|
||||
let html = p.createHTML(INPUTS.HTML);
|
||||
let before = 'before';
|
||||
let after = 'after';
|
||||
let htmlBefore = p.createHTML(before);
|
||||
let htmlAfter = p.createHTML(after);
|
||||
|
||||
var d = document.createElement('div');
|
||||
container.appendChild(d);
|
||||
|
||||
d.insertAdjacentHTML('beforebegin', html);
|
||||
assert_equals(d.previousSibling.nodeType, Node.TEXT_NODE);
|
||||
assert_equals(d.previousSibling.data, RESULTS.HTML);
|
||||
|
||||
d.insertAdjacentHTML('afterbegin', htmlBefore);
|
||||
d.insertAdjacentHTML('beforeend', htmlAfter);
|
||||
assert_equals(d.innerHTML, before + after);
|
||||
|
||||
d.insertAdjacentHTML('afterend', html);
|
||||
assert_equals(d.nextSibling.nodeType, Node.TEXT_NODE);
|
||||
assert_equals(d.nextSibling.data, RESULTS.HTML);
|
||||
|
||||
while (container.firstChild)
|
||||
container.firstChild.remove();
|
||||
}, "insertAdjacentHTML with html assigned via policy (successful HTML transformation).");
|
||||
</script>
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="support/helper.sub.js"></script>
|
||||
<meta http-equiv="Content-Security-Policy" content="trusted-types *">
|
||||
</head>
|
||||
<body>
|
||||
<div id="container"></div>
|
||||
<script>
|
||||
var container = document.querySelector("#container");
|
||||
|
||||
// Regression tests for 'Bypass via insertAdjacentText', reported at
|
||||
// https://github.com/WICG/trusted-types/issues/133
|
||||
|
||||
// Original report:
|
||||
test(t => {
|
||||
// Setup: Create a <script> element with a <p> child.
|
||||
let s = document.createElement("script");
|
||||
let p = document.createElement("p");
|
||||
p.textContent = "hello('world');";
|
||||
s.appendChild(p);
|
||||
container.appendChild(s);
|
||||
|
||||
// Sanity check: The <p> content doesn't count as source text.
|
||||
assert_equals(s.text, "");
|
||||
|
||||
// Try to insertAdjacentText into the <script>, starting from the <p>
|
||||
try {
|
||||
p.insertAdjacentText("beforebegin", "hello('before');");
|
||||
} catch (err) { }
|
||||
assert_equals(s.text, "");
|
||||
try {
|
||||
p.insertAdjacentText("afterend", "hello('after');");
|
||||
} catch (err) { }
|
||||
assert_equals(s.text, "");
|
||||
}, "Regression test: Bypass via insertAdjacentText, initial comment");
|
||||
|
||||
// Variant: Create a <script> element and create & insert a text node. Then
|
||||
// insert it into the document container to make it live.
|
||||
test(t => {
|
||||
// Setup: Create a <script> element, and insert text via a text node.
|
||||
let s = document.createElement("script");
|
||||
let text = document.createTextNode("alert('hello');");
|
||||
assert_throws(new TypeError(),
|
||||
_ => { s.appendChild(text); },
|
||||
"We should not be able to modify <script>.");
|
||||
container.appendChild(s);
|
||||
}, "Regression test: Bypass via appendChild into off-document script element");
|
||||
|
||||
// Variant: Create a <script> element and insert it into the document. Then
|
||||
// create a text node and insert it into the live <script> element.
|
||||
test(t => {
|
||||
// Setup: Create a <script> element, insert it into the doc, and then create
|
||||
// and insert text via a text node.
|
||||
let s = document.createElement("script");
|
||||
container.appendChild(s);
|
||||
let text = document.createTextNode("alert('hello');");
|
||||
assert_throws(new TypeError(),
|
||||
_ => { s.appendChild(text); },
|
||||
"We should not be able to modify <script>.");
|
||||
}, "Regression test: Bypass via appendChild into live script element");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -8,4 +8,13 @@
|
|||
assert_equals(NFCErrorEvent.length, 2);
|
||||
assert_throws(new TypeError, () => new NFCErrorEvent('error'));
|
||||
}, 'NFCErrorEvent constructor without init dict');
|
||||
|
||||
test(() => {
|
||||
assert_throws(new TypeError, () => new NFCErrorEvent('error', { error : null }));
|
||||
}, 'NFCErrorEvent constructor with a null that is not of type DOMException');
|
||||
|
||||
test(() => {
|
||||
const event = new NFCErrorEvent('error', { error : new DOMException() });
|
||||
assert_true(event.error instanceof DOMException);
|
||||
}, 'NFCErrorEvent constructor with a valid DOMException');
|
||||
</script>
|
||||
|
|
|
@ -3,9 +3,32 @@
|
|||
<link rel="help" href="https://w3c.github.io/web-nfc/#dom-nfcreadingevent">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/nfc_help.js"></script>
|
||||
<script>
|
||||
|
||||
const non_strings = [
|
||||
123,
|
||||
{},
|
||||
true,
|
||||
Symbol(),
|
||||
() => {},
|
||||
self
|
||||
]
|
||||
|
||||
test(() => {
|
||||
assert_equals(NFCReadingEvent.length, 2);
|
||||
assert_throws(new TypeError, () => new NFCReadingEvent('message'));
|
||||
}, 'NFCReadingEvent constructor without init dict');
|
||||
|
||||
test(() => {
|
||||
assert_equals(NFCReadingEvent.length, 2);
|
||||
const message = createMessage([createJsonRecord(test_json_data)]);
|
||||
non_strings.forEach(invalid_serialNumber => {
|
||||
assert_throws(new TypeError, () => new NFCReadingEvent(
|
||||
'message',
|
||||
{invalid_serialNumber, message}
|
||||
));
|
||||
});
|
||||
}, 'NFCReadingEvent constructor with non-string serialNumber');
|
||||
|
||||
</script>
|
||||
|
|
|
@ -233,17 +233,4 @@ promise_test(t => {
|
|||
return Promise.all(promises);
|
||||
}, "Test that promise is rejected with TypeError if NDEFMessageSource contains non-string url.");
|
||||
|
||||
promise_test(t => {
|
||||
const writer = new NFCWriter();
|
||||
const promises = [];
|
||||
non_strings.forEach(invalid_serialNumber => {
|
||||
promises.push(
|
||||
promise_rejects(t, new TypeError(), writer.push({
|
||||
serialNumber: invalid_serialNumber,
|
||||
records: [{ recordType: "text", data: 'Hello World' }]
|
||||
})));
|
||||
});
|
||||
return Promise.all(promises);
|
||||
}, "Test that promise is rejected with TypeError if NDEFMessageSource contains non-string serialNumber.");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -14,7 +14,7 @@ const message = {
|
|||
|
||||
idl_test(
|
||||
['web-nfc'],
|
||||
['html', 'dom'],
|
||||
['html', 'dom', 'WebIDL'],
|
||||
idl_array => {
|
||||
idl_array.add_objects({
|
||||
NFCWriter: ['new NFCWriter();'],
|
||||
|
|
|
@ -102,7 +102,7 @@ function asyncInit() {
|
|||
|
||||
idl_test(
|
||||
['webrtc'],
|
||||
['mediacapture-streams', 'dom', 'html'],
|
||||
['WebIDL', 'mediacapture-streams', 'dom', 'html'],
|
||||
async idlArray => {
|
||||
idlArray.add_objects({
|
||||
RTCPeerConnection: [`new RTCPeerConnection()`],
|
||||
|
|
|
@ -11,26 +11,22 @@ body { margin:0 }
|
|||
position: relative;
|
||||
font-size: 9px;
|
||||
}
|
||||
#cue1 {
|
||||
.cue {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin-top: -4.5px;
|
||||
text-align: center
|
||||
text-align: center;
|
||||
}
|
||||
#cue2 {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin-top: -13.5px;
|
||||
text-align: center
|
||||
}
|
||||
.cue > span {
|
||||
.cueText {
|
||||
font-family: Ahem, sans-serif;
|
||||
background: rgba(0,0,0,0.8);
|
||||
color: green;
|
||||
}
|
||||
</style>
|
||||
<div class="video"><span class="cue" id="cue1"><span>This is a test subtitle</span></span><span class="cue" id="cue2"><span>This is another test subtitle</span></span></div>
|
||||
<div class="video">
|
||||
<span class="cue">
|
||||
<div><span class="cueText">This is another test subtitle</span></div>
|
||||
<div><span class="cueText">This is a test subtitle</span></div>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -11,26 +11,26 @@ body { margin:0 }
|
|||
position: relative;
|
||||
font-size: 9px;
|
||||
}
|
||||
#cue1 {
|
||||
.cue {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin-top: -4.5px;
|
||||
text-align: center
|
||||
text-align: center;
|
||||
}
|
||||
#cue2 {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin-top: -13.5px;
|
||||
text-align: center
|
||||
}
|
||||
.cue > span {
|
||||
.cueText {
|
||||
font-family: Ahem, sans-serif;
|
||||
background: rgba(0,0,0,0.8);
|
||||
color: green;
|
||||
}
|
||||
.cueTextGoingUp {
|
||||
position: relative;
|
||||
top: -1.8px; /* 1% height of video's height */
|
||||
}
|
||||
</style>
|
||||
<div class="video"><span class="cue" id="cue1"><span>This is a test subtitle</span></span><span class="cue" id="cue2"><span>This is another test subtitle</span></span></div>
|
||||
<div class="video">
|
||||
<span class="cue">
|
||||
<div><span class="cueText cueTextGoingUp">This is another test subtitle</span></div>
|
||||
<div><span class="cueText">This is a test subtitle</span></div>
|
||||
</span>
|
||||
</div>
|
||||
|
|
|
@ -14,7 +14,7 @@ body { margin:0 }
|
|||
.cue {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 23px;
|
||||
right: 0px;
|
||||
width: 64px;
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -24,4 +24,4 @@ body { margin:0 }
|
|||
color: green;
|
||||
}
|
||||
</style>
|
||||
<div class=video><span class=cue><span>Aweso<br>me!!!</span></span></div>
|
||||
<div class=video><span class=cue><span>Awesome!!!</span></span></div>
|
||||
|
|
|
@ -14,7 +14,7 @@ body { margin:0 }
|
|||
.cue {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 23px;
|
||||
left: 0px;
|
||||
right: 0;
|
||||
width: 64px;
|
||||
text-align: center
|
||||
|
@ -25,4 +25,4 @@ body { margin:0 }
|
|||
color: green;
|
||||
}
|
||||
</style>
|
||||
<div class=video><span class=cue><span>Awesome<br>!!!</span></span></div>
|
||||
<div class=video><span class=cue><span>Awesome!!!</span></span></div>
|
||||
|
|
|
@ -14,7 +14,7 @@ body { margin:0 }
|
|||
.cue {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 23px;
|
||||
left: 0px;
|
||||
right: 0;
|
||||
width: 64px;
|
||||
text-align: center;
|
||||
|
@ -25,4 +25,4 @@ body { margin:0 }
|
|||
color: green;
|
||||
}
|
||||
</style>
|
||||
<div class=video><span class=cue><span>Aweso<br>me!!!</span></span></div>
|
||||
<div class=video><span class=cue><span>Awesome!!!</span></span></div>
|
||||
|
|
|
@ -24,4 +24,4 @@ body { margin:0 }
|
|||
color: green;
|
||||
}
|
||||
</style>
|
||||
<div class=video><span class=cue><span>This is a test subtitle that <br>most likely will span over <br>several rows since it is a pretty <br>long cue with a lot of text.</span></span></div>
|
||||
<div class=video><span class=cue><span>This is a test subtitle that most likely will span over several rows since it is a pretty long cue with a lot of text.</span></span></div>
|
||||
|
|
|
@ -24,4 +24,4 @@ body { margin:0 }
|
|||
color: green;
|
||||
}
|
||||
</style>
|
||||
<div class=video><span class=cue><span>This is a test <br>subtitle that <br>most likely <br>will span over <br>several rows <br>since it is a <br>pretty long <br>cue with a <br>lot of text.</span></span></div>
|
||||
<div class=video><span class=cue><span>This is a test subtitle that most likely will span over several rows since it is a pretty long cue with a lot of text.</span></span></div>
|
||||
|
|
|
@ -24,4 +24,4 @@ body { margin:0 }
|
|||
color: green;
|
||||
}
|
||||
</style>
|
||||
<div class=video><span class=cue><span>This is a test <br>subtitle that <br>most likely <br>will span over <br>several rows <br>since it is a <br>pretty long <br>cue with a <br>lot of text.</span></span></div>
|
||||
<div class=video><span class=cue><span>This is a test subtitle that most likely will span over several rows since it is a pretty long cue with a lot of text.</span></span></div>
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<html class="reftest-wait">
|
||||
<title>WebVTT rendering, set align start and the cue contains two lines with different writing directions</title>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<style>
|
||||
html { overflow:hidden }
|
||||
body { margin:0 }
|
||||
.video {
|
||||
display: inline-block;
|
||||
width: 320px;
|
||||
height: 180px;
|
||||
position: relative;
|
||||
font-size: 9px;
|
||||
}
|
||||
.cue {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
text-align: start;
|
||||
unicode-bidi: plaintext;
|
||||
}
|
||||
.cueText {
|
||||
font-family: sans-serif;
|
||||
background: rgba(0,0,0,0.8);
|
||||
color: green;
|
||||
}
|
||||
</style>
|
||||
<div class="video">
|
||||
<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
|
||||
<source src="/media/white.webm" type="video/webm">
|
||||
<source src="/media/white.mp4" type="video/mp4">
|
||||
</video>
|
||||
<span class="cue">
|
||||
<span class="cueText">Hello!</span><br>
|
||||
<span class="cueText">שלום!</span>
|
||||
</span>
|
||||
</div>
|
||||
</html>
|
|
@ -0,0 +1,19 @@
|
|||
<!DOCTYPE html>
|
||||
<html class="reftest-wait">
|
||||
<title>WebVTT rendering, set align start and the cue contains two lines with different writing directions</title>
|
||||
<link rel="match" href="start_alignment-ref.html">
|
||||
<style>
|
||||
html { overflow:hidden }
|
||||
body { margin:0 }
|
||||
::cue {
|
||||
font-family: sans-serif;
|
||||
color: green;
|
||||
}
|
||||
</style>
|
||||
<script src="/common/reftest-wait.js"></script>
|
||||
<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();">
|
||||
<source src="/media/white.webm" type="video/webm">
|
||||
<source src="/media/white.mp4" type="video/mp4">
|
||||
<track src="../support/start_alignment.vtt" default>
|
||||
</video>
|
||||
</html>
|
|
@ -14,7 +14,7 @@ video {
|
|||
color: green;
|
||||
}
|
||||
</style>
|
||||
<video autoplay controls onplaying="this.onplaying = null;
|
||||
<video autoplay onplaying="this.onplaying = null;
|
||||
this.pause();
|
||||
this.currentTime = 0;
|
||||
">
|
||||
|
|
|
@ -17,7 +17,7 @@ video {
|
|||
}
|
||||
.cue {
|
||||
position: absolute;
|
||||
bottom: 50px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
text-align: center
|
||||
|
@ -28,7 +28,7 @@ video {
|
|||
color: green;
|
||||
}
|
||||
</style>
|
||||
<video controls>
|
||||
<video>
|
||||
<source src="/media/white.webm" type="video/webm">
|
||||
<source src="/media/white.mp4" type="video/mp4">
|
||||
</video>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
WEBVTT
|
||||
|
||||
00:00:00.000 --> 00:00:05.000 line:50%
|
||||
00:00:00.000 --> 00:00:05.000 line:100%
|
||||
This is a test subtitle
|
||||
|
||||
00:00:01.000 --> 00:00:05.000 line:50%
|
||||
00:00:01.000 --> 00:00:05.000 line:100%
|
||||
This is another test subtitle
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
WEBVTT
|
||||
|
||||
00:00:00.000 --> 00:00:05.000 line:50%
|
||||
00:00:00.000 --> 00:00:05.000 line:100%
|
||||
This is a test subtitle
|
||||
|
||||
00:00:01.000 --> 00:00:05.000 line:49%
|
||||
00:00:01.000 --> 00:00:05.000 line:99%
|
||||
This is another test subtitle
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
WEBVTT FILE
|
||||
|
||||
00:00:00.000 --> 00:00:10.000 align:start line:0
|
||||
Hello!
|
||||
שלום!
|
Loading…
Add table
Add a link
Reference in a new issue