Update web-platform-tests to revision 03fff324c7345277c2a581564bd972f2b5c9f74a

This commit is contained in:
WPT Sync Bot 2019-06-07 10:26:10 +00:00
parent 525d515a89
commit c6f0951dbc
61 changed files with 1291 additions and 261 deletions

View file

@ -201221,6 +201221,54 @@
{}
]
],
"mathml/presentation-markup/operators/mo-form-dynamic.html": [
[
"mathml/presentation-markup/operators/mo-form-dynamic.html",
[
[
"/mathml/presentation-markup/operators/mo-form-dynamic-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/operators/mo-form-fallback.html": [
[
"mathml/presentation-markup/operators/mo-form-fallback.html",
[
[
"/mathml/presentation-markup/operators/mo-form-fallback-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/operators/mo-form-minus-plus.html": [
[
"mathml/presentation-markup/operators/mo-form-minus-plus.html",
[
[
"/mathml/presentation-markup/operators/mo-form-minus-plus-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/operators/mo-form.html": [
[
"mathml/presentation-markup/operators/mo-form.html",
[
[
"/mathml/presentation-markup/operators/mo-form-ref.html",
"=="
]
],
{}
]
],
"mathml/presentation-markup/operators/mo-paint-lspace-rspace.html": [
[
"mathml/presentation-markup/operators/mo-paint-lspace-rspace.html",
@ -270469,6 +270517,18 @@
"mathml/presentation-markup/fractions/frac-visibility-001-ref.html": [
[]
],
"mathml/presentation-markup/operators/mo-form-dynamic-ref.html": [
[]
],
"mathml/presentation-markup/operators/mo-form-fallback-ref.html": [
[]
],
"mathml/presentation-markup/operators/mo-form-minus-plus-ref.html": [
[]
],
"mathml/presentation-markup/operators/mo-form-ref.html": [
[]
],
"mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
[]
],
@ -274486,10 +274546,10 @@
"resources/test/tests/unit/IdlInterfaceMember/is_to_json_regular_operation.html": [
[]
],
"resources/test/tests/unit/META.yml": [
"resources/test/tests/unit/basic.html": [
[]
],
"resources/test/tests/unit/basic.html": [
"resources/test/tests/unit/exceptional-cases-timeouts.html": [
[]
],
"resources/test/tests/unit/exceptional-cases.html": [
@ -277828,6 +277888,9 @@
"tools/ci/azure/install_chrome.yml": [
[]
],
"tools/ci/azure/install_edge.yml": [
[]
],
"tools/ci/azure/install_firefox.yml": [
[]
],
@ -315024,6 +315087,30 @@
{}
]
],
"css/css-text-decor/text-decoration-width-computed.html": [
[
"css/css-text-decor/text-decoration-width-computed.html",
{}
]
],
"css/css-text-decor/text-decoration-width-initial.html": [
[
"css/css-text-decor/text-decoration-width-initial.html",
{}
]
],
"css/css-text-decor/text-decoration-width-invalid.html": [
[
"css/css-text-decor/text-decoration-width-invalid.html",
{}
]
],
"css/css-text-decor/text-decoration-width-valid.html": [
[
"css/css-text-decor/text-decoration-width-valid.html",
{}
]
],
"css/css-text-decor/text-emphasis-unrepresentable-characters.html": [
[
"css/css-text-decor/text-emphasis-unrepresentable-characters.html",
@ -391950,6 +392037,12 @@
{}
]
],
"svg/extensibility/foreignObject/foreign-object-under-defs-crash.html": [
[
"svg/extensibility/foreignObject/foreign-object-under-defs-crash.html",
{}
]
],
"svg/extensibility/foreignObject/properties.svg": [
[
"svg/extensibility/foreignObject/properties.svg",
@ -431392,7 +431485,7 @@
},
"paths": {
".azure-pipelines.yml": [
"99873aece5caff1c997c55e5c56db518730a0c1b",
"72a509e6b19d2d1e3b1b47e134eac8c94eb3bb5f",
"support"
],
".codecov.yml": [
@ -437948,7 +438041,7 @@
"support"
],
"WebIDL/META.yml": [
"a8dc9c4410e949fa78bdbe2268edf3f125934487",
"6aaee0e2694d6d46b86e2ad868d3fae949c6438a",
"support"
],
"WebIDL/current-realm.html": [
@ -561699,6 +561792,22 @@
"904460a7bfeef5a35261641422a5fde2dd07dce4",
"visual"
],
"css/css-text-decor/text-decoration-width-computed.html": [
"0e00240141ea45ac95e8778474df3472afaf766c",
"testharness"
],
"css/css-text-decor/text-decoration-width-initial.html": [
"ee47af0f115d29705b2cb485af63ecec67b5645e",
"testharness"
],
"css/css-text-decor/text-decoration-width-invalid.html": [
"e89fe47ff2d567db6eae913a49d3abe2d62eaa7c",
"testharness"
],
"css/css-text-decor/text-decoration-width-valid.html": [
"583ebb0d3cf52d5af73da39f979e2c1d90ffa8ea",
"testharness"
],
"css/css-text-decor/text-emphasis-color-001.xht": [
"b60f03591ed067b8a8411cdad2ea8bcd222a37fc",
"reftest"
@ -574560,7 +574669,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/animation-timing-function.html": [
"b66d64c9b9a100bdd91c1c400c5e514ca9fbe4fc",
"eb9af36a85ae454d29ab18d2fa9b5d8dabb699dd",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/animation.html": [
@ -575388,7 +575497,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/transition-timing-function.html": [
"5d3260f7a51bda2a1b50ccc229b876bc72ef45d1",
"a4dbfc19330e6d447b40589f6ad737f5bab6a9c8",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/transition.html": [
@ -575472,7 +575581,7 @@
"reftest"
],
"css/css-ui/appearance-cssom-001.html": [
"2d439ba615f30f348128a3d94c6ea6563993e09b",
"f7dd4d1d761ed57831ae7842280f47164c6c080e",
"testharness"
],
"css/css-ui/appearance-listbox-001.html": [
@ -607304,7 +607413,7 @@
"testharness"
],
"fetch/api/request/destination/fetch-destination-worker.https.html": [
"8421d4ac9ef66e743af2c834ecf466b07a14d16f",
"5935c1ff31ec4bf84b65fc2a92ff7276f4e79fed",
"testharness"
],
"fetch/api/request/destination/fetch-destination.https.html": [
@ -630592,7 +630701,7 @@
"support"
],
"interfaces/webxr.idl": [
"63327a3f55d79f1acdc2cbd53a98b0a089aade2d",
"9b48a0f904026752510d90e05b85652062d87088",
"support"
],
"interfaces/worklets.idl": [
@ -631108,7 +631217,7 @@
"testharness"
],
"lint.whitelist": [
"04738ee972705391dddef4031a8f7cb429a9e068",
"c788ddd5fd61bc1fae193fccc3b4a71247cafa16",
"support"
],
"loading/preloader-css-import-no-quote.tentative.html": [
@ -631308,15 +631417,15 @@
"support"
],
"mathml/presentation-markup/fractions/frac-created-dynamically-2.html": [
"4c8b7e303bd9b81a7fc3b25c3206f6f0f88f6e81",
"a9707071a0624c7701cef46ff7e3746fb3feeb00",
"reftest"
],
"mathml/presentation-markup/fractions/frac-created-dynamically-3-ref.html": [
"b274e90b9e7f2f4ecff5d259d7b9d764e81a258d",
"f8db144cfe69ba23452da6aeffdd9c71d8696491",
"support"
],
"mathml/presentation-markup/fractions/frac-created-dynamically-3.html": [
"d5079473b757dc2fffae1f3851c4b2b9a299c89c",
"cec71163c392ebc6891339f8f1d80bad8c3f2596",
"reftest"
],
"mathml/presentation-markup/fractions/frac-created-dynamically-ref.html": [
@ -631324,7 +631433,7 @@
"support"
],
"mathml/presentation-markup/fractions/frac-created-dynamically.html": [
"f6c2f2e4324becfc1730d97348e6ddd6f59b1086",
"3224eb4eaf188c32d6152339d86a87aa03cfa62e",
"reftest"
],
"mathml/presentation-markup/fractions/frac-linethickness-001-ref.html": [
@ -631403,6 +631512,38 @@
"c88484b9d59a7811f6cfde7065de4facbdf1f74a",
"testharness"
],
"mathml/presentation-markup/operators/mo-form-dynamic-ref.html": [
"8f8d3da2c37cb5710d3758b0c6dfb7d2641a07bf",
"support"
],
"mathml/presentation-markup/operators/mo-form-dynamic.html": [
"dcd1ec53c31efb2435415e372786e7a1fae15775",
"reftest"
],
"mathml/presentation-markup/operators/mo-form-fallback-ref.html": [
"8d964eba45d6c09c53e61460baed76aced2e87b9",
"support"
],
"mathml/presentation-markup/operators/mo-form-fallback.html": [
"aab62087b595a5f784c0b98e6a6cd0e419ac3a17",
"reftest"
],
"mathml/presentation-markup/operators/mo-form-minus-plus-ref.html": [
"f83033373042444e28c26fc03c5f4acf38da131c",
"support"
],
"mathml/presentation-markup/operators/mo-form-minus-plus.html": [
"8a4ac3d737315cca5c2ad19a95e60146bd633cf1",
"reftest"
],
"mathml/presentation-markup/operators/mo-form-ref.html": [
"d48bd48a6e4a492e7fc31ae83d016cd12b9c8d56",
"support"
],
"mathml/presentation-markup/operators/mo-form.html": [
"7c11c14691162b69c1a2e854734ae6ac37db10e2",
"reftest"
],
"mathml/presentation-markup/operators/mo-paint-lspace-rspace-ref.html": [
"da0b79ff9a67cbe53daeb141aaa2efd4f2eb96ad",
"support"
@ -654663,16 +654804,16 @@
"abfa4ab800b3c8e6b5f6fd3b42a982cc2e4fe99e",
"support"
],
"resources/test/tests/unit/META.yml": [
"cb9e3f87620a634a3e9e92ac788a62751b061aa5",
"support"
],
"resources/test/tests/unit/basic.html": [
"7eef4a8fa5b50547bce915170a9b3e1e0312adf4",
"support"
],
"resources/test/tests/unit/exceptional-cases-timeouts.html": [
"760ac7154f1e6da3d072e77c9f10dca3c61d996f",
"support"
],
"resources/test/tests/unit/exceptional-cases.html": [
"1a5335f6c1f7f255388631a10ba561efe07c0afc",
"ef8f91bc61fac62f311e55cbd5c4d184af0c64ad",
"support"
],
"resources/test/tests/unit/late-test.html": [
@ -657688,7 +657829,7 @@
"testharness"
],
"service-workers/service-worker/ready.https.html": [
"ff5c793f2c2208e9ac298e6b82adf745ae4c65e9",
"6c1ed822a8778c84ff151a680ed0b4c4fbdb53ca",
"testharness"
],
"service-workers/service-worker/redirected-response.https.html": [
@ -657724,7 +657865,7 @@
"testharness"
],
"service-workers/service-worker/registration-end-to-end.https.html": [
"e92b6502f09b1a9308b96e43c6dc95f825fac692",
"1af4582d387412f47d82a94b2fe7050a5994644a",
"testharness"
],
"service-workers/service-worker/registration-events.https.html": [
@ -661167,6 +661308,10 @@
"c1d2b3a7e92a6f13192ecac29f52c8ccd7b3dd45",
"testharness"
],
"svg/extensibility/foreignObject/foreign-object-under-defs-crash.html": [
"08c47454b6cb46887f6ab91c0e031d729538c572",
"testharness"
],
"svg/extensibility/foreignObject/position-svg-root-in-foreign-object-ref.html": [
"668eb9b8c7e469540219b5ea9010db28239ae432",
"support"
@ -665112,7 +665257,7 @@
"support"
],
"tools/ci/azure/cleanup_win10.yml": [
"ba08b7eafabfb1bd03e8cbb8b421a6e85ed5960a",
"4abb35369de019c458ca6a5bae4a865363336810",
"support"
],
"tools/ci/azure/fyi_hook.yml": [
@ -665127,6 +665272,10 @@
"6bd5c2334ad4e3e4d5d6faaf8005f4e0b44cf1fe",
"support"
],
"tools/ci/azure/install_edge.yml": [
"a70dc78e01c7c32c2eb04ae63eff70e4c982dd98",
"support"
],
"tools/ci/azure/install_firefox.yml": [
"de6d0335f221f6d2215ebdc8ef5d2ee269fdfdf3",
"support"
@ -665140,7 +665289,7 @@
"support"
],
"tools/ci/azure/install_safari.yml": [
"be18f8376467b516a68e026c493b8fb679697236",
"bfb6afc332b1b85d7c322e19066708f034e9ac77",
"support"
],
"tools/ci/azure/pip_install.yml": [
@ -669964,7 +670113,7 @@
"support"
],
"tools/wpt/browser.py": [
"e2c9341bd6756d93f8698dff5bae46fcf8c1f138",
"b093600b596fa8d3736b72e842bcbacdd82f6463",
"support"
],
"tools/wpt/commands.json": [
@ -669992,7 +670141,7 @@
"support"
],
"tools/wpt/run.py": [
"07376797f589da8bd2a6c58708fa955a2702067f",
"0d7fa2233d64a6b5ee942038bc9a81ca33304938",
"support"
],
"tools/wpt/testfiles.py": [

View file

@ -0,0 +1,10 @@
[text-decoration-width-computed.html]
[Property text-decoration-width value 'auto' computes to 'auto']
expected: FAIL
[Property text-decoration-width value 'calc(10px - 8px)' computes to '2px']
expected: FAIL
[Property text-decoration-width value 'from-font' computes to 'from-font']
expected: FAIL

View file

@ -0,0 +1,4 @@
[text-decoration-width-initial.html]
[Initial value of text-decoration-width should be auto]
expected: FAIL

View file

@ -0,0 +1,25 @@
[text-decoration-width-valid.html]
[e.style['text-decoration-width'\] = "from-font" should set the property value]
expected: FAIL
[e.style['text-decoration-width'\] = "53px" should set the property value]
expected: FAIL
[e.style['text-decoration-width'\] = "2001em" should set the property value]
expected: FAIL
[e.style['text-decoration-width'\] = "-49em" should set the property value]
expected: FAIL
[e.style['text-decoration-width'\] = "calc(40em - 10px)" should set the property value]
expected: FAIL
[e.style['text-decoration-width'\] = "auto" should set the property value]
expected: FAIL
[e.style['text-decoration-width'\] = "calc(-50em + 13px)" should set the property value]
expected: FAIL
[e.style['text-decoration-width'\] = "-10px" should set the property value]
expected: FAIL

View file

@ -983,3 +983,27 @@
[-webkit-appearance: scale-horizontal (invalid)]
expected: FAIL
[appearance: menulist-text (invalid)]
expected: FAIL
[-webkit-appearance: menulist-textfield (invalid)]
expected: FAIL
[-webkit-appearance: menulist-text (invalid)]
expected: FAIL
[-webkit-appearance: caret (invalid)]
expected: FAIL
[appearance: caret (invalid)]
expected: FAIL
[-webkit-appearance: button-bevel (invalid)]
expected: FAIL
[appearance: menulist-textfield (invalid)]
expected: FAIL
[appearance: button-bevel (invalid)]
expected: FAIL

View file

@ -1,3 +1,3 @@
[vh_not_refreshing_on_chrome.html]
bug: https://github.com/servo/servo/issues/8984
expected: CRASH
expected: TIMEOUT

View file

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

View file

@ -1,8 +1,16 @@
[fetch-destination-worker.https.html]
[Fetch destination tests for resources with no load event]
expected: FAIL
[Initialize global state]
expected: FAIL
[Worker fetches with a "worker" Request.destination]
expected: FAIL
[DedicatedWorker fetches with a "worker" Request.destination]
expected: FAIL
[SharedWorker fetches with a "sharedworker" Request.destination]
expected: FAIL

View file

@ -312,27 +312,21 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*]
[<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL

View file

@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL

View file

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

View file

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

View file

@ -1,5 +1,24 @@
[open-features-negative-innerwidth-innerheight.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL
[features "innerheight=-404.5" should NOT set "height=404"]
expected: TIMEOUT
[features "innerwidth=-404.5" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=-404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerheight=-404e1" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=-404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerwidth=-404e1" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -1,5 +1,24 @@
[open-features-negative-screenx-screeny.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL
[features "screenx=-204" should NOT set "left=204"]
expected: TIMEOUT
[features "screeny=-204" should NOT set "top=204"]
expected: TIMEOUT
[features "screeny=-204.5" should NOT set "top=204"]
expected: TIMEOUT
[features "screeny=-0" should NOT set "top=204"]
expected: TIMEOUT
[features "screenx=-0" should NOT set "left=204"]
expected: TIMEOUT
[features "screenx=-204.5" should NOT set "left=204"]
expected: TIMEOUT

View file

@ -1,5 +1,24 @@
[open-features-negative-top-left.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
[features "top=-204" should NOT set "top=204"]
expected: TIMEOUT
[features "top=-204.5" should NOT set "top=204"]
expected: TIMEOUT
[features "left=-204" should NOT set "left=204"]
expected: TIMEOUT
[features "top=-0" should NOT set "top=204"]
expected: TIMEOUT
[features "left=-204.5" should NOT set "left=204"]
expected: TIMEOUT
[features "left=-0" should NOT set "left=204"]
expected: TIMEOUT

View file

@ -1,5 +1,24 @@
[open-features-negative-width-height.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
[features "height=-404" should NOT set "height=404"]
expected: TIMEOUT
[features "height=-404e1" should NOT set "height=404"]
expected: TIMEOUT
[features "height=-404.5" should NOT set "height=404"]
expected: TIMEOUT
[features "width=-404" should NOT set "width=404"]
expected: TIMEOUT
[features "width=-404e1" should NOT set "width=404"]
expected: TIMEOUT
[features "width=-404.5" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -1,32 +1,48 @@
[open-features-non-integer-height.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=405.32" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=405e1" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=405/5" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=405^4" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=405.5" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=405e-1" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=405 " should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=405LLl" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "height=/404" should NOT set "height=404"]
expected: TIMEOUT
[top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
expected: TIMEOUT
[top=0,left=0: absence of feature "height" should be treated same as "height=0"]
expected: TIMEOUT
[features "height=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "height=L404" should NOT set "height=404"]
expected: TIMEOUT

View file

@ -1,32 +1,42 @@
[open-features-non-integer-innerheight.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL
[features "innerheight=405e-1" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=405LLl" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=405^4" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=405e1" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=405 " should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=405/5" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=405.32" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=405.5" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=405*3" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "innerheight=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=L404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=/404" should NOT set "height=404"]
expected: TIMEOUT

View file

@ -1,32 +1,42 @@
[open-features-non-integer-innerwidth.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=405*3" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=405.5" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=405e1" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=405.32" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=405 " should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=405LLl" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=405/5" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=405^4" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "innerwidth=/404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=_404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=L404" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -1,32 +1,42 @@
[open-features-non-integer-left.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL
[features "left=105e1" should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=105 " should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=105/5" should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=105e-1" should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=105^4" should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=105LLl" should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=105.32" should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=105*3" should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=105.5" should set "left=105"]
expected: FAIL
expected: TIMEOUT
[features "left=L104" should NOT set "left=104"]
expected: TIMEOUT
[features "left=/104" should NOT set "left=104"]
expected: TIMEOUT
[features "left=_104" should NOT set "left=104"]
expected: TIMEOUT

View file

@ -1,32 +1,42 @@
[open-features-non-integer-screeny.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL
[features "screeny=405^4" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=405e-1" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=405LLl" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=405e1" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=405 " should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=405/5" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=405*3" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=405.32" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=405.5" should set "height=405"]
expected: FAIL
expected: TIMEOUT
[features "screeny=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "screeny=L404" should NOT set "height=404"]
expected: TIMEOUT
[features "screeny=/404" should NOT set "height=404"]
expected: TIMEOUT

View file

@ -1,32 +1,42 @@
[open-features-non-integer-top.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL
[features "top=105/5" should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=105*3" should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=105LLl" should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=105e-1" should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=105.32" should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=105e1" should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=105 " should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=105^4" should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=105.5" should set "top=105"]
expected: FAIL
expected: TIMEOUT
[features "top=/104" should NOT set "top=104"]
expected: TIMEOUT
[features "top=_104" should NOT set "top=104"]
expected: TIMEOUT
[features "top=L104" should NOT set "top=104"]
expected: TIMEOUT

View file

@ -1,32 +1,48 @@
[open-features-non-integer-width.html]
type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL
[features "width=405^4" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "width=405.5" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "width=405e1" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "width=405 " should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "width=405.32" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "width=405LLl" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "width=405*3" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "width=405e-1" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[features "width=405/5" should set "width=405"]
expected: FAIL
expected: TIMEOUT
[top=0,left=0: absence of feature "width" should be treated same as "width=0"]
expected: TIMEOUT
[features "width=_404" should NOT set "width=404"]
expected: TIMEOUT
[top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
expected: TIMEOUT
[features "width=/404" should NOT set "width=404"]
expected: TIMEOUT
[features "width=L404" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -0,0 +1,10 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
[createHTMLDocument]
expected: FAIL
[<template>]
expected: FAIL

View file

@ -1,4 +1,5 @@
[promise-rejection-events.html]
expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
@ -8,3 +9,6 @@
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
expected: FAIL
[rejectionhandled is dispatched from a queued task, and not immediately]
expected: TIMEOUT

View file

@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL

View file

@ -220,10 +220,11 @@ jobs:
parameters:
packages: virtualenv
- template: tools/ci/azure/install_certs.yml
- template: tools/ci/azure/install_edge.yml
- template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml
- script: python ./wpt run --yes --no-manifest-update --install-fonts --manifest MANIFEST.json --metadata infrastructure/metadata/ --webdriver-arg=--verbose --log-tbpl $(Build.ArtifactStagingDirectory)/edge.tbpl.log --log-tbpl-level info edge_webdriver infrastructure/
displayName: 'Run tests (Edge)'
- script: python ./wpt run --yes --no-manifest-update --install-fonts --manifest MANIFEST.json --metadata infrastructure/metadata/ --log-tbpl $(Build.ArtifactStagingDirectory)/edge.tbpl.log --log-tbpl-level info --channel dev edgechromium infrastructure/
displayName: 'Run tests (Edge Dev)'
- task: PublishBuildArtifacts@1
displayName: 'Publish results'
inputs:
@ -252,10 +253,11 @@ jobs:
parameters:
packages: virtualenv
- template: tools/ci/azure/install_certs.yml
- template: tools/ci/azure/install_edge.yml
- template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml
- script: python ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --webdriver-arg=--verbose --test-types reftest testharness --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt edge_webdriver
displayName: 'Run tests'
- script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-tbpl - --log-tbpl-level info --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt edgechromium
displayName: 'Run tests (Edge Dev)'
- task: PublishBuildArtifacts@1
displayName: 'Publish results'
inputs:

View file

@ -1,5 +1,4 @@
spec: https://heycam.github.io/webidl/
suggested_reviewers:
- domenic
- tobie
- yuki3

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Text Decoration Test: parsing text-decoration-width computed values</title>
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property">
<meta name="assert" content="text-decoration-width computed value is as specified.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/computed-testcommon.js"></script>
</head>
<body>
<div id="target"></div>
<script>
test_computed_value("text-decoration-width", "auto");
test_computed_value("text-decoration-width", "from-font");
test_computed_value("text-decoration-width", "calc(10px - 8px)", "2px");
</script>
</body>
</html>

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" title="2.4 Text Decoration Width: the 'text-decoration-width' property"
href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property" />
</head>
<body>
<script>
test(function() {
assert_equals(getComputedStyle(document.body)["text-decoration-width"], "auto", "Must be set to value auto as initial value.");
}, "Initial value of text-decoration-width should be auto");
</script>
</body>
</html>

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Text Decoration Test: parsing text-decoration-width with invalid values</title>
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property">
<meta name="assert" content="text-decoration-width supports the following values: auto | from-font | <length>">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
test_invalid_value("text-decoration-width", "otto");
test_invalid_value("text-decoration-width", "asdlflj");
test_invalid_value("text-decoration-width", "-10");
test_invalid_value("text-decoration-width", "60002020");
test_invalid_value("text-decoration-width", "!@#$%^&");
test_invalid_value("text-decoration-width", "10e2");
test_invalid_value("text-decoration-width", "from font");
test_invalid_value("text-decoration-width", "10%");
test_invalid_value("text-decoration-width", "-27%");
test_invalid_value("text-decoration-width", "calc(40% - 20px)");
test_invalid_value("text-decoration-width", "calc(100% - 40em)");
</script>
</body>
</html>

View file

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Text Decoration Test: parsing text-decoration-width longhands with valid values</title>
<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property">
<meta name="assert" content="text-decoration-width supports the following values: auto | from-font | <length>">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
test_valid_value("text-decoration-width", "auto");
test_valid_value("text-decoration-width", "from-font");
test_valid_value("text-decoration-width", "-10px");
test_valid_value("text-decoration-width", "2001em");
test_valid_value("text-decoration-width", "-49em");
test_valid_value("text-decoration-width", "53px");
test_valid_value("text-decoration-width", "calc(40em - 10px)");
test_valid_value("text-decoration-width", "calc(-50em + 13px)");
</script>
</body>
</html>

View file

@ -19,8 +19,18 @@ runListValuedPropertyTests('animation-timing-function', [
{ syntax: 'ease-in' },
{ syntax: 'ease-out' },
{ syntax: 'ease-in-out' },
{ syntax: 'step-start' },
{ syntax: 'step-end' },
{
syntax: 'step-start',
computed: (_, result) => {
assert_equals(result.toString(), 'steps(1, start)');
}
},
{
syntax: 'step-end',
computed: (_, result) => {
assert_equals(result.toString(), 'steps(1)');
}
},
]);
runUnsupportedPropertyTests('animation-timing-function', [

View file

@ -19,8 +19,18 @@ runListValuedPropertyTests('transition-timing-function', [
{ syntax: 'ease-in' },
{ syntax: 'ease-out' },
{ syntax: 'ease-in-out' },
{ syntax: 'step-start' },
{ syntax: 'step-end' },
{
syntax: 'step-start',
computed: (_, result) => {
assert_equals(result.toString(), 'steps(1, start)');
}
},
{
syntax: 'step-end',
computed: (_, result) => {
assert_equals(result.toString(), 'steps(1)');
}
},
]);
runUnsupportedPropertyTests('transition-timing-function', [

View file

@ -10,15 +10,10 @@
const values = ["none",
"auto",
"button",
"button-bevel",
"caret",
"checkbox",
"listbox",
"listitem",
"menulist",
"menulist-button",
"menulist-text",
"menulist-textfield",
"meter",
"progress-bar",
"push-button",
@ -51,6 +46,7 @@
const invalidValues = ["bogus-button",
"attachment",
"button-bevel",
"borderless-attachment",
"button-arrow-down",
"button-arrow-next",
@ -58,6 +54,7 @@
"button-arrow-up",
"button-focus",
"caps-lock-indicator",
"caret",
"checkbox-container",
"checkbox-label",
"checkmenuitem",
@ -67,40 +64,42 @@
"discrete-capacity-level-indicator",
"dualbutton",
"groupbox",
"inner-spin-button",
"image-controls-button",
"inner-spin-button",
"list-button",
"listitem",
"media-enter-fullscreen-button",
"media-exit-fullscreen-button",
"media-fullscreen-volume-slider",
"media-fullscreen-volume-slider-thumb",
"media-mute-button",
"media-play-button",
"media-overlay-play-button",
"media-return-to-realtime-button",
"media-rewind-button",
"media-seek-back-button",
"media-seek-forward-button",
"media-toggle-closed-captions-button",
"media-slider",
"media-sliderthumb",
"media-volume-slider-container",
"media-volume-slider-mute-button",
"media-volume-slider",
"media-volume-sliderthumb",
"media-controls-background",
"media-controls-dark-bar-background",
"media-controls-fullscreen-background",
"media-controls-light-bar-background",
"media-current-time-display",
"media-enter-fullscreen-button",
"media-exit-fullscreen-button",
"media-fullscreen-volume-slider",
"media-fullscreen-volume-slider-thumb",
"media-mute-button",
"media-overlay-play-button",
"media-play-button",
"media-return-to-realtime-button",
"media-rewind-button",
"media-seek-back-button",
"media-seek-forward-button",
"media-slider",
"media-sliderthumb",
"media-time-remaining-display",
"media-toggle-closed-captions-button",
"media-volume-slider",
"media-volume-slider-container",
"media-volume-slider-mute-button",
"media-volume-sliderthumb",
"menuarrow",
"menubar",
"menucheckbox",
"menuimage",
"menuitem",
"menuitemtext",
"menulist-text",
"menulist-textfield",
"menupopup",
"menuradio",
"menuseparator",
@ -118,15 +117,16 @@
"range",
"range-thumb",
"rating-level-indicator",
"relevancy-level-indicator",
"resizer",
"resizerpanel",
"scale-horizontal",
"scalethumbend",
"scale-vertical",
"scalethumb-horizontal",
"scalethumb-vertical",
"scalethumbend",
"scalethumbstart",
"scalethumbtick",
"scalethumb-vertical",
"scale-vertical",
"scrollbarbutton-down",
"scrollbarbutton-left",
"scrollbarbutton-right",
@ -135,16 +135,16 @@
"scrollbarthumb-vertical",
"scrollbartrack-horizontal",
"scrollbartrack-vertical",
"searchfield-decoration",
"searchfield-results-decoration",
"searchfield-results-button",
"searchfield-cancel-button",
"snapshotted-plugin-overlay",
"searchfield-decoration",
"searchfield-results-button",
"searchfield-results-decoration",
"separator",
"sheet",
"slider-vertical",
"sliderthumb-horizontal",
"sliderthumb-vertical",
"snapshotted-plugin-overlay",
"spinner",
"spinner-downbutton",
"spinner-textfield",
@ -153,10 +153,10 @@
"statusbar",
"statusbarpanel",
"tab",
"tabpanel",
"tabpanels",
"tab-scroll-arrow-back",
"tab-scroll-arrow-forward ",
"tabpanel",
"tabpanels",
"textfield-multiline",
"toolbar",
"toolbarbutton",
@ -172,11 +172,11 @@
"treetwisty",
"treetwistyopen",
"treeview",
"relevancy-level-indicator",
"-apple-pay-button",
"-moz-win-borderless-glass",
"-moz-win-browsertabbar-toolbox",
"-moz-win-communicationstext",
"-moz-win-communications-toolbox",
"-moz-win-communicationstext",
"-moz-win-exclude-glass",
"-moz-win-glass",
"-moz-win-media-toolbox",
@ -191,7 +191,6 @@
"-moz-window-frame-right",
"-moz-window-titlebar",
"-moz-window-titlebar-maximized",
"-apple-pay-button",
];
for (const invalidValue of invalidValues) {
test(() => {

View file

@ -46,9 +46,15 @@ var waitOnMessageFromSW = async t => {
// worker destination
/////////////////////
promise_test(async t => {
// We can use an html file as we don't really care about the worker successfully loading.
// We can use an html file as we don't really care about the dedicated worker successfully loading.
let worker = new frame.contentWindow.Worker("dummy.html?t=worker&dest=worker");
await waitOnMessageFromSW(t);
}, 'Worker fetches with a "worker" Request.destination');
}, 'DedicatedWorker fetches with a "worker" Request.destination');
promise_test(async t => {
// We can use an html file as we don't really care about the shared worker successfully loading.
let worker = new frame.contentWindow.SharedWorker("dummy.html?t=sharedworker&dest=sharedworker");
await waitOnMessageFromSW(t);
}, 'SharedWorker fetches with a "sharedworker" Request.destination');
</script>

View file

@ -126,7 +126,7 @@ enum XREye {
interface XRRigidTransform {
[SameObject] readonly attribute DOMPointReadOnly position;
[SameObject] readonly attribute DOMPointReadOnly orientation;
[SameObject] readonly attribute Float32Array matrix;
readonly attribute Float32Array matrix;
[SameObject] readonly attribute XRRigidTransform inverse;
};
@ -136,7 +136,7 @@ interface XRRigidTransform {
interface XRRay {
[SameObject] readonly attribute DOMPointReadOnly origin;
[SameObject] readonly attribute DOMPointReadOnly direction;
[SameObject] readonly attribute Float32Array matrix;
readonly attribute Float32Array matrix;
};
[SecureContext, Exposed=Window] interface XRPose {

View file

@ -319,6 +319,7 @@ SET TIMEOUT: resources/test/tests/functional/api-tests-1.html
SET TIMEOUT: resources/test/tests/functional/worker.js
SET TIMEOUT: resources/test/tests/functional/worker-uncaught-allow.js
SET TIMEOUT: resources/test/tests/unit/exceptional-cases.html
SET TIMEOUT: resources/test/tests/unit/exceptional-cases-timeouts.html
SET TIMEOUT: resources/testharness.js
# setTimeout use in reftests

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html class="reftest-wait">
<head>
<meta charset="utf-8">
<title>mfrac created dynamically</title>
@ -7,7 +7,11 @@
<meta name="assert" content="A dynamically added mfrac should render like the equivalent markup.">
<link rel="match" href="frac-created-dynamically-2-ref.html">
<script>
window.addEventListener("DOMContentLoaded", function() {
window.addEventListener("load", function() {
// force initial layout so we're sure what we're testing against
document.documentElement.getBoundingClientRect();
var mfrac = document.createElementNS("http://www.w3.org/1998/Math/MathML","mfrac");
var mspace1 = document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");
mspace1.setAttribute("width", "50px");
@ -25,6 +29,8 @@
mfrac.appendChild(mspace1);
mfrac.appendChild(mspace2);
mfrac.appendChild(mspace3);
document.documentElement.classList.remove('reftest-wait');
});
</script>
</head>

View file

@ -8,8 +8,8 @@
<p>This test passes if you see a fraction 1/3.</p>
<math>
<mfrac>
<mi>1</mi>
<mi>3</mi>
<mn>1</mn>
<mn>3</mn>
</mfrac>
</math>
</body>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html class="reftest-wait">
<head>
<meta charset="utf-8">
<title>mfrac created dynamically</title>
@ -7,11 +7,17 @@
<meta name="assert" content="A dynamically added mfrac should render like the equivalent markup.">
<link rel="match" href="frac-created-dynamically-3-ref.html">
<script>
window.addEventListener("DOMContentLoaded", function() {
var mi3 = document.createElementNS("http://www.w3.org/1998/Math/MathML","mi");
mi3.appendChild(document.createTextNode("3"));
document.getElementsByTagName("mfrac")[0].appendChild(mi3);
document.getElementById("mi2").remove();
window.addEventListener("load", function() {
// force initial layout so we're sure what we're testing against
document.documentElement.getBoundingClientRect();
var mn3 = document.createElementNS("http://www.w3.org/1998/Math/MathML","mn");
mn3.appendChild(document.createTextNode("3"));
document.getElementsByTagName("mfrac")[0].appendChild(mn3);
document.getElementById("mn2").remove();
document.documentElement.classList.remove('reftest-wait');
});
</script>
</head>
@ -19,8 +25,8 @@
<p>This test passes if you see a fraction 1/3.</p>
<math>
<mfrac>
<mi>1</mi>
<mi id="mi2">2</mi>
<mn>1</mn>
<mn id="mn2">2</mn>
</mfrac>
</math>
</body>

View file

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html>
<html class="reftest-wait">
<head>
<meta charset="utf-8">
<title>mfrac created dynamically</title>
@ -7,7 +7,11 @@
<meta name="assert" content="A dynamically added mfrac should render like the equivalent markup.">
<link rel="match" href="frac-created-dynamically-ref.html">
<script>
window.addEventListener("DOMContentLoaded", function() {
window.addEventListener("load", function() {
// force initial layout so we're sure what we're testing against
document.documentElement.getBoundingClientRect();
var mfrac = document.createElementNS("http://www.w3.org/1998/Math/MathML","mfrac");
var mspace1 = document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");
mspace1.setAttribute("width", "50px");
@ -20,6 +24,8 @@
mfrac.appendChild(mspace1);
mfrac.appendChild(mspace2);
document.getElementsByTagName("math")[0].appendChild(mfrac);
document.documentElement.classList.remove('reftest-wait');
});
</script>
</head>

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>&lt;mo&gt; dynamic form</title>
</head>
<body>
<p>The test should render the same as the static reference.</p>
_<math><merror><mi>x</mi><mo>+</mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo>+</mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo>+</mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo>+</mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo>+</mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo>+</mo><mi>y</mi></mstyle></math>_
_<math><merror><mo></mo><mi>y</mi></merror></math>_
_<math><mo></mo><mi>y</mi></math>_
_<math><mphantom><mo></mo><mi>y</mi></mphantom></math>_
_<math><mrow><mo></mo><mi>y</mi></mrow></math>_
_<math><msqrt><mo></mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mo></mo><mi>y</mi></mstyle></math>_
</body>
</html>

View file

@ -0,0 +1,48 @@
<!DOCTYPE html>
<html class="reftest-wait">
<head>
<meta charset="utf-8"/>
<title>&lt;mo&gt; dynamic form</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#tokenmo">
<meta name="assert" content="This test verifies that the form of the operators (and thus their spacing) is updated when you change the child list.">
<link rel="match" href="mo-form-dynamic-ref.html">
<script>
window.addEventListener("load", () => {
// force initial layout so we're sure what we're testing against
document.documentElement.getBoundingClientRect();
for (var i = 1; i <= 6; i++) {
var row = document.getElementById("row" + i);
var x = document.getElementById("x" + i);
x.parentNode.removeChild(x);
row.insertBefore(x, row.firstElementChild);
}
document.documentElement.classList.remove('reftest-wait');
})
</script>
</head>
<body>
<p>The test should render the same as the static reference.</p>
_<math><merror id="row1"><mo>+</mo><mi>y</mi></merror></math>_
_<math id="row2"><mo>+</mo><mi>y</mi></math>_
_<math><mphantom id="row3"><mo>+</mo><mi>y</mi></mphantom></math>_
_<math><mrow id="row4"><mo>+</mo><mi>y</mi></mrow></math>_
_<math><msqrt id="row5"><mo>+</mo><mi>y</mi></msqrt></math>_
_<math><mstyle id="row6"><mo>+</mo><mi>y</mi></mstyle></math>_
_<math><merror><mi id="x1">x</mi><mo></mo><mi>y</mi></merror></math>_
_<math><mi id="x2">x</mi><mo></mo><mi>y</mi></math>_
_<math><mphantom><mi id="x3">x</mi><mo></mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi id="x4">x</mi><mo></mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi id="x5">x</mi><mo></mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi id="x6">x</mi><mo></mo><mi>y</mi></mstyle></math>_
</body>
</html>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>form fallback</title>
</head>
<body>
<math>
<mo stretchy="true">(</mo> <mspace height="3em" depth="3em"/> <mo stretchy="true">)</mo>
<mo stretchy="true">(</mo> <mspace height="3em" depth="3em"/> <mo stretchy="true">)</mo>
</math>
</body>
</html>

View file

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>form fallback</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#tokenmo">
<meta name="assert" content="Verify fallback to postfix/prefix forms.">
<link rel="match" href="mo-form-fallback-ref.html">
</head>
<body>
<!-- The left (respectively right) parenthesis only has a prefix
(respectively postfix) form which gives its stretchiness.
In theory, the parenthesis in the middle of the <math> element are
considered infix operators and should not stretch. Let's check that we
fallback to the postfix/prefix forms and actually make them stretchy.
This is to handle bad MathML markup that misses explicit <mrow> tags.
-->
<math>
<mo>(</mo> <mspace height="3em" depth="3em"/> <mo>)</mo>
<mo>(</mo> <mspace height="3em" depth="3em"/> <mo>)</mo>
</math>
</body>
</html>

View file

@ -0,0 +1,84 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>form plus/minus</title>
</head>
<body>
<!-- These operators should have form "prefix" -->
_<math><merror><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></merror></math>_
_<math><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></math>_
_<math><mphantom><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></mphantom></math>_
_<math><mrow><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></mrow></math>_
_<math><msqrt><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></msqrt></math>_
_<math><mstyle><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></mstyle></math>_
<br/>
_<math><merror><mo form="prefix" lspace="0em" rspace="0.055555em">+</mo><mi>x</mi></merror></math>_
_<math><mo form="prefix" lspace="0em" rspace="0.055555em">+</mo><mi>x</mi></math>_
_<math><mphantom><mo form="prefix" lspace="0em" rspace="0.055555em">+</mo><mi>x</mi></mphantom></math>_
_<math><mrow><mo form="prefix" lspace="0em" rspace="0.055555em">+</mo><mi>x</mi></mrow></math>_
_<math><msqrt><mo form="prefix" lspace="0em" rspace="0.055555em">+</mo><mi>x</mi></msqrt></math>_
_<math><mstyle><mo form="prefix" lspace="0em" rspace="0.055555em">+</mo><mi>x</mi></mstyle></math>_
<br/>
_<math><merror><mo form="prefix" lspace="0em" rspace="0.055555em">±</mo><mi>x</mi></merror></math>_
_<math><mo form="prefix" lspace="0em" rspace="0.055555em">±</mo><mi>x</mi></math>_
_<math><mphantom><mo form="prefix" lspace="0em" rspace="0.055555em">±</mo><mi>x</mi></mphantom></math>_
_<math><mrow><mo form="prefix" lspace="0em" rspace="0.055555em">±</mo><mi>x</mi></mrow></math>_
_<math><msqrt><mo form="prefix" lspace="0em" rspace="0.055555em">±</mo><mi>x</mi></msqrt></math>_
_<math><mstyle><mo form="prefix" lspace="0em" rspace="0.055555em">±</mo><mi>x</mi></mstyle></math>_
<br/>
_<math><merror><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></merror></math>_
_<math><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></math>_
_<math><mphantom><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></mphantom></math>_
_<math><mrow><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></mrow></math>_
_<math><msqrt><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></msqrt></math>_
_<math><mstyle><mo form="prefix" lspace="0em" rspace="0.055555em"></mo><mi>x</mi></mstyle></math>_
<br/>
<!-- These operators should have form "infix" -->
_<math><merror><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></mstyle></math>_
<br/>
_<math><merror><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">+</mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">+</mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">+</mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">+</mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">+</mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">+</mo><mi>y</mi></mstyle></math>_
<br/>
_<math><merror><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">±</mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">±</mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">±</mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">±</mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">±</mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em">±</mo><mi>y</mi></mstyle></math>_
<br/>
_<math><merror><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo form="infix" lspace="0.22222em" rspace="0.22222em"></mo><mi>y</mi></mstyle></math>_
</body>
</html>

View file

@ -0,0 +1,87 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>form plus/minus</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#tokenmo">
<meta name="assert" content="Verifies behavior of form of plus/minus etc.">
<link rel="match" href="mo-form-minus-plus-ref.html">
</head>
<body>
<!-- These operators should have form "prefix" -->
_<math><merror><mo></mo><mi>x</mi></merror></math>_
_<math><mo></mo><mi>x</mi></math>_
_<math><mphantom><mo></mo><mi>x</mi></mphantom></math>_
_<math><mrow><mo></mo><mi>x</mi></mrow></math>_
_<math><msqrt><mo></mo><mi>x</mi></msqrt></math>_
_<math><mstyle><mo></mo><mi>x</mi></mstyle></math>_
<br/>
_<math><merror><mo>+</mo><mi>x</mi></merror></math>_
_<math><mo>+</mo><mi>x</mi></math>_
_<math><mphantom><mo>+</mo><mi>x</mi></mphantom></math>_
_<math><mrow><mo>+</mo><mi>x</mi></mrow></math>_
_<math><msqrt><mo>+</mo><mi>x</mi></msqrt></math>_
_<math><mstyle><mo>+</mo><mi>x</mi></mstyle></math>_
<br/>
_<math><merror><mo>±</mo><mi>x</mi></merror></math>_
_<math><mo>±</mo><mi>x</mi></math>_
_<math><mphantom><mo>±</mo><mi>x</mi></mphantom></math>_
_<math><mrow><mo>±</mo><mi>x</mi></mrow></math>_
_<math><msqrt><mo>±</mo><mi>x</mi></msqrt></math>_
_<math><mstyle><mo>±</mo><mi>x</mi></mstyle></math>_
<br/>
_<math><merror><mo></mo><mi>x</mi></merror></math>_
_<math><mo></mo><mi>x</mi></math>_
_<math><mphantom><mo></mo><mi>x</mi></mphantom></math>_
_<math><mrow><mo></mo><mi>x</mi></mrow></math>_
_<math><msqrt><mo></mo><mi>x</mi></msqrt></math>_
_<math><mstyle><mo></mo><mi>x</mi></mstyle></math>_
<br/>
<!-- These operators should have form "infix" -->
_<math><merror><mi>x</mi><mo></mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo></mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo></mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo></mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo></mo><mi>y</mi></mstyle></math>_
<br/>
_<math><merror><mi>x</mi><mo>+</mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo>+</mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo>+</mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo>+</mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo>+</mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo>+</mo><mi>y</mi></mstyle></math>_
<br/>
_<math><merror><mi>x</mi><mo>±</mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo>±</mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo>±</mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo>±</mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo>±</mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo>±</mo><mi>y</mi></mstyle></math>_
<br/>
_<math><merror><mi>x</mi><mo></mo><mi>y</mi></merror></math>_
_<math><mi>x</mi><mo></mo><mi>y</mi></math>_
_<math><mphantom><mi>x</mi><mo></mo><mi>y</mi></mphantom></math>_
_<math><mrow><mi>x</mi><mo></mo><mi>y</mi></mrow></math>_
_<math><msqrt><mi>x</mi><mo></mo><mi>y</mi></msqrt></math>_
_<math><mstyle><mi>x</mi><mo></mo><mi>y</mi></mstyle></math>_
</body>
</html>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>&lt;mo&gt; form attribute</title>
</head>
<body>
<!-- This checks the effect of @form on a prefix operator. -->
_<math><mo lspace="0.27777em" rspace="0.27777em"></mo></math>_
_<math><mo lspace="0.11111em" rspace="0.05555em"></mo></math>_
_<math><mo lspace="0.27777em" rspace="0.27777em"></mo></math>_
<!-- This checks the effect of @form on an infix operator. -->
_<math><mo lspace="0.22222em" rspace="0.22222em"></mo></math>_
_<math><mo lspace="0.27777em" rspace="0.27777em"></mo></math>_
_<math><mo lspace="0.27777em" rspace="0.27777em"></mo></math>_
<!-- This checks the effect of @form on a postfix operator. -->
_<math><mo lspace="0.27777em" rspace="0.27777em"></mo></math>_
_<math><mo lspace="0.27777em" rspace="0.27777em"></mo></math>_
_<math><mo lspace="0em" rspace="0.11111em"></mo></math>_
</body>
</html>

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>&lt;mo&gt; form attribute</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#tokenmo">
<meta name="assert" content="Verifies behavior of form attribute.">
<link rel="match" href="mo-form-ref.html">
</head>
<body>
<!-- This checks the effect of @form on a prefix operator. -->
_<math><mo form="infix"></mo></math>_
_<math><mo form="prefix"></mo></math>_
_<math><mo form="postfix"></mo></math>_
<!-- This checks the effect of @form on an infix operator. -->
_<math><mo form="infix"></mo></math>_
_<math><mo form="prefix"></mo></math>_
_<math><mo form="postfix"></mo></math>_
<!-- This checks the effect of @form on a postfix operator. -->
_<math><mo form="infix"></mo></math>_
_<math><mo form="prefix"></mo></math>_
_<math><mo form="postfix"></mo></math>_
</body>
</html>

View file

@ -1,2 +0,0 @@
suggested_reviewers:
- tobie

View file

@ -0,0 +1,120 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<title>Exceptional cases - timeouts</title>
</head>
<body>
<p>
The tests in this file are executed in parallel to avoid exceeding the "long"
timeout duration.
</p>
<script>
function makeTest(...bodies) {
const closeScript = '<' + '/script>';
let src = `
<!DOCTYPE HTML>
<html>
<head>
<title>Document title</title>
<script src="/resources/testharness.js?${Math.random()}">${closeScript}
</head>
<body>
<div id="log"></div>`;
bodies.forEach((body) => {
src += '<script>(' + body + ')();' + closeScript;
});
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe.contentDocument.write(src);
return new Promise((resolve) => {
window.addEventListener('message', function onMessage(e) {
if (e.source !== iframe.contentWindow) {
return;
}
if (!e.data || e.data.type !=='complete') {
return;
}
window.removeEventListener('message', onMessage);
resolve(e.data);
});
iframe.contentDocument.close();
}).then(({ tests, status }) => {
const summary = {
harness: getEnumProp(status, status.status),
tests: {}
};
tests.forEach((test) => {
summary.tests[test.name] = getEnumProp(test, test.status);
});
return summary;
});
}
function getEnumProp(object, value) {
for (let property in object) {
if (!/^[A-Z]+$/.test(property)) {
continue;
}
if (object[property] === value) {
return property;
}
}
}
(() => {
window.asyncTestCleanupCount1 = 0;
const nestedTest = makeTest(
() => {
async_test((t) => {
t.add_cleanup(() => window.parent.asyncTestCleanupCount1 += 1);
setTimeout(() => {
throw new Error('this error is expected');
});
}, 'test');
}
);
promise_test(() => {
return nestedTest.then(({harness, tests}) => {
assert_equals(harness, 'ERROR');
assert_equals(tests.test, 'TIMEOUT');
assert_equals(window.asyncTestCleanupCount1, 1);
});
}, 'uncaught exception during async_test which times out');
})();
(() => {
window.promiseTestCleanupCount2 = 0;
const nestedTest = makeTest(
() => {
promise_test((t) => {
t.add_cleanup(() => window.parent.promiseTestCleanupCount2 += 1);
setTimeout(() => {
throw new Error('this error is expected');
});
return new Promise(() => {});
}, 'test');
}
);
promise_test(() => {
return nestedTest.then(({harness, tests}) => {
assert_equals(harness, 'ERROR');
assert_equals(tests.test, 'TIMEOUT');
assert_equals(window.promiseTestCleanupCount2, 1);
});
}, 'uncaught exception during promise_test which times out');
})();
</script>
</body>
</html>

View file

@ -115,44 +115,6 @@ promise_test(() => {
});
}, 'uncaught exception during promise_test');
promise_test(() => {
window.asyncTestCleanupCount = 0;
return makeTest(
() => {
async_test((t) => {
t.add_cleanup(() => window.parent.asyncTestCleanupCount += 1);
setTimeout(() => {
throw new Error('this error is expected');
});
}, 'test');
}
).then(({harness, tests}) => {
assert_equals(harness, 'ERROR');
assert_equals(tests.test, 'TIMEOUT');
assert_equals(window.asyncTestCleanupCount, 1);
});
}, 'uncaught exception during async_test which times out');
promise_test(() => {
window.promiseTestCleanupCount = 0;
return makeTest(
() => {
promise_test((t) => {
t.add_cleanup(() => window.parent.promiseTestCleanupCount += 1);
setTimeout(() => {
throw new Error('this error is expected');
});
return new Promise(() => {});
}, 'test');
}
).then(({harness, tests}) => {
assert_equals(harness, 'ERROR');
assert_equals(tests.test, 'TIMEOUT');
assert_equals(window.promiseTestCleanupCount, 1);
});
}, 'uncaught exception during promise_test which times out');
promise_test(() => {
return makeTest(
() => { test(() => {}, 'before'); },
@ -194,7 +156,6 @@ if ('onunhandledrejection' in window) {
promise_test(() => {
return makeTest(
() => {
async_test('pending');
async_test((t) => {
Promise.reject(new Error('this error is expected'));
@ -207,7 +168,6 @@ if ('onunhandledrejection' in window) {
}
).then(({harness, tests}) => {
assert_equals(harness, 'ERROR');
assert_equals(tests.pending, 'NOTRUN');
assert_equals(tests.during, 'PASS');
assert_equals(tests.after, 'PASS');
});
@ -249,8 +209,7 @@ if ('onunhandledrejection' in window) {
).then(({harness, tests}) => {
assert_equals(harness, 'ERROR');
assert_equals(tests.before, 'PASS');
// TODO: investigate why this is not present
assert_false('after' in tests);
assert_true('after' in tests);
});
}, 'unhandled rejection between tests');
@ -286,8 +245,7 @@ if ('onunhandledrejection' in window) {
).then(({harness, tests}) => {
assert_equals(harness, 'ERROR');
assert_equals(tests.before, 'PASS');
// TODO: investigate why this is not present
assert_false('after' in tests);
assert_true('after' in tests);
});
}, 'unhandled rejection between promise_tests');

View file

@ -250,51 +250,68 @@ promise_test(function(t) {
}, 'access ready after it has been resolved');
promise_test(async function(t) {
var url = 'resources/empty-worker.js';
var matched_scope = 'resources/blank.html?ready-after-resurrect';
const url1 = 'resources/empty-worker.js';
const url2 = url1 + '?2';
const matched_scope = 'resources/blank.html?ready-after-unregister';
let reg1 = await service_worker_unregister_and_register(t, url, matched_scope);
add_completion_callback(function() {
reg1.unregister();
});
await wait_for_state(t, reg1.installing, 'activated');
const reg1 = await service_worker_unregister_and_register(t, url1, matched_scope);
t.add_cleanup(() => reg1.unregister());
// Hold the worker alive with a controlled worker
let frame = await with_iframe(matched_scope);
add_completion_callback(function() {
frame.remove();
});
await wait_for_state(t, reg1.installing, 'activating');
// This registration will resolve all ready promises in clients that match the scope.
// But there are no clients.
// Doom the registration as uninstalling.
await reg1.unregister();
const frame = await with_iframe(matched_scope);
t.add_cleanup(() => frame.remove());
// Access the ready promise while the registration is doomed.
let readyPromise = frame.contentWindow.navigator.serviceWorker.ready;
await reg1.unregister();
// Resurrect the doomed registration;
let reg2 = await service_worker_unregister_and_register(t, url, matched_scope);
assert_equals(reg1, reg2, 'existing registration should be resurrected');
// Access the ready promise while the registration is unregistering.
const readyPromise = frame.contentWindow.navigator.serviceWorker.ready;
// We are trying to test if the ready promise ever resolves here. Use
// an explicit timeout check here rather than forcing a full infrastructure
// level timeout.
let timeoutId;
let timeoutPromise = new Promise(resolve => {
timeoutId = setTimeout(_ => {
timeoutId = null;
resolve();
}, 500);
});
// Create a new registration.
const reg2 = await navigator.serviceWorker.register(url2, { scope: matched_scope });
t.add_cleanup(() => reg2.unregister());
// This registration will resolve all ready promises in clients that match the scope.
// That includes frame's client.
// This should resolve immediately since there is an alive registration
// with an active promise for the matching scope.
await Promise.race([readyPromise, timeoutPromise]);
const readyReg = await readyPromise;
assert_not_equals(timeoutId, null,
'ready promise should resolve before timeout');
clearTimeout(timeoutId);
assert_equals(readyReg.active.scriptURL, reg2.active.scriptURL, 'Resolves with the second registration');
assert_not_equals(reg1, reg2, 'Registrations should be different');
}, 'resolve ready after unregistering and reregistering');
// We should get here and not time out.
promise_test(async function(t) {
const url1 = 'resources/empty-worker.js';
const url2 = url1 + '?2';
const matched_scope = 'resources/blank.html?ready-after-unregister';
}, 'access ready on uninstalling registration that is resurrected');
const frame = await with_iframe(matched_scope);
t.add_cleanup(() => frame.remove());
const reg1 = await service_worker_unregister_and_register(t, url1, matched_scope);
t.add_cleanup(() => reg1.unregister());
await wait_for_state(t, reg1.installing, 'activated');
// This registration will resolve all ready promises in clients that match the scope.
// That includes frame's client.
const reg1Active = reg1.active;
await reg1.unregister();
// Access the ready promise while the registration is unregistering.
const readyPromise = frame.contentWindow.navigator.serviceWorker.ready;
// Create a new registration.
const reg2 = await navigator.serviceWorker.register(url2, { scope: matched_scope });
t.add_cleanup(() => reg2.unregister());
// This registration will resolve all ready promises in clients that match the scope.
// That includes frame's client, but its ready promise has already resolved.
const readyReg = await readyPromise;
assert_equals(readyReg.active.scriptURL, reg1Active.scriptURL, 'Resolves with the first registration');
assert_not_equals(reg1, reg2, 'Registrations should be different');
}, 'resolve ready before unregistering and reregistering');
</script>

View file

@ -11,16 +11,11 @@ t.step(function() {
var serviceWorkerStates = [];
var lastServiceWorkerState = '';
var receivedMessageFromPort = '';
var currentChangeCount = 0;
assert_true(navigator.serviceWorker instanceof ServiceWorkerContainer);
assert_equals(typeof navigator.serviceWorker.register, 'function');
assert_equals(typeof navigator.serviceWorker.getRegistration, 'function');
navigator.serviceWorker.oncurrentchange = function() {
++currentChangeCount;
};
service_worker_unregister_and_register(
t, 'resources/end-to-end-worker.js', scope)
.then(onRegister)
@ -75,9 +70,6 @@ t.step(function() {
['installing', 'installed', 'activating', 'activated'],
'Service worker should pass through all states');
assert_equals(currentChangeCount, 0,
'Should not see current changes since document is out of scope');
assert_equals(receivedMessageFromPort, 'Ack for: registering doc');
var sawRedundant = new Promise(t.step_func(function(resolve) {

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<title>Should not crash on foreignObject under defs</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>test(()=>{})</script>
<div style="will-change: opacity; mix-blend-mode: exclusion;"></div>
<svg>
<defs>
<foreignObject width="100" height="100">
<div style="will-change: opacity;">FAIL</div>
</foreignObject>
</defs>
</svg>
<div style="will-change: opacity;"></div>

View file

@ -3,10 +3,35 @@
# necessary because the Windows 10 agents aren't reset between each job.
steps:
- powershell: |
function UninstallEdge($edgePath, $uninstallArgs) {
try {
cmd /c taskkill /f /im msedge* `> nul 2`> nul
cmd /c taskkill /f /im setup.exe `> nul 2`> nul
if (Test-Path $edgePath) {
$installerPath = Get-ChildItem -PATH $edgePath -Filter "setup.exe" -Recurse | Select -First 1 FullName
if (Test-Path $installerPath.FullName) {
Write-Host "Uninstall: $($installerPath.FullName) $uninstallArgs"
Start-Process "$($installerPath.FullName)" -ArgumentList $uninstallArgs -Wait
Remove-Item -Path $edgePath -Recurse -Force -ErrorAction SilentlyContinue
}
}
} catch [Exception] {
Write-Host "Failed to unstall Edge from $edgePath. ERROR= $($_.Exception.Message)" -ForegroundColor Red
}
}
# restore hosts file
$hostFile = "$env:systemroot\System32\drivers\etc\hosts"
Copy-Item -Path "$hostFile.back" -Destination $hostFile -Force
taskkill /f /im MicrosoftEdge*
taskkill /f /im MicrosoftWebDriver.exe
# uninstall Edge
UninstallEdge "$env:localappdata\Microsoft\Edge\Application" "--uninstall --force-uninstall"
# uninstall Edge Canary channel
UninstallEdge "$env:localappdata\Microsoft\Edge SxS\Application" "--uninstall --msedge-sxs --system-level --force-uninstall"
# uninstall Edge Dev channel
UninstallEdge "$env:systemdrive\Program Files (x86)\Microsoft\Edge Dev\Application" "--uninstall --msedge-dev --system-level --force-uninstall"
# uninstall Edge Beta channel
UninstallEdge "$env:systemdrive\Program Files (x86)\Microsoft\Edge Beta\Application" "--uninstall --msedge-beta --system-level --force-uninstall"
displayName: 'Restore hosts file and cleanup test machine'
condition: always()
errorActionPreference: silentlyContinue

View file

@ -0,0 +1,32 @@
parameters:
channel: dev
# Should match https://web-platform-tests.org/running-tests/chrome.html
# Just replace chrome with edgechromium
steps:
- ${{ if eq(parameters.channel, 'canary') }}:
- powershell: |
$edgeInstallerName = 'MicrosoftEdgeSetup.exe'
# Link to Canary channel installer
Start-BitsTransfer -Source 'https://go.microsoft.com/fwlink/?linkid=2084649&Channel=Canary&language=en-us' -Destination MicrosoftEdgeSetup.exe
cmd /c START /WAIT $edgeInstallerName /silent /install
$edgePath = "$env:localappdata\Microsoft\Edge SxS\Application"
if (Test-Path $edgePath) {
Write-Host "##vso[task.prependpath]$edgePath"
} else {
Throw "Failed to install Edge at $edgePath"
}
displayName: 'Install Edge Canary'
- ${{ if eq(parameters.channel, 'dev') }}:
- powershell: |
$edgeInstallerName = 'MicrosoftEdgeSetup.exe'
# Link to Dev channel installer
Start-BitsTransfer -Source 'https://go.microsoft.com/fwlink/?linkid=2069324&Channel=Dev&language=en-us' -Destination MicrosoftEdgeSetup.exe
cmd /c START /WAIT $edgeInstallerName /silent /install
$edgePath = "$env:systemdrive\Program Files (x86)\Microsoft\Edge Dev\Application"
if (Test-Path $edgePath) {
Write-Host "##vso[task.prependpath]$edgePath"
} else {
Throw "Failed to install Edge at $edgePath"
}
displayName: 'Install Edge Dev'

View file

@ -7,7 +7,10 @@ steps:
- script: |
# This is equivalent to `Homebrew/homebrew-cask-versions/safari-technology-preview`,
# but the raw URL is used to bypass caching.
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/master/Casks/safari-technology-preview.rb
# Safari Technology Preview version 83 includes a regression that
# interferes with results collection. The version of the installation
# script referenced here installs STP at version 82.
HOMEBREW_NO_AUTO_UPDATE=1 brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask-versions/dbde508bb83254c53be4eb6387dbd9fbf9797a35/Casks/safari-technology-preview.rb
sudo "/Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver" --enable
defaults write com.apple.SafariTechnologyPreview WebKitJavaScriptCanOpenWindowsAutomatically 1
defaults write com.apple.SafariTechnologyPreview ExperimentalServerTimingEnabled 1

View file

@ -697,7 +697,7 @@ class EdgeChromium(Browser):
return find_executable("msedgedriver")
def install_webdriver(self, dest=None, channel=None, browser_binary=None):
if self.platform == "win":
if self.platform != "win":
raise ValueError("Only Windows platform is currently supported")
if dest is None:

View file

@ -354,6 +354,9 @@ class EdgeChromium(BrowserSetup):
kwargs["webdriver_binary"] = webdriver_binary
else:
raise WptrunError("Unable to locate or install msedgedriver binary")
if kwargs["browser_channel"] == "dev":
logger.info("Automatically turning on experimental features for Edge Dev")
kwargs["binary_args"].append("--enable-experimental-web-platform-features")
class Edge(BrowserSetup):