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:
bors-servo 2019-06-16 12:56:15 -04:00 committed by GitHub
commit ce9f35e0e3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
91 changed files with 1840 additions and 299 deletions

View file

@ -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

View file

@ -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"

View file

@ -0,0 +1,2 @@
[text-underline-offset-001.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[matchMedia-display-none-iframe.html]
expected: ERROR

View file

@ -0,0 +1,2 @@
[backdrop-filter-plus-filter.html]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,4 +1,4 @@
[traverse_the_history_5.html]
[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -40,4 +40,3 @@
[test_height_width_larger_than_max]
expected: FAIL

View file

@ -1,2 +0,0 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -1,2 +0,0 @@
[transition_calc_implicit.html]
expected: TIMEOUT

View file

@ -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']))

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -21,4 +21,4 @@ track.addCue(cue);
track.mode = "showing";
video.src = getVideoURI("/media/test");
</script>
</html>
</html>

View file

@ -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>

View file

@ -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>

View file

@ -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);

View file

@ -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 {

View file

@ -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;

View file

@ -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;

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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;

View file

@ -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>

View file

@ -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) {

View file

@ -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) => {

View file

@ -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>

View file

@ -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>

View file

@ -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]

View file

@ -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 "

View file

@ -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",

View file

@ -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:

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -14,7 +14,7 @@ const message = {
idl_test(
['web-nfc'],
['html', 'dom'],
['html', 'dom', 'WebIDL'],
idl_array => {
idl_array.add_objects({
NFCWriter: ['new NFCWriter();'],

View file

@ -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()`],

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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;
">

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
WEBVTT FILE
00:00:00.000 --> 00:00:10.000 align:start line:0
Hello!
שלום!