Update web-platform-tests to revision 719721f655102bcd24d45eba91339eb2d7dbc591
|
@ -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": [
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[hyphens-overflow-001.html]
|
||||||
|
expected: FAIL
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[matchMedia-display-none-iframe.html]
|
|
||||||
expected: ERROR
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_5.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[promise-rejection-events-onerror.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[Throwing inside an unhandledrejection handler invokes the error handler.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -2,3 +2,6 @@
|
||||||
[test_invalid_always_match[None\]]
|
[test_invalid_always_match[None\]]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[test_invalid_capabilites[value3\]]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[WorkerGlobalScope-close.html]
|
||||||
|
[Test sending a message after closing.]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Worker-constructor.html]
|
||||||
|
expected: ERROR
|
|
@ -1,2 +0,0 @@
|
||||||
[hide_and_show.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[transition_calc_implicit.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,2 +0,0 @@
|
||||||
[resize_after_load.html]
|
|
||||||
expected: FAIL
|
|
|
@ -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)");
|
||||||
|
|
|
@ -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)");
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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­xx</div>
|
||||||
|
<div>12 45­xx</div>
|
||||||
|
<div>12 456­xx</div>
|
||||||
|
<div>1234­xx</div>
|
||||||
|
<div>12345­xx</div>
|
||||||
|
<div>123456­xx</div>
|
||||||
|
</body>
|
|
@ -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>
|
|
@ -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" },
|
||||||
|
|
|
@ -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 |
|
@ -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 |
|
@ -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>
|
|
@ -0,0 +1,3 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<body onload="history.back()">
|
||||||
|
</body>
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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))
|
||||||
|
|
|
@ -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());
|
||||||
|
|
||||||
|
|
|
@ -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);
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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: []
|
||||||
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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.
|
||||||
|
|