Update web-platform-tests to revision 719721f655102bcd24d45eba91339eb2d7dbc591

This commit is contained in:
WPT Sync Bot 2019-07-14 10:26:29 +00:00
parent 2b84348372
commit bc8af9cf87
70 changed files with 1271 additions and 294 deletions

View file

@ -14611,18 +14611,6 @@
{} {}
] ]
], ],
"pointerevents/pointerevent_attributes_hoverable_pointers-manual.html": [
[
"pointerevents/pointerevent_attributes_hoverable_pointers-manual.html",
{}
]
],
"pointerevents/pointerevent_attributes_nohover_pointers-manual.html": [
[
"pointerevents/pointerevent_attributes_nohover_pointers-manual.html",
{}
]
],
"pointerevents/pointerevent_capture_suppressing_mouse-manual.html": [ "pointerevents/pointerevent_capture_suppressing_mouse-manual.html": [
[ [
"pointerevents/pointerevent_capture_suppressing_mouse-manual.html", "pointerevents/pointerevent_capture_suppressing_mouse-manual.html",
@ -135139,6 +135127,18 @@
{} {}
] ]
], ],
"css/css-position/position-absolute-dynamic-static-position-floats-004.html": [
[
"css/css-position/position-absolute-dynamic-static-position-floats-004.html",
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
"=="
]
],
{}
]
],
"css/css-position/position-absolute-dynamic-static-position-margin-001.html": [ "css/css-position/position-absolute-dynamic-static-position-margin-001.html": [
[ [
"css/css-position/position-absolute-dynamic-static-position-margin-001.html", "css/css-position/position-absolute-dynamic-static-position-margin-001.html",
@ -141863,6 +141863,54 @@
{} {}
] ]
], ],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html": [
[
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html",
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-004.html": [
[
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-004.html",
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-005.html": [
[
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-005.html",
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-006.html": [
[
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-006.html",
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html": [ "css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html": [
[ [
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html", "css/css-tables/height-distribution/percentage-sizing-of-table-cell-replaced-children-001.html",
@ -142875,6 +142923,18 @@
{} {}
] ]
], ],
"css/css-text/hyphens/hyphens-overflow-001.html": [
[
"css/css-text/hyphens/hyphens-overflow-001.html",
[
[
"/css/css-text/hyphens/reference/hyphens-overflow-001-ref.html",
"=="
]
],
{}
]
],
"css/css-text/hyphens/hyphens-shaping-001.html": [ "css/css-text/hyphens/hyphens-shaping-001.html": [
[ [
"css/css-text/hyphens/hyphens-shaping-001.html", "css/css-text/hyphens/hyphens-shaping-001.html",
@ -252959,6 +253019,9 @@
"css/css-text/hyphens/reference/hyphens-auto-001-ref.html": [ "css/css-text/hyphens/reference/hyphens-auto-001-ref.html": [
[] []
], ],
"css/css-text/hyphens/reference/hyphens-overflow-001-ref.html": [
[]
],
"css/css-text/hyphens/reference/hyphens-shaping-001-ref.html": [ "css/css-text/hyphens/reference/hyphens-shaping-001-ref.html": [
[] []
], ],
@ -264743,6 +264806,9 @@
"fetch/sec-metadata/resources/fetch-via-serviceworker--respondWith--sw.js": [ "fetch/sec-metadata/resources/fetch-via-serviceworker--respondWith--sw.js": [
[] []
], ],
"fetch/sec-metadata/resources/go-back.html": [
[]
],
"fetch/sec-metadata/resources/helper.js": [ "fetch/sec-metadata/resources/helper.js": [
[] []
], ],
@ -284471,6 +284537,9 @@
"webaudio/the-audio-api/the-audioprocessingevent-interface/.gitkeep": [ "webaudio/the-audio-api/the-audioprocessingevent-interface/.gitkeep": [
[] []
], ],
"webaudio/the-audio-api/the-audioworklet-interface/processors/active-processing.js": [
[]
],
"webaudio/the-audio-api/the-audioworklet-interface/processors/add-offset.js": [ "webaudio/the-audio-api/the-audioworklet-interface/processors/add-offset.js": [
[] []
], ],
@ -342895,6 +342964,12 @@
{} {}
] ]
], ],
"fetch/sec-metadata/history.tentative.https.sub.html": [
[
"fetch/sec-metadata/history.tentative.https.sub.html",
{}
]
],
"fetch/sec-metadata/iframe.tentative.https.sub.html": [ "fetch/sec-metadata/iframe.tentative.https.sub.html": [
[ [
"fetch/sec-metadata/iframe.tentative.https.sub.html", "fetch/sec-metadata/iframe.tentative.https.sub.html",
@ -375156,6 +375231,22 @@
} }
] ]
], ],
"pointerevents/pointerevent_attributes_hoverable_pointers.html": [
[
"pointerevents/pointerevent_attributes_hoverable_pointers.html",
{
"testdriver": true
}
]
],
"pointerevents/pointerevent_attributes_nohover_pointers.html": [
[
"pointerevents/pointerevent_attributes_nohover_pointers.html",
{
"testdriver": true
}
]
],
"pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html": [ "pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html": [
[ [
"pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html", "pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html",
@ -535502,7 +535593,7 @@
"reftest" "reftest"
], ],
"css/css-color/parsing/color-computed.html": [ "css/css-color/parsing/color-computed.html": [
"6c0e130196d0be6d10336c550f9e3d12e6f89b4c", "973b454aaddd25dadbe5a7309c9d9bb131c1abbf",
"testharness" "testharness"
], ],
"css/css-color/parsing/color-invalid.html": [ "css/css-color/parsing/color-invalid.html": [
@ -535510,11 +535601,11 @@
"testharness" "testharness"
], ],
"css/css-color/parsing/color-valid.html": [ "css/css-color/parsing/color-valid.html": [
"70e2450c77f26391ddea1c42dbed4de5d0f817b5", "48e97561f40c370acd88bf41220b5482eedf245e",
"testharness" "testharness"
], ],
"css/css-color/parsing/opacity-computed.html": [ "css/css-color/parsing/opacity-computed.html": [
"1ac8b5e4aa27847a51c2c588afe99f9094cfedc5", "ba93181754a17803e29fed0d0d794e0463aaa8ed",
"testharness" "testharness"
], ],
"css/css-color/parsing/opacity-invalid.html": [ "css/css-color/parsing/opacity-invalid.html": [
@ -535522,7 +535613,7 @@
"testharness" "testharness"
], ],
"css/css-color/parsing/opacity-valid.html": [ "css/css-color/parsing/opacity-valid.html": [
"f9bb9b65014d86c97f0072de68de9581e87ed8d1", "daa8d8647f17ec48a1c648dfaea48bc8373c20ea",
"testharness" "testharness"
], ],
"css/css-color/rebeccapurple-ref.html": [ "css/css-color/rebeccapurple-ref.html": [
@ -559653,6 +559744,10 @@
"fa7cc695c361f5b43300b42f3c5872e89b5c0879", "fa7cc695c361f5b43300b42f3c5872e89b5c0879",
"reftest" "reftest"
], ],
"css/css-position/position-absolute-dynamic-static-position-floats-004.html": [
"3ccd1462fd1530e29b43b3710b0708d270818a8f",
"reftest"
],
"css/css-position/position-absolute-dynamic-static-position-margin-001.html": [ "css/css-position/position-absolute-dynamic-static-position-margin-001.html": [
"78b0ced9df2fd0ea299a7cc35e9ca0c360f453fa", "78b0ced9df2fd0ea299a7cc35e9ca0c360f453fa",
"reftest" "reftest"
@ -565901,6 +565996,22 @@
"19b02b20315e5600546b8e8d618b17e87abaa755", "19b02b20315e5600546b8e8d618b17e87abaa755",
"reftest" "reftest"
], ],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html": [
"0a8a8e57ced10a97a49b3cf6574b81130451ffcf",
"reftest"
],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-004.html": [
"f08fed6fb5ae2b82392d96be7d5ff6d3934aac06",
"reftest"
],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-005.html": [
"9726540e7c3d1fbd72301e59484f5086d1119dab",
"reftest"
],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-006.html": [
"2104e4b0b92313b5eb002a73e7f8a56f419b7927",
"reftest"
],
"css/css-tables/height-distribution/percentage-sizing-of-table-cell-children.html": [ "css/css-tables/height-distribution/percentage-sizing-of-table-cell-children.html": [
"10295810227dba52df0f2faa0dab5677b212364d", "10295810227dba52df0f2faa0dab5677b212364d",
"testharness" "testharness"
@ -567289,6 +567400,10 @@
"0b88adaed8fa8be943706cb043b02785d601ac8b", "0b88adaed8fa8be943706cb043b02785d601ac8b",
"reftest" "reftest"
], ],
"css/css-text/hyphens/hyphens-overflow-001.html": [
"cddaa6b040b1b92e5280546979c2f7933234e0e0",
"reftest"
],
"css/css-text/hyphens/hyphens-shaping-001.html": [ "css/css-text/hyphens/hyphens-shaping-001.html": [
"0cd2243bdac0e89add0223c03ba2328cb239c980", "0cd2243bdac0e89add0223c03ba2328cb239c980",
"reftest" "reftest"
@ -567309,6 +567424,10 @@
"c1355d0abba28491a126533c24039cffc6ee4eb0", "c1355d0abba28491a126533c24039cffc6ee4eb0",
"support" "support"
], ],
"css/css-text/hyphens/reference/hyphens-overflow-001-ref.html": [
"3bbd5fe8f1464d1662b3fc132c266d84eb9c305d",
"support"
],
"css/css-text/hyphens/reference/hyphens-shaping-001-ref.html": [ "css/css-text/hyphens/reference/hyphens-shaping-001-ref.html": [
"9eb1d7fd686e0f9bc1c82baf2235f8f1ef8cbb81", "9eb1d7fd686e0f9bc1c82baf2235f8f1ef8cbb81",
"support" "support"
@ -584582,7 +584701,7 @@
"testharness" "testharness"
], ],
"css/css-variables/variable-presentation-attribute.html": [ "css/css-variables/variable-presentation-attribute.html": [
"24df5aae1719d8881801a818f168cfd3eed864f9", "924c8e1c053afd4ae8949d13b03a0e6921369883",
"testharness" "testharness"
], ],
"css/css-variables/variable-pseudo-element.html": [ "css/css-variables/variable-pseudo-element.html": [
@ -593670,7 +593789,7 @@
"testharness" "testharness"
], ],
"css/filter-effects/parsing/flood-opacity-computed.svg": [ "css/filter-effects/parsing/flood-opacity-computed.svg": [
"0ecd8ecca5df65081b01575f3bb2431a409a6d67", "a395eda22e377757afc1583016e8d14da13268cc",
"testharness" "testharness"
], ],
"css/filter-effects/parsing/flood-opacity-invalid.svg": [ "css/filter-effects/parsing/flood-opacity-invalid.svg": [
@ -593678,7 +593797,7 @@
"testharness" "testharness"
], ],
"css/filter-effects/parsing/flood-opacity-valid.svg": [ "css/filter-effects/parsing/flood-opacity-valid.svg": [
"ea7ab2a8f3c0d9a7c521bde70a86ac1be8338098", "67eb37fad5ec15e01f9f54ea016e74606dec9f03",
"testharness" "testharness"
], ],
"css/filter-effects/parsing/lighting-color-computed.html": [ "css/filter-effects/parsing/lighting-color-computed.html": [
@ -614029,6 +614148,10 @@
"60163ee714686fc1c3f5f9b7011ce03cf3028e6b", "60163ee714686fc1c3f5f9b7011ce03cf3028e6b",
"testharness" "testharness"
], ],
"fetch/sec-metadata/history.tentative.https.sub.html": [
"4e786925cfa2f0202d6b7bdc01669dd613556b01",
"testharness"
],
"fetch/sec-metadata/iframe.tentative.https.sub.html": [ "fetch/sec-metadata/iframe.tentative.https.sub.html": [
"b916e3aa70b9b05cd899f1da0c3252ca64c12626", "b916e3aa70b9b05cd899f1da0c3252ca64c12626",
"testharness" "testharness"
@ -614125,12 +614248,16 @@
"8bf8d8f22175f9eef225d954b05dac104505c4a2", "8bf8d8f22175f9eef225d954b05dac104505c4a2",
"support" "support"
], ],
"fetch/sec-metadata/resources/go-back.html": [
"002c4cea4738851ea18a5a515027128ba225a0fb",
"support"
],
"fetch/sec-metadata/resources/helper.js": [ "fetch/sec-metadata/resources/helper.js": [
"9425246881b1bdc7f4cace59e4e211d298316197", "9425246881b1bdc7f4cace59e4e211d298316197",
"support" "support"
], ],
"fetch/sec-metadata/resources/post-to-owner.py": [ "fetch/sec-metadata/resources/post-to-owner.py": [
"81d4ebf74e3a06ef5b025557652e0ab6ea36ab3b", "c5ded49d71bbc4c8f6d0cc3cc1bd43f9029dcf1b",
"support" "support"
], ],
"fetch/sec-metadata/resources/record-header.py": [ "fetch/sec-metadata/resources/record-header.py": [
@ -624854,7 +624981,7 @@
"testharness" "testharness"
], ],
"html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html": [ "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html": [
"04ac273cbd77b7a1ba345a02fe73d119678d0df2", "ae266882b1957080b28f1204a0183c6ca015cadc",
"testharness" "testharness"
], ],
"html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-dim-ref.html": [ "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-dim-ref.html": [
@ -649589,13 +649716,13 @@
"89a994af3048cc0b9fc3212fd6f1497bc717208a", "89a994af3048cc0b9fc3212fd6f1497bc717208a",
"testharness" "testharness"
], ],
"pointerevents/pointerevent_attributes_hoverable_pointers-manual.html": [ "pointerevents/pointerevent_attributes_hoverable_pointers.html": [
"e74714510762aa5689b1941a973bf1568e2efafc", "97e0db158ed0b2f5ccba6ea30a31c531fc9f23ef",
"manual" "testharness"
], ],
"pointerevents/pointerevent_attributes_nohover_pointers-manual.html": [ "pointerevents/pointerevent_attributes_nohover_pointers.html": [
"0fd7904ef0041cb555d291ee60b8288bb5df7925", "e0073defff356a473dc96a3978c10d7dd71346d4",
"manual" "testharness"
], ],
"pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html": [ "pointerevents/pointerevent_boundary_events_at_implicit_release_hoverable_pointers.html": [
"e860cd082bede68aa014fe36ceff011e8227e2ad", "e860cd082bede68aa014fe36ceff011e8227e2ad",
@ -649786,7 +649913,7 @@
"support" "support"
], ],
"pointerevents/pointerevent_support.js": [ "pointerevents/pointerevent_support.js": [
"ae9b55c43d2c884b882214924dc459ba516ff42b", "3b37f48889f27ca00ddc1229e6f67ba292722736",
"support" "support"
], ],
"pointerevents/pointerevent_suppress_compat_events_on_click.html": [ "pointerevents/pointerevent_suppress_compat_events_on_click.html": [
@ -660502,7 +660629,7 @@
"support" "support"
], ],
"resources/chromium/webxr-test.js": [ "resources/chromium/webxr-test.js": [
"8257fbdc2b37f10072c39dd90a3f48adcac90fa8", "88227cbf12326838d416470cdd9757052d66020d",
"support" "support"
], ],
"resources/chromium/webxr-test.js.headers": [ "resources/chromium/webxr-test.js.headers": [
@ -669206,7 +669333,7 @@
"testharness" "testharness"
], ],
"svg/painting/parsing/fill-opacity-computed.svg": [ "svg/painting/parsing/fill-opacity-computed.svg": [
"ac1e4e2c689fc21db7a7f250876aa1e049ddf886", "16843bcceecbbd1833a8c70ad35ee3a33903d4ae",
"testharness" "testharness"
], ],
"svg/painting/parsing/fill-opacity-invalid.svg": [ "svg/painting/parsing/fill-opacity-invalid.svg": [
@ -669214,7 +669341,7 @@
"testharness" "testharness"
], ],
"svg/painting/parsing/fill-opacity-valid.svg": [ "svg/painting/parsing/fill-opacity-valid.svg": [
"41cfe985d623d682788c538e87502732821ccfc8", "90d2732b1854785585f2edbb61de1195054c0b7a",
"testharness" "testharness"
], ],
"svg/painting/parsing/fill-rule-computed.svg": [ "svg/painting/parsing/fill-rule-computed.svg": [
@ -669374,7 +669501,7 @@
"testharness" "testharness"
], ],
"svg/painting/parsing/stroke-opacity-computed.svg": [ "svg/painting/parsing/stroke-opacity-computed.svg": [
"5912e5e030d70488246c53aabef3a7d49f23e5c6", "df58a213ff50835181f1e74eb608aa5aabcbeacb",
"testharness" "testharness"
], ],
"svg/painting/parsing/stroke-opacity-invalid.svg": [ "svg/painting/parsing/stroke-opacity-invalid.svg": [
@ -669382,7 +669509,7 @@
"testharness" "testharness"
], ],
"svg/painting/parsing/stroke-opacity-valid.svg": [ "svg/painting/parsing/stroke-opacity-valid.svg": [
"983be91c8a8db76b1164a3c401a5ce46bc9fe96b", "a333363e3834ab594a3b7cb7a6839d230f327ba2",
"testharness" "testharness"
], ],
"svg/painting/parsing/stroke-valid.svg": [ "svg/painting/parsing/stroke-valid.svg": [
@ -669578,7 +669705,7 @@
"testharness" "testharness"
], ],
"svg/pservers/parsing/stop-opacity-computed.svg": [ "svg/pservers/parsing/stop-opacity-computed.svg": [
"26457e82e86facffe68a156f522e602dd9b52cd4", "1ad1e98c5a84ebad5e0129164e0d5616b72e36fc",
"testharness" "testharness"
], ],
"svg/pservers/parsing/stop-opacity-invalid.svg": [ "svg/pservers/parsing/stop-opacity-invalid.svg": [
@ -669586,7 +669713,7 @@
"testharness" "testharness"
], ],
"svg/pservers/parsing/stop-opacity-valid.svg": [ "svg/pservers/parsing/stop-opacity-valid.svg": [
"73516f62c15232a2a0409e3ca75684bff3fc92d7", "28b60038a4d5707ae45b5e6e7dbc7f806717eaf9",
"testharness" "testharness"
], ],
"svg/pservers/pattern-with-invalid-base-cloned-crash.html": [ "svg/pservers/pattern-with-invalid-base-cloned-crash.html": [
@ -675870,7 +675997,7 @@
"support" "support"
], ],
"tools/wptrunner/wptrunner/font.py": [ "tools/wptrunner/wptrunner/font.py": [
"51c5578a3c9ba8f07467d11663605d799c52856f", "6647a8580be7ab4050bbd37593b2e6595bc3ac72",
"support" "support"
], ],
"tools/wptrunner/wptrunner/formatters/__init__.py": [ "tools/wptrunner/wptrunner/formatters/__init__.py": [
@ -679886,7 +680013,7 @@
"testharness" "testharness"
], ],
"webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html": [ "webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html": [
"bee1aa835bf64ef31e7bc61e4bc8e9e8d0c43ec3", "b556e31b5e0dcea8b0c82d859e53d980b4936a2e",
"testharness" "testharness"
], ],
"webaudio/the-audio-api/the-audiodestinationnode-interface/.gitkeep": [ "webaudio/the-audio-api/the-audiodestinationnode-interface/.gitkeep": [
@ -680137,6 +680264,10 @@
"4281f56379bb20f1e173c22c99ab208d2be0fdd4", "4281f56379bb20f1e173c22c99ab208d2be0fdd4",
"testharness" "testharness"
], ],
"webaudio/the-audio-api/the-audioworklet-interface/processors/active-processing.js": [
"ef497733cafb471f74ace33045c4b4d43f3ce4f2",
"support"
],
"webaudio/the-audio-api/the-audioworklet-interface/processors/add-offset.js": [ "webaudio/the-audio-api/the-audioworklet-interface/processors/add-offset.js": [
"139f5940c554057329018d4c57c8790d6ae29dc7", "139f5940c554057329018d4c57c8790d6ae29dc7",
"support" "support"
@ -680266,7 +680397,7 @@
"support" "support"
], ],
"webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html": [ "webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html": [
"24932921e9b506f265440b57bfc3be79b5322bb3", "6136583b90fa97542829f89c3b7a5d2611fac23f",
"testharness" "testharness"
], ],
"webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html": [ "webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html": [
@ -681322,7 +681453,7 @@
"support" "support"
], ],
"webdriver/tests/navigate_to/navigate.py": [ "webdriver/tests/navigate_to/navigate.py": [
"1ad7304008c16900bf3f935098ed30835c4f0c94", "36c277dab62633d013263780523cdebad1b436ab",
"wdspec" "wdspec"
], ],
"webdriver/tests/navigate_to/user_prompts.py": [ "webdriver/tests/navigate_to/user_prompts.py": [
@ -687258,7 +687389,7 @@
"support" "support"
], ],
"webxr/resources/webxr_test_constants.js": [ "webxr/resources/webxr_test_constants.js": [
"aed6ff9c80905e96a100bbe48c7a9f37ea4237e9", "fd6d0fb184237e0092f499950e2562dddda695d7",
"support" "support"
], ],
"webxr/resources/webxr_util.js": [ "webxr/resources/webxr_util.js": [
@ -687286,7 +687417,7 @@
"testharness" "testharness"
], ],
"webxr/xrBoundedReferenceSpace_updates.https.html": [ "webxr/xrBoundedReferenceSpace_updates.https.html": [
"cf1047c8abc96740f22088620723e50a7da1db13", "e2920b176567774984e115b2998e89edf95362e6",
"testharness" "testharness"
], ],
"webxr/xrDevice_disconnect_ends.https.html": [ "webxr/xrDevice_disconnect_ends.https.html": [
@ -687390,7 +687521,7 @@
"testharness" "testharness"
], ],
"webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html": [ "webxr/xrStationaryReferenceSpace_floorlevel_updates.https.html": [
"68f91fd315019ccee9fbb9e034166338c65acad9", "06a256698165e5bc592256a4ce24ddce12de74f8",
"testharness" "testharness"
], ],
"webxr/xrView_eyes.https.html": [ "webxr/xrView_eyes.https.html": [

View file

@ -0,0 +1,7 @@
[opacity-computed.html]
[Property opacity value '-100%' computes to '0']
expected: FAIL
[Property opacity value '50%' computes to '0.5']
expected: FAIL

View file

@ -0,0 +1,10 @@
[opacity-valid.html]
[e.style['opacity'\] = "300%" should set the property value]
expected: FAIL
[e.style['opacity'\] = "50%" should set the property value]
expected: FAIL
[e.style['opacity'\] = "-100%" should set the property value]
expected: FAIL

View file

@ -0,0 +1,2 @@
[hyphens-overflow-001.html]
expected: FAIL

View file

@ -56,9 +56,3 @@
[background-position length(px) / events] [background-position length(px) / events]
expected: FAIL expected: FAIL
[font-size length(em) / values]
expected: FAIL
[font-size length(em) / events]
expected: FAIL

View file

@ -509,3 +509,6 @@
[border-left-width length(pt) / values] [border-left-width length(pt) / values]
expected: FAIL expected: FAIL
[padding-bottom length(mm) / values]
expected: FAIL

View file

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

View file

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

View file

@ -59,6 +59,3 @@
[separate text/javascript;charset=windows-1252 error text/javascript] [separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL expected: FAIL
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL

View file

@ -11,6 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C] [X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20'NosniFF'] [Content-Type-Options%3A%20nosniff]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,10 @@
[history.tentative.https.sub.html]
[back to same-origin-initiated navigation]
expected: FAIL
[back to same-site-initiated navigation]
expected: FAIL
[back to cross-site-initiated navigation]
expected: FAIL

View file

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

View file

@ -1,5 +1,24 @@
[open-features-negative-innerwidth-innerheight.html] [open-features-negative-innerwidth-innerheight.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`] [HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL 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] [open-features-negative-screenx-screeny.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`] [HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL 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] [open-features-negative-top-left.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`] [HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL 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] [open-features-negative-width-height.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`] [HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL 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] [open-features-non-integer-height.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`] [HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL expected: FAIL
[features "height=405*3" should set "height=405"] [features "height=405*3" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "height=405.32" should set "height=405"] [features "height=405.32" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "height=405e1" should set "height=405"] [features "height=405e1" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "height=405/5" should set "height=405"] [features "height=405/5" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "height=405^4" should set "height=405"] [features "height=405^4" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "height=405.5" should set "height=405"] [features "height=405.5" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "height=405e-1" should set "height=405"] [features "height=405e-1" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "height=405 " should set "height=405"] [features "height=405 " should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "height=405LLl" should set "height=405"] [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] [open-features-non-integer-innerheight.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`] [HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL expected: FAIL
[features "innerheight=405e-1" should set "height=405"] [features "innerheight=405e-1" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "innerheight=405LLl" should set "height=405"] [features "innerheight=405LLl" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "innerheight=405^4" should set "height=405"] [features "innerheight=405^4" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "innerheight=405e1" should set "height=405"] [features "innerheight=405e1" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "innerheight=405 " should set "height=405"] [features "innerheight=405 " should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "innerheight=405/5" should set "height=405"] [features "innerheight=405/5" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "innerheight=405.32" should set "height=405"] [features "innerheight=405.32" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "innerheight=405.5" should set "height=405"] [features "innerheight=405.5" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "innerheight=405*3" should set "height=405"] [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] [open-features-non-integer-innerwidth.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`] [HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL expected: FAIL
[features "innerwidth=405e-1" should set "width=405"] [features "innerwidth=405e-1" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "innerwidth=405*3" should set "width=405"] [features "innerwidth=405*3" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "innerwidth=405.5" should set "width=405"] [features "innerwidth=405.5" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "innerwidth=405e1" should set "width=405"] [features "innerwidth=405e1" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "innerwidth=405.32" should set "width=405"] [features "innerwidth=405.32" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "innerwidth=405 " should set "width=405"] [features "innerwidth=405 " should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "innerwidth=405LLl" should set "width=405"] [features "innerwidth=405LLl" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "innerwidth=405/5" should set "width=405"] [features "innerwidth=405/5" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "innerwidth=405^4" should set "width=405"] [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] [open-features-non-integer-left.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`] [HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL expected: FAIL
[features "left=105e1" should set "left=105"] [features "left=105e1" should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=105 " should set "left=105"] [features "left=105 " should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=105/5" should set "left=105"] [features "left=105/5" should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=105e-1" should set "left=105"] [features "left=105e-1" should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=105^4" should set "left=105"] [features "left=105^4" should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=105LLl" should set "left=105"] [features "left=105LLl" should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=105.32" should set "left=105"] [features "left=105.32" should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=105*3" should set "left=105"] [features "left=105*3" should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=105.5" should set "left=105"] [features "left=105.5" should set "left=105"]
expected: FAIL expected: TIMEOUT
[features "left=L104" should NOT set "left=104"]
expected: TIMEOUT
[features "left=/104" should NOT set "left=104"]
expected: TIMEOUT
[features "left=_104" should NOT set "left=104"]
expected: TIMEOUT

View file

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

View file

@ -1,32 +1,42 @@
[open-features-non-integer-screeny.html] [open-features-non-integer-screeny.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`] [HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL expected: FAIL
[features "screeny=405^4" should set "height=405"] [features "screeny=405^4" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "screeny=405e-1" should set "height=405"] [features "screeny=405e-1" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "screeny=405LLl" should set "height=405"] [features "screeny=405LLl" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "screeny=405e1" should set "height=405"] [features "screeny=405e1" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "screeny=405 " should set "height=405"] [features "screeny=405 " should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "screeny=405/5" should set "height=405"] [features "screeny=405/5" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "screeny=405*3" should set "height=405"] [features "screeny=405*3" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "screeny=405.32" should set "height=405"] [features "screeny=405.32" should set "height=405"]
expected: FAIL expected: TIMEOUT
[features "screeny=405.5" should set "height=405"] [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] [open-features-non-integer-top.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`] [HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL expected: FAIL
[features "top=105/5" should set "top=105"] [features "top=105/5" should set "top=105"]
expected: FAIL expected: TIMEOUT
[features "top=105*3" should set "top=105"] [features "top=105*3" should set "top=105"]
expected: FAIL expected: TIMEOUT
[features "top=105LLl" should set "top=105"] [features "top=105LLl" should set "top=105"]
expected: FAIL expected: TIMEOUT
[features "top=105e-1" should set "top=105"] [features "top=105e-1" should set "top=105"]
expected: FAIL expected: TIMEOUT
[features "top=105.32" should set "top=105"] [features "top=105.32" should set "top=105"]
expected: FAIL expected: TIMEOUT
[features "top=105e1" should set "top=105"] [features "top=105e1" should set "top=105"]
expected: FAIL expected: TIMEOUT
[features "top=105 " should set "top=105"] [features "top=105 " should set "top=105"]
expected: FAIL expected: TIMEOUT
[features "top=105^4" should set "top=105"] [features "top=105^4" should set "top=105"]
expected: FAIL expected: TIMEOUT
[features "top=105.5" should set "top=105"] [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] [open-features-non-integer-width.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`] [HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL expected: FAIL
[features "width=405^4" should set "width=405"] [features "width=405^4" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "width=405.5" should set "width=405"] [features "width=405.5" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "width=405e1" should set "width=405"] [features "width=405e1" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "width=405 " should set "width=405"] [features "width=405 " should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "width=405.32" should set "width=405"] [features "width=405.32" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "width=405LLl" should set "width=405"] [features "width=405LLl" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "width=405*3" should set "width=405"] [features "width=405*3" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "width=405e-1" should set "width=405"] [features "width=405e-1" should set "width=405"]
expected: FAIL expected: TIMEOUT
[features "width=405/5" should set "width=405"] [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,5 @@
[promise-rejection-events-onerror.html]
expected: TIMEOUT
[Throwing inside an unhandledrejection handler invokes the error handler.]
expected: TIMEOUT

View file

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

View file

@ -92,3 +92,6 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 9.8276454210281372e-1 at index of 39267.\n\t[39267\]\t-7.7627718382884549e-35\t-9.8276454210281372e-1\t9.8276454210281372e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\tMax RelError of 3.3137802965303198e+0 at index of 1253.\n\t[1253\]\t-4.3022233992815018e-2\t-9.9732093513011932e-3\t3.3049024641513824e-2\t3.3137802965303198e+0\t3.8985999999999999e-3\n] [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 9.8276454210281372e-1 at index of 39267.\n\t[39267\]\t-7.7627718382884549e-35\t-9.8276454210281372e-1\t9.8276454210281372e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\tMax RelError of 3.3137802965303198e+0 at index of 1253.\n\t[1253\]\t-4.3022233992815018e-2\t-9.9732093513011932e-3\t3.3049024641513824e-2\t3.3137802965303198e+0\t3.8985999999999999e-3\n]
expected: FAIL expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 9.8276454210281372e-1 at index of 39267.\n\t[39267\]\t1.0937919833103690e-34\t-9.8276454210281372e-1\t9.8276454210281372e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\tMax RelError of 3.3137802965303198e+0 at index of 1253.\n\t[1253\]\t-4.3022233992815018e-2\t-9.9732093513011932e-3\t3.3049024641513824e-2\t3.3137802965303198e+0\t3.8985999999999999e-3\n]
expected: FAIL

View file

@ -2,3 +2,6 @@
[test_invalid_always_match[None\]] [test_invalid_always_match[None\]]
expected: FAIL expected: FAIL
[test_invalid_capabilites[value3\]]
expected: FAIL

View file

@ -0,0 +1,4 @@
[WorkerGlobalScope-close.html]
[Test sending a message after closing.]
expected: FAIL

View file

@ -1,5 +1,4 @@
[import-in-moduleworker.html] [import-in-moduleworker.html]
expected: ERROR
[Base URL in module dedicated workers: import] [Base URL in module dedicated workers: import]
expected: FAIL expected: FAIL

View file

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

View file

@ -1,2 +0,0 @@
[hide_and_show.html]
expected: FAIL

View file

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

View file

@ -1,2 +0,0 @@
[resize_after_load.html]
expected: FAIL

View file

@ -27,6 +27,7 @@ test_computed_value("color", "#FEDCBA", "rgb(254, 220, 186)");
test_computed_value("color", "rgb(2, 3, 4)"); test_computed_value("color", "rgb(2, 3, 4)");
test_computed_value("color", "rgb(100%, 0%, 0%)", "rgb(255, 0, 0)"); test_computed_value("color", "rgb(100%, 0%, 0%)", "rgb(255, 0, 0)");
test_computed_value("color", "rgba(2, 3, 4, 0.5)"); test_computed_value("color", "rgba(2, 3, 4, 0.5)");
test_computed_value("color", "rgba(2, 3, 4, 50%)", "rgba(2, 3, 4, 0.5)");
test_computed_value("color", "hsl(120, 100%, 50%)", "rgb(0, 255, 0)"); test_computed_value("color", "hsl(120, 100%, 50%)", "rgb(0, 255, 0)");
test_computed_value("color", "hsla(120, 100%, 50%, 0.25)", "rgba(0, 255, 0, 0.25)"); test_computed_value("color", "hsla(120, 100%, 50%, 0.25)", "rgba(0, 255, 0, 0.25)");
test_computed_value("color", "rgb(-2, 3, 4)", "rgb(0, 3, 4)"); test_computed_value("color", "rgb(-2, 3, 4)", "rgb(0, 3, 4)");

View file

@ -21,6 +21,7 @@ test_valid_value("color", "#FEDCBA", "rgb(254, 220, 186)");
test_valid_value("color", "rgb(2, 3, 4)"); test_valid_value("color", "rgb(2, 3, 4)");
test_valid_value("color", "rgb(100%, 0%, 0%)", "rgb(255, 0, 0)"); test_valid_value("color", "rgb(100%, 0%, 0%)", "rgb(255, 0, 0)");
test_valid_value("color", "rgba(2, 3, 4, 0.5)"); // Safari serializes alpha-value 0.498039 test_valid_value("color", "rgba(2, 3, 4, 0.5)"); // Safari serializes alpha-value 0.498039
test_valid_value("color", "rgba(2, 3, 4, 50%)", "rgba(2, 3, 4, 0.5)"); // Safari serializes alpha-value 0.498039
test_valid_value("color", "hsl(120, 100%, 50%)", ["rgb(0, 255, 0)", "hsl(120, 100%, 50%)"]); test_valid_value("color", "hsl(120, 100%, 50%)", ["rgb(0, 255, 0)", "hsl(120, 100%, 50%)"]);
test_valid_value("color", "hsla(120, 100%, 50%, 0.25)", ["rgba(0, 255, 0, 0.25)", "hsla(120, 100%, 50%, 0.25)"]); // Safari serializes alpha-value 0.247059 test_valid_value("color", "hsla(120, 100%, 50%, 0.25)", ["rgba(0, 255, 0, 0.25)", "hsla(120, 100%, 50%, 0.25)"]); // Safari serializes alpha-value 0.247059
test_valid_value("color", "rgb(-2, 3, 4)", "rgb(0, 3, 4)"); test_valid_value("color", "rgb(-2, 3, 4)", "rgb(0, 3, 4)");

View file

@ -16,6 +16,10 @@ test_computed_value("opacity", "0.5");
test_computed_value("opacity", "0"); test_computed_value("opacity", "0");
test_computed_value("opacity", "-2", "0"); test_computed_value("opacity", "-2", "0");
test_computed_value("opacity", "3", "1"); test_computed_value("opacity", "3", "1");
test_computed_value("opacity", "-100%", "0");
test_computed_value("opacity", "50%", "0.5");
test_computed_value("opacity", "300%", "1");
</script> </script>
</body> </body>
</html> </html>

View file

@ -17,6 +17,10 @@ test_valid_value("opacity", "0.5");
test_valid_value("opacity", "0"); test_valid_value("opacity", "0");
test_valid_value("opacity", "-2"); test_valid_value("opacity", "-2");
test_valid_value("opacity", "3"); test_valid_value("opacity", "3");
test_valid_value("opacity", "-100%", "-1");
test_valid_value("opacity", "50%", "0.5");
test_valid_value("opacity", "300%", "3");
</script> </script>
</body> </body>
</html> </html>

View file

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html class='reftest-wait'>
<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
<link rel="help" href="https://www.w3.org/TR/css-position-3/" />
<meta name="assert" content="This test checks that a dynamic change in constraints calculates the static position correctly."/>
<script src="/common/reftest-wait.js"></script>
<style>
#container {
position: relative;
background: red;
direction: rtl;
box-sizing: border-box;
border: solid green 10px;
width: 100px;
height: 100px;
}
#float {
float: right;
background: green;
width: 40px;
height: 80px;
}
#target {
position: absolute;
background: green;
display: inline;
width: 40px;
height: 80px;
top: -10px;
left: -10px;
}
</style>
<p>Test passes if there is a filled green square.</p>
<div id="container">
<div id="float"></div>
<div id="target"></div>
</div>
<script>
document.body.offsetTop;
const target = document.getElementById('target');
target.style.top = 'initial';
target.style.left = 'initial';
document.body.offsetTop;
takeScreenshot();
</script>

View file

@ -0,0 +1,38 @@
<!doctype html>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#row-layout">
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
<link rel="bookmark" href="https://crbug.com/982312" />
<meta name="flags" content="" />
<meta name="assert" content="min-height is honored on a %height child of a table cell with an unresolvable %height and when the descendant has overflow:auto" />
<title>table cell percent height descendant with overflow:auto</title>
<!-- msft.html -->
<style>
.list-div {
overflow-y: auto;
height: 100%;
width: 100px;
min-height: 100px;
background: green;
}
#redSquare {
height: 100px;
width: 100px;
background-color: red;
position: absolute;
z-index: -1;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
</p>
<div id="redSquare"></div>
<div style="display:table">
<div style="display:table-cell; height:100%">
<div class="list-div">
</div>
</div>
</div>

View file

@ -0,0 +1,38 @@
<!doctype html>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#row-layout">
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
<link rel="bookmark" href="https://crbug.com/982312" />
<meta name="flags" content="" />
<meta name="assert" content="%height child of a table cell with a fixed height is positioned correctly when the min-height is greater than the cell's fixed height and when the descendant has overflow:auto." />
<title>table cell percent height descendant with overflow:auto</title>
<!-- msft_fixed_height.html -->
<style>
.list-div {
overflow-y: auto;
height: 100%;
width: 100px;
min-height: 100px;
background: green;
}
#redSquare {
height: 100px;
width: 100px;
background-color: red;
position: absolute;
z-index: -1;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
</p>
<div id="redSquare"></div>
<div style="display:table">
<div style="display:table-cell; height:50px">
<div class="list-div">
</div>
</div>
</div>

View file

@ -0,0 +1,41 @@
<!doctype html>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#row-layout">
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
<link rel="bookmark" href="https://crbug.com/982312" />
<meta name="flags" content="" />
<meta name="assert" content="intrinsic height of a table cell descendant is honored when the descendant and cell both have unresolvable percentage heights and when the descendant has overflow:auto" />
<title>table cell percent height descendant with overflow:auto</title>
<!-- other_msft.html -->
<style>
.list-div {
overflow-y: auto;
height: 100%;
}
.list-div-child {
width: 100px;
height: 100px;
background: green;
}
#redSquare {
height: 100px;
width: 100px;
background-color: red;
position: absolute;
z-index: -1;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
</p>
<div id="redSquare"></div>
<div style="display:table">
<div style="display:table-cell; height:100%">
<div class="list-div">
<div class="list-div-child"></div>
</div>
</div>
</div>

View file

@ -0,0 +1,39 @@
<!doctype html>
<link rel="author" title="David Grogan" href="mailto:dgrogan@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-tables-3/#row-layout">
<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
<link rel="bookmark" href="https://crbug.com/982312" />
<meta name="flags" content="" />
<meta name="assert" content="table cell descendant retains its min-height when the descendant and cell both have unresolvable percentage heights and the descendant has overflow:auto, and the cell's sibling has a fixed height greater than the descendant's min-height." />
<title>table cell percent height descendant with overflow:auto</title>
<!-- msftsibling.html -->
<style>
.list-div {
overflow-y: auto;
height: 100%;
width: 100px;
min-height: 100px;
background: green;
}
#redSquare {
height: 100px;
width: 100px;
background-color: red;
position: absolute;
z-index: -1;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.
</p>
<div id="redSquare"></div>
<div style="display:table">
<!-- vertical-align:top because blink and ff do baseline differently here -->
<div style="display:table-cell; height:100%; vertical-align:top;">
<div class="list-div"></div>
</div>
<div style="display:table-cell; height:150px;"></div>
</div>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<title>CSS Text Test: Test when soft-hyphen overflows</title>
<link rel="match" href="reference/hyphens-overflow-001-ref.html">
<link rel="help" href="https://drafts.csswg.org/css-text-3/#hyphens-property">
<link rel="author" href="mailto:kojii@chromium.org">
<style>
div {
font-size: 10px;
font-family: Ahem;
width: 5.1ch;
}
</style>
<body>
<div>12 4&shy;xx</div>
<div>12 45&shy;xx</div>
<div>12 456&shy;xx</div>
<div>1234&shy;xx</div>
<div>12345&shy;xx</div>
<div>123456&shy;xx</div>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<style>
div {
font-size: 10px;
font-family: Ahem;
}
</style>
<body>
<div>12 4-<br>xx</div>
<div>12<br>45xx</div>
<div>12<br>456xx</div>
<div>1234-<br>xx</div>
<div>12345-<br>xx</div>
<div>123456-<br>xx</div>
</body>

View file

@ -59,7 +59,7 @@
{ property: "cursor", valuesToTest:["auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help"], default: "auto" }, { property: "cursor", valuesToTest:["auto", "crosshair", "default", "pointer", "move", "e-resize", "ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize", "s-resize", "w-resize", "text", "wait", "help"], default: "auto" },
{ property: "direction", valuesToTest:["ltr", "rtl"], default: "ltr" }, { property: "direction", valuesToTest:["ltr", "rtl"], default: "ltr" },
{ property: "display", valuesToTest:["inline", "block", "list-item", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none"], default: "inline" }, { property: "display", valuesToTest:["inline", "block", "list-item", "table", "inline-table", "table-row-group", "table-header-group", "table-footer-group", "table-row", "table-column-group", "table-column", "table-cell", "table-caption", "none"], default: "inline" },
{ property: "dominant-baseline", valuesToTest:["auto", "use-script", "no-change", "reset-size", "ideographic", "alphabetic", "hanging", "mathematical", "central", "middle", "text-after-edge", "text-before-edge"], default: "auto" }, { property: "dominant-baseline", valuesToTest:["auto", "ideographic", "alphabetic", "hanging", "mathematical", "central", "middle", "text-after-edge", "text-before-edge"], default: "auto" },
{ property: "fill", valuesToTest:["red", "url(#gradient) black"], default: "black" }, { property: "fill", valuesToTest:["red", "url(#gradient) black"], default: "black" },
{ property: "fill-opacity", valuesToTest:["0.8"], default: "1" }, { property: "fill-opacity", valuesToTest:["0.8"], default: "1" },
{ property: "fill-rule", valuesToTest:["nonzero", "evenodd"], default: "nonzero" }, { property: "fill-rule", valuesToTest:["nonzero", "evenodd"], default: "nonzero" },

View file

@ -16,6 +16,9 @@
test_computed_value("flood-opacity", "-1", "0"); test_computed_value("flood-opacity", "-1", "0");
test_computed_value("flood-opacity", "0.5"); test_computed_value("flood-opacity", "0.5");
test_computed_value("flood-opacity", "3", "1"); test_computed_value("flood-opacity", "3", "1");
test_computed_value("flood-opacity", "-100%", "0");
test_computed_value("flood-opacity", "50%", "0.5");
test_computed_value("flood-opacity", "300%", "1");
]]></script> ]]></script>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 819 B

After

Width:  |  Height:  |  Size: 974 B

Before After
Before After

View file

@ -16,9 +16,9 @@
test_valid_value("flood-opacity", "-1"); test_valid_value("flood-opacity", "-1");
test_valid_value("flood-opacity", "0.5"); test_valid_value("flood-opacity", "0.5");
test_valid_value("flood-opacity", "3"); test_valid_value("flood-opacity", "3");
test_valid_value("flood-opacity", "-100%"); test_valid_value("flood-opacity", "-100%", "-1");
test_valid_value("flood-opacity", "50%"); test_valid_value("flood-opacity", "50%", "0.5");
test_valid_value("flood-opacity", "300%"); test_valid_value("flood-opacity", "300%", "3");
]]></script> ]]></script>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 931 B

After

Width:  |  Height:  |  Size: 949 B

Before After
Before After

View file

@ -0,0 +1,81 @@
<!DOCTYPE html>
<html>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<script>
// Test that correct `Sec-Fetch-Site` (and other `Sec-Fetch-...` request
/// headers) are used in navigations triggered by |history.back()|.
function add_test(description, report_host, go_back_host, expectations) {
async_test(t => {
// STEP1: Navigate a new window to report_host/post-to-owner.py
const url_suffix = '/fetch/sec-metadata/resources/post-to-owner.py'
const url = `https://${report_host}${url_suffix}`;
const w = window.open(url, '_blank');
var msg_counter = 0;
window.addEventListener('message', t.step_func(e => {
if (e.source != w)
return;
msg_counter = msg_counter + 1;
if (msg_counter == 1) {
// STEP2: Verify the headers (this is a sanity check that the same
// headers are used here and in STEP5).
assert_header_equals(e.data, expectations);
// STEP3: Go to go_back_host/go-back.html (postponing this via
// step_timeout ensures that go-back.html will get a separate
// history entry - otherwise it might be treated as a client-side
// redirect and we might end up with nowhere to go back to).
t.step_timeout(() => {
const url_suffix = '/fetch/sec-metadata/resources/go-back.html'
const url = `https://${go_back_host}${url_suffix}`;
w.location = url;
});
// STEP4 (elsewhere - inside go-back.html): Call history.back().
} else if (msg_counter == 2) {
// STEP5: Verify the headers (this is the main verification and focus
// of the test).
assert_header_equals(e.data, expectations);
// STEP6: Finish the test.
t.done();
}
}));
}, description);
}
const same_origin_host = "{{host}}:{{ports[https][0]}}";
const same_site_host = "{{hosts[][www]}}:{{ports[https][0]}}";
const cross_site_host = "{{hosts[alt][www]}}:{{ports[https][0]}}";
add_test(
"back to same-origin-initiated navigation",
same_origin_host, // report_host
cross_site_host, // go_back_host
{ "dest": "document",
"site": "same-origin",
"user": "",
"mode": "navigate" });
add_test(
"back to same-site-initiated navigation",
same_site_host, // report_host
cross_site_host, // go_back_host
{ "dest": "document",
"site": "same-site",
"user": "",
"mode": "navigate" });
add_test(
"back to cross-site-initiated navigation",
cross_site_host, // report_host
cross_site_host, // go_back_host
{ "dest": "document",
"site": "cross-site",
"user": "",
"mode": "navigate" });
</script>

View file

@ -0,0 +1,3 @@
<!DOCTYPE html>
<body onload="history.back()">
</body>

View file

@ -1,7 +1,10 @@
import json import json
def main(request, response): def main(request, response):
headers = [("Content-Type", "text/html")] headers = [
("Content-Type", "text/html"),
("Cache-Control", "no-cache, no-store, must-revalidate")
]
body = """ body = """
<!DOCTYPE html> <!DOCTYPE html>

View file

@ -10,8 +10,8 @@
} }
</style> </style>
<img src=broken width=100 height=125> <img src=broken width=100 height=125>
<img src="/images/green.png" width=100 height=125>
<img src="/images/green.png"> <img src="/images/green.png">
<img src="/images/green.png" width=100 height=125>
<script> <script>
let t = async_test("Image width and height attributes are used to infer aspect-ratio"); let t = async_test("Image width and height attributes are used to infer aspect-ratio");
function assert_ratio(img, expected) { function assert_ratio(img, expected) {
@ -21,7 +21,7 @@ function assert_ratio(img, expected) {
onload = t.step_func_done(function() { onload = t.step_func_done(function() {
let images = document.querySelectorAll("img"); let images = document.querySelectorAll("img");
assert_ratio(images[0], 0.8); assert_ratio(images[0], 0.8);
assert_ratio(images[1], 0.8);
assert_ratio(images[2], 2.0); // 2.0 is the original aspect ratio of green.png assert_ratio(images[2], 2.0); // 2.0 is the original aspect ratio of green.png
assert_ratio(images[1], 2.0); // Loaded image's aspect ratio, at least by default, overrides width / height ratio.
}); });
</script> </script>

View file

@ -6,6 +6,9 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<!-- Additional helper script for common checks across event types --> <!-- Additional helper script for common checks across event types -->
<script type="text/javascript" src="pointerevent_support.js"></script> <script type="text/javascript" src="pointerevent_support.js"></script>
<script> <script>
@ -95,6 +98,7 @@
var innerFrame = document.getElementById('innerFrame'); var innerFrame = document.getElementById('innerFrame');
var square2 = innerFrame.contentDocument.getElementById('square2'); var square2 = innerFrame.contentDocument.getElementById('square2');
var rectSquare2 = square2.getBoundingClientRect(); var rectSquare2 = square2.getBoundingClientRect();
var actions_promise;
eventList.forEach(function(eventName) { eventList.forEach(function(eventName) {
on_event(square1, eventName, function (event) { on_event(square1, eventName, function (event) {
@ -112,10 +116,32 @@
checkPointerEventAttributes(event, rectSquare2, "Inner frame "); checkPointerEventAttributes(event, rectSquare2, "Inner frame ");
if (Object.keys(detected_eventTypes).length == eventList.length) { if (Object.keys(detected_eventTypes).length == eventList.length) {
square2.style.visibility = 'hidden'; square2.style.visibility = 'hidden';
test_pointerEvent.done(); // Make sure the test finishes after all the input actions are completed.
actions_promise.then( () => {
test_pointerEvent.done();
});
} }
}); });
}); });
// Inject mouse and pen inputs.
actions_promise = clickInTarget("mouse", square1).then(function() {
return moveToDocument("mouse");
}).then(function() {
return clickInTarget("mouse", square2);
}).then(function() {
return moveToDocument("mouse");
}).then(function() {
test_pointerEvent.done();
}).then(function() {
return clickInTarget("pen", square1);
}).then(function() {
return moveToDocument("pen");
}).then(function() {
return clickInTarget("pen", square2);
}).then(function() {
return moveToDocument("pen");
});
} }
</script> </script>
</head> </head>

View file

@ -6,6 +6,9 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<!-- Additional helper script for common checks across event types --> <!-- Additional helper script for common checks across event types -->
<script type="text/javascript" src="pointerevent_support.js"></script> <script type="text/javascript" src="pointerevent_support.js"></script>
<script> <script>
@ -76,6 +79,7 @@
var innerFrame = document.getElementById('innerFrame'); var innerFrame = document.getElementById('innerFrame');
var square2 = innerFrame.contentDocument.getElementById('square2'); var square2 = innerFrame.contentDocument.getElementById('square2');
var rectSquare2 = square2.getBoundingClientRect(); var rectSquare2 = square2.getBoundingClientRect();
var actions_promise;
eventList.forEach(function(eventName) { eventList.forEach(function(eventName) {
on_event(square1, eventName, function (event) { on_event(square1, eventName, function (event) {
@ -93,10 +97,18 @@
checkPointerEventAttributes(event, rectSquare2, "Inner frame "); checkPointerEventAttributes(event, rectSquare2, "Inner frame ");
if (Object.keys(detected_eventTypes).length == eventList.length) { if (Object.keys(detected_eventTypes).length == eventList.length) {
square2.style.visibility = 'hidden'; square2.style.visibility = 'hidden';
test_pointerEvent.done(); // Make sure the test finishes after all the input actions are completed.
actions_promise.then( () => {
test_pointerEvent.done();
});
} }
}); });
}); });
// Inject touch inputs.
actions_promise = clickInTarget("touch", square1).then(function() {
return clickInTarget("touch", square2);
});
} }
</script> </script>
</head> </head>

View file

@ -353,3 +353,11 @@ function pointerHoverInTarget(pointerType, target, direction) {
.pointerMove(3 * x_delta, 3 * y_delta, {origin: target}) .pointerMove(3 * x_delta, 3 * y_delta, {origin: target})
.send(); .send();
} }
function moveToDocument(pointerType) {
var pointerId = pointerType + "Pointer1";
return new test_driver.Actions()
.addPointer(pointerId, pointerType)
.pointerMove(0, 0)
.send();
}

View file

@ -16,6 +16,35 @@ const default_stage_parameters = {
bounds: null bounds: null
}; };
function getMatrixFromTransform(transform) {
let x = transform.orientation[0];
let y = transform.orientation[1];
let z = transform.orientation[2];
let w = transform.orientation[3];
let m11 = 1.0 - 2.0 * (y * y + z * z);
let m21 = 2.0 * (x * y + z * w);
let m31 = 2.0 * (x * z - y * w);
let m12 = 2.0 * (x * y - z * w);
let m22 = 1.0 - 2.0 * (x * x + z * z);
let m32 = 2.0 * (y * z + x * w);
let m13 = 2.0 * (x * z + y * w);
let m23 = 2.0 * (y * z - x * w);
let m33 = 1.0 - 2.0 * (x * x + y * y);
let m14 = transform.position[0];
let m24 = transform.position[1];
let m34 = transform.position[2];
// Column-major linearized order is expected.
return [m11, m21, m31, 0,
m12, m22, m32, 0,
m13, m23, m33, 0,
m14, m24, m34, 1];
}
class ChromeXRTest { class ChromeXRTest {
constructor() { constructor() {
this.mockVRService_ = new MockVRService(mojo.frameInterfaces); this.mockVRService_ = new MockVRService(mojo.frameInterfaces);
@ -178,6 +207,9 @@ class MockRuntime {
this.framesOfReference = {}; this.framesOfReference = {};
this.input_sources_ = [];
this.next_input_source_index_ = 1;
// Initialize DisplayInfo first to set the defaults, then override with // Initialize DisplayInfo first to set the defaults, then override with
// anything from the deviceInit // anything from the deviceInit
if (fakeDeviceInit.supportsImmersive) { if (fakeDeviceInit.supportsImmersive) {
@ -194,8 +226,8 @@ class MockRuntime {
this.setViewerOrigin(fakeDeviceInit.viewerOrigin); this.setViewerOrigin(fakeDeviceInit.viewerOrigin);
} }
if (fakeDeviceInit.localToFloorLevelTransform != null) { if (fakeDeviceInit.floorOrigin != null) {
this.setLocalToFloorLevelTransform(fakeDeviceInit.localToFloorLevelTransform); this.setFloorOrigin(fakeDeviceInit.floorOrigin);
} }
// This appropriately handles if the coordinates are null // This appropriately handles if the coordinates are null
@ -280,7 +312,7 @@ class MockRuntime {
} }
} }
setLocalToFloorLevelTransform(transform) { setFloorOrigin(floorOrigin) {
if (!this.displayInfo_.stageParameters) { if (!this.displayInfo_.stageParameters) {
this.displayInfo_.stageParameters = default_stage_parameters; this.displayInfo_.stageParameters = default_stage_parameters;
this.displayInfo_.stageParameters.bounds = this.bounds_; this.displayInfo_.stageParameters.bounds = this.bounds_;
@ -288,14 +320,14 @@ class MockRuntime {
this.displayInfo_.stageParameters.standingTransform = new gfx.mojom.Transform(); this.displayInfo_.stageParameters.standingTransform = new gfx.mojom.Transform();
this.displayInfo_.stageParameters.standingTransform.matrix = this.displayInfo_.stageParameters.standingTransform.matrix =
this.getMatrixFromTransform(transform); getMatrixFromTransform(floorOrigin);
if (this.sessionClient_.ptr.isBound()) { if (this.sessionClient_.ptr.isBound()) {
this.sessionClient_.onChanged(this.displayInfo_); this.sessionClient_.onChanged(this.displayInfo_);
} }
} }
clearLocalToFloorLevelTransform() { clearFloorOrigin() {
if (this.displayInfo_.stageParameters) { if (this.displayInfo_.stageParameters) {
this.displayInfo_.stageParameters = null; this.displayInfo_.stageParameters = null;
@ -309,35 +341,16 @@ class MockRuntime {
this.send_pose_reset_ = true; this.send_pose_reset_ = true;
} }
// Helper methods simulateInputSourceConnection(fakeInputSourceInit) {
getMatrixFromTransform(transform) { let index = this.next_input_source_index_;
let x = transform.orientation[0]; this.next_input_source_index_++;
let y = transform.orientation[1];
let z = transform.orientation[2];
let w = transform.orientation[3];
let m11 = 1.0 - 2.0 * (y * y + z * z); let source = new MockXRInputSource(fakeInputSourceInit, index, this);
let m21 = 2.0 * (x * y + z * w); this.input_sources_.push(source);
let m31 = 2.0 * (x * z - y * w); return source;
let m12 = 2.0 * (x * y - z * w);
let m22 = 1.0 - 2.0 * (x * x + z * z);
let m32 = 2.0 * (y * z + x * w);
let m13 = 2.0 * (x * z + y * w);
let m23 = 2.0 * (y * z - x * w);
let m33 = 1.0 - 2.0 * (x * x + y * y);
let m14 = transform.position[0];
let m24 = transform.position[1];
let m34 = transform.position[2];
// Column-major linearized order is expected.
return [m11, m21, m31, 0,
m12, m22, m32, 0,
m13, m23, m33, 0,
m14, m24, m34, 1];
} }
// Helper methods
getNonImmersiveDisplayInfo() { getNonImmersiveDisplayInfo() {
let displayInfo = this.getImmersiveDisplayInfo(); let displayInfo = this.getImmersiveDisplayInfo();
@ -418,6 +431,21 @@ class MockRuntime {
}; };
} }
// These methods are intended to be used by MockXRInputSource only.
addInputSource(source) {
let index = this.input_sources_.indexOf(source);
if (index == -1) {
this.input_sources_.push(source);
}
}
removeInputSource(source) {
let index = this.input_sources_.indexOf(source);
if (index >= 0) {
this.input_sources_.splice(index, 1);
}
}
// Mojo function implementations. // Mojo function implementations.
// XRFrameDataProvider implementation. // XRFrameDataProvider implementation.
@ -426,6 +454,19 @@ class MockRuntime {
this.pose_.poseIndex++; this.pose_.poseIndex++;
this.pose_.poseReset = this.send_pose_reset_; this.pose_.poseReset = this.send_pose_reset_;
this.send_pose_reset_ = false; this.send_pose_reset_ = false;
// Setting the input_state to null tests a slightly different path than
// the browser tests where if the last input source is removed, the device
// code always sends up an empty array, but it's also valid mojom to send
// up a null array.
if (this.input_sources_.length > 0) {
this.pose_.inputState = [];
for (let i = 0; i < this.input_sources_.length; i++) {
this.pose_.inputState.push(this.input_sources_[i].getInputSourceState());
}
} else {
this.pose_.inputState = null;
}
} }
// Convert current document time to monotonic time. // Convert current document time to monotonic time.
@ -516,6 +557,147 @@ class MockRuntime {
}; };
} }
class MockXRInputSource {
constructor(fakeInputSourceInit, id, pairedDevice) {
this.source_id_ = id;
this.pairedDevice_ = pairedDevice;
this.handedness_ = fakeInputSourceInit.handedness;
this.target_ray_mode_ = fakeInputSourceInit.targetRayMode;
this.setPointerOrigin(fakeInputSourceInit.pointerOrigin);
this.primary_input_pressed_ = false;
if (fakeInputSourceInit.selectionStarted != null) {
this.primary_input_pressed_ = fakeInputSourceInit.selectionStarted;
}
this.primary_input_clicked_ = false;
if (fakeInputSourceInit.selectionClicked != null) {
this.primary_input_clicked_ = fakeInputSourceInit.selectionClicked;
}
this.grip_ = null;
if (fakeInputSourceInit.gripOrigin != null) {
this.setGripOrigin(fakeInputSourceInit.gripOrigin);
}
this.gamepad_ = null;
this.emulated_position_ = false;
this.desc_dirty_ = true;
}
// Webxr-test-api
setHandedness(handedness) {
if (this.handedness_ != handedness) {
this.desc_dirty_ = true;
this.handedness_ = handedness;
}
}
setTargetRayMode(targetRayMode) {
if (this.target_ray_mode_ != targetRayMode) {
this.desc_dirty_ = true;
this.target_ray_mode_ = targetRayMode;
}
}
setProfiles(profiles) {
// Profiles are not yet implemented by chromium
}
setGripOrigin(transform, emulatedPosition = false) {
this.grip_ = new gfx.mojom.Transform();
this.grip_.matrix = getMatrixFromTransform(transform);
this.emulated_position_ = emulatedPosition;
}
clearGripOrigin() {
if (this.grip_ != null) {
this.grip_ = null;
this.emulated_position_ = false;
}
}
setPointerOrigin(transform, emulatedPosition = false) {
this.desc_dirty_ = true;
this.pointer_offset_ = new gfx.mojom.Transform();
this.pointer_offset_.matrix = getMatrixFromTransform(transform);
}
disconnect() {
this.pairedDevice_.removeInputSource(this);
}
reconnect() {
this.pairedDevice_.addInputSource(this);
}
startSelection() {
this.primary_input_pressed_ = true;
}
endSelection() {
if (!this.primary_input_pressed_) {
throw new Error("Attempted to end selection which was not started");
}
this.primary_input_pressed_ = false;
this.primary_input_clicked_ = true;
}
simulateSelect() {
this.primary_input_clicked_ = true;
}
// Helpers for Mojom
getInputSourceState() {
let input_state = new device.mojom.XRInputSourceState();
input_state.sourceId = this.source_id_;
input_state.primaryInputPressed = this.primary_input_pressed_;
input_state.primaryInputClicked = this.primary_input_clicked_;
input_state.grip = this.grip_;
input_state.gamepad = this.gamepad_;
if (this.desc_dirty_) {
let input_desc = new device.mojom.XRInputSourceDescription();
input_desc.emulatedPosition = this.emulated_position_;
switch (this.target_ray_mode_) {
case 'gaze':
input_desc.targetRayMode = device.mojom.XRTargetRayMode.GAZING;
break;
case 'tracked-pointer':
input_desc.targetRayMode = device.mojom.XRTargetRayMode.POINTING;
break;
}
switch (this.handedness_) {
case 'left':
input_desc.handedness = device.mojom.XRHandedness.LEFT;
break;
case 'right':
input_desc.handedness = device.mojom.XRHandedness.RIGHT;
break;
default:
input_desc.handedness = device.mojom.XRHandedness.NONE;
break;
}
input_desc.pointerOffset = this.pointer_offset_;
input_state.description = input_desc;
this.desc_dirty_ = false;
}
return input_state;
}
}
// Mojo helper classes // Mojo helper classes
class MockXRPresentationProvider { class MockXRPresentationProvider {
constructor() { constructor() {

View file

@ -16,6 +16,9 @@
test_computed_value("fill-opacity", "-1", "0"); test_computed_value("fill-opacity", "-1", "0");
test_computed_value("fill-opacity", "0.5"); test_computed_value("fill-opacity", "0.5");
test_computed_value("fill-opacity", "3", "1"); test_computed_value("fill-opacity", "3", "1");
test_computed_value("fill-opacity", "-100%", "0");
test_computed_value("fill-opacity", "50%", "0.5");
test_computed_value("fill-opacity", "300%", "1");
]]></script> ]]></script>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 790 B

After

Width:  |  Height:  |  Size: 942 B

Before After
Before After

View file

@ -16,9 +16,9 @@
test_valid_value("fill-opacity", "-1"); test_valid_value("fill-opacity", "-1");
test_valid_value("fill-opacity", "0.5"); test_valid_value("fill-opacity", "0.5");
test_valid_value("fill-opacity", "3"); test_valid_value("fill-opacity", "3");
test_valid_value("fill-opacity", "-100%"); test_valid_value("fill-opacity", "-100%", "-1");
test_valid_value("fill-opacity", "50%"); test_valid_value("fill-opacity", "50%", "0.5");
test_valid_value("fill-opacity", "300%"); test_valid_value("fill-opacity", "300%", "3");
]]></script> ]]></script>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 907 B

After

Width:  |  Height:  |  Size: 925 B

Before After
Before After

View file

@ -16,6 +16,9 @@
test_computed_value("stroke-opacity", "-1", "0"); test_computed_value("stroke-opacity", "-1", "0");
test_computed_value("stroke-opacity", "0.5"); test_computed_value("stroke-opacity", "0.5");
test_computed_value("stroke-opacity", "3", "1"); test_computed_value("stroke-opacity", "3", "1");
test_computed_value("stroke-opacity", "-100%", "0");
test_computed_value("stroke-opacity", "50%", "0.5");
test_computed_value("stroke-opacity", "300%", "1");
]]></script> ]]></script>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 810 B

After

Width:  |  Height:  |  Size: 968 B

Before After
Before After

View file

@ -16,9 +16,9 @@
test_valid_value("stroke-opacity", "-1"); test_valid_value("stroke-opacity", "-1");
test_valid_value("stroke-opacity", "0.5"); test_valid_value("stroke-opacity", "0.5");
test_valid_value("stroke-opacity", "3"); test_valid_value("stroke-opacity", "3");
test_valid_value("stroke-opacity", "-100%"); test_valid_value("stroke-opacity", "-100%", "-1");
test_valid_value("stroke-opacity", "50%"); test_valid_value("stroke-opacity", "50%", "0.5");
test_valid_value("stroke-opacity", "300%"); test_valid_value("stroke-opacity", "300%", "3");
]]></script> ]]></script>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 925 B

After

Width:  |  Height:  |  Size: 943 B

Before After
Before After

View file

@ -16,6 +16,9 @@
test_computed_value("stop-opacity", "-1", "0"); test_computed_value("stop-opacity", "-1", "0");
test_computed_value("stop-opacity", "0.5"); test_computed_value("stop-opacity", "0.5");
test_computed_value("stop-opacity", "3", "1"); test_computed_value("stop-opacity", "3", "1");
test_computed_value("stop-opacity", "-100%", "0");
test_computed_value("stop-opacity", "50%", "0.5");
test_computed_value("stop-opacity", "300%", "1");
]]></script> ]]></script>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 803 B

After

Width:  |  Height:  |  Size: 955 B

Before After
Before After

View file

@ -16,9 +16,9 @@
test_valid_value("stop-opacity", "-1"); test_valid_value("stop-opacity", "-1");
test_valid_value("stop-opacity", "0.5"); test_valid_value("stop-opacity", "0.5");
test_valid_value("stop-opacity", "3"); test_valid_value("stop-opacity", "3");
test_valid_value("stop-opacity", "-100%"); test_valid_value("stop-opacity", "-100%", "-1");
test_valid_value("stop-opacity", "50%"); test_valid_value("stop-opacity", "50%", "0.5");
test_valid_value("stop-opacity", "300%"); test_valid_value("stop-opacity", "300%", "3");
]]></script> ]]></script>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 912 B

After

Width:  |  Height:  |  Size: 930 B

Before After
Before After

View file

@ -95,11 +95,11 @@ class FontInstaller(object):
from ctypes import wintypes from ctypes import wintypes
wparam = 0 wparam = 0
lparam = 0 lparam = 0
SendMessageW = ctypes.windll.user32.SendMessageW SendNotifyMessageW = ctypes.windll.user32.SendNotifyMessageW
SendMessageW.argtypes = [wintypes.HANDLE, wintypes.UINT, SendNotifyMessageW.argtypes = [wintypes.HANDLE, wintypes.UINT,
wintypes.WPARAM, wintypes.LPARAM] wintypes.WPARAM, wintypes.LPARAM]
return bool(SendMessageW(hwnd_broadcast, wm_fontchange, return bool(SendNotifyMessageW(hwnd_broadcast, wm_fontchange,
wparam, lparam)) wparam, lparam))
def remove_linux_font(self, font_name, _): def remove_linux_font(self, font_name, _):
if self.created_dir: if self.created_dir:
@ -129,8 +129,8 @@ class FontInstaller(object):
from ctypes import wintypes from ctypes import wintypes
wparam = 0 wparam = 0
lparam = 0 lparam = 0
SendMessageW = ctypes.windll.user32.SendMessageW SendNotifyMessageW = ctypes.windll.user32.SendNotifyMessageW
SendMessageW.argtypes = [wintypes.HANDLE, wintypes.UINT, SendNotifyMessageW.argtypes = [wintypes.HANDLE, wintypes.UINT,
wintypes.WPARAM, wintypes.LPARAM] wintypes.WPARAM, wintypes.LPARAM]
return bool(SendMessageW(hwnd_broadcast, wm_fontchange, return bool(SendNotifyMessageW(hwnd_broadcast, wm_fontchange,
wparam, lparam)) wparam, lparam))

View file

@ -35,7 +35,7 @@
`context.sampleRate (${context.sampleRate} Hz)`).beGreaterThan(0); `context.sampleRate (${context.sampleRate} Hz)`).beGreaterThan(0);
defaultLatency = context.baseLatency; defaultLatency = context.baseLatency;
should(defaultLatency, 'default baseLatency').beGreaterThan(0); should(defaultLatency, 'default baseLatency').beGreaterThanOrEqualTo(0);
// Verify that an AudioContext can be created with the expected // Verify that an AudioContext can be created with the expected
// latency types. // latency types.
@ -130,7 +130,7 @@
should(context1.baseLatency, 'high latency context baseLatency') should(context1.baseLatency, 'high latency context baseLatency')
.beEqualTo(context2.baseLatency); .beEqualTo(context2.baseLatency);
should(context1.baseLatency, 'high latency context baseLatency') should(context1.baseLatency, 'high latency context baseLatency')
.beGreaterThan(interactiveLatency); .beGreaterThanOrEqualTo(interactiveLatency);
closingPromises.push(context1.close()); closingPromises.push(context1.close());
closingPromises.push(context2.close()); closingPromises.push(context2.close());

View file

@ -0,0 +1,54 @@
/**
* @class ActiveProcessingTester
* @extends AudioWorkletProcessor
*
* This processor class sends a message to its AudioWorkletNodew whenever the
* number of channels on the input changes. The message includes the actual
* number of channels, the context time at which this occurred, and whether
* we're done processing or not.
*/
class ActiveProcessingTester extends AudioWorkletProcessor {
constructor(options) {
super(options);
this._lastChannelCount = 0;
// See if user specified a value for test duration.
if (options.hasOwnProperty('processorOptions') &&
options.processorOptions.hasOwnProperty('testDuration')) {
this._testDuration = options.processorOptions.testDuration;
} else {
this._testDuration = 5;
}
// Time at which we'll signal we're done, based on the requested
// |testDuration|
this._endTime = currentTime + this._testDuration;
}
process(inputs, outputs) {
const input = inputs[0];
const output = outputs[0];
const inputChannelCount = input.length;
const isFinished = currentTime > this._endTime;
// Send a message if we're done or the count changed.
if (isFinished || (inputChannelCount != this._lastChannelCount)) {
this.port.postMessage({
channelCount: inputChannelCount,
finished: isFinished,
time: currentTime
});
this._lastChannelCount = inputChannelCount;
}
// Just copy the input to the output for no particular reason.
for (let channel = 0; channel < input.length; ++channel) {
output[channel].set(input[channel]);
}
// When we're finished, this method no longer needs to be called.
return !isFinished;
}
}
registerProcessor('active-processing-tester', ActiveProcessingTester);

View file

@ -6,101 +6,86 @@
</title> </title>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/webaudio/resources/audit-util.js"></script>
<script src="/webaudio/resources/audit.js"></script> <script src="/webaudio/resources/audit.js"></script>
</head> </head>
<body> <body>
<script id="layout-test-code"> <script id="layout-test-code">
let audit = Audit.createTaskRunner(); // AudioProcessor that sends a message to its AudioWorkletNode whenver the
// number of channels on its input changes.
// The sample rate MUST be a power of two to eliminate round-off when
// computing render boundaries but is otherwise arbitrary. And we only new
// a few blocks for rendering to see if things are working.
let sampleRate = 8192;
let renderLength = 10 * RENDER_QUANTUM_FRAMES;
// Number of inputs for the ChannelMergerNode. Pretty arbitrary, but
// should not be 1.
let numberOfInputs = 7;
// How many frames the source should run. Arbitrary but should be more
// than a render quantum.
let sourceDurationFrames = 131;
// Frame at which to connect the source to the merger
let connectFrame = 2 * RENDER_QUANTUM_FRAMES;
// AudioProcessor that counts the number of channels on its single input.
let filePath = let filePath =
'../the-audioworklet-interface/processors/input-count-processor.js'; '../the-audioworklet-interface/processors/active-processing.js';
audit.define( const audit = Audit.createTaskRunner();
{
label: 'Test', let context;
description: 'Active processing for ChannelMergerNode'
}, audit.define('initialize', (task, should) => {
async (task, should) => { // Create context and load the module
const context = new OfflineAudioContext({ context = new AudioContext();
numberOfChannels: numberOfInputs, should(
length: renderLength, context.audioWorklet.addModule(filePath),
sampleRate: sampleRate 'AudioWorklet module loading')
.beResolved()
.then(() => task.done());
});
audit.define('test', (task, should) => {
const src = new OscillatorNode(context);
// Number of inputs for the ChannelMergerNode. Pretty arbitrary, but
// should not be 1.
const numberOfInputs = 7;
const merger =
new ChannelMergerNode(context, {numberOfInputs: numberOfInputs});
const testerNode =
new AudioWorkletNode(context, 'active-processing-tester', {
// Use as short a duration as possible to keep the test from
// taking too much time.
processorOptions: {testDuration: .5},
}); });
// Don't mix the inputs to the destination! // Expected number of output channels from the merger node. We should
context.destination.channelInterpretation = 'discrete'; // start with the number of inputs, because the source (oscillator) is
// actively processing. When the source stops, the number of channels
// should change to 1.
const expectedValues = [numberOfInputs, 1];
let index = 0;
await context.audioWorklet.addModule(filePath); testerNode.port.onmessage = event => {
let count = event.data.channelCount;
let finished = event.data.finished;
let src = new ConstantSourceNode(context); // If we're finished, end testing.
let merger = new ChannelMergerNode( if (finished) {
context, {numberOfInputs: numberOfInputs}); // Verify that we got the expected number of changes.
let counter = new AudioWorkletNode(context, 'counter'); should(index, 'Number of distinct values')
.beEqualTo(expectedValues.length);
// Just to print a message that we created the graph with a
// convolver in it.
should(
() => {
merger.connect(counter).connect(context.destination);
},
`Construction of graph with ChannelMergerNode with ${
merger.numberOfInputs} inputs`)
.notThrow()
// Connect the source now and start it and let it run for
// |sourceDurationFrames| frames.
context.suspend(connectFrame / context.sampleRate)
.then(() => {
src.connect(merger, 0, 0);
src.start();
src.stop(
context.currentTime +
sourceDurationFrames / context.sampleRate);
})
.then(() => context.resume());
const renderedBuffer = await context.startRendering();
// The expected output is something like:
//
// 1, 1, 1,..., 7, 7, 7.,,,, 1, 1, 1
//
// When the merger has no inputs, it's not actively processing
// so it must output mono silence. After connecting a source,
// the number of channels of the output should be the same as
// the number of inputs to the merger. Finally, when the
// source stops, the merger is not actively processing anymore
// and should output mono silence again. For this test, we
// don't care too much how many different values there are.
// There just has to be at least one of each value, in the
// order given.
const output = renderedBuffer.getChannelData(0);
should(output, 'Number of output channels').containValues([
1, numberOfInputs, 1
]);
task.done(); task.done();
}); return;
}
if (index < expectedValues.length) {
// Verify that the number of channels matches the expected number of
// channels.
should(count, `Test ${index}: Number of convolver output channels`)
.beEqualTo(expectedValues[index]);
}
++index;
};
// Create the graph and go
src.connect(merger).connect(testerNode).connect(context.destination);
src.start();
// Stop the source after a short time so we can test that the channel
// merger changes to not actively processing and thus produces a single
// channel of silence.
src.stop(context.currentTime + .1);
});
audit.run(); audit.run();
</script> </script>

View file

@ -40,4 +40,6 @@ def test_file_protocol(session, server_config):
response = navigate_to(session, url) response = navigate_to(session, url)
assert_success(response) assert_success(response)
if session.url.endswith('/'):
url += '/'
assert session.url == url assert session.url == url

View file

@ -29,22 +29,38 @@ const VALID_PROJECTION_MATRIX =
[1, 0, 0, 0, 0, 1, 0, 0, 3, 2, -1, -1, 0, 0, -0.2, 0]; [1, 0, 0, 0, 0, 1, 0, 0, 3, 2, -1, -1, 0, 0, -0.2, 0];
// A valid input grip matrix for when we don't care about specific values // A valid input grip matrix for when we don't care about specific values
const VALID_GRIP = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 3, 2, 1]; const VALID_GRIP = [1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
4, 3, 2, 1];
const VALID_GRIP_TRANSFORM = {
position: [4, 3, 2],
orientation: [0, 0, 0, 1]
};
// A valid input pointer offset for when we don't care about specific values // A valid input pointer offset for when we don't care about specific values
const VALID_POINTER_OFFSET = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1]; const VALID_POINTER_OFFSET = [1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 1, 1];
const VALID_POINTER_TRANSFORM = {
position: [0, 0, 1],
orientation: [0, 0, 0, 1]
};
const VALID_GRIP_WITH_POINTER_OFFSET = const VALID_GRIP_WITH_POINTER_OFFSET =
[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 3, 3, 1]; [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 4, 3, 3, 1];
// A Valid Local to floor matrix/transform for when we don't care about specific // A Valid Local to floor matrix/transform for when we don't care about specific
// values. Note that these should be identical, just different representations. // values. Note that these should be identical, just different representations.
const VALID_LOCAL_TO_FLOOR_MATRIX = [1, 0, 0, 0, const VALID_FLOOR_ORIGIN_MATRIX = [1, 0, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0,
0, 0, 1, 0, 0, 0, 1, 0,
1, 1.65, -1, 1]; 1, 1.65, -1, 1];
const VALID_LOCAL_TO_FLOOR_TRANSFORM = { const VALID_FLOOR_ORIGIN = {
position: [1.0, 1.65, -1.0], position: [1.0, 1.65, -1.0],
orientation: [0, 0, 0, 1] orientation: [0, 0, 0, 1]
}; };
@ -105,3 +121,17 @@ const VALID_NON_IMMERSIVE_DEVICE = {
views: NON_IMMERSIVE_VIEWS, views: NON_IMMERSIVE_VIEWS,
viewerOrigin: IDENTITY_TRANSFORM viewerOrigin: IDENTITY_TRANSFORM
}; };
const VALID_CONTROLLER = {
handedness: "none",
targetRayMode: "tracked-pointer",
pointerOrigin: VALID_POINTER_TRANSFORM,
profiles: []
};
const RIGHT_CONTROLLER = {
handedness: "right",
targetRayMode: "tracked-pointer",
pointerOrigin: VALID_POINTER_TRANSFORM,
profiles: []
}

View file

@ -14,7 +14,7 @@ let fakeDeviceInitParams = {
supportsImmersive: true, supportsImmersive: true,
views: VALID_VIEWS, views: VALID_VIEWS,
viewerOrigin: IDENTITY_TRANSFORM, viewerOrigin: IDENTITY_TRANSFORM,
localToFloorLevelTransform: VALID_LOCAL_TO_FLOOR_TRANSFORM floorOrigin: VALID_FLOOR_ORIGIN
}; };
let testFunction = function(session, fakeDeviceController, t) { let testFunction = function(session, fakeDeviceController, t) {

View file

@ -32,7 +32,7 @@ let testFunction = function(session, fakeDeviceController, t) {
assert_greater_than(poseMatrix[13], 1.0); assert_greater_than(poseMatrix[13], 1.0);
assert_approx_equals(poseMatrix[14], 0.0, FLOAT_EPSILON); assert_approx_equals(poseMatrix[14], 0.0, FLOAT_EPSILON);
fakeDeviceController.setLocalToFloorLevelTransform(VALID_LOCAL_TO_FLOOR_TRANSFORM); fakeDeviceController.setFloorOrigin(VALID_FLOOR_ORIGIN);
// Need to request one animation frame for the new stage transform to // Need to request one animation frame for the new stage transform to
// propagate before we check that it's what we expect. // propagate before we check that it's what we expect.
@ -49,7 +49,7 @@ let testFunction = function(session, fakeDeviceController, t) {
assert_not_equals(pose, null); assert_not_equals(pose, null);
let poseMatrix = pose.transform.matrix; let poseMatrix = pose.transform.matrix;
assert_matrix_approx_equals(poseMatrix, VALID_LOCAL_TO_FLOOR_MATRIX, FLOAT_EPSILON); assert_matrix_approx_equals(poseMatrix, VALID_FLOOR_ORIGIN_MATRIX, FLOAT_EPSILON);
}); });
// Finished. // Finished.