Update web-platform-tests to revision ac4274136e9a034628a3a469890c8e37babbc902
|
@ -104065,6 +104065,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/background-size/background-size-cover-svg.html": [
|
||||||
|
[
|
||||||
|
"/css/css-backgrounds/background-size/background-size-cover-svg.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-backgrounds/background-size/reference/background-size-cover-svg-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-backgrounds/background-size/background-size-cover.xht": [
|
"css/css-backgrounds/background-size/background-size-cover.xht": [
|
||||||
[
|
[
|
||||||
"/css/css-backgrounds/background-size/background-size-cover.xht",
|
"/css/css-backgrounds/background-size/background-size-cover.xht",
|
||||||
|
@ -128085,6 +128097,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-multicol/multicol-span-all-005.html": [
|
||||||
|
[
|
||||||
|
"/css/css-multicol/multicol-span-all-005.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-multicol/multicol-span-all-005-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-multicol/multicol-span-all-block-sibling-003.xht": [
|
"css/css-multicol/multicol-span-all-block-sibling-003.xht": [
|
||||||
[
|
[
|
||||||
"/css/css-multicol/multicol-span-all-block-sibling-003.xht",
|
"/css/css-multicol/multicol-span-all-block-sibling-003.xht",
|
||||||
|
@ -141433,6 +141457,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/pre-float-001.html": [
|
||||||
|
[
|
||||||
|
"/css/css-text/white-space/pre-float-001.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-text/white-space/reference/pre-float-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-text/white-space/pre-wrap-001.html": [
|
"css/css-text/white-space/pre-wrap-001.html": [
|
||||||
[
|
[
|
||||||
"/css/css-text/white-space/pre-wrap-001.html",
|
"/css/css-text/white-space/pre-wrap-001.html",
|
||||||
|
@ -141577,6 +141613,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/pre-wrap-float-001.html": [
|
||||||
|
[
|
||||||
|
"/css/css-text/white-space/pre-wrap-float-001.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-text/white-space/reference/pre-wrap-float-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-text/white-space/tab-stop-threshold-001.html": [
|
"css/css-text/white-space/tab-stop-threshold-001.html": [
|
||||||
[
|
[
|
||||||
"/css/css-text/white-space/tab-stop-threshold-001.html",
|
"/css/css-text/white-space/tab-stop-threshold-001.html",
|
||||||
|
@ -169017,6 +169065,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/filter-effects/svg-sourcegraphic-currentcolor-dynamic-001.html": [
|
||||||
|
[
|
||||||
|
"/css/filter-effects/svg-sourcegraphic-currentcolor-dynamic-001.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/filter-effects/reference/green-100x100.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/filter-effects/svg-unknown-input-001.html": [
|
"css/filter-effects/svg-unknown-input-001.html": [
|
||||||
[
|
[
|
||||||
"/css/filter-effects/svg-unknown-input-001.html",
|
"/css/filter-effects/svg-unknown-input-001.html",
|
||||||
|
@ -192481,6 +192541,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"svg/pservers/reftests/stop-color-currentcolor-dynamic-001.svg": [
|
||||||
|
[
|
||||||
|
"/svg/pservers/reftests/stop-color-currentcolor-dynamic-001.svg",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/svg/pservers/reftests/reference/green-100x100.svg",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"svg/render/reftests/blending-001.svg": [
|
"svg/render/reftests/blending-001.svg": [
|
||||||
[
|
[
|
||||||
"/svg/render/reftests/blending-001.svg",
|
"/svg/render/reftests/blending-001.svg",
|
||||||
|
@ -250621,6 +250693,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/background-size/reference/background-size-cover-svg-ref.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-backgrounds/background-size/reference/background-size-cover.xht": [
|
"css/css-backgrounds/background-size/reference/background-size-cover.xht": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -250641,6 +250718,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/background-size/support/rectangle-2560x208.svg": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-backgrounds/background-size/support/rectangle-96x60.png": [
|
"css/css-backgrounds/background-size/support/rectangle-96x60.png": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -264171,6 +264253,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-multicol/multicol-span-all-005-ref.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-multicol/multicol-span-all-block-sibling-3-ref.xht": [
|
"css/css-multicol/multicol-span-all-block-sibling-3-ref.xht": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -269681,11 +269768,21 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/reference/pre-float-001-ref.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-text/white-space/reference/pre-wrap-001-ref.html": [
|
"css/css-text/white-space/reference/pre-wrap-001-ref.html": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/reference/pre-wrap-float-001-ref.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-text/white-space/reference/tab-stop-threshold-001-ref.html": [
|
"css/css-text/white-space/reference/tab-stop-threshold-001-ref.html": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -276441,6 +276538,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/cssom/support/constructable-import.css": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/cssom/support/getComputedStyle-insets.js": [
|
"css/cssom/support/getComputedStyle-insets.js": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -276851,6 +276953,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/filter-effects/reference/green-100x100.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/filter-effects/reference/svg-feflood-ref.html": [
|
"css/filter-effects/reference/svg-feflood-ref.html": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -308546,6 +308653,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/resources/import-relative.xsl": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"service-workers/service-worker/resources/import-scripts-echo.py": [
|
"service-workers/service-worker/resources/import-scripts-echo.py": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -309336,6 +309448,21 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/resources/xsl-base-url-iframe.xml": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"service-workers/service-worker/resources/xsl-base-url-worker.js": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"service-workers/service-worker/resources/xslt-pass.xsl": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"service-workers/specgen.json": [
|
"service-workers/specgen.json": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -310266,6 +310393,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"svg/pservers/reftests/reference/green-100x100.svg": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"svg/render/reftests/blending-001-ref.svg": [
|
"svg/render/reftests/blending-001-ref.svg": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -338085,6 +338217,12 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-animations/computed-style-animation-parsing.html": [
|
||||||
|
[
|
||||||
|
"/css/css-animations/computed-style-animation-parsing.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-animations/event-dispatch.tentative.html": [
|
"css/css-animations/event-dispatch.tentative.html": [
|
||||||
[
|
[
|
||||||
"/css/css-animations/event-dispatch.tentative.html",
|
"/css/css-animations/event-dispatch.tentative.html",
|
||||||
|
@ -338253,6 +338391,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-animations/style-animation-parsing.html": [
|
||||||
|
[
|
||||||
|
"/css/css-animations/style-animation-parsing.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-backgrounds/background-331.html": [
|
"css/css-backgrounds/background-331.html": [
|
||||||
[
|
[
|
||||||
"/css/css-backgrounds/background-331.html",
|
"/css/css-backgrounds/background-331.html",
|
||||||
|
@ -342655,6 +342799,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-scoping/slotted-nested.html": [
|
||||||
|
[
|
||||||
|
"/css/css-scoping/slotted-nested.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-scoping/slotted-parsing.html": [
|
"css/css-scoping/slotted-parsing.html": [
|
||||||
[
|
[
|
||||||
"/css/css-scoping/slotted-parsing.html",
|
"/css/css-scoping/slotted-parsing.html",
|
||||||
|
@ -345733,6 +345883,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-transitions/transition-reparented.html": [
|
||||||
|
[
|
||||||
|
"/css/css-transitions/transition-reparented.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-transitions/transition-timing-function-001.html": [
|
"css/css-transitions/transition-timing-function-001.html": [
|
||||||
[
|
[
|
||||||
"/css/css-transitions/transition-timing-function-001.html",
|
"/css/css-transitions/transition-timing-function-001.html",
|
||||||
|
@ -349369,6 +349525,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/cssom/CSSStyleSheet-constructable.html": [
|
||||||
|
[
|
||||||
|
"/css/cssom/CSSStyleSheet-constructable.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/cssom/CSSStyleSheet.html": [
|
"css/cssom/CSSStyleSheet.html": [
|
||||||
[
|
[
|
||||||
"/css/cssom/CSSStyleSheet.html",
|
"/css/cssom/CSSStyleSheet.html",
|
||||||
|
@ -376925,6 +377087,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"html/syntax/parsing/quotes-in-meta.html": [
|
||||||
|
[
|
||||||
|
"/html/syntax/parsing/quotes-in-meta.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element.html": [
|
"html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element.html": [
|
||||||
[
|
[
|
||||||
"/html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element.html",
|
"/html/syntax/parsing/template/additions-to-foster-parenting/template-is-a-foster-parent-element.html",
|
||||||
|
@ -406871,6 +407039,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/xsl-base-url.https.html": [
|
||||||
|
[
|
||||||
|
"/service-workers/service-worker/xsl-base-url.https.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"shadow-dom/Document-prototype-adoptNode.html": [
|
"shadow-dom/Document-prototype-adoptNode.html": [
|
||||||
[
|
[
|
||||||
"/shadow-dom/Document-prototype-adoptNode.html",
|
"/shadow-dom/Document-prototype-adoptNode.html",
|
||||||
|
@ -408847,6 +409021,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"svg/geometry/parsing/height-computed.svg": [
|
||||||
|
[
|
||||||
|
"/svg/geometry/parsing/height-computed.svg",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"svg/geometry/parsing/r-computed.svg": [
|
"svg/geometry/parsing/r-computed.svg": [
|
||||||
[
|
[
|
||||||
"/svg/geometry/parsing/r-computed.svg",
|
"/svg/geometry/parsing/r-computed.svg",
|
||||||
|
@ -408901,6 +409081,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"svg/geometry/parsing/width-computed.svg": [
|
||||||
|
[
|
||||||
|
"/svg/geometry/parsing/width-computed.svg",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"svg/geometry/parsing/x-computed.svg": [
|
"svg/geometry/parsing/x-computed.svg": [
|
||||||
[
|
[
|
||||||
"/svg/geometry/parsing/x-computed.svg",
|
"/svg/geometry/parsing/x-computed.svg",
|
||||||
|
@ -409477,6 +409663,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"svg/pservers/parsing/stop-color-computed.svg": [
|
||||||
|
[
|
||||||
|
"/svg/pservers/parsing/stop-color-computed.svg",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"svg/pservers/parsing/stop-opacity-computed.svg": [
|
"svg/pservers/parsing/stop-opacity-computed.svg": [
|
||||||
[
|
[
|
||||||
"/svg/pservers/parsing/stop-opacity-computed.svg",
|
"/svg/pservers/parsing/stop-opacity-computed.svg",
|
||||||
|
@ -409495,6 +409687,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"svg/pservers/scripted/stop-color-inheritance-currentcolor.svg": [
|
||||||
|
[
|
||||||
|
"/svg/pservers/scripted/stop-color-inheritance-currentcolor.svg",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"svg/scripted/text-attrs-dxdy-have-length.svg": [
|
"svg/scripted/text-attrs-dxdy-have-length.svg": [
|
||||||
[
|
[
|
||||||
"/svg/scripted/text-attrs-dxdy-have-length.svg",
|
"/svg/scripted/text-attrs-dxdy-have-length.svg",
|
||||||
|
@ -410639,9 +410837,9 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"user-timing/mark-measure-return-null.html": [
|
"user-timing/mark-measure-feature-detection.html": [
|
||||||
[
|
[
|
||||||
"/user-timing/mark-measure-return-null.html",
|
"/user-timing/mark-measure-feature-detection.html",
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
@ -537162,6 +537360,10 @@
|
||||||
"4ca5eb736e76274eee9883121970fee0ab8280ca",
|
"4ca5eb736e76274eee9883121970fee0ab8280ca",
|
||||||
"manual"
|
"manual"
|
||||||
],
|
],
|
||||||
|
"css/css-animations/computed-style-animation-parsing.html": [
|
||||||
|
"15a1665be5ee13c66c434f6da48af42ac622baff",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-animations/event-dispatch.tentative.html": [
|
"css/css-animations/event-dispatch.tentative.html": [
|
||||||
"54bc9499a535dba81f302e4c40eb20193bee0da6",
|
"54bc9499a535dba81f302e4c40eb20193bee0da6",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -537274,6 +537476,10 @@
|
||||||
"fb74d7fa7d062d60153d47913df9eb2b0c7267c8",
|
"fb74d7fa7d062d60153d47913df9eb2b0c7267c8",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/css-animations/style-animation-parsing.html": [
|
||||||
|
"792fda33ed8b0bacf355e62066ec05d54cc5c729",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-animations/support/testcommon.js": [
|
"css/css-animations/support/testcommon.js": [
|
||||||
"b4fde4b967de2eb67cb3e0819c3a896375e861f9",
|
"b4fde4b967de2eb67cb3e0819c3a896375e861f9",
|
||||||
"support"
|
"support"
|
||||||
|
@ -538022,6 +538228,10 @@
|
||||||
"d168e154fb34fea05c6c05a201b030099d5cdf01",
|
"d168e154fb34fea05c6c05a201b030099d5cdf01",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/background-size/background-size-cover-svg.html": [
|
||||||
|
"5e33c75afcec1ecd8b393a753ae97703d4728bf2",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/css-backgrounds/background-size/background-size-cover.xht": [
|
"css/css-backgrounds/background-size/background-size-cover.xht": [
|
||||||
"c88e7fd2ed34aa61f24fde1a8d424155d430fc37",
|
"c88e7fd2ed34aa61f24fde1a8d424155d430fc37",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -538030,6 +538240,10 @@
|
||||||
"62e1ed65f4f5acebdf2d6594178c16168f5cc74a",
|
"62e1ed65f4f5acebdf2d6594178c16168f5cc74a",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/background-size/reference/background-size-cover-svg-ref.html": [
|
||||||
|
"b6dd172aa6624a5dec591d5b37294bb432c168c1",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"css/css-backgrounds/background-size/reference/background-size-cover.xht": [
|
"css/css-backgrounds/background-size/reference/background-size-cover.xht": [
|
||||||
"29ac66132d7539ca6d897c3e69a206a91ac0d23a",
|
"29ac66132d7539ca6d897c3e69a206a91ac0d23a",
|
||||||
"support"
|
"support"
|
||||||
|
@ -538046,6 +538260,10 @@
|
||||||
"6c1406b7dfd7c59f413a183c8896b8c2b3395bf5",
|
"6c1406b7dfd7c59f413a183c8896b8c2b3395bf5",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"css/css-backgrounds/background-size/support/rectangle-2560x208.svg": [
|
||||||
|
"578dd86ae055e0eab3ce57ad003481dfa000fd2c",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"css/css-backgrounds/background-size/support/rectangle-96x60.png": [
|
"css/css-backgrounds/background-size/support/rectangle-96x60.png": [
|
||||||
"add0d272b1eb56d0003d414c6e04f080053b62a4",
|
"add0d272b1eb56d0003d414c6e04f080053b62a4",
|
||||||
"support"
|
"support"
|
||||||
|
@ -561306,6 +561524,14 @@
|
||||||
"e9165658c11fea62e4f714fc4643f33853e95500",
|
"e9165658c11fea62e4f714fc4643f33853e95500",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-multicol/multicol-span-all-005-ref.html": [
|
||||||
|
"641fbb9dcf5e093ab0892aba918c05965c9f23e1",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"css/css-multicol/multicol-span-all-005.html": [
|
||||||
|
"249b69b7107e3ee65cf52986af0f298e18ea743e",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/css-multicol/multicol-span-all-block-sibling-003.xht": [
|
"css/css-multicol/multicol-span-all-block-sibling-003.xht": [
|
||||||
"bd2cdd6cdab0fc15c2e16e2237f6b025230332c4",
|
"bd2cdd6cdab0fc15c2e16e2237f6b025230332c4",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -566018,6 +566244,10 @@
|
||||||
"c06c96143ba0d478940fb54208d241adb4f6ee8b",
|
"c06c96143ba0d478940fb54208d241adb4f6ee8b",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/css-scoping/slotted-nested.html": [
|
||||||
|
"c7139fea4c280585197db5bd432931bcf53c2e53",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-scoping/slotted-parsing.html": [
|
"css/css-scoping/slotted-parsing.html": [
|
||||||
"6888693bbf40932d62a19b535adba22adbd43b19",
|
"6888693bbf40932d62a19b535adba22adbd43b19",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -572986,6 +573216,10 @@
|
||||||
"f3dbf4609f44e537328a741bd03059c09a38af45",
|
"f3dbf4609f44e537328a741bd03059c09a38af45",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/pre-float-001.html": [
|
||||||
|
"4d9f8bba4d50964544dff35c8d2049d2f6ea8e27",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/css-text/white-space/pre-wrap-001.html": [
|
"css/css-text/white-space/pre-wrap-001.html": [
|
||||||
"31486f8f77c4c77188d94e9c21e9a8d5003e1bc4",
|
"31486f8f77c4c77188d94e9c21e9a8d5003e1bc4",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -573034,6 +573268,10 @@
|
||||||
"f9063c98767e70c3899bc9a59b50b42a61240ae4",
|
"f9063c98767e70c3899bc9a59b50b42a61240ae4",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/pre-wrap-float-001.html": [
|
||||||
|
"6ef0faa0cf8e22ddea43dcd06ce3f9e5edf9cfd6",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/css-text/white-space/reference/control-chars-000-ref.html": [
|
"css/css-text/white-space/reference/control-chars-000-ref.html": [
|
||||||
"9d5fcb27147a8c53e410d08511cb5035b612f80c",
|
"9d5fcb27147a8c53e410d08511cb5035b612f80c",
|
||||||
"support"
|
"support"
|
||||||
|
@ -573046,10 +573284,18 @@
|
||||||
"ea1faa2ed1f7af05f932167762f85fc2e5150884",
|
"ea1faa2ed1f7af05f932167762f85fc2e5150884",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/reference/pre-float-001-ref.html": [
|
||||||
|
"b05c008bed1fe69bbe968c16604d582434907c44",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"css/css-text/white-space/reference/pre-wrap-001-ref.html": [
|
"css/css-text/white-space/reference/pre-wrap-001-ref.html": [
|
||||||
"8a8b5132db197bb9a76b1b44e461405f4cd9d1bc",
|
"8a8b5132db197bb9a76b1b44e461405f4cd9d1bc",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"css/css-text/white-space/reference/pre-wrap-float-001-ref.html": [
|
||||||
|
"09ca86dd699186162137d4090ba2bfa3e930389e",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"css/css-text/white-space/reference/tab-stop-threshold-001-ref.html": [
|
"css/css-text/white-space/reference/tab-stop-threshold-001-ref.html": [
|
||||||
"5694dd2f526176b1a662f5e06c2b1d97cff425df",
|
"5694dd2f526176b1a662f5e06c2b1d97cff425df",
|
||||||
"support"
|
"support"
|
||||||
|
@ -579714,6 +579960,10 @@
|
||||||
"3fa82c16d1f9e7f01760003c07bdfbc38afa060d",
|
"3fa82c16d1f9e7f01760003c07bdfbc38afa060d",
|
||||||
"manual"
|
"manual"
|
||||||
],
|
],
|
||||||
|
"css/css-transitions/transition-reparented.html": [
|
||||||
|
"3dfd19425fcaa76051618113bfb4793baf06f364",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-transitions/transition-test.html": [
|
"css/css-transitions/transition-test.html": [
|
||||||
"10700abf9bc48d0938fd3f5b77b031ecc0c05e4a",
|
"10700abf9bc48d0938fd3f5b77b031ecc0c05e4a",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -591638,6 +591888,10 @@
|
||||||
"3acdfb12852356ac28e91af25c82052d45864b0e",
|
"3acdfb12852356ac28e91af25c82052d45864b0e",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/cssom/CSSStyleSheet-constructable.html": [
|
||||||
|
"7df1820c0437edbe0edfe4d7bb25c02f832dd3bc",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/cssom/CSSStyleSheet.html": [
|
"css/cssom/CSSStyleSheet.html": [
|
||||||
"86016ef5a3db6636bf97edc58992f30f909c13a2",
|
"86016ef5a3db6636bf97edc58992f30f909c13a2",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -592030,6 +592284,10 @@
|
||||||
"85dd7324815b8f8ef1a1d0496224c1a0661db9d8",
|
"85dd7324815b8f8ef1a1d0496224c1a0661db9d8",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"css/cssom/support/constructable-import.css": [
|
||||||
|
"d8ccc9d491b65c54bc990066d8292eba8a6d5461",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"css/cssom/support/getComputedStyle-insets.js": [
|
"css/cssom/support/getComputedStyle-insets.js": [
|
||||||
"beec32e76bc5fcef4640193e321805975c8554b9",
|
"beec32e76bc5fcef4640193e321805975c8554b9",
|
||||||
"support"
|
"support"
|
||||||
|
@ -592666,6 +592924,10 @@
|
||||||
"cfd8029223165871c4e2d78bee4a221b54822957",
|
"cfd8029223165871c4e2d78bee4a221b54822957",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"css/filter-effects/reference/green-100x100.html": [
|
||||||
|
"f718ea6abfbab54333ba674ff0dcd320d8672bcd",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"css/filter-effects/reference/svg-feflood-ref.html": [
|
"css/filter-effects/reference/svg-feflood-ref.html": [
|
||||||
"5623b08ecd71b292e698ee249a79b59d0046300f",
|
"5623b08ecd71b292e698ee249a79b59d0046300f",
|
||||||
"support"
|
"support"
|
||||||
|
@ -592870,6 +593132,10 @@
|
||||||
"3d8118b387d938b588e8e88ad5ec87a5343e4f72",
|
"3d8118b387d938b588e8e88ad5ec87a5343e4f72",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/filter-effects/svg-sourcegraphic-currentcolor-dynamic-001.html": [
|
||||||
|
"e3be6544dc803ba7d9c69e9a1d906296c2c15301",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/filter-effects/svg-unknown-input-001.html": [
|
"css/filter-effects/svg-unknown-input-001.html": [
|
||||||
"7789f2a9af4f1492fa6db36b53a72ada151f61d5",
|
"7789f2a9af4f1492fa6db36b53a72ada151f61d5",
|
||||||
"reftest"
|
"reftest"
|
||||||
|
@ -593403,7 +593669,7 @@
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"css/selectors/attribute-selectors/attribute-case/cssom.html": [
|
"css/selectors/attribute-selectors/attribute-case/cssom.html": [
|
||||||
"d03d820a3e6ed93b217558de2c3b91c040b22dd7",
|
"74e7b9645f89423c628914cd3f246728de8ac71f",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"css/selectors/attribute-selectors/attribute-case/resources/semantics-quirks.html": [
|
"css/selectors/attribute-selectors/attribute-case/resources/semantics-quirks.html": [
|
||||||
|
@ -610855,7 +611121,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"fetch/api/headers/headers-no-cors.window.js": [
|
"fetch/api/headers/headers-no-cors.window.js": [
|
||||||
"ebf0142e280c668ac2adf5205e7e26712598e203",
|
"9ea76e03e138f1604053771bb1a75130758726f7",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"fetch/api/headers/headers-normalize.html": [
|
"fetch/api/headers/headers-normalize.html": [
|
||||||
|
@ -630518,6 +630784,10 @@
|
||||||
"d09915cd974dd3a8b828eb58c004d63c853d1271",
|
"d09915cd974dd3a8b828eb58c004d63c853d1271",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"html/syntax/parsing/quotes-in-meta.html": [
|
||||||
|
"3d1eaf02a20c7dad80656f69adb26e24e1b1647f",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"html/syntax/parsing/template.js": [
|
"html/syntax/parsing/template.js": [
|
||||||
"b249fb64c71c16f1b6cefcc59668699f769a2341",
|
"b249fb64c71c16f1b6cefcc59668699f769a2341",
|
||||||
"support"
|
"support"
|
||||||
|
@ -633179,7 +633449,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webrtc-stats.idl": [
|
"interfaces/webrtc-stats.idl": [
|
||||||
"b2bf38e9fd45f81598bbdef1daef789cbdd75977",
|
"cf07738b8b45c808a80895356699a5e04967e25e",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"interfaces/webrtc.idl": [
|
"interfaces/webrtc.idl": [
|
||||||
|
@ -656255,7 +656525,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"resource-timing/single-entry-per-resource.html": [
|
"resource-timing/single-entry-per-resource.html": [
|
||||||
"39d7d5b256616d6b1d8a93c2c188412746791355",
|
"1f8f4005e42c61ebb0dc0cae549429b29c68bd97",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"resource-timing/supported_resource_type.any.js": [
|
"resource-timing/supported_resource_type.any.js": [
|
||||||
|
@ -660310,6 +660580,10 @@
|
||||||
"aa885e7a4de04820822eb562d47780999fa253e4",
|
"aa885e7a4de04820822eb562d47780999fa253e4",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/resources/import-relative.xsl": [
|
||||||
|
"063a62d03143a32f44365bf1e7b08d283ae52895",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"service-workers/service-worker/resources/import-scripts-echo.py": [
|
"service-workers/service-worker/resources/import-scripts-echo.py": [
|
||||||
"7d92794e31b6b1270db26779f63644ac42a3d3d6",
|
"7d92794e31b6b1270db26779f63644ac42a3d3d6",
|
||||||
"support"
|
"support"
|
||||||
|
@ -660942,6 +661216,18 @@
|
||||||
"e388e461448f64d37d747b26830f4e869a2c6528",
|
"e388e461448f64d37d747b26830f4e869a2c6528",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/resources/xsl-base-url-iframe.xml": [
|
||||||
|
"065a07acb284821dde1cbea8680781a524f21bc2",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"service-workers/service-worker/resources/xsl-base-url-worker.js": [
|
||||||
|
"50e2b1842ffc7f2ef2017846406eb67ed9491ead",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"service-workers/service-worker/resources/xslt-pass.xsl": [
|
||||||
|
"2cd7f2f8f86a23d464b30feab0939931134810cc",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"service-workers/service-worker/respond-with-body-accessed-response.https.html": [
|
"service-workers/service-worker/respond-with-body-accessed-response.https.html": [
|
||||||
"f6713d89216ec0a8e5cfc6f4cbb326f0bd6e672e",
|
"f6713d89216ec0a8e5cfc6f4cbb326f0bd6e672e",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -661114,6 +661400,10 @@
|
||||||
"f9ba656b5178359f2c7b6e2419a57ff12ec79d23",
|
"f9ba656b5178359f2c7b6e2419a57ff12ec79d23",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/xsl-base-url.https.html": [
|
||||||
|
"1d3c36408a66a7785b884c9cdc39dcd2820f9af0",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"service-workers/specgen.json": [
|
"service-workers/specgen.json": [
|
||||||
"88c36ed04aada9b61dfe65f97dc6e73d7913a6a9",
|
"88c36ed04aada9b61dfe65f97dc6e73d7913a6a9",
|
||||||
"support"
|
"support"
|
||||||
|
@ -662587,7 +662877,7 @@
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"svg/extensibility/foreignObject/properties.svg": [
|
"svg/extensibility/foreignObject/properties.svg": [
|
||||||
"b92a6d1d15bcfa61da6ead3eeaba5122d9c2be76",
|
"dd198f177dfb2906ce6be9184df9fbbb8feefe93",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"svg/extensibility/foreignObject/stacking-context-ref.html": [
|
"svg/extensibility/foreignObject/stacking-context-ref.html": [
|
||||||
|
@ -662630,6 +662920,10 @@
|
||||||
"022445662b7d9d519ca28a1eeca47c9199ceafca",
|
"022445662b7d9d519ca28a1eeca47c9199ceafca",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"svg/geometry/parsing/height-computed.svg": [
|
||||||
|
"bcc1f9d0e11ab8e223a2aa238ac448273f93ea08",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"svg/geometry/parsing/r-computed.svg": [
|
"svg/geometry/parsing/r-computed.svg": [
|
||||||
"b0f6bb0f671267c4895413ff749f8a7a96f2cb5a",
|
"b0f6bb0f671267c4895413ff749f8a7a96f2cb5a",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -662666,6 +662960,10 @@
|
||||||
"e92e2cf6410ba4071baa81c18ec4462ba60b42dd",
|
"e92e2cf6410ba4071baa81c18ec4462ba60b42dd",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"svg/geometry/parsing/width-computed.svg": [
|
||||||
|
"1af3de12347af146aad2cff7447a753942beaf60",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"svg/geometry/parsing/x-computed.svg": [
|
"svg/geometry/parsing/x-computed.svg": [
|
||||||
"9355ea3ae95767b9cee92d49b4f1d1809e2edc06",
|
"9355ea3ae95767b9cee92d49b4f1d1809e2edc06",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -665554,6 +665852,10 @@
|
||||||
"297f8ede687a28a12ced98a4b89051dd9ddf5090",
|
"297f8ede687a28a12ced98a4b89051dd9ddf5090",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"svg/pservers/parsing/stop-color-computed.svg": [
|
||||||
|
"b05a69f10b9e3614f7a588998ea06879df437da7",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"svg/pservers/parsing/stop-opacity-computed.svg": [
|
"svg/pservers/parsing/stop-opacity-computed.svg": [
|
||||||
"cb0f8295ce4777a91c26c66995a2b11c5d03b43c",
|
"cb0f8295ce4777a91c26c66995a2b11c5d03b43c",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -665630,6 +665932,18 @@
|
||||||
"04d8d3025ee0f039a05bdd439f2dc02c13f49a23",
|
"04d8d3025ee0f039a05bdd439f2dc02c13f49a23",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"svg/pservers/reftests/reference/green-100x100.svg": [
|
||||||
|
"120941444a4898197d6b6001f9908a6cd48b62ba",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"svg/pservers/reftests/stop-color-currentcolor-dynamic-001.svg": [
|
||||||
|
"da0a05dd879cc9358535002ea4737cdbdaef45f2",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
|
"svg/pservers/scripted/stop-color-inheritance-currentcolor.svg": [
|
||||||
|
"22bf513c862bf8d1ccbac358c71560fd834e545a",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"svg/render/reftests/blending-001-ref.svg": [
|
"svg/render/reftests/blending-001-ref.svg": [
|
||||||
"dcd39a8a1d5b2c76038a50506e661d3c5513a847",
|
"dcd39a8a1d5b2c76038a50506e661d3c5513a847",
|
||||||
"support"
|
"support"
|
||||||
|
@ -671319,7 +671633,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/requirements_sauce.txt": [
|
"tools/wptrunner/requirements_sauce.txt": [
|
||||||
"666db37ac1a4822250ee1dcdbf3c23e672a154e3",
|
"e38f4dea67038c44f64b5e9696c3484f117ed849",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/requirements_servo.txt": [
|
"tools/wptrunner/requirements_servo.txt": [
|
||||||
|
@ -671459,7 +671773,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/base.py": [
|
"tools/wptrunner/wptrunner/browsers/base.py": [
|
||||||
"712ff3fbc9b30dfcd4b0719391bc80ee5eb22340",
|
"6413753929100c5042e2ab8191a616372e8fd6d3",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/chrome.py": [
|
"tools/wptrunner/wptrunner/browsers/chrome.py": [
|
||||||
|
@ -671483,7 +671797,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/firefox.py": [
|
"tools/wptrunner/wptrunner/browsers/firefox.py": [
|
||||||
"618f011abaf40a9d7fe42b34106e44326388076b",
|
"14cac17cf6d292de5f48c4bfa556ef1c30853011",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/ie.py": [
|
"tools/wptrunner/wptrunner/browsers/ie.py": [
|
||||||
|
@ -671599,11 +671913,11 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js": [
|
"tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js": [
|
||||||
"61f894f8760bc623c8953e0eb7f0c3e01d5f72e4",
|
"194e192c2f4e22021781f633841a33eae9925417",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js": [
|
"tools/wptrunner/wptrunner/executors/reftest-wait_webdriver.js": [
|
||||||
"c1cc649e323f9742396b73e301ff306271b160d3",
|
"a7486b6594d96093ae2267c48ca0b87ab40ef7cc",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/executors/reftest.js": [
|
"tools/wptrunner/wptrunner/executors/reftest.js": [
|
||||||
|
@ -671679,15 +671993,15 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/testharnessreport.js": [
|
"tools/wptrunner/wptrunner/testharnessreport.js": [
|
||||||
"281f97ddaa6673333056e35c3e2f3adb804e100c",
|
"29fc0e9873188223ac3783a8c622bbbe21ec5af5",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/testloader.py": [
|
"tools/wptrunner/wptrunner/testloader.py": [
|
||||||
"a395a50a45c427262d604223dfd341f2a6e5892b",
|
"f8849ebe75e6c5a2370ad45bc8fd9d5d43750277",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/testrunner.py": [
|
"tools/wptrunner/wptrunner/testrunner.py": [
|
||||||
"e819f242e2df532d6e9c62e9292e1f563047c148",
|
"d3a62646278e38fcb0c86bc163c4595560f5fa3f",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/tests/__init__.py": [
|
"tools/wptrunner/wptrunner/tests/__init__.py": [
|
||||||
|
@ -673146,8 +673460,8 @@
|
||||||
"e47a3ba7a981e978cdf015f8fc6bfbae6762dba9",
|
"e47a3ba7a981e978cdf015f8fc6bfbae6762dba9",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"user-timing/mark-measure-return-null.html": [
|
"user-timing/mark-measure-feature-detection.html": [
|
||||||
"5afd9633f24751eb40e3bd5e1d73c47922639f0c",
|
"6f1ad489e95680fc5d1be4e25dcaa2eeee9a0aa5",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"user-timing/mark.any.js": [
|
"user-timing/mark.any.js": [
|
||||||
|
@ -676487,7 +676801,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"webdriver/tests/element_clear/clear.py": [
|
"webdriver/tests/element_clear/clear.py": [
|
||||||
"5d60b991acd0ae708312462a6b40d190c706059f",
|
"a1017745f3d3999d42fda413324890132f4b04a8",
|
||||||
"wdspec"
|
"wdspec"
|
||||||
],
|
],
|
||||||
"webdriver/tests/element_clear/user_prompts.py": [
|
"webdriver/tests/element_clear/user_prompts.py": [
|
||||||
|
@ -678055,7 +678369,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCPeerConnection-setDescription-transceiver.html": [
|
"webrtc/RTCPeerConnection-setDescription-transceiver.html": [
|
||||||
"5fc957df8fb8d93385fb09b37b388399ddef64d3",
|
"a8056d473cd7ad3a3bdd348bc689aab756fab778",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCPeerConnection-setLocalDescription-answer.html": [
|
"webrtc/RTCPeerConnection-setLocalDescription-answer.html": [
|
||||||
|
@ -678203,7 +678517,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCRtpTransceiver.https.html": [
|
"webrtc/RTCRtpTransceiver.https.html": [
|
||||||
"aba2796489603b9798832a64f08988e8507fa29a",
|
"c200271490eaee404101360768276d9563453c24",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"webrtc/RTCSctpTransport-constructor.html": [
|
"webrtc/RTCSctpTransport-constructor.html": [
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
[computed-style-animation-parsing.html]
|
||||||
|
[Test an animation name that is the same as a possible animation fill-mode.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test an animation name that is the same as a possible running state.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test animation name being empty.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test a non-conflicting animation name.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test an animation name that is the same as a possible animation direction.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
[style-animation-parsing.html]
|
||||||
|
[Test an animation name that is the same as a possible animation fill-mode.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test an animation name that is the same as a possible running state.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test animation name being empty.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test a non-conflicting animation name.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test an animation name that is the same as a possible animation direction.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[background-size-cover-svg.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[pre-float-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[pre-wrap-float-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,4 @@
|
||||||
|
[transition-reparented.html]
|
||||||
|
[When an element is reparented, any CSS Transition on it should be cancelled]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[CSSStyleSheet-constructable.html]
|
||||||
|
[CSSStyleSheet constructor and adoptedStyleSheets]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[svg-sourcegraphic-currentcolor-dynamic-001.html]
|
||||||
|
expected: FAIL
|
|
@ -71,3 +71,27 @@
|
||||||
[[foo="bar"/**/s\] setting CSSStyleRule#selectorText in @media]
|
[[foo="bar"/**/s\] setting CSSStyleRule#selectorText in @media]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[[*|foo="bar" s\] getting CSSStyleRule#selectorText]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[[*|foo="bar" s\] getting CSSRule#cssText in @media]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[[*|foo="bar" s\] insertRule in @media]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[[*|foo="bar" s\] getting CSSRule#cssText]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[[*|foo="bar" s\] insertRule]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[[*|foo="bar" s\] getting CSSStyleRule#selectorText in @media]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[[*|foo="bar" s\] setting CSSStyleRule#selectorText]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[[*|foo="bar" s\] setting CSSStyleRule#selectorText in @media]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -32,3 +32,12 @@
|
||||||
["no-cors" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
|
["no-cors" Headers object cannot have content-language set to sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss, , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
["no-cors" Headers object cannot have content-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
["no-cors" Headers object cannot have accept-language set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
["no-cors" Headers object cannot have accept set to , sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_5.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -5,11 +5,29 @@
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
|
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
|
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[picture: source (max-width:500px) valid image, img valid image, resize to narrow]
|
[picture: source (max-width:500px) valid image, img valid image, resize to narrow]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
|
[picture: source (max-width:500px) broken image, img valid image, resize to narrow]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[img (srcset 1 cand) valid image, resize to wide]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[picture: same URL in source (max-width:500px) and img, resize to wide]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[img (srcset 1 cand) valid image, resize to narrow]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[picture: source (max-width:500px) valid image, img broken image, resize to wide]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[picture: same URL in source (max-width:500px) and img, resize to narrow]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
[non-active-document.html]
|
|
||||||
[DOMParser]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createHTMLDocument]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<template>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[parse-a-sizes-attribute-standards-mode.html]
|
[parse-a-sizes-attribute-standards-mode.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (standards mode)]
|
[<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (standards mode)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[quotes-in-meta.html]
|
||||||
|
[quotes-in-meta]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -12,3 +12,6 @@
|
||||||
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
|
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[Verifies the resolution of performance.now() is at least 5 microseconds.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[limited-quirks.html]
|
[no-quirks.html]
|
||||||
[top: -\\31 .5]
|
[top: -\\31 .5]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -2,6 +2,3 @@
|
||||||
[One resource when reusing data]
|
[One resource when reusing data]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Only one resource entry per resource]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[005.html]
|
[005.html]
|
||||||
|
expected: ERROR
|
||||||
[dedicated worker in shared worker in dedicated worker]
|
[dedicated worker in shared worker in dedicated worker]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Animations: parsing computedStyle.animation</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-animations/#animation">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<div id="test1"></div>
|
||||||
|
<div id="test2"></div>
|
||||||
|
<script>
|
||||||
|
function testComputedStyle(computedStyle1, computedStyle2, name) {
|
||||||
|
assert_equals(computedStyle1.animationName, name, "computedStyle1.animationName");
|
||||||
|
assert_equals(computedStyle2.animationName, name, "computedStyle2.animationName");
|
||||||
|
assert_equals(computedStyle1.animation, computedStyle2.animation,
|
||||||
|
"computedStyle1 and computedStyle2 should have the same animation");
|
||||||
|
}
|
||||||
|
|
||||||
|
function testAnimation(input, name) {
|
||||||
|
var style1 = test1.style;
|
||||||
|
var style2 = test2.style;
|
||||||
|
var computedStyle1 = getComputedStyle(test1);
|
||||||
|
var computedStyle2 = getComputedStyle(test2);
|
||||||
|
|
||||||
|
style1.animation = input;
|
||||||
|
style2.animation = style1.animation;
|
||||||
|
testComputedStyle(computedStyle1, computedStyle2, name);
|
||||||
|
style2.animation = computedStyle1.animation;
|
||||||
|
testComputedStyle(computedStyle1, computedStyle2, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
// We are duplicating the logic of testAnimation because the animationName of
|
||||||
|
// the getComputedStyle is "none" when there is no animation.
|
||||||
|
var style1 = test1.style;
|
||||||
|
var style2 = test2.style;
|
||||||
|
var computedStyle1 = getComputedStyle(test1);
|
||||||
|
var computedStyle2 = getComputedStyle(test2);
|
||||||
|
|
||||||
|
style1.animation = "";
|
||||||
|
style2.animation = style1.animation;
|
||||||
|
testComputedStyle(computedStyle1, computedStyle2, "none");
|
||||||
|
style2.animation = computedStyle1.animation;
|
||||||
|
assert_equals(computedStyle2.animationName, "none");
|
||||||
|
}, "Test animation name being empty.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("myShorthandAnim", "myShorthandAnim");
|
||||||
|
}, "Test a non-conflicting animation name.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("none", "none");
|
||||||
|
testAnimation("forwards", "none");
|
||||||
|
testAnimation("none forwards", "forwards");
|
||||||
|
}, "Test an animation name that is the same as a possible animation fill-mode.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("normal", "none");
|
||||||
|
testAnimation("reverse", "none");
|
||||||
|
testAnimation("normal normal", "normal");
|
||||||
|
testAnimation("normal reverse", "reverse");
|
||||||
|
}, "Test an animation name that is the same as a possible animation direction.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("running", "none");
|
||||||
|
testAnimation("paused", "none");
|
||||||
|
testAnimation("running running", "running");
|
||||||
|
testAnimation("running paused", "paused");
|
||||||
|
}, "Test an animation name that is the same as a possible running state.");
|
||||||
|
</script>
|
|
@ -0,0 +1,53 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Animations: parsing style.animation</title>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-animations/#animation">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<div id="test1"></div>
|
||||||
|
<div id="test2"></div>
|
||||||
|
<script>
|
||||||
|
function testStyle(style1, style2, name) {
|
||||||
|
assert_equals(style1.animationName, name, "style1.animationName");
|
||||||
|
assert_equals(style2.animationName, name, "style2.animationName");
|
||||||
|
assert_equals(style1.animation, style2.animation,
|
||||||
|
"style1 and style2 should have the same animation");
|
||||||
|
}
|
||||||
|
|
||||||
|
function testAnimation(input, name) {
|
||||||
|
var style1 = test1.style;
|
||||||
|
var style2 = test2.style;
|
||||||
|
|
||||||
|
style1.animation = input;
|
||||||
|
style2.animation = style1.animation;
|
||||||
|
testStyle(style1, style2, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("", "");
|
||||||
|
}, "Test animation name being empty.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("myShorthandAnim", "myShorthandAnim");
|
||||||
|
}, "Test a non-conflicting animation name.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("none", "none");
|
||||||
|
testAnimation("forwards", "none");
|
||||||
|
testAnimation("none forwards", "forwards");
|
||||||
|
}, "Test an animation name that is the same as a possible animation fill-mode.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("normal", "none");
|
||||||
|
testAnimation("reverse", "none");
|
||||||
|
testAnimation("normal normal", "normal");
|
||||||
|
testAnimation("normal reverse", "reverse");
|
||||||
|
}, "Test an animation name that is the same as a possible animation direction.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
testAnimation("running", "none");
|
||||||
|
testAnimation("paused", "none");
|
||||||
|
testAnimation("running running", "running");
|
||||||
|
testAnimation("running paused", "paused");
|
||||||
|
}, "Test an animation name that is the same as a possible running state.");
|
||||||
|
</script>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>CSS Background Test: A SVG background should fully cover the positioning area</title>
|
||||||
|
<link rel="author" title="schenney" href="mailto:schenney@chromium.org">
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/css3-background">
|
||||||
|
<link rel="match" href="reference/background-size-cover-svg-ref.html">
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
height: 400px;
|
||||||
|
width: 600px;
|
||||||
|
position: relative;
|
||||||
|
background-color: red;
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: bottom center;
|
||||||
|
background-image: url("support/rectangle-2560x208.svg");
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>CSS Background Test Reference</title>
|
||||||
|
<link rel="author" title="schenney" href="mailto:schenney@chromium.org">
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
height: 400px;
|
||||||
|
width: 600px;
|
||||||
|
position: relative;
|
||||||
|
background-color: red;
|
||||||
|
background-repeat: repeat;
|
||||||
|
background-position: bottom center;
|
||||||
|
background-image: url("../support/50x50-green.png");
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2560 208">
|
||||||
|
<rect fill="green" width="2560" height="208"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 122 B |
|
@ -0,0 +1,67 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Multi-column Layout Test Reference: Test column-span:all with various display types</title>
|
||||||
|
<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
|
||||||
|
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.column {
|
||||||
|
column-count: 1;
|
||||||
|
column-rule: 6px solid;
|
||||||
|
width: 600px;
|
||||||
|
outline: 1px solid black;
|
||||||
|
}
|
||||||
|
.spanner {
|
||||||
|
/* column-count: 1 makes this behave like a real spanner. */
|
||||||
|
outline: 1px solid blue;
|
||||||
|
}
|
||||||
|
fieldset {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<table class="spanner">
|
||||||
|
<tr>
|
||||||
|
<td>table as a spanner</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<div class="spanner" style="display: grid;">grid as a spanner</div>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<div class="spanner" style="display: flex;">flex as a spanner</div>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<fieldset class="spanner">fieldset as a spanner</fieldset>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<details open class="spanner">details as a spanner</details>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,70 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Multi-column Layout Test: Test column-span:all with various display types</title>
|
||||||
|
<link rel="author" title="Ting-Yu Lin" href="tlin@mozilla.com">
|
||||||
|
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-multicol-1/#column-span">
|
||||||
|
<link rel="match" href="multicol-span-all-005-ref.html">
|
||||||
|
<meta name="assert" content="This test checks a column-span:all element should act like column-span: none if it's under different block formatting context.">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.column {
|
||||||
|
column-count: 3;
|
||||||
|
column-rule: 6px solid;
|
||||||
|
width: 600px;
|
||||||
|
outline: 1px solid black;
|
||||||
|
}
|
||||||
|
.spanner {
|
||||||
|
column-span: all;
|
||||||
|
outline: 1px solid blue;
|
||||||
|
}
|
||||||
|
fieldset {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<table class="spanner">
|
||||||
|
<tr>
|
||||||
|
<td>table as a spanner</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<div class="spanner" style="display: grid;">grid as a spanner</div>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<div class="spanner" style="display: flex;">flex as a spanner</div>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<fieldset class="spanner">fieldset as a spanner</fieldset>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<article class="column">
|
||||||
|
<div>block1</div>
|
||||||
|
<details open class="spanner">details as a spanner</details>
|
||||||
|
<div>block2</div>
|
||||||
|
</article>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,49 @@
|
||||||
|
<!doctype html>
|
||||||
|
<link rel="href" href="https://mozilla.org" title="Mozilla">
|
||||||
|
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-scoping/#slotted-pseudo">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<div id="host"><p>This text should be green</p></div>
|
||||||
|
<script>
|
||||||
|
let shadow = host.attachShadow({ mode: "open" });
|
||||||
|
shadow.innerHTML = `
|
||||||
|
<style>
|
||||||
|
/* This is not expected to match */
|
||||||
|
.container ::slotted(p) {
|
||||||
|
color: red !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This _is_ expected to match */
|
||||||
|
#nested ::slotted(p) {
|
||||||
|
background-color: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div id="nested"><slot></slot></div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
let nested = shadow.querySelector("#nested").attachShadow({ mode: "open" });
|
||||||
|
nested.innerHTML = `
|
||||||
|
<style>
|
||||||
|
.container ::slotted(p) {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="container">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
let p = document.querySelector("p");
|
||||||
|
test(function() {
|
||||||
|
assert_equals(getComputedStyle(p).color, "rgb(0, 128, 0)");
|
||||||
|
assert_equals(getComputedStyle(p).backgroundColor, "rgb(0, 128, 0)");
|
||||||
|
}, "Slotted matches rules against the slot in the right tree");
|
||||||
|
test(function() {
|
||||||
|
nested.querySelector(".container").classList.remove("container");
|
||||||
|
assert_not_equals(getComputedStyle(p).color, "rgb(0, 128, 0)");
|
||||||
|
|
||||||
|
nested.host.removeAttribute("id");
|
||||||
|
assert_not_equals(getComputedStyle(p).backgroundColor, "rgb(0, 128, 0)");
|
||||||
|
}, "Style invalidation works correctly for nested slots");
|
||||||
|
</script>
|
|
@ -0,0 +1,35 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS test preserved spaces and floats interaction</title>
|
||||||
|
<link rel="author" title="Koji Ishii" href="kojii@chromium.org">
|
||||||
|
<link rel="match" href="reference/pre-float-001-ref.html">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-property">
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
font-family: Ahem;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
white-space: pre;
|
||||||
|
width: 10ch;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.float {
|
||||||
|
float: left;
|
||||||
|
width: 3ch;
|
||||||
|
height: 2em;
|
||||||
|
background: orange;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">123456 <br>123456</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567 <br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567 <br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567 <br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">12345678 <br>12345678</div>
|
||||||
|
</body>
|
|
@ -0,0 +1,35 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSS test preserved spaces and floats interaction</title>
|
||||||
|
<link rel="author" title="Koji Ishii" href="kojii@chromium.org">
|
||||||
|
<link rel="match" href="reference/pre-wrap-float-001-ref.html">
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-property">
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
font-family: Ahem;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
width: 10ch;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.float {
|
||||||
|
float: left;
|
||||||
|
width: 3ch;
|
||||||
|
height: 2em;
|
||||||
|
background: orange;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">123456 123456</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567 1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567 1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567 1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">12345678 12345678</div>
|
||||||
|
</body>
|
|
@ -0,0 +1,30 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
font-family: Ahem;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
white-space: pre;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.float {
|
||||||
|
float: left;
|
||||||
|
width: 3ch;
|
||||||
|
height: 2em;
|
||||||
|
background: orange;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">123456<br>123456</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567<br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567<br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567<br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">12345678<br>12345678</div>
|
||||||
|
</body>
|
|
@ -0,0 +1,30 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>
|
||||||
|
html {
|
||||||
|
font-family: Ahem;
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
white-space: pre;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.float {
|
||||||
|
float: left;
|
||||||
|
width: 3ch;
|
||||||
|
height: 2em;
|
||||||
|
background: orange;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">123456<br>123456</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567<br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567<br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container">1234567<br>1234567</div>
|
||||||
|
<div class="float"></div>
|
||||||
|
<div class="container"><br><br>12345678<br>12345678</div>
|
||||||
|
</body>
|
|
@ -0,0 +1,39 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>CSS Transition should cancel when an element is reparented</title>
|
||||||
|
<link rel="help" href="https://www.w3.org/TR/css-transitions-1/#starting">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.animated-div {
|
||||||
|
margin-left: 100px;
|
||||||
|
transition: margin-left 10s -5s linear;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div id="parent1">
|
||||||
|
<div id="target" class='animated-div'></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="parent2"></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
test(t => {
|
||||||
|
assert_equals(getComputedStyle(target).marginLeft, '100px');
|
||||||
|
target.style.marginLeft = '200px';
|
||||||
|
|
||||||
|
// Because the start delay is -50% of the transition duration, we should
|
||||||
|
// immediately be (approximately) at the halfway point. What we really care
|
||||||
|
// about checking is that the transition has started but has not ended.
|
||||||
|
assert_not_equals(getComputedStyle(target).marginLeft, '100px');
|
||||||
|
assert_not_equals(getComputedStyle(target).marginLeft, '200px');
|
||||||
|
|
||||||
|
// Now change the target's parent. This should cancel the transition and
|
||||||
|
// skip straight to the end state.
|
||||||
|
parent2.appendChild(target);
|
||||||
|
assert_equals(getComputedStyle(target).marginLeft, '200px');
|
||||||
|
}, 'When an element is reparented, any CSS Transition on it should be cancelled');
|
||||||
|
</script>
|
|
@ -0,0 +1,515 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<title>CSSStyleSheet constructor and adoptedStyleSheets</title>
|
||||||
|
<link rel="author" title="Rakina Zata Amni" href="mailto:rakina@chromium.org">
|
||||||
|
<link rel="help" href="https://wicg.github.io/construct-stylesheets/">
|
||||||
|
<script src = '/resources/testharness.js'></script>
|
||||||
|
<script src = '/resources/testharnessreport.js'></script>
|
||||||
|
|
||||||
|
<section id="firstSection">
|
||||||
|
<div>
|
||||||
|
<span class="green"></span>
|
||||||
|
<span class="red"></span>
|
||||||
|
<span class="blue"></span>
|
||||||
|
<span class="white"></span>
|
||||||
|
<span class="yellow"></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section id="secondSection"></section>
|
||||||
|
<section id="thirdSection"></section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
const greenStyleText = ".green { color: green; }";
|
||||||
|
const redStyleTexts = [".red { color: red; }", ".red + span + span { color: red; }"];
|
||||||
|
const blueStyleTexts = [".blue { color: blue; }", ".blue + span + span { color: blue; }"];
|
||||||
|
const whiteStyleText = "* { color: white; }";
|
||||||
|
const yellowStyleText = ".yellow { color: yellow; }";
|
||||||
|
|
||||||
|
const firstDiv = document.querySelector('#firstSection > div');
|
||||||
|
const secondDiv = firstDiv.cloneNode(true);
|
||||||
|
const shadowRoot = document.querySelector('#secondSection').attachShadow({mode: 'open'});
|
||||||
|
shadowRoot.appendChild(secondDiv);
|
||||||
|
|
||||||
|
const greenSpan = firstDiv.children[0];
|
||||||
|
const redSpan = firstDiv.children[1];
|
||||||
|
const blueSpan = firstDiv.children[2];
|
||||||
|
const whiteSpan = firstDiv.children[3];
|
||||||
|
const yellowSpan = firstDiv.children[4];
|
||||||
|
const greenShadowSpan = secondDiv.children[0];
|
||||||
|
const redShadowSpan = secondDiv.children[1];
|
||||||
|
const blueShadowSpan = secondDiv.children[2];
|
||||||
|
const whiteShadowSpan = secondDiv.children[3];
|
||||||
|
const yellowShadowSpan = secondDiv.children[4];
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
assert_equals(document.adoptedStyleSheets.length, 0);
|
||||||
|
}, "document.adoptedStyleSheets should initially have length 0.");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
const sheet = new CSSStyleSheet({title: "Red", disabled: true, media: "screen, print"});
|
||||||
|
assert_equals(sheet.title, "Red");
|
||||||
|
assert_equals(sheet.ownerNode, null);
|
||||||
|
assert_equals(sheet.ownerRule, null);
|
||||||
|
assert_equals(sheet.media.length, 2);
|
||||||
|
assert_equals(sheet.media.item(0), "screen");
|
||||||
|
assert_equals(sheet.media.item(1), "print");
|
||||||
|
assert_true(sheet.disabled);
|
||||||
|
assert_equals(sheet.cssRules.length, 0);
|
||||||
|
|
||||||
|
sheet.insertRule(redStyleTexts[0]);
|
||||||
|
assert_equals(sheet.cssRules.length, 1);
|
||||||
|
assert_equals(sheet.cssRules[0].cssText, redStyleTexts[0]);
|
||||||
|
|
||||||
|
sheet.insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(sheet.cssRules.length, 2);
|
||||||
|
assert_equals(sheet.cssRules[0].cssText, redStyleTexts[1]);
|
||||||
|
|
||||||
|
const sheet2 = new CSSStyleSheet({});
|
||||||
|
assert_equals(sheet2.title, "")
|
||||||
|
assert_equals(sheet2.ownerNode, null);
|
||||||
|
assert_equals(sheet2.ownerRule, null);
|
||||||
|
assert_equals(sheet2.media.length, 0);
|
||||||
|
assert_false(sheet2.disabled);
|
||||||
|
assert_equals(sheet2.cssRules.length, 0);
|
||||||
|
|
||||||
|
sheet2.insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(sheet2.cssRules.length, 1);
|
||||||
|
assert_equals(sheet2.cssRules[0].cssText, redStyleTexts[1]);
|
||||||
|
|
||||||
|
sheet2.deleteRule(0);
|
||||||
|
assert_equals(sheet2.cssRules.length, 0);
|
||||||
|
|
||||||
|
const sheet3 = new CSSStyleSheet();
|
||||||
|
assert_equals(sheet3.title, "")
|
||||||
|
assert_equals(sheet3.ownerNode, null);
|
||||||
|
assert_equals(sheet3.ownerRule, null);
|
||||||
|
assert_equals(sheet3.media.length, 0);
|
||||||
|
assert_false(sheet3.disabled);
|
||||||
|
assert_equals(sheet3.cssRules.length, 0);
|
||||||
|
|
||||||
|
sheet3.insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(sheet3.cssRules.length, 1);
|
||||||
|
assert_equals(sheet3.cssRules[0].cssText, redStyleTexts[1]);
|
||||||
|
|
||||||
|
sheet3.deleteRule(0);
|
||||||
|
assert_equals(sheet3.cssRules.length, 0);
|
||||||
|
}, 'new CSSStyleSheet produces empty CSSStyleSheet');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
const sheet = new CSSStyleSheet({title: "Red", disabled: true, media: "screen, print"});
|
||||||
|
const promise_sheet = sheet.replace(redStyleTexts[0]);
|
||||||
|
return promise_sheet.then(function(sheet) {
|
||||||
|
assert_equals(sheet.title, "Red");
|
||||||
|
assert_equals(sheet.ownerNode, null);
|
||||||
|
assert_equals(sheet.ownerRule, null);
|
||||||
|
assert_equals(sheet.media.length, 2);
|
||||||
|
assert_equals(sheet.media.item(0), "screen");
|
||||||
|
assert_equals(sheet.media.item(1), "print");
|
||||||
|
assert_true(sheet.disabled);
|
||||||
|
assert_equals(sheet.cssRules.length, 1);
|
||||||
|
assert_equals(sheet.cssRules[0].cssText, redStyleTexts[0]);
|
||||||
|
|
||||||
|
sheet.insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(sheet.cssRules.length, 2);
|
||||||
|
assert_equals(sheet.cssRules[0].cssText, redStyleTexts[1]);
|
||||||
|
});
|
||||||
|
}, 'CSSStyleSheet.replace produces Promise<CSSStyleSheet>');
|
||||||
|
|
||||||
|
function createAllSheetsPromise() {
|
||||||
|
const greenSheet = new CSSStyleSheet();
|
||||||
|
const redSheet = new CSSStyleSheet({media: "screen, print"});
|
||||||
|
const blueSheet = new CSSStyleSheet({title: "Blue", disabled: true});
|
||||||
|
const whiteSheet = new CSSStyleSheet({title: "White", alternate: true});
|
||||||
|
const yellowSheet = new CSSStyleSheet({disabled: false});
|
||||||
|
|
||||||
|
const greenPromise = greenSheet.replace(greenStyleText);
|
||||||
|
const redPromise = redSheet.replace(redStyleTexts[0] + redStyleTexts[1]);
|
||||||
|
const bluePromise = blueSheet.replace(blueStyleTexts[0] + blueStyleTexts[1]);
|
||||||
|
const whitePromise = whiteSheet.replace(whiteStyleText);
|
||||||
|
const yellowPromise = yellowSheet.replace(yellowStyleText);
|
||||||
|
return [greenPromise, redPromise, bluePromise, whitePromise, yellowPromise];
|
||||||
|
}
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
return Promise.all(createAllSheetsPromise()).then(values => {
|
||||||
|
const greenStyleSheet = values[0];
|
||||||
|
const redStyleSheet = values[1];
|
||||||
|
const blueStyleSheet = values[2];
|
||||||
|
const whiteStyleSheet = values[3];
|
||||||
|
const yellowStyleSheet = values[4];
|
||||||
|
|
||||||
|
// Lists of style sheets can be created, assigned and read.
|
||||||
|
document.adoptedStyleSheets = [whiteStyleSheet];
|
||||||
|
// alternate stylesheets aren't applied when title != current preferable name
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
document.adoptedStyleSheets = [greenStyleSheet, blueStyleSheet];
|
||||||
|
// disabled stylesheets aren't applied
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 128, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
document.adoptedStyleSheets = [redStyleSheet, yellowStyleSheet];
|
||||||
|
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(255, 255, 0)");
|
||||||
|
|
||||||
|
document.adoptedStyleSheets = [redStyleSheet, yellowStyleSheet, greenStyleSheet, blueStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 128, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(255, 255, 0)");
|
||||||
|
});
|
||||||
|
}, 'Constructed style sheets can be applied on document');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
return Promise.all(createAllSheetsPromise()).then(values => {
|
||||||
|
const greenStyleSheet = values[0];
|
||||||
|
const redStyleSheet = values[1];
|
||||||
|
const blueStyleSheet = values[2];
|
||||||
|
const whiteStyleSheet = values[3];
|
||||||
|
const yellowStyleSheet = values[4];
|
||||||
|
shadowRoot.adoptedStyleSheets = [whiteStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
shadowRoot.adoptedStyleSheets = [greenStyleSheet, blueStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenShadowSpan).color, "rgb(0, 128, 0)");
|
||||||
|
assert_equals(getComputedStyle(redShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
shadowRoot.adoptedStyleSheets = [redStyleSheet, yellowStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redShadowSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteShadowSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowShadowSpan).color, "rgb(255, 255, 0)");
|
||||||
|
|
||||||
|
shadowRoot.adoptedStyleSheets = [redStyleSheet, yellowStyleSheet, greenStyleSheet, blueStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenShadowSpan).color, "rgb(0, 128, 0)");
|
||||||
|
assert_equals(getComputedStyle(redShadowSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteShadowSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowShadowSpan).color, "rgb(255, 255, 0)");
|
||||||
|
});
|
||||||
|
}, 'Constructed style sheets can be applied on shadow root');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
const plainSheet = new CSSStyleSheet();
|
||||||
|
const redStyleSheetPromise = plainSheet.replace(redStyleTexts[0]);
|
||||||
|
return redStyleSheetPromise.then(function(redStyleSheet) {
|
||||||
|
document.adoptedStyleSheets = [redStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
redStyleSheet.insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
redStyleSheet.deleteRule(1);
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
redStyleSheet.cssRules[0].style.color = "white";
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(255, 255, 255)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
});
|
||||||
|
}, 'Changes to constructed stylesheets through CSSOM is reflected');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
const plainSheet = new CSSStyleSheet();
|
||||||
|
const redStyleSheetPromise = plainSheet.replace(redStyleTexts[0]);
|
||||||
|
return redStyleSheetPromise.then(function(redStyleSheet) {
|
||||||
|
document.adoptedStyleSheets = [redStyleSheet];
|
||||||
|
shadowRoot.adoptedStyleSheets = [redStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
assert_equals(getComputedStyle(greenShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redShadowSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
shadowRoot.adoptedStyleSheets[0].insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
assert_equals(getComputedStyle(greenShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redShadowSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteShadowSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowShadowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
});
|
||||||
|
}, 'Constructed stylesheet can be used and modified in multiple TreeScopes');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
const iframe = document.createElement("iframe");
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
const thirdDiv = firstDiv.cloneNode(true);
|
||||||
|
iframe.contentDocument.body.appendChild(thirdDiv);
|
||||||
|
const greenIframeSpan = thirdDiv.children[0];
|
||||||
|
const redIframeSpan = thirdDiv.children[1];
|
||||||
|
const blueIframeSpan = thirdDiv.children[2];
|
||||||
|
const whiteIframeSpan = thirdDiv.children[3];
|
||||||
|
const yellowIframeSpan = thirdDiv.children[4];
|
||||||
|
|
||||||
|
const plainSheet = new CSSStyleSheet();
|
||||||
|
const redStyleSheetPromise = plainSheet.replace(redStyleTexts[0]);
|
||||||
|
return redStyleSheetPromise.then(function(redStyleSheet) {
|
||||||
|
assert_throws('NotAllowedError', () => { iframe.contentDocument.adoptedStyleSheets = [redStyleSheet]; });
|
||||||
|
assert_equals(getComputedStyle(greenIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
document.adoptedStyleSheets = [redStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
document.adoptedStyleSheets[0].insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
});
|
||||||
|
}, 'Stylesheets constructed on the main Document cannot be used in iframes');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
const iframe = document.createElement("iframe");
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
const thirdDiv = firstDiv.cloneNode(true);
|
||||||
|
iframe.contentDocument.body.appendChild(thirdDiv);
|
||||||
|
const greenIframeSpan = thirdDiv.children[0];
|
||||||
|
const redIframeSpan = thirdDiv.children[1];
|
||||||
|
const blueIframeSpan = thirdDiv.children[2];
|
||||||
|
const whiteIframeSpan = thirdDiv.children[3];
|
||||||
|
const yellowIframeSpan = thirdDiv.children[4];
|
||||||
|
|
||||||
|
// Make sure both the main Document and the iframe are not styled
|
||||||
|
const emptyStyleSheet = new CSSStyleSheet();
|
||||||
|
document.adoptedStyleSheets = [emptyStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
assert_equals(getComputedStyle(greenIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
const iframePlainSheet = new iframe.contentWindow.CSSStyleSheet();
|
||||||
|
const iframeRedStyleSheetPromise = iframePlainSheet.replace(redStyleTexts[0]);
|
||||||
|
return iframeRedStyleSheetPromise.then(function(iframeRedStyleSheet) {
|
||||||
|
assert_throws('NotAllowedError', () => { document.adoptedStyleSheets = [iframeRedStyleSheet]; });
|
||||||
|
assert_equals(getComputedStyle(greenSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
iframe.contentDocument.adoptedStyleSheets = [iframeRedStyleSheet];
|
||||||
|
assert_equals(getComputedStyle(greenIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redIframeSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
iframe.contentDocument.adoptedStyleSheets[0].insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(getComputedStyle(greenIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(redIframeSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(blueIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(whiteIframeSpan).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(getComputedStyle(yellowIframeSpan).color, "rgb(0, 0, 0)");
|
||||||
|
});
|
||||||
|
}, 'Stylesheet constructed on iframe cannot be used in the main Document');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div id="divNonConstructed" class="nonConstructed">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
`use strict`;
|
||||||
|
const shadowRootNonConstructed = divNonConstructed.attachShadow({mode:'open'})
|
||||||
|
nonConstructedStyle = document.createElement("style");
|
||||||
|
shadowRootNonConstructed.appendChild(nonConstructedStyle);
|
||||||
|
nonConstructedStyle.sheet.insertRule(".nonConstructed { color: red; }", 0);
|
||||||
|
const nonConstructedStyleSheet = nonConstructedStyle.sheet;
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
assert_equals(getComputedStyle(divNonConstructed).color, "rgb(0, 0, 0)");
|
||||||
|
assert_throws('NotAllowedError', () => { document.adoptedStyleSheets = [nonConstructedStyleSheet]; });
|
||||||
|
}, 'Adding non-constructed stylesheet to AdoptedStyleSheets is not allowed when the owner document of the stylesheet is in the same document tree as the AdoptedStyleSheets');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
const iframe = document.createElement("iframe");
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
iframeDiv = iframe.contentDocument.createElement("div");
|
||||||
|
iframeDiv.classList.add("nonConstructed");
|
||||||
|
iframe.contentDocument.body.appendChild(iframeDiv);
|
||||||
|
|
||||||
|
assert_equals(getComputedStyle(iframeDiv).color, "rgb(0, 0, 0)");
|
||||||
|
assert_throws('NotAllowedError', () => { iframe.contentDocument.adoptedStyleSheets = [nonConstructedStyleSheet]; });
|
||||||
|
assert_equals(getComputedStyle(iframeDiv).color, "rgb(0, 0, 0)");
|
||||||
|
|
||||||
|
iframeStyle = iframe.contentDocument.createElement("style");
|
||||||
|
iframe.contentDocument.body.appendChild(iframeStyle);
|
||||||
|
iframeStyle.sheet.insertRule(".nonConstructedSpan { color: red; }");
|
||||||
|
const iframeStyleSheet = iframeStyle.sheet;
|
||||||
|
nonConstructedSpan = document.createElement("span");
|
||||||
|
nonConstructedSpan.classList.add(".nonConstructedSpan");
|
||||||
|
divNonConstructed.appendChild(nonConstructedSpan);
|
||||||
|
|
||||||
|
assert_equals(getComputedStyle(iframeDiv).color, "rgb(0, 0, 0)");
|
||||||
|
assert_throws('NotAllowedError', () => { document.adoptedStyleSheets = [iframeStyleSheet]; });
|
||||||
|
assert_equals(getComputedStyle(iframeDiv).color, "rgb(0, 0, 0)");
|
||||||
|
}, 'Adding non-constructed stylesheet to AdoptedStyleSheets is not allowed when the owner document of the stylesheet and the AdoptedStyleSheets are in different document trees');
|
||||||
|
|
||||||
|
function attachShadowDiv(host) {
|
||||||
|
const shadowRoot = host.attachShadow({mode: 'open'});
|
||||||
|
const shadowDiv = document.createElement("div");
|
||||||
|
shadowRoot.appendChild(shadowDiv);
|
||||||
|
return shadowDiv;
|
||||||
|
}
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
// Attach a div inside a shadow root with the class ".red".
|
||||||
|
const span = document.createElement("span");
|
||||||
|
thirdSection.appendChild(span);
|
||||||
|
const shadowDiv = attachShadowDiv(span);
|
||||||
|
shadowDiv.classList.add("red");
|
||||||
|
// Create empty stylesheet.
|
||||||
|
const sheet = new CSSStyleSheet();
|
||||||
|
span.shadowRoot.adoptedStyleSheets = [sheet];
|
||||||
|
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
|
||||||
|
// Replace the stylesheet text that will color it red.
|
||||||
|
sheet.replaceSync(redStyleTexts[0]);
|
||||||
|
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)");
|
||||||
|
assert_equals(sheet.cssRules.length, 1);
|
||||||
|
assert_equals(sheet.cssRules[0].cssText, redStyleTexts[0]);
|
||||||
|
sheet.insertRule(redStyleTexts[1]);
|
||||||
|
assert_equals(sheet.cssRules.length, 2);
|
||||||
|
assert_equals(sheet.cssRules[0].cssText, redStyleTexts[1]);
|
||||||
|
}, 'CSSStyleSheet.replaceSync replaces stylesheet text synchronously');
|
||||||
|
|
||||||
|
const import_text = '@import url("support/constructable-import.css");';
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
assert_throws("NotAllowedError", () => { (new CSSStyleSheet).replaceSync(import_text) });
|
||||||
|
}, 'CSSStyleSheet.replaceSync throws exception when there is import rule inside');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
assert_throws("NotAllowedError", () => { (new CSSStyleSheet).insertRule(import_text) });
|
||||||
|
}, 'Inserting an @import rule through insertRule on a constructed stylesheet throws an exception');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
const span = document.createElement("span");
|
||||||
|
thirdSection.appendChild(span);
|
||||||
|
const shadowDiv = attachShadowDiv(span);
|
||||||
|
const sheet = new CSSStyleSheet();
|
||||||
|
span.shadowRoot.adoptedStyleSheets = [sheet];
|
||||||
|
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
|
||||||
|
// Replace and assert that the imported rule is applied.
|
||||||
|
const sheet_promise = sheet.replace(import_text);
|
||||||
|
return sheet_promise.then((sheet) => {
|
||||||
|
assert_equals(sheet.cssRules.length, 1);
|
||||||
|
assert_equals(sheet.cssRules[0].cssText, import_text);
|
||||||
|
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)");
|
||||||
|
});
|
||||||
|
}, 'CSSStyleSheet.replace allows import rule inside');
|
||||||
|
|
||||||
|
promise_test(() => {
|
||||||
|
const sheet = new CSSStyleSheet();
|
||||||
|
const sheet_promise = sheet.replace("import url('not-there.css');");
|
||||||
|
return sheet_promise.catch((reason) => {
|
||||||
|
assert_equals(reason.name, "NotAllowedError");
|
||||||
|
});
|
||||||
|
}, 'CSSStyleSheet.replace returns rejected promise on failed imports');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
const span = document.createElement("span");
|
||||||
|
thirdSection.appendChild(span);
|
||||||
|
const shadowDiv = attachShadowDiv(span);
|
||||||
|
const sheet = new CSSStyleSheet();
|
||||||
|
span.shadowRoot.adoptedStyleSheets = [sheet];
|
||||||
|
|
||||||
|
const newSpan = span.cloneNode(true);
|
||||||
|
assert_equals(newSpan.shadowRoot, null);
|
||||||
|
}, 'Cloning a shadow host will not clone shadow root, and also adoptedStyleSheets');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
const span = document.createElement("span");
|
||||||
|
thirdSection.appendChild(span);
|
||||||
|
const shadowDiv = attachShadowDiv(span);
|
||||||
|
const sheet = new CSSStyleSheet();
|
||||||
|
span.shadowRoot.adoptedStyleSheets = [sheet];
|
||||||
|
|
||||||
|
const iframe = document.createElement("iframe");
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
const newSpan = iframe.contentDocument.importNode(span, true);
|
||||||
|
iframe.contentDocument.body.appendChild(newSpan);
|
||||||
|
assert_equals(newSpan.shadowRoot, null);
|
||||||
|
}, 'Importing a shadow host will not copy shadow root, and also adoptedStyleSheets');
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
const span = document.createElement("span");
|
||||||
|
thirdSection.appendChild(span);
|
||||||
|
const shadowDiv = attachShadowDiv(span);
|
||||||
|
const sheet = new CSSStyleSheet();
|
||||||
|
sheet.replaceSync("* { color: red; }");
|
||||||
|
span.shadowRoot.adoptedStyleSheets = [sheet];
|
||||||
|
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)");
|
||||||
|
|
||||||
|
const iframe = document.createElement("iframe");
|
||||||
|
document.body.appendChild(iframe);
|
||||||
|
iframe.contentDocument.adoptNode(span);
|
||||||
|
iframe.contentDocument.body.appendChild(span);
|
||||||
|
assert_not_equals(span.shadowRoot, null);
|
||||||
|
assert_equals(span.shadowRoot.adoptedStyleSheets.length, 1);
|
||||||
|
assert_equals(span.shadowRoot.adoptedStyleSheets[0], sheet);
|
||||||
|
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
|
||||||
|
}, 'Adopting a shadow host will move adoptedStyleSheets but it is not applied');
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
3
tests/wpt/web-platform-tests/css/cssom/support/constructable-import.css
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
* {
|
||||||
|
color: red;
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<div style="width: 100px; height: 100px; background-color: green"></div>
|
|
@ -0,0 +1,48 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html class="reftest-wait">
|
||||||
|
<title>Filter Effects: Dynamic 'currentcolor' in SourceGraphic</title>
|
||||||
|
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#attr-valuedef-in-sourcegraphic">
|
||||||
|
<link rel="match" href="reference/green-100x100.html">
|
||||||
|
<style>
|
||||||
|
rect {
|
||||||
|
fill: currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filtered {
|
||||||
|
filter: url(#filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
.green {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<svg style="color: red">
|
||||||
|
<defs>
|
||||||
|
<filter id="filter" color-interpolation-filters="sRGB">
|
||||||
|
<feMerge>
|
||||||
|
<feMergeNode/>
|
||||||
|
</feMerge>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<g class="target filtered">
|
||||||
|
<rect width="50" height="100"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<g class="target">
|
||||||
|
<g class="filtered">
|
||||||
|
<rect x="50" width="50" height="100"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
<script>
|
||||||
|
document.body.offsetTop;
|
||||||
|
requestAnimationFrame(function() {
|
||||||
|
requestAnimationFrame(function() {
|
||||||
|
let targets = document.querySelectorAll('.target');
|
||||||
|
for (let i = 0; i < targets.length; ++i)
|
||||||
|
targets[i].classList.toggle('green');
|
||||||
|
document.documentElement.classList.remove('reftest-wait');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -24,9 +24,11 @@ var tests = [
|
||||||
['[foo="bar" i]', '[foo="bar" i]'],
|
['[foo="bar" i]', '[foo="bar" i]'],
|
||||||
['[foo="bar" /**/ i]', '[foo="bar" i]'],
|
['[foo="bar" /**/ i]', '[foo="bar" i]'],
|
||||||
['[foo="bar"/**/i]', '[foo="bar" i]'],
|
['[foo="bar"/**/i]', '[foo="bar" i]'],
|
||||||
|
['[*|foo="bar" i]', '[*|foo="bar" i]'],
|
||||||
['[foo="bar" s]', '[foo="bar" s]'],
|
['[foo="bar" s]', '[foo="bar" s]'],
|
||||||
['[foo="bar" /**/ s]', '[foo="bar" s]'],
|
['[foo="bar" /**/ s]', '[foo="bar" s]'],
|
||||||
['[foo="bar"/**/s]', '[foo="bar" s]'],
|
['[foo="bar"/**/s]', '[foo="bar" s]'],
|
||||||
|
['[*|foo="bar" s]', '[*|foo="bar" s]'],
|
||||||
]
|
]
|
||||||
|
|
||||||
tests.forEach(function(arr) {
|
tests.forEach(function(arr) {
|
||||||
|
|
|
@ -7,6 +7,10 @@ const longValue = "s".repeat(127);
|
||||||
"headers": ["accept", "accept-language", "content-language"],
|
"headers": ["accept", "accept-language", "content-language"],
|
||||||
"values": [longValue, "", longValue]
|
"values": [longValue, "", longValue]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"headers": ["accept", "accept-language", "content-language"],
|
||||||
|
"values": ["", longValue]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"headers": ["content-type"],
|
"headers": ["content-type"],
|
||||||
"values": ["text/plain;" + "s".repeat(116), "text/plain"]
|
"values": ["text/plain;" + "s".repeat(116), "text/plain"]
|
||||||
|
@ -17,10 +21,10 @@ const longValue = "s".repeat(127);
|
||||||
const noCorsHeaders = new Request("about:blank", { mode: "no-cors" }).headers;
|
const noCorsHeaders = new Request("about:blank", { mode: "no-cors" }).headers;
|
||||||
testItem.values.forEach((value) => {
|
testItem.values.forEach((value) => {
|
||||||
noCorsHeaders.append(header, value);
|
noCorsHeaders.append(header, value);
|
||||||
assert_equals(noCorsHeaders.get(header), testItem.values[0]);
|
assert_equals(noCorsHeaders.get(header), testItem.values[0], '1');
|
||||||
});
|
});
|
||||||
noCorsHeaders.set(header, values.join(", "));
|
noCorsHeaders.set(header, testItem.values.join(", "));
|
||||||
assert_equals(noCorsHeaders.get(header), testItem.values[0]);
|
assert_equals(noCorsHeaders.get(header), testItem.values[0], '2');
|
||||||
noCorsHeaders.delete(header);
|
noCorsHeaders.delete(header);
|
||||||
assert_false(noCorsHeaders.has(header));
|
assert_false(noCorsHeaders.has(header));
|
||||||
}, "\"no-cors\" Headers object cannot have " + header + " set to " + testItem.values.join(", "));
|
}, "\"no-cors\" Headers object cannot have " + header + " set to " + testItem.values.join(", "));
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
<!doctype html>
|
||||||
|
<meta http-equiv="Content-Type" content='charset="windows-1251'>
|
||||||
|
<meta charset=windows-1250>
|
||||||
|
<title></title>
|
||||||
|
<script src=/resources/testharness.js></script>
|
||||||
|
<script src=/resources/testharnessreport.js></script>
|
||||||
|
<link rel=help href="https://html.spec.whatwg.org/#algorithm-for-extracting-a-character-encoding-from-a-meta-element">
|
||||||
|
<script>
|
||||||
|
test(function() {
|
||||||
|
assert_equals(document.characterSet, "windows-1250");
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -239,7 +239,7 @@ dictionary RTCTransportStats : RTCStats {
|
||||||
dictionary RTCIceCandidateStats : RTCStats {
|
dictionary RTCIceCandidateStats : RTCStats {
|
||||||
DOMString transportId;
|
DOMString transportId;
|
||||||
RTCNetworkType networkType;
|
RTCNetworkType networkType;
|
||||||
DOMString address;
|
DOMString? address;
|
||||||
long port;
|
long port;
|
||||||
DOMString protocol;
|
DOMString protocol;
|
||||||
RTCIceCandidateType candidateType;
|
RTCIceCandidateType candidateType;
|
||||||
|
|
|
@ -13,6 +13,11 @@
|
||||||
function (entryList, obs) {
|
function (entryList, obs) {
|
||||||
var entries = entryList.getEntriesByType("resource");
|
var entries = entryList.getEntriesByType("resource");
|
||||||
for (var i = 0; i < entries.length; ++i) {
|
for (var i = 0; i < entries.length; ++i) {
|
||||||
|
// Ignore any entries for the test harness files if present.
|
||||||
|
if (/testharness(report)?\.js/.test(entries[i].name)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
++observed;
|
++observed;
|
||||||
if (entries[i].name.indexOf(img_url) != -1)
|
if (entries[i].name.indexOf(img_url) != -1)
|
||||||
++img_entries;
|
++img_entries;
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||||
|
<xsl:import href="xslt-pass.xsl"/>
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="resources/request-url-path/import-relative.xsl"?>
|
||||||
|
<stylesheet-test>
|
||||||
|
This tests a stylesheet which has a xsl:import with a relative URL.
|
||||||
|
</stylesheet-test>
|
|
@ -0,0 +1,12 @@
|
||||||
|
self.addEventListener('fetch', event => {
|
||||||
|
const url = new URL(event.request.url);
|
||||||
|
|
||||||
|
// For the import-relative.xsl file, respond in a way that changes the
|
||||||
|
// response URL. This is expected to change the base URL and allow the import
|
||||||
|
// from the file to succeed.
|
||||||
|
const path = 'request-url-path/import-relative.xsl';
|
||||||
|
if (url.pathname.indexOf(path) != -1) {
|
||||||
|
// Respond with a different URL, deleting "request-url-path/".
|
||||||
|
event.respondWith(fetch('import-relative.xsl'));
|
||||||
|
}
|
||||||
|
});
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||||
|
<xsl:template match="/">
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<p>PASS</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
|
@ -0,0 +1,32 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Service Worker: XSL's base URL must be the response URL</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="resources/test-helpers.sub.js?pipe=sub"></script>
|
||||||
|
<script>
|
||||||
|
// This test loads an XML document which is controlled a service worker. The
|
||||||
|
// document loads a stylesheet and a service worker responds with another URL.
|
||||||
|
// The stylesheet imports a relative URL to test that the base URL is the
|
||||||
|
// response URL from the service worker.
|
||||||
|
promise_test(async (t) => {
|
||||||
|
const SCOPE = 'resources/xsl-base-url-iframe.xml';
|
||||||
|
const SCRIPT = 'resources/xsl-base-url-worker.js';
|
||||||
|
let worker;
|
||||||
|
let frame;
|
||||||
|
|
||||||
|
t.add_cleanup(() => {
|
||||||
|
if (frame)
|
||||||
|
frame.remove();
|
||||||
|
service_worker_unregister(t, SCOPE);
|
||||||
|
});
|
||||||
|
|
||||||
|
const registration = await service_worker_unregister_and_register(
|
||||||
|
t, SCRIPT, SCOPE);
|
||||||
|
worker = registration.installing;
|
||||||
|
await wait_for_state(t, worker, 'activated');
|
||||||
|
|
||||||
|
frame = await with_iframe(SCOPE);
|
||||||
|
assert_equals(frame.contentDocument.body.textContent, 'PASS');
|
||||||
|
}, 'base URL when service worker does respondWith(fetch(responseUrl))');
|
||||||
|
</script>
|
|
@ -25,9 +25,9 @@
|
||||||
var first = document.getElementById('first');
|
var first = document.getElementById('first');
|
||||||
assert_equals(getComputedStyle(first).x, "0px");
|
assert_equals(getComputedStyle(first).x, "0px");
|
||||||
assert_equals(getComputedStyle(first).y, "0px");
|
assert_equals(getComputedStyle(first).y, "0px");
|
||||||
assert_equals(getComputedStyle(first).width, "auto");
|
assert_equals(getComputedStyle(first).width, "0px");
|
||||||
assert_equals(getComputedStyle(first).height, "auto");
|
assert_equals(getComputedStyle(first).height, "0px");
|
||||||
}, 'width and height default to auto');
|
}, 'width and height default to auto (which computes to "0px")');
|
||||||
|
|
||||||
test(function() {
|
test(function() {
|
||||||
var second = document.getElementById('second');
|
var second = document.getElementById('second');
|
||||||
|
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,130 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
|
||||||
|
<title>SVG Geometry Properties: getComputedStyle().height</title>
|
||||||
|
<metadata>
|
||||||
|
<h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#Sizing"/>
|
||||||
|
<h:link rel="help" href="https://drafts.csswg.org/cssom/#resolved-values"/>
|
||||||
|
</metadata>
|
||||||
|
<h:script src="/resources/testharness.js"/>
|
||||||
|
<h:script src="/resources/testharnessreport.js"/>
|
||||||
|
<svg width="200" height="100" id="test-content">
|
||||||
|
<rect/>
|
||||||
|
<rect width="100" height="200"/>
|
||||||
|
<rect width="42" style="height: auto"/>
|
||||||
|
<rect width="42" style="height: 20px"/>
|
||||||
|
<rect width="42" style="height: 40%"/>
|
||||||
|
<rect width="42" style="height: 80%; display: none"/>
|
||||||
|
|
||||||
|
<g><rect width="100" height="100"/></g>
|
||||||
|
<g width="100" height="42px"><rect width="100" height="100"/></g>
|
||||||
|
<g style="width: 10%; height: auto"><rect width="100" height="100"/></g>
|
||||||
|
<g style="width: auto; height: 20px"><rect width="100" height="100"/></g>
|
||||||
|
<g style="width: 20px; height: 10%"><rect width="100" height="100"/></g>
|
||||||
|
|
||||||
|
<image/>
|
||||||
|
<image width="42" height="200"/>
|
||||||
|
<image width="42" style="height: auto"/>
|
||||||
|
<image width="42" style="height: 230px"/>
|
||||||
|
<image width="42" style="height: 25%"/>
|
||||||
|
<image width="42" style="height: 25%; display: none"/>
|
||||||
|
|
||||||
|
<foreignObject>Some content</foreignObject>
|
||||||
|
<foreignObject height="200">Some content</foreignObject>
|
||||||
|
<foreignObject style="height: auto">Some content</foreignObject>
|
||||||
|
<foreignObject style="height: 75px">Some content</foreignObject>
|
||||||
|
<foreignObject style="height: 50%">Some content</foreignObject>
|
||||||
|
<foreignObject style="height: auto; display: none">Some content</foreignObject>
|
||||||
|
|
||||||
|
<svg/>
|
||||||
|
<svg height="200"/>
|
||||||
|
<svg style="height: auto"/>
|
||||||
|
<svg style="height: 200px"/>
|
||||||
|
<svg style="height: 50%"/>
|
||||||
|
<svg style="height: auto; display: none"/>
|
||||||
|
|
||||||
|
<text>Text1</text>
|
||||||
|
<text width="100px" height="42">Text2</text>
|
||||||
|
<text style="width: 30%; height: auto">Text3</text>
|
||||||
|
<text style="width: auto; height: 20px">Text3</text>
|
||||||
|
<text style="width: 20px; height: 30%">Text3</text>
|
||||||
|
</svg>
|
||||||
|
<script><![CDATA[
|
||||||
|
[
|
||||||
|
// Cases where computed 'height' return the used value.
|
||||||
|
{
|
||||||
|
element: 'rect',
|
||||||
|
expected: [
|
||||||
|
{ value: '0px', description: 'initial' },
|
||||||
|
{ value: '200px', description: 'presentation attribute' },
|
||||||
|
{ value: '0px', description: 'inline style (auto)' },
|
||||||
|
{ value: '20px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '40px', description: 'inline style (percentage)' },
|
||||||
|
{ value: '80%', description: 'inline style but "display: none"' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
element: 'image',
|
||||||
|
expected: [
|
||||||
|
{ value: '0px', description: 'initial' },
|
||||||
|
{ value: '200px', description: 'presentation attribute' },
|
||||||
|
{ value: '0px', description: 'inline style (auto)' },
|
||||||
|
{ value: '230px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '25px', description: 'inline style (percentage)' },
|
||||||
|
{ value: '25%', description: 'inline style but "display: none"' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
element: 'foreignObject',
|
||||||
|
expected: [
|
||||||
|
{ value: '0px', description: 'initial' },
|
||||||
|
{ value: '200px', description: 'presentation attribute' },
|
||||||
|
{ value: '0px', description: 'inline style (auto)' },
|
||||||
|
{ value: '75px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '50px', description: 'inline style (percentage)' },
|
||||||
|
{ value: 'auto', description: 'inline style but "display: none"' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
element: 'svg',
|
||||||
|
expected: [
|
||||||
|
{ value: '100px', description: 'initial' },
|
||||||
|
{ value: '200px', description: 'presentation attribute' },
|
||||||
|
{ value: '100px', description: 'inline style (auto)' },
|
||||||
|
{ value: '200px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '50px', description: 'inline style (percentage)' },
|
||||||
|
{ value: 'auto', description: 'inline style but "display: none"' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// Cases where computed 'height' return the computed value.
|
||||||
|
{
|
||||||
|
element: 'g',
|
||||||
|
expected: [
|
||||||
|
{ value: 'auto', description: 'initial' },
|
||||||
|
{ value: 'auto', description: 'initial (with dummy attribute)' },
|
||||||
|
{ value: 'auto', description: 'inline style (auto)' },
|
||||||
|
{ value: '20px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '10%', description: 'inline style (percentage)' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
element: 'text',
|
||||||
|
expected: [
|
||||||
|
{ value: 'auto', description: 'initial' },
|
||||||
|
{ value: 'auto', description: 'initial (with dummy attribute)' },
|
||||||
|
{ value: 'auto', description: 'inline style (auto)' },
|
||||||
|
{ value: '20px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '30%', description: 'inline style (percentage)' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
].forEach(function(entry) {
|
||||||
|
let element_set = document.querySelectorAll('#test-content > ' + entry.element);
|
||||||
|
entry.expected.forEach(function(expected, index) {
|
||||||
|
test(function() {
|
||||||
|
let style = getComputedStyle(element_set[index]);
|
||||||
|
assert_equals(style.height, expected.value, expected.description);
|
||||||
|
}, document.title + ', <' + entry.element + '> ' + expected.description);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
]]></script>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
|
@ -0,0 +1,130 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
|
||||||
|
<title>SVG Geometry Properties: getComputedStyle().width</title>
|
||||||
|
<metadata>
|
||||||
|
<h:link rel="help" href="https://svgwg.org/svg2-draft/geometry.html#Sizing"/>
|
||||||
|
<h:link rel="help" href="https://drafts.csswg.org/cssom/#resolved-values"/>
|
||||||
|
</metadata>
|
||||||
|
<h:script src="/resources/testharness.js"/>
|
||||||
|
<h:script src="/resources/testharnessreport.js"/>
|
||||||
|
<svg width="200" height="100" id="test-content">
|
||||||
|
<rect/>
|
||||||
|
<rect width="100" height="200"/>
|
||||||
|
<rect height="42" style="width: 40%"/>
|
||||||
|
<rect height="42" style="width: auto"/>
|
||||||
|
<rect height="42" style="width: 20px"/>
|
||||||
|
<rect height="42" style="width: 42%; display: none"/>
|
||||||
|
|
||||||
|
<g><rect width="100" height="100"/></g>
|
||||||
|
<g width="100" height="42px"><rect width="100" height="100"/></g>
|
||||||
|
<g style="width: 10%; height: auto"><rect width="100" height="100"/></g>
|
||||||
|
<g style="width: auto; height: 20px"><rect width="100" height="100"/></g>
|
||||||
|
<g style="width: 20px; height: 10%"><rect width="100" height="100"/></g>
|
||||||
|
|
||||||
|
<image/>
|
||||||
|
<image width="100"/>
|
||||||
|
<image height="42" style="width: 25%"/>
|
||||||
|
<image height="42" style="width: auto"/>
|
||||||
|
<image height="42" style="width: 230px"/>
|
||||||
|
<image height="42" style="width: 25%; display: none"/>
|
||||||
|
|
||||||
|
<foreignObject>Some content</foreignObject>
|
||||||
|
<foreignObject width="100">Some content</foreignObject>
|
||||||
|
<foreignObject style="width: 50%">Some content</foreignObject>
|
||||||
|
<foreignObject style="width: auto">Some content</foreignObject>
|
||||||
|
<foreignObject style="width: 75px">Some content</foreignObject>
|
||||||
|
<foreignObject style="width: auto; display: none">Some content</foreignObject>
|
||||||
|
|
||||||
|
<svg/>
|
||||||
|
<svg width="100"/>
|
||||||
|
<svg style="width: auto"/>
|
||||||
|
<svg style="width: 200px"/>
|
||||||
|
<svg style="width: 50%"/>
|
||||||
|
<svg style="width: auto; display: none"/>
|
||||||
|
|
||||||
|
<text>Text1</text>
|
||||||
|
<text width="100px" height="42">Text2</text>
|
||||||
|
<text style="width: 30%; height: auto">Text3</text>
|
||||||
|
<text style="width: auto; height: 20px">Text3</text>
|
||||||
|
<text style="width: 20px; height: 30%">Text3</text>
|
||||||
|
</svg>
|
||||||
|
<script><![CDATA[
|
||||||
|
[
|
||||||
|
// Cases where computed 'width' return the used value.
|
||||||
|
{
|
||||||
|
element: 'rect',
|
||||||
|
expected: [
|
||||||
|
{ value: '0px', description: 'initial' },
|
||||||
|
{ value: '100px', description: 'presentation attribute' },
|
||||||
|
{ value: '80px', description: 'inline style (percentage)' },
|
||||||
|
{ value: '0px', description: 'inline style (auto)' },
|
||||||
|
{ value: '20px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '42%', description: 'inline style but "display: none"' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
element: 'image',
|
||||||
|
expected: [
|
||||||
|
{ value: '0px', description: 'initial' },
|
||||||
|
{ value: '100px', description: 'presentation attribute' },
|
||||||
|
{ value: '50px', description: 'inline style (percentage)' },
|
||||||
|
{ value: '0px', description: 'inline style (auto)' },
|
||||||
|
{ value: '230px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '25%', description: 'inline style but "display: none"' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
element: 'foreignObject',
|
||||||
|
expected: [
|
||||||
|
{ value: '0px', description: 'initial' },
|
||||||
|
{ value: '100px', description: 'presentation attribute' },
|
||||||
|
{ value: '100px', description: 'inline style (percentage)' },
|
||||||
|
{ value: '0px', description: 'inline style (auto)' },
|
||||||
|
{ value: '75px', description: 'inline style (pixels)' },
|
||||||
|
{ value: 'auto', description: 'inline style but "display: none"' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
element: 'svg',
|
||||||
|
expected: [
|
||||||
|
{ value: '200px', description: 'initial' },
|
||||||
|
{ value: '100px', description: 'presentation attribute' },
|
||||||
|
{ value: '200px', description: 'inline style (auto)' },
|
||||||
|
{ value: '200px', description: 'inline style (pixels)' },
|
||||||
|
{ value: '100px', description: 'inline style (percentage)' },
|
||||||
|
{ value: 'auto', description: 'inline style but "display: none"' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// Cases where computed 'width' return the computed value.
|
||||||
|
{
|
||||||
|
element: 'g',
|
||||||
|
expected: [
|
||||||
|
{ value: 'auto', description: 'initial' },
|
||||||
|
{ value: 'auto', description: 'initial (with dummy attribute)' },
|
||||||
|
{ value: '10%', description: 'inline style (percentage)' },
|
||||||
|
{ value: 'auto', description: 'inline style (auto)' },
|
||||||
|
{ value: '20px', description: 'inline style (pixels)' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
element: 'text',
|
||||||
|
expected: [
|
||||||
|
{ value: 'auto', description: 'initial' },
|
||||||
|
{ value: 'auto', description: 'initial (with dummy attribute)' },
|
||||||
|
{ value: '30%', description: 'inline style (percentage)' },
|
||||||
|
{ value: 'auto', description: 'inline style (auto)' },
|
||||||
|
{ value: '20px', description: 'inline style (pixels)' },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
].forEach(function(entry) {
|
||||||
|
let element_set = document.querySelectorAll('#test-content > ' + entry.element);
|
||||||
|
entry.expected.forEach(function(expected, index) {
|
||||||
|
test(function() {
|
||||||
|
let style = getComputedStyle(element_set[index]);
|
||||||
|
assert_equals(style.width, expected.value, expected.description);
|
||||||
|
}, document.title + ', <' + entry.element + '> ' + expected.description);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
]]></script>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
|
||||||
|
<title>SVG Paint Servers: getComputedStyle().stopColor</title>
|
||||||
|
<metadata>
|
||||||
|
<h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopColorProperty"/>
|
||||||
|
<h:link rel="help" href="https://drafts.csswg.org/css-color/#resolve-color-values"/>
|
||||||
|
<h:link rel="help" href="https://drafts.csswg.org/cssom/#serializing-css-values"/>
|
||||||
|
</metadata>
|
||||||
|
<g id="target" style="color: blue"></g>
|
||||||
|
<h:script src="/resources/testharness.js"/>
|
||||||
|
<h:script src="/resources/testharnessreport.js"/>
|
||||||
|
<h:script src="/css/support/computed-testcommon.js"/>
|
||||||
|
<script><![CDATA[
|
||||||
|
|
||||||
|
test_computed_value("stop-color", "currentcolor", "rgb(0, 0, 255)");
|
||||||
|
test_computed_value("stop-color", "white", "rgb(255, 255, 255)");
|
||||||
|
test_computed_value("stop-color", "transparent", "rgba(0, 0, 0, 0)");
|
||||||
|
test_computed_value("stop-color", "rgb(255, 255, 255)");
|
||||||
|
test_computed_value("stop-color", "#ffffff", "rgb(255, 255, 255)");
|
||||||
|
test_computed_value("stop-color", "rgba(255, 255, 255, 1.0)", "rgb(255, 255, 255)");
|
||||||
|
test_computed_value("stop-color", "rgba(255, 255, 255, 0.4)");
|
||||||
|
test_computed_value("stop-color", "hsl(0deg, 100%, 100%)", "rgb(255, 255, 255)");
|
||||||
|
test_computed_value("stop-color", "hsla(0deg, 100%, 100%, 1.0)", "rgb(255, 255, 255)");
|
||||||
|
test_computed_value("stop-color", "hsla(0deg, 100%, 100%, 0.4)", "rgba(255, 255, 255, 0.4)");
|
||||||
|
|
||||||
|
]]></script>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect width="100" height="100" fill="green"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 96 B |
|
@ -0,0 +1,18 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"
|
||||||
|
style="color: red">
|
||||||
|
<title>stop-color: Dynamically changing 'color' for a gradient with a stop with 'currentcolor'</title>
|
||||||
|
<h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopColorProperty"/>
|
||||||
|
<h:link rel="match" href="reference/green-100x100.svg"/>
|
||||||
|
<linearGradient id="g">
|
||||||
|
<stop stop-color="currentcolor"/>
|
||||||
|
</linearGradient>
|
||||||
|
<rect width="50" height="100" fill="url(#g)"/>
|
||||||
|
<rect width="50" height="100" x="50" fill="currentcolor"/>
|
||||||
|
<script>
|
||||||
|
<![CDATA[
|
||||||
|
let root = document.querySelector(':root');
|
||||||
|
root.getBoundingClientRect(); // Force layout
|
||||||
|
root.style.color = 'green';
|
||||||
|
]]>
|
||||||
|
</script>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 742 B |
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"
|
||||||
|
color="red">
|
||||||
|
<title>SVG Paint Servers: 'stop-color' inheritance of 'currentcolor'</title>
|
||||||
|
<metadata>
|
||||||
|
<h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html#StopColorProperty"/>
|
||||||
|
<h:link rel="help" href="https://drafts.csswg.org/css-color/#resolve-color-values"/>
|
||||||
|
</metadata>
|
||||||
|
<h:script src="/resources/testharness.js"/>
|
||||||
|
<h:script src="/resources/testharnessreport.js"/>
|
||||||
|
<linearGradient stop-color="currentcolor" id="g">
|
||||||
|
<stop stop-color="inherit" color="green"/>
|
||||||
|
</linearGradient>
|
||||||
|
<script><![CDATA[
|
||||||
|
|
||||||
|
test(function() {
|
||||||
|
let stop = document.querySelector('stop');
|
||||||
|
assert_equals(getComputedStyle(stop).stopColor, 'rgb(0, 128, 0)');
|
||||||
|
}, '"currentcolor" is inherited as a keyword');
|
||||||
|
|
||||||
|
]]></script>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 881 B |
|
@ -1,3 +1,3 @@
|
||||||
mozprocess == 0.26
|
mozprocess == 0.26
|
||||||
selenium==3.141.0
|
selenium==3.141.0
|
||||||
requests==2.20.1
|
requests==2.21.0
|
||||||
|
|
|
@ -146,15 +146,11 @@ class Browser(object):
|
||||||
with which it should be instantiated"""
|
with which it should be instantiated"""
|
||||||
return ExecutorBrowser, {}
|
return ExecutorBrowser, {}
|
||||||
|
|
||||||
def check_for_crashes(self):
|
def check_crash(self, process, test):
|
||||||
"""Check for crashes that didn't cause the browser process to terminate"""
|
"""Check if a crash occured and output any useful information to the
|
||||||
|
log. Returns a boolean indicating whether a crash occured."""
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def log_crash(self, process, test):
|
|
||||||
"""Return a list of dictionaries containing information about crashes that happend
|
|
||||||
in the browser, or an empty list if no crashes occurred"""
|
|
||||||
self.logger.crash(process, test)
|
|
||||||
|
|
||||||
|
|
||||||
class NullBrowser(Browser):
|
class NullBrowser(Browser):
|
||||||
def __init__(self, logger, **kwargs):
|
def __init__(self, logger, **kwargs):
|
||||||
|
|
|
@ -397,23 +397,15 @@ class FirefoxBrowser(Browser):
|
||||||
assert self.marionette_port is not None
|
assert self.marionette_port is not None
|
||||||
return ExecutorBrowser, {"marionette_port": self.marionette_port}
|
return ExecutorBrowser, {"marionette_port": self.marionette_port}
|
||||||
|
|
||||||
def check_for_crashes(self):
|
def check_crash(self, process, test):
|
||||||
dump_dir = os.path.join(self.profile.profile, "minidumps")
|
dump_dir = os.path.join(self.profile.profile, "minidumps")
|
||||||
|
|
||||||
return bool(mozcrash.check_for_crashes(dump_dir,
|
return bool(mozcrash.log_crashes(self.logger,
|
||||||
symbols_path=self.symbols_path,
|
dump_dir,
|
||||||
stackwalk_binary=self.stackwalk_binary,
|
symbols_path=self.symbols_path,
|
||||||
quiet=True))
|
stackwalk_binary=self.stackwalk_binary,
|
||||||
|
process=process,
|
||||||
def log_crash(self, process, test):
|
test=test))
|
||||||
dump_dir = os.path.join(self.profile.profile, "minidumps")
|
|
||||||
|
|
||||||
mozcrash.log_crashes(self.logger,
|
|
||||||
dump_dir,
|
|
||||||
symbols_path=self.symbols_path,
|
|
||||||
stackwalk_binary=self.stackwalk_binary,
|
|
||||||
process=process,
|
|
||||||
test=test)
|
|
||||||
|
|
||||||
def setup_ssl(self):
|
def setup_ssl(self):
|
||||||
"""Create a certificate database to use in the test profile. This is configured
|
"""Create a certificate database to use in the test profile. This is configured
|
||||||
|
|
|
@ -13,7 +13,7 @@ var observer = new MutationObserver(test);
|
||||||
observer.observe(root, {attributes: true});
|
observer.observe(root, {attributes: true});
|
||||||
|
|
||||||
if (document.readyState != "complete") {
|
if (document.readyState != "complete") {
|
||||||
onload = test
|
addEventListener('load', test);
|
||||||
} else {
|
} else {
|
||||||
test();
|
test();
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ var observer = new MutationObserver(root_wait);
|
||||||
observer.observe(root, {attributes: true});
|
observer.observe(root, {attributes: true});
|
||||||
|
|
||||||
if (document.readyState != "complete") {
|
if (document.readyState != "complete") {
|
||||||
onload = root_wait;
|
addEventListener('load', root_wait);
|
||||||
} else {
|
} else {
|
||||||
root_wait();
|
root_wait();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,20 @@
|
||||||
|
class MessageQueue {
|
||||||
|
constructor() {
|
||||||
|
this._queue = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
push(item) {
|
||||||
|
this._queue.push(item);
|
||||||
|
__wptrunner_process_next_event();
|
||||||
|
}
|
||||||
|
|
||||||
|
shift() {
|
||||||
|
return this._queue.shift();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
window.__wptrunner_testdriver_callback = null;
|
window.__wptrunner_testdriver_callback = null;
|
||||||
window.__wptrunner_message_queue = [];
|
window.__wptrunner_message_queue = new MessageQueue();
|
||||||
window.__wptrunner_url = null;
|
window.__wptrunner_url = null;
|
||||||
|
|
||||||
window.__wptrunner_process_next_event = function() {
|
window.__wptrunner_process_next_event = function() {
|
||||||
|
|
|
@ -404,7 +404,7 @@ class ManifestLoader(object):
|
||||||
download_from_github(manifest_path, tests_path)
|
download_from_github(manifest_path, tests_path)
|
||||||
return manifest.load_and_update(tests_path, manifest_path, url_base,
|
return manifest.load_and_update(tests_path, manifest_path, url_base,
|
||||||
cache_root=cache_root, update=self.force_manifest_update,
|
cache_root=cache_root, update=self.force_manifest_update,
|
||||||
meta_filters=self.meta_filters)
|
meta_filters=self.meta_filters, types=self.types)
|
||||||
|
|
||||||
|
|
||||||
def iterfilter(filters, iter):
|
def iterfilter(filters, iter):
|
||||||
|
|
|
@ -233,11 +233,8 @@ class BrowserManager(object):
|
||||||
if self.init_timer is not None:
|
if self.init_timer is not None:
|
||||||
self.init_timer.cancel()
|
self.init_timer.cancel()
|
||||||
|
|
||||||
def check_for_crashes(self):
|
def check_crash(self, test_id):
|
||||||
return self.browser.check_for_crashes()
|
return self.browser.check_crash(process=self.browser_pid, test=test_id)
|
||||||
|
|
||||||
def log_crash(self, test_id):
|
|
||||||
return self.browser.log_crash(process=self.browser_pid, test=test_id)
|
|
||||||
|
|
||||||
def is_alive(self):
|
def is_alive(self):
|
||||||
return self.browser.is_alive()
|
return self.browser.is_alive()
|
||||||
|
@ -504,8 +501,7 @@ class TestRunnerManager(threading.Thread):
|
||||||
|
|
||||||
def init_failed(self):
|
def init_failed(self):
|
||||||
assert isinstance(self.state, RunnerManagerState.initializing)
|
assert isinstance(self.state, RunnerManagerState.initializing)
|
||||||
if self.browser.check_for_crashes():
|
self.browser.check_crash(None)
|
||||||
self.browser.log_crash(None)
|
|
||||||
self.browser.after_init()
|
self.browser.after_init()
|
||||||
self.stop_runner(force=True)
|
self.stop_runner(force=True)
|
||||||
return RunnerManagerState.initializing(self.state.test,
|
return RunnerManagerState.initializing(self.state.test,
|
||||||
|
@ -580,7 +576,7 @@ class TestRunnerManager(threading.Thread):
|
||||||
expected = test.expected()
|
expected = test.expected()
|
||||||
status = status_subns.get(file_result.status, file_result.status)
|
status = status_subns.get(file_result.status, file_result.status)
|
||||||
|
|
||||||
if self.browser.check_for_crashes():
|
if self.browser.check_crash(test.id):
|
||||||
status = "CRASH"
|
status = "CRASH"
|
||||||
|
|
||||||
self.test_count += 1
|
self.test_count += 1
|
||||||
|
@ -588,8 +584,6 @@ class TestRunnerManager(threading.Thread):
|
||||||
if is_unexpected:
|
if is_unexpected:
|
||||||
self.unexpected_count += 1
|
self.unexpected_count += 1
|
||||||
self.logger.debug("Unexpected count in this thread %i" % self.unexpected_count)
|
self.logger.debug("Unexpected count in this thread %i" % self.unexpected_count)
|
||||||
if status == "CRASH":
|
|
||||||
self.browser.log_crash(test.id)
|
|
||||||
|
|
||||||
if "assertion_count" in file_result.extra:
|
if "assertion_count" in file_result.extra:
|
||||||
assertion_count = file_result.extra.pop("assertion_count")
|
assertion_count = file_result.extra.pop("assertion_count")
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>User Timing: L2 vs L3 feature detection</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script>
|
||||||
|
test(() => {
|
||||||
|
// Feature detection for PerformanceMark.
|
||||||
|
assert_equals(typeof(PerformanceMark.prototype), "object");
|
||||||
|
// Test for UserTiming L3.
|
||||||
|
if (PerformanceMark.prototype.hasOwnProperty('detail')) {
|
||||||
|
assert_equals(typeof(performance.mark("mark")), "object",
|
||||||
|
"performance.mark should return an object in UserTiming L3.");
|
||||||
|
}
|
||||||
|
// Test for UserTiming L2.
|
||||||
|
else {
|
||||||
|
assert_equals(typeof(performance.mark("mark")), "undefined",
|
||||||
|
"performance.mark should be void in UserTiming L2.");
|
||||||
|
}
|
||||||
|
}, "Test PerformanceMark existence and feature detection");
|
||||||
|
|
||||||
|
test(() => {
|
||||||
|
// Feature detection for PerformanceMeasure.
|
||||||
|
assert_equals(typeof(PerformanceMeasure.prototype), "object");
|
||||||
|
// Test for UserTiming L3.
|
||||||
|
if (PerformanceMeasure.prototype.hasOwnProperty('detail')) {
|
||||||
|
assert_equals(typeof(performance.measure("measure")), "object",
|
||||||
|
"performance.measure should return an object in UserTiming L3.");
|
||||||
|
}
|
||||||
|
// Test for UserTiming L2.
|
||||||
|
else {
|
||||||
|
assert_equals(typeof(performance.measure("measure")), "undefined",
|
||||||
|
"performance.measure should be void in UserTiming L2.");
|
||||||
|
}
|
||||||
|
}, "Test PerformanceMeasure existence and feature detection");
|
||||||
|
</script>
|
|
@ -1,46 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<meta charset=utf-8>
|
|
||||||
<title>User Timing: L2 APIs return null</title>
|
|
||||||
<script src="/resources/testharness.js"></script>
|
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
|
||||||
<p>User Timing: L2 APIs return null</p>
|
|
||||||
<div id="log"></div>
|
|
||||||
<script>
|
|
||||||
async_test(function (t) {
|
|
||||||
self.performance.clearMeasures();
|
|
||||||
const measure = self.performance.measure("measure1");
|
|
||||||
assert_equals(measure, null);
|
|
||||||
t.done();
|
|
||||||
}, "L2: performance.measure(name) should return null.");
|
|
||||||
|
|
||||||
async_test(function (t) {
|
|
||||||
self.performance.clearMeasures();
|
|
||||||
self.performance.mark("1");
|
|
||||||
const measure = self.performance.measure("measure2", 1);
|
|
||||||
assert_equals(measure, null);
|
|
||||||
t.done();
|
|
||||||
}, "L2: performance.measure(name, param1) should return null.");
|
|
||||||
|
|
||||||
async_test(function (t) {
|
|
||||||
self.performance.clearMeasures();
|
|
||||||
self.performance.mark("1");
|
|
||||||
self.performance.mark("2");
|
|
||||||
const measure = self.performance.measure("measure3", 1, 2);
|
|
||||||
assert_equals(measure, null);
|
|
||||||
t.done();
|
|
||||||
}, "L2: performance.measure(name, param1, param2) should return null.");
|
|
||||||
|
|
||||||
async_test(function (t) {
|
|
||||||
self.performance.clearMarks();
|
|
||||||
const mark = self.performance.mark("mark1");
|
|
||||||
assert_equals(mark, null);
|
|
||||||
t.done();
|
|
||||||
}, "L2: performance.mark(name) should return null.");
|
|
||||||
|
|
||||||
async_test(function (t) {
|
|
||||||
self.performance.clearMarks();
|
|
||||||
const mark = self.performance.mark("mark2", { startTime: 34 });
|
|
||||||
assert_equals(mark, null);
|
|
||||||
t.done();
|
|
||||||
}, "L2: performance.mark(name, param) should return null.");
|
|
||||||
</script>
|
|
|
@ -245,9 +245,7 @@ def test_button(session):
|
||||||
|
|
||||||
def test_button_with_subtree(session):
|
def test_button_with_subtree(session):
|
||||||
"""
|
"""
|
||||||
Whilst an <input> is normally editable, the focusable area
|
Elements inside button elements are interactable.
|
||||||
where it is placed will default to the <button>. I.e. if you
|
|
||||||
try to click <input> to focus it, you will hit the <button>.
|
|
||||||
"""
|
"""
|
||||||
session.url = inline("""
|
session.url = inline("""
|
||||||
<button>
|
<button>
|
||||||
|
@ -257,7 +255,7 @@ def test_button_with_subtree(session):
|
||||||
text_field = session.find.css("input", all=False)
|
text_field = session.find.css("input", all=False)
|
||||||
|
|
||||||
response = element_clear(session, text_field)
|
response = element_clear(session, text_field)
|
||||||
assert_error(response, "element not interactable")
|
assert_success(response)
|
||||||
|
|
||||||
|
|
||||||
def test_contenteditable(session, add_event_listeners, tracked_events):
|
def test_contenteditable(session, add_event_listeners, tracked_events):
|
||||||
|
|
|
@ -238,6 +238,29 @@
|
||||||
});
|
});
|
||||||
}, 'setRemoteDescription(rollback) should remove newly created transceiver from transceiver list');
|
}, 'setRemoteDescription(rollback) should remove newly created transceiver from transceiver list');
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const pc1 = new RTCPeerConnection();
|
||||||
|
t.add_cleanup(() => pc1.close());
|
||||||
|
const pc2 = new RTCPeerConnection();
|
||||||
|
t.add_cleanup(() => pc2.close());
|
||||||
|
|
||||||
|
pc1.addTransceiver('audio');
|
||||||
|
const offer = await pc1.createOffer();
|
||||||
|
await pc1.setLocalDescription(offer);
|
||||||
|
|
||||||
|
assert_false(pc1.getTransceivers()[0].stopped, 'Transceiver is not stopped');
|
||||||
|
|
||||||
|
await pc2.setRemoteDescription(offer);
|
||||||
|
pc2.getTransceivers()[0].stop();
|
||||||
|
const answer = await pc2.createAnswer();
|
||||||
|
|
||||||
|
await pc1.setRemoteDescription(answer);
|
||||||
|
|
||||||
|
assert_true(pc1.getTransceivers()[0].stopped, 'Transceiver is stopped');
|
||||||
|
assert_equals(pc1.getReceivers().length, 0, 'getReceivers does not expose a receiver of a stopped transceiver');
|
||||||
|
assert_equals(pc1.getSenders().length, 0, 'getSenders does not expose a sender of a stopped transceiver');
|
||||||
|
}, 'setRemoteDescription should stop the transceiver if its corresponding m section is rejected');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO
|
TODO
|
||||||
- Steps for transceiver direction is added to tip of tree draft, but not yet
|
- Steps for transceiver direction is added to tip of tree draft, but not yet
|
||||||
|
|
|
@ -1175,6 +1175,8 @@
|
||||||
stoppedTransceiver.receiver.track.onended = resolve;
|
stoppedTransceiver.receiver.track.onended = resolve;
|
||||||
});
|
});
|
||||||
stoppedTransceiver.stop();
|
stoppedTransceiver.stop();
|
||||||
|
assert_equals(pc1.getReceivers().length, 0, 'getReceivers does not expose a receiver of a stopped transceiver');
|
||||||
|
assert_equals(pc1.getSenders().length, 0, 'getSenders does not expose a sender of a stopped transceiver');
|
||||||
|
|
||||||
await onended;
|
await onended;
|
||||||
|
|
||||||
|
|