mirror of
https://github.com/servo/servo.git
synced 2025-07-12 18:03:49 +01:00
Auto merge of #22711 - servo-wpt-sync:wpt_update_16-01-2019, r=jdm
Sync WPT with upstream (16-01-2019) Automated downstream sync of changes from upstream as of 16-01-2019. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22711) <!-- Reviewable:end -->
This commit is contained in:
commit
c558db9737
71 changed files with 893 additions and 241 deletions
|
@ -1,5 +1,4 @@
|
||||||
[url-in-tags-revoke.window.html]
|
[url-in-tags-revoke.window.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -15,6 +14,3 @@
|
||||||
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
|
[Opening a blob URL in a new window by clicking an <a> tag works immediately before revoking the URL.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Fetching a blob URL immediately before revoking it works in <script> tags.]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
|
|
|
@ -12709,6 +12709,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event-manual.html": [
|
||||||
|
[
|
||||||
|
"/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event-manual.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-direction-down-manual.html": [
|
"html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-direction-down-manual.html": [
|
||||||
[
|
[
|
||||||
"/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-direction-down-manual.html",
|
"/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-direction-down-manual.html",
|
||||||
|
@ -113293,6 +113299,18 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-display/display-inline-dynamic-001.html": [
|
||||||
|
[
|
||||||
|
"/css/css-display/display-inline-dynamic-001.html",
|
||||||
|
[
|
||||||
|
[
|
||||||
|
"/css/css-display/display-inline-dynamic-001-ref.html",
|
||||||
|
"=="
|
||||||
|
]
|
||||||
|
],
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-display/run-in/counter-increment-applies-to-011.xht": [
|
"css/css-display/run-in/counter-increment-applies-to-011.xht": [
|
||||||
[
|
[
|
||||||
"/css/css-display/run-in/counter-increment-applies-to-011.xht",
|
"/css/css-display/run-in/counter-increment-applies-to-011.xht",
|
||||||
|
@ -204250,26 +204268,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"async-local-storage/META.yml": [
|
|
||||||
[
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/helpers/als-tests.js": [
|
|
||||||
[
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/helpers/class-assert.js": [
|
|
||||||
[
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/helpers/equality-asserters.js": [
|
|
||||||
[
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"audio-output/META.yml": [
|
"audio-output/META.yml": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -254910,6 +254908,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-display/display-inline-dynamic-001-ref.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-display/run-in/META.yml": [
|
"css/css-display/run-in/META.yml": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -301315,6 +301318,26 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"kv-storage/META.yml": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/helpers/class-assert.js": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/helpers/equality-asserters.js": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/helpers/kvs-tests.js": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"lifecycle/META.yml": [
|
"lifecycle/META.yml": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -307220,6 +307243,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"resource-timing/resources/blank_page_green.htm.headers": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"resource-timing/resources/blue.png": [
|
"resource-timing/resources/blue.png": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -311925,6 +311953,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/resources/xhr-iframe.html": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"service-workers/service-worker/resources/xsl-base-url-iframe.xml": [
|
"service-workers/service-worker/resources/xsl-base-url-iframe.xml": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -319375,6 +319408,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"tools/wptrunner/requirements_epiphany.txt": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"tools/wptrunner/requirements_firefox.txt": [
|
"tools/wptrunner/requirements_firefox.txt": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -319595,6 +319633,11 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"tools/wptrunner/wptrunner/browsers/epiphany.py": [
|
||||||
|
[
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/fennec.py": [
|
"tools/wptrunner/wptrunner/browsers/fennec.py": [
|
||||||
[
|
[
|
||||||
{}
|
{}
|
||||||
|
@ -334942,48 +334985,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"async-local-storage/api-surface.tentative.https.html": [
|
|
||||||
[
|
|
||||||
"/async-local-storage/api-surface.tentative.https.html",
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/key-types.tentative.https.html": [
|
|
||||||
[
|
|
||||||
"/async-local-storage/key-types.tentative.https.html",
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/non-secure-context-dynamic-import.tentative.html": [
|
|
||||||
[
|
|
||||||
"/async-local-storage/non-secure-context-dynamic-import.tentative.html",
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/non-secure-context-import-statement.tentative.html": [
|
|
||||||
[
|
|
||||||
"/async-local-storage/non-secure-context-import-statement.tentative.html",
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/non-secure-context-script-element.tentative.html": [
|
|
||||||
[
|
|
||||||
"/async-local-storage/non-secure-context-script-element.tentative.html",
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/storage-smoke-test.tentative.https.html": [
|
|
||||||
[
|
|
||||||
"/async-local-storage/storage-smoke-test.tentative.https.html",
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"async-local-storage/undefined-value.https.html": [
|
|
||||||
[
|
|
||||||
"/async-local-storage/undefined-value.https.html",
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"audio-output/idlharness.https.window.js": [
|
"audio-output/idlharness.https.window.js": [
|
||||||
[
|
[
|
||||||
"/audio-output/idlharness.https.window.html",
|
"/audio-output/idlharness.https.window.html",
|
||||||
|
@ -345956,6 +345957,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"css/css-shadow-parts/interaction-with-tree-abiding.html": [
|
||||||
|
[
|
||||||
|
"/css/css-shadow-parts/interaction-with-tree-abiding.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"css/css-shadow-parts/invalidation-change-exportparts-forward.html": [
|
"css/css-shadow-parts/invalidation-change-exportparts-forward.html": [
|
||||||
[
|
[
|
||||||
"/css/css-shadow-parts/invalidation-change-exportparts-forward.html",
|
"/css/css-shadow-parts/invalidation-change-exportparts-forward.html",
|
||||||
|
@ -382482,6 +382489,48 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"kv-storage/api-surface.https.html": [
|
||||||
|
[
|
||||||
|
"/kv-storage/api-surface.https.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/key-types.https.html": [
|
||||||
|
[
|
||||||
|
"/kv-storage/key-types.https.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/non-secure-context-dynamic-import.html": [
|
||||||
|
[
|
||||||
|
"/kv-storage/non-secure-context-dynamic-import.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/non-secure-context-import-statement.html": [
|
||||||
|
[
|
||||||
|
"/kv-storage/non-secure-context-import-statement.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/non-secure-context-script-element.html": [
|
||||||
|
[
|
||||||
|
"/kv-storage/non-secure-context-script-element.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/storage-smoke-test.https.html": [
|
||||||
|
[
|
||||||
|
"/kv-storage/storage-smoke-test.https.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"kv-storage/undefined-value.https.html": [
|
||||||
|
[
|
||||||
|
"/kv-storage/undefined-value.https.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"lifecycle/freeze.html": [
|
"lifecycle/freeze.html": [
|
||||||
[
|
[
|
||||||
"/lifecycle/freeze.html",
|
"/lifecycle/freeze.html",
|
||||||
|
@ -407676,6 +407725,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"resource-timing/redirects.sub.html": [
|
||||||
|
[
|
||||||
|
"/resource-timing/redirects.sub.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"resource-timing/resource-timing-level1.sub.html": [
|
"resource-timing/resource-timing-level1.sub.html": [
|
||||||
[
|
[
|
||||||
"/resource-timing/resource-timing-level1.sub.html",
|
"/resource-timing/resource-timing-level1.sub.html",
|
||||||
|
@ -407810,12 +407865,6 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"resource-timing/resource_redirects.html": [
|
|
||||||
[
|
|
||||||
"/resource-timing/resource_redirects.html",
|
|
||||||
{}
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"resource-timing/resource_reparenting.html": [
|
"resource-timing/resource_reparenting.html": [
|
||||||
[
|
[
|
||||||
"/resource-timing/resource_reparenting.html",
|
"/resource-timing/resource_reparenting.html",
|
||||||
|
@ -409886,6 +409935,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/xhr-response-url.https.html": [
|
||||||
|
[
|
||||||
|
"/service-workers/service-worker/xhr-response-url.https.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"service-workers/service-worker/xsl-base-url.https.html": [
|
"service-workers/service-worker/xsl-base-url.https.html": [
|
||||||
[
|
[
|
||||||
"/service-workers/service-worker/xsl-base-url.https.html",
|
"/service-workers/service-worker/xsl-base-url.https.html",
|
||||||
|
@ -410660,6 +410715,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"storage/estimate-usage-details-service-workers.https.tentative.window.js": [
|
||||||
|
[
|
||||||
|
"/storage/estimate-usage-details-service-workers.https.tentative.window.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"storage/idlharness.https.any.js": [
|
"storage/idlharness.https.any.js": [
|
||||||
[
|
[
|
||||||
"/storage/idlharness.https.any.html",
|
"/storage/idlharness.https.any.html",
|
||||||
|
@ -416264,6 +416325,12 @@
|
||||||
{}
|
{}
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
|
"webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html": [
|
||||||
|
[
|
||||||
|
"/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html",
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
],
|
||||||
"webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html": [
|
"webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html": [
|
||||||
[
|
[
|
||||||
"/webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html",
|
"/webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html",
|
||||||
|
@ -455531,50 +455598,6 @@
|
||||||
"55e8b9871e794c944f329e0e9df6ec140124c660",
|
"55e8b9871e794c944f329e0e9df6ec140124c660",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"async-local-storage/META.yml": [
|
|
||||||
"1bbe9e5ac609aa33914ad79d4af7cb2fdf45b9c7",
|
|
||||||
"support"
|
|
||||||
],
|
|
||||||
"async-local-storage/api-surface.tentative.https.html": [
|
|
||||||
"927871a8961c44bd8adfee1b82aadc9f514962a7",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"async-local-storage/helpers/als-tests.js": [
|
|
||||||
"28087abf811dacda1ca00d81fe1306f97dde88ef",
|
|
||||||
"support"
|
|
||||||
],
|
|
||||||
"async-local-storage/helpers/class-assert.js": [
|
|
||||||
"31b25cab9f2d88d8df59a0b4ecb35eef3765e380",
|
|
||||||
"support"
|
|
||||||
],
|
|
||||||
"async-local-storage/helpers/equality-asserters.js": [
|
|
||||||
"ad4623c179d75c8d4ce8b1fa8503f943bf6a7c77",
|
|
||||||
"support"
|
|
||||||
],
|
|
||||||
"async-local-storage/key-types.tentative.https.html": [
|
|
||||||
"c3985b7711f77818260f08635d35ce3da553178b",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"async-local-storage/non-secure-context-dynamic-import.tentative.html": [
|
|
||||||
"9270f6c82fa2018d1d6c3a199cbe5f6ca2403b56",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"async-local-storage/non-secure-context-import-statement.tentative.html": [
|
|
||||||
"879729696dbb6a767530d77fbd94af0b42afe6b4",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"async-local-storage/non-secure-context-script-element.tentative.html": [
|
|
||||||
"feeddafc8daa02556eb0c5fe068dbde1d45642da",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"async-local-storage/storage-smoke-test.tentative.https.html": [
|
|
||||||
"f978480ff2b80ba5f892c2a2c429e882d655574d",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"async-local-storage/undefined-value.https.html": [
|
|
||||||
"c76c32f950704e42c06d498c4c8614dfbabb2aae",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"audio-output/META.yml": [
|
"audio-output/META.yml": [
|
||||||
"b6a7d4d06259117af8fb843f6a8d252bac01a8f3",
|
"b6a7d4d06259117af8fb843f6a8d252bac01a8f3",
|
||||||
"support"
|
"support"
|
||||||
|
@ -540940,7 +540963,7 @@
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"css/css-backgrounds/background-image-first-line.html": [
|
"css/css-backgrounds/background-image-first-line.html": [
|
||||||
"c8dee7050b6241279d5f462263b9fdead50004fc",
|
"206ff68d17360ee30768651eaab874f0a6c2996e",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
"css/css-backgrounds/background-image-none-gradient-repaint.html": [
|
"css/css-backgrounds/background-image-none-gradient-repaint.html": [
|
||||||
|
@ -547323,6 +547346,14 @@
|
||||||
"3d1dcb020df129dd10d66bb4b04d62c3c280cfb6",
|
"3d1dcb020df129dd10d66bb4b04d62c3c280cfb6",
|
||||||
"reftest"
|
"reftest"
|
||||||
],
|
],
|
||||||
|
"css/css-display/display-inline-dynamic-001-ref.html": [
|
||||||
|
"8b5f5015f9ebc818cbf48666773440a359e1d740",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"css/css-display/display-inline-dynamic-001.html": [
|
||||||
|
"7df697f940d4a20d26c92fa40266ed1f67d4cd19",
|
||||||
|
"reftest"
|
||||||
|
],
|
||||||
"css/css-display/display-list-item-height-after-dom-change.html": [
|
"css/css-display/display-list-item-height-after-dom-change.html": [
|
||||||
"f8d6e85cee2325f3ae51a950a276430d26c04189",
|
"f8d6e85cee2325f3ae51a950a276430d26c04189",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -569935,6 +569966,10 @@
|
||||||
"2dfd4b0510a758c73bf8ac8291088d39077578d7",
|
"2dfd4b0510a758c73bf8ac8291088d39077578d7",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"css/css-shadow-parts/interaction-with-tree-abiding.html": [
|
||||||
|
"c11da7d12dea91306b79d141613ad6563dffb18f",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"css/css-shadow-parts/invalidation-change-exportparts-forward.html": [
|
"css/css-shadow-parts/invalidation-change-exportparts-forward.html": [
|
||||||
"1e319deb633cdb765ea4613eb7c2b8c6dd0e615a",
|
"1e319deb633cdb765ea4613eb7c2b8c6dd0e615a",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -625171,6 +625206,10 @@
|
||||||
"c8bdaafdb89555c6708f0d84c3d41e437840be5b",
|
"c8bdaafdb89555c6708f0d84c3d41e437840be5b",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event-manual.html": [
|
||||||
|
"73a3ff667ea8a450cf737890f44d2bfdbb848e98",
|
||||||
|
"manual"
|
||||||
|
],
|
||||||
"html/editing/the-hidden-attribute/hidden-1-ref.html": [
|
"html/editing/the-hidden-attribute/hidden-1-ref.html": [
|
||||||
"7346ce919d210a740104ca5e82264bed8377c2d0",
|
"7346ce919d210a740104ca5e82264bed8377c2d0",
|
||||||
"support"
|
"support"
|
||||||
|
@ -637679,6 +637718,50 @@
|
||||||
"5a4beba7e45830e72c28d460495e977a64a8bc7a",
|
"5a4beba7e45830e72c28d460495e977a64a8bc7a",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"kv-storage/META.yml": [
|
||||||
|
"bf4a1e6e8b44bc78cf7a624a12b254cbac2f25a5",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"kv-storage/api-surface.https.html": [
|
||||||
|
"65452f55be044aa5ec722da26717f527ee81a4e3",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
|
"kv-storage/helpers/class-assert.js": [
|
||||||
|
"31b25cab9f2d88d8df59a0b4ecb35eef3765e380",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"kv-storage/helpers/equality-asserters.js": [
|
||||||
|
"ad4623c179d75c8d4ce8b1fa8503f943bf6a7c77",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"kv-storage/helpers/kvs-tests.js": [
|
||||||
|
"0ffe71fad780f599a11d915d3b3512c95844f7bd",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
|
"kv-storage/key-types.https.html": [
|
||||||
|
"0dc930258f8b554c6cae4398df3dba930dcdf03c",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
|
"kv-storage/non-secure-context-dynamic-import.html": [
|
||||||
|
"6ccbf84ba1dc6acd4931da279c887635b7f8a771",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
|
"kv-storage/non-secure-context-import-statement.html": [
|
||||||
|
"fda02aadf14fcb9be859c091df3a2ac1d2c56994",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
|
"kv-storage/non-secure-context-script-element.html": [
|
||||||
|
"66802b1254eda87e1a966d6f835676ecba942cbe",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
|
"kv-storage/storage-smoke-test.https.html": [
|
||||||
|
"df6fd8c8181f579df03972d25fe9a91b2354380f",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
|
"kv-storage/undefined-value.https.html": [
|
||||||
|
"89da5d5c44f353bc1f5f93eaeaf3acd89eee386c",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"lifecycle/META.yml": [
|
"lifecycle/META.yml": [
|
||||||
"c1fcbca4c1f8366da1dd9eb91bc9427edeef1153",
|
"c1fcbca4c1f8366da1dd9eb91bc9427edeef1153",
|
||||||
"support"
|
"support"
|
||||||
|
@ -637852,7 +637935,7 @@
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"mathml/META.yml": [
|
"mathml/META.yml": [
|
||||||
"6b347c12d8978156737257ff90b89cc27ab69847",
|
"a410f582f0a9b006946e8d9c46e1e0a2b5acea43",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"mathml/README.md": [
|
"mathml/README.md": [
|
||||||
|
@ -650236,7 +650319,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"portals/portal-activate-event.html": [
|
"portals/portal-activate-event.html": [
|
||||||
"ed5602667bb9c898291d81ab2171b99137827a87",
|
"ac1505d2a5b2fe1df083eae75893483e025a2ad7",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"portals/portals-host-null.html": [
|
"portals/portals-host-null.html": [
|
||||||
|
@ -650256,11 +650339,11 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"portals/resources/portal-activate-event-portal.html": [
|
"portals/resources/portal-activate-event-portal.html": [
|
||||||
"d0eebcd12e65193024f6444af922b7503e76d8ec",
|
"b2759c3701aaba4f5887a8b90bf4ee30e8153661",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"portals/resources/portal-activate-event-window.html": [
|
"portals/resources/portal-activate-event-window.html": [
|
||||||
"1994dc3fad11e8b3ad9e8dc71f4aa96f06baa389",
|
"cf09caebc0ff9ac38facde84075a7af5be19fd48",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"portals/resources/portals-rendering-portal.html": [
|
"portals/resources/portals-rendering-portal.html": [
|
||||||
|
@ -659987,6 +660070,10 @@
|
||||||
"63f9e06e19083a6d956af0d5916455cd7e91b89c",
|
"63f9e06e19083a6d956af0d5916455cd7e91b89c",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"resource-timing/redirects.sub.html": [
|
||||||
|
"0e3f405e14b7af9f0b2a4fe5ce916ed1e47534de",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"resource-timing/resource-timing-level1.js": [
|
"resource-timing/resource-timing-level1.js": [
|
||||||
"95b5cdfb1ed0ca2bbfd6b692ad565512218dd7a4",
|
"95b5cdfb1ed0ca2bbfd6b692ad565512218dd7a4",
|
||||||
"support"
|
"support"
|
||||||
|
@ -660079,10 +660166,6 @@
|
||||||
"89b5874978c97cd25e31da263d07c9f91c69bbfa",
|
"89b5874978c97cd25e31da263d07c9f91c69bbfa",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
"resource-timing/resource_redirects.html": [
|
|
||||||
"606662afda4401dd0dccbac2b71b66f3b1961e6f",
|
|
||||||
"testharness"
|
|
||||||
],
|
|
||||||
"resource-timing/resource_reparenting.html": [
|
"resource-timing/resource_reparenting.html": [
|
||||||
"7d4947fa7703d13a5adb465ff5eebbb4456cace9",
|
"7d4947fa7703d13a5adb465ff5eebbb4456cace9",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -660135,6 +660218,10 @@
|
||||||
"b8a1947b77e25ac6b0d100c75932e8c0a67d846f",
|
"b8a1947b77e25ac6b0d100c75932e8c0a67d846f",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"resource-timing/resources/blank_page_green.htm.headers": [
|
||||||
|
"cb762eff806849df46dc758ef7b98b63f27f54c9",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"resource-timing/resources/blue.png": [
|
"resource-timing/resources/blue.png": [
|
||||||
"820f8cace2143bfc45c0c301e84b6c29b8630068",
|
"820f8cace2143bfc45c0c301e84b6c29b8630068",
|
||||||
"support"
|
"support"
|
||||||
|
@ -664987,6 +665074,10 @@
|
||||||
"e388e461448f64d37d747b26830f4e869a2c6528",
|
"e388e461448f64d37d747b26830f4e869a2c6528",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/resources/xhr-iframe.html": [
|
||||||
|
"bfdfac69712b3e10526e1f059d2638b1fab06eeb",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"service-workers/service-worker/resources/xsl-base-url-iframe.xml": [
|
"service-workers/service-worker/resources/xsl-base-url-iframe.xml": [
|
||||||
"065a07acb284821dde1cbea8680781a524f21bc2",
|
"065a07acb284821dde1cbea8680781a524f21bc2",
|
||||||
"support"
|
"support"
|
||||||
|
@ -665171,6 +665262,10 @@
|
||||||
"f9ba656b5178359f2c7b6e2419a57ff12ec79d23",
|
"f9ba656b5178359f2c7b6e2419a57ff12ec79d23",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"service-workers/service-worker/xhr-response-url.https.html": [
|
||||||
|
"9f00cdd183052568ed7c6933f28f7859739e926c",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"service-workers/service-worker/xsl-base-url.https.html": [
|
"service-workers/service-worker/xsl-base-url.https.html": [
|
||||||
"1d3c36408a66a7785b884c9cdc39dcd2820f9af0",
|
"1d3c36408a66a7785b884c9cdc39dcd2820f9af0",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
@ -666119,6 +666214,10 @@
|
||||||
"c854d5b8848638d11563a48348e7c3393ff58459",
|
"c854d5b8848638d11563a48348e7c3393ff58459",
|
||||||
"testharness"
|
"testharness"
|
||||||
],
|
],
|
||||||
|
"storage/estimate-usage-details-service-workers.https.tentative.window.js": [
|
||||||
|
"cf3a2aa9430d480df4fc7ff2487e7a42d5c15699",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"storage/helpers.js": [
|
"storage/helpers.js": [
|
||||||
"fbc746a30b6dfa6d00fc2db747c78ec09a7beefc",
|
"fbc746a30b6dfa6d00fc2db747c78ec09a7beefc",
|
||||||
"support"
|
"support"
|
||||||
|
@ -670864,7 +670963,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/manifest/tests/test_manifest.py": [
|
"tools/manifest/tests/test_manifest.py": [
|
||||||
"010a0c0a00a176bdabb561cc2a141aa0d1bbf139",
|
"8f649f1d098927b62bbf4c12ecade944ac081eee",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/manifest/tests/test_sourcefile.py": [
|
"tools/manifest/tests/test_sourcefile.py": [
|
||||||
|
@ -675268,7 +675367,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/tox.ini": [
|
"tools/tox.ini": [
|
||||||
"fc66c6c2ac39ce66b915af90a610d420e1278d7a",
|
"3b0c6d172bc02e8df5fed5a08cd354416eff50dd",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/webdriver/.gitignore": [
|
"tools/webdriver/.gitignore": [
|
||||||
|
@ -675308,7 +675407,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wpt/browser.py": [
|
"tools/wpt/browser.py": [
|
||||||
"71d1e61918a86e8d8f0a9faca96c6f1ceade6d31",
|
"ea8cc04f7d49eb2dd4691c0d7ce012ffb1ade5be",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wpt/commands.json": [
|
"tools/wpt/commands.json": [
|
||||||
|
@ -675336,7 +675435,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wpt/run.py": [
|
"tools/wpt/run.py": [
|
||||||
"44cf3137d41338a7e57e29ae998859b4bc42a82b",
|
"633d6b254db289f50b77e4c7f589b888caa2b566",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wpt/testfiles.py": [
|
"tools/wpt/testfiles.py": [
|
||||||
|
@ -675443,6 +675542,10 @@
|
||||||
"497cad357398149ade1851079ac5380520932f88",
|
"497cad357398149ade1851079ac5380520932f88",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"tools/wptrunner/requirements_epiphany.txt": [
|
||||||
|
"9115b7ac4e8f6a6e4703a7b61d2715075e2f6053",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"tools/wptrunner/requirements_firefox.txt": [
|
"tools/wptrunner/requirements_firefox.txt": [
|
||||||
"9e6f6b51ad7bf39181811789f0372a6b085d4c7f",
|
"9e6f6b51ad7bf39181811789f0372a6b085d4c7f",
|
||||||
"support"
|
"support"
|
||||||
|
@ -675596,7 +675699,7 @@
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/__init__.py": [
|
"tools/wptrunner/wptrunner/browsers/__init__.py": [
|
||||||
"f86792d47410f8f574843c13ed86262bdbfafb21",
|
"fdedda44d28dcdd079b059864d9fafc992eff8c0",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/base.py": [
|
"tools/wptrunner/wptrunner/browsers/base.py": [
|
||||||
|
@ -675619,6 +675722,10 @@
|
||||||
"c2545de46f0b5def00c273ecfb5a57f0d4029531",
|
"c2545de46f0b5def00c273ecfb5a57f0d4029531",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"tools/wptrunner/wptrunner/browsers/epiphany.py": [
|
||||||
|
"599ec9f3110f89f5d64effe98130ede930f1fb7c",
|
||||||
|
"support"
|
||||||
|
],
|
||||||
"tools/wptrunner/wptrunner/browsers/fennec.py": [
|
"tools/wptrunner/wptrunner/browsers/fennec.py": [
|
||||||
"b8e4ebc4aeb9574652ec7dcd83dd0eca6b78aa94",
|
"b8e4ebc4aeb9574652ec7dcd83dd0eca6b78aa94",
|
||||||
"support"
|
"support"
|
||||||
|
@ -679887,6 +679994,10 @@
|
||||||
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
|
||||||
"support"
|
"support"
|
||||||
],
|
],
|
||||||
|
"webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html": [
|
||||||
|
"b5555b0137af4c1c8f6c5578de4bc9c5eedfe405",
|
||||||
|
"testharness"
|
||||||
|
],
|
||||||
"webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html": [
|
"webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html": [
|
||||||
"517d64f3dbb69e610a5ed17475c45f530f749a42",
|
"517d64f3dbb69e610a5ed17475c45f530f749a42",
|
||||||
"testharness"
|
"testharness"
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[floats-in-table-caption-001.html]
|
||||||
|
expected: FAIL
|
|
@ -1,2 +1,2 @@
|
||||||
[abspos-float-with-inline-container.html]
|
[abspos-float-with-inline-container.html]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[white-space-002.xht]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[line-height-204.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[mix-blend-mode-paragraph.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,2 +0,0 @@
|
||||||
[background-repeat-round-roundup.xht]
|
|
||||||
expected: FAIL
|
|
|
@ -329,3 +329,9 @@
|
||||||
[Matching font-weight: '430' should prefer '500' over '400 425']
|
[Matching font-weight: '430' should prefer '500' over '400 425']
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Matching font-style: 'oblique 20deg' should prefer 'oblique 10deg' over 'italic']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Matching font-style: 'oblique 21deg' should prefer 'oblique 40deg 50deg' over 'oblique 20deg']
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -38,3 +38,6 @@
|
||||||
[Test @font-face matching for weight 420]
|
[Test @font-face matching for weight 420]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Test @font-face matching for weight 500]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[line-break-normal-018.xht]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[line-break-strict-018.xht]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[text-transform-full-size-kana-001.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[text-transform-full-size-kana-002.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[text-transform-full-size-kana-003.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[text-transform-full-size-kana-004.html]
|
||||||
|
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
||||||
|
[trailing-ideographic-space-004.html]
|
||||||
|
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
||||||
[word-break-keep-all-006.html]
|
|
||||||
expected: FAIL
|
|
|
@ -74,6 +74,3 @@
|
||||||
[opacity end]
|
[opacity end]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[border-top-width end]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
[parser-sets-attributes-and-children.html]
|
[parser-sets-attributes-and-children.html]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
type: testharness
|
type: testharness
|
||||||
|
|
||||||
[single-byte-decoder.html?document]
|
[single-byte-decoder.html?document]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
|
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
|
|
||||||
[single-byte-decoder.html?XMLHttpRequest]
|
[single-byte-decoder.html?XMLHttpRequest]
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
|
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -55,12 +55,9 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
|
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
|
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1258: cp1258 (XMLHttpRequest)]
|
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1256: cp1256 (XMLHttpRequest)]
|
[windows-1256: cp1256 (XMLHttpRequest)]
|
||||||
|
@ -96,9 +93,6 @@
|
||||||
[windows-1255: x-cp1255 (XMLHttpRequest)]
|
[windows-1255: x-cp1255 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1257: x-cp1257 (XMLHttpRequest)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[windows-1253: windows-1253 (XMLHttpRequest)]
|
[windows-1253: windows-1253 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
@ -123,12 +117,6 @@
|
||||||
[windows-1255: windows-1255 (XMLHttpRequest)]
|
[windows-1255: windows-1255 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[x-mac-cyrillic: x-mac-cyrillic (XMLHttpRequest)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[windows-1256: windows-1256 (XMLHttpRequest)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[windows-1256: x-cp1256 (XMLHttpRequest)]
|
[windows-1256: x-cp1256 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
@ -141,21 +129,12 @@
|
||||||
[windows-1254: cp1254 (XMLHttpRequest)]
|
[windows-1254: cp1254 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1252: iso88591 (XMLHttpRequest)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[windows-1252: iso_8859-1 (XMLHttpRequest)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[windows-1252: latin1 (XMLHttpRequest)]
|
[windows-1252: latin1 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1253: cp1253 (XMLHttpRequest)]
|
[windows-1253: cp1253 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1252: iso8859-1 (XMLHttpRequest)]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[windows-1252: x-cp1252 (XMLHttpRequest)]
|
[windows-1252: x-cp1252 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
@ -165,10 +144,10 @@
|
||||||
[windows-1252: windows-1252 (XMLHttpRequest)]
|
[windows-1252: windows-1252 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1252: iso-ir-100 (XMLHttpRequest)]
|
[windows-1252: us-ascii (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[windows-1252: us-ascii (XMLHttpRequest)]
|
[windows-1252: iso-8859-1 (XMLHttpRequest)]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -312,3 +312,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;" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[traverse_the_history_5.html]
|
[traverse_the_history_4.html]
|
||||||
[Multiple history traversals, last would be aborted]
|
[Multiple history traversals, last would be aborted]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
|
[picture: source (max-width:500px) valid image, img valid image, resize to wide]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
|
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
[non-active-document.html]
|
|
||||||
[DOMParser]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[createHTMLDocument]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<template>]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
[toggleEvent.html]
|
||||||
|
[Calling open twice on 'details' fires only one toggle event]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[offscreencanvas.commit.w.html]
|
[offscreencanvas.commit.w.html]
|
||||||
|
expected: ERROR
|
||||||
[Test that calling OffscreenCanvas's commit pushes its contents to its placeholder.]
|
[Test that calling OffscreenCanvas's commit pushes its contents to its placeholder.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,3 @@
|
||||||
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
|
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Verifies the resolution of performance.now() is at least 5 microseconds.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[redirects.sub.html]
|
||||||
|
[Testing resource entries]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[resource_timing_buffer_full_eventually.html]
|
|
||||||
expected: CRASH
|
|
|
@ -1,4 +1,5 @@
|
||||||
[realtimeanalyser-fft-scaling.html]
|
[realtimeanalyser-fft-scaling.html]
|
||||||
|
expected: TIMEOUT
|
||||||
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
[X 2048-point FFT peak position is not equal to 64. Got 0.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[audioparam-close.html]
|
||||||
|
expected: ERROR
|
|
@ -1,4 +1,5 @@
|
||||||
[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
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[sharedworker-in-worker.html]
|
[sharedworker-in-worker.html]
|
||||||
|
expected: ERROR
|
||||||
[Base URL in workers: new SharedWorker()]
|
[Base URL in workers: new SharedWorker()]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[transition_calc_implicit.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,2 +0,0 @@
|
||||||
[scroll_root.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,3 +0,0 @@
|
||||||
spec: https://domenic.github.io/async-local-storage/
|
|
||||||
suggested_reviewers:
|
|
||||||
- domenic
|
|
|
@ -1,6 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>CSS Test: background-image applicability to ::first-letter</title>
|
<html class="reftest-wait">
|
||||||
<link rel="help" href="http://www.w3.org/TR/css3-background/">
|
<title>CSS Test: background-image applicability to ::first-line</title>
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/css3-background/#placement">
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-image">
|
||||||
|
<link rel="help" href="http://www.w3.org/TR/CSS21/colors.html#background-properties">
|
||||||
<link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo">
|
<link rel="help" href="http://www.w3.org/TR/CSS21/selector.html#first-line-pseudo">
|
||||||
<link rel="match" href="reference/background-image-first-line-ref.html">
|
<link rel="match" href="reference/background-image-first-line-ref.html">
|
||||||
<meta name="flags" content="ahem image">
|
<meta name="flags" content="ahem image">
|
||||||
|
@ -17,3 +20,11 @@
|
||||||
</style>
|
</style>
|
||||||
<p>Test passes if cat image is visible.</p>
|
<p>Test passes if cat image is visible.</p>
|
||||||
<div id="content">X</div>
|
<div id="content">X</div>
|
||||||
|
<script src="/common/reftest-wait.js"></script>
|
||||||
|
<script>
|
||||||
|
// Some browser may delay one frame to update the background-image in first-line.
|
||||||
|
onload = () => {
|
||||||
|
requestAnimationFrame(() => requestAnimationFrame(takeScreenshot));
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -0,0 +1,4 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<style>div::first-line { font-family:monospace; color:green; }</style>
|
||||||
|
<p>Test passes if PASS is displayed in green below.</p>
|
||||||
|
<div>PASS</div>
|
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-display/">
|
||||||
|
<link rel="match" href="display-inline-dynamic-001-ref.html">
|
||||||
|
<style>div::first-line { font-family:monospace; color:green; }</style>
|
||||||
|
<p>Test passes if PASS is displayed in green below.</p>
|
||||||
|
<div>P<span id="showme" style="display:none;">AS</span>S</div>
|
||||||
|
<script>
|
||||||
|
document.body.offsetTop;
|
||||||
|
showme.style.display = "inline";
|
||||||
|
</script>
|
|
@ -0,0 +1,56 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>CSS Shadow Parts - Interaction with tree-abiding</title>
|
||||||
|
<meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
|
||||||
|
<link href="http://www.google.com/" rel="author" title="Google">
|
||||||
|
<link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="support/shadow-helper.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<style>
|
||||||
|
#c-e::part(before-p)::before { color: green; }
|
||||||
|
#c-e::part(after-p)::after { color: green; }
|
||||||
|
#c-e::part(placeholder-p)::placeholder { color: green; }
|
||||||
|
</style>
|
||||||
|
<script>installCustomElement("custom-element", "custom-element-template");</script>
|
||||||
|
<template id="custom-element-template">
|
||||||
|
<style>
|
||||||
|
#before-i::before { content: "this text"; color: red; }
|
||||||
|
#after-i::after { content: "this text"; color: red; }
|
||||||
|
#placeholder-i::placeholder { color: red; }
|
||||||
|
</style>
|
||||||
|
<div>
|
||||||
|
The following text should be green:
|
||||||
|
<span id="before-i" part="before-p"></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
The following text should be green:
|
||||||
|
<span id="after-i" part="after-p"></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
The following text should be green:
|
||||||
|
<input id="placeholder-i" part="placeholder-p" placeholder="this text"></input>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<custom-element id="c-e"></custom-element>
|
||||||
|
<script>
|
||||||
|
"use strict";
|
||||||
|
const colorGreen = "rgb(0, 128, 0)";
|
||||||
|
test(function() {
|
||||||
|
const el = getElementByShadowIds(document, ["c-e", "before-i"]);
|
||||||
|
assert_equals(window.getComputedStyle(el, '::before').color, colorGreen);
|
||||||
|
}, "::before in selected host is styled");
|
||||||
|
test(function() {
|
||||||
|
const el = getElementByShadowIds(document, ["c-e", "after-i"]);
|
||||||
|
assert_equals(window.getComputedStyle(el, '::after').color, colorGreen);
|
||||||
|
}, "::after in selected host is styled");
|
||||||
|
test(function() {
|
||||||
|
const el = getElementByShadowIds(document, ["c-e", "placeholder-i"]);
|
||||||
|
assert_equals(window.getComputedStyle(el, '::placeholder').color, colorGreen);
|
||||||
|
}, "::placeholder in selected host is styled");
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>HTML Test: tabindex - focus, click</title>
|
||||||
|
<link rel="author" title="Intel" href="www.intel.com/">
|
||||||
|
<link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#the-tabindex-attribute">
|
||||||
|
<meta name="flags" content="interact">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<h2>Test steps</h2>
|
||||||
|
<p>Focus on the button below by "Tab" key, then press "Enter" key</p>
|
||||||
|
|
||||||
|
<p><button type="button">Test tabIndex</button></p>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
setup({explicit_done: true});
|
||||||
|
setup({explicit_timeout: true});
|
||||||
|
|
||||||
|
let button = document.querySelector("button");
|
||||||
|
let focused = false;
|
||||||
|
|
||||||
|
on_event(button, "focus", () => {
|
||||||
|
focused = !focused;
|
||||||
|
});
|
||||||
|
|
||||||
|
on_event(button, "click", () => {
|
||||||
|
test(() => {
|
||||||
|
assert_true(focused, "Focus on the button by Tab key");
|
||||||
|
}, "Check if click event will be fired when press the 'enter' key while the element is focused");
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
3
tests/wpt/web-platform-tests/kv-storage/META.yml
Normal file
3
tests/wpt/web-platform-tests/kv-storage/META.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
spec: https://wicg.github.io/kv-storage/
|
||||||
|
suggested_reviewers:
|
||||||
|
- domenic
|
|
@ -1,14 +1,14 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Async local storage API surface</title>
|
<title>KV Storage: API surface</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 type="module">
|
<script type="module">
|
||||||
import { storage, StorageArea } from "std:async-local-storage";
|
import { storage, StorageArea } from "std:kv-storage";
|
||||||
import * as classAssert from "./helpers/class-assert.js";
|
import * as classAssert from "./helpers/class-assert.js";
|
||||||
import { testWithArea } from "./helpers/als-tests.js";
|
import { testWithArea } from "./helpers/kvs-tests.js";
|
||||||
|
|
||||||
test(() => {
|
test(() => {
|
||||||
classAssert.isConstructor(StorageArea);
|
classAssert.isConstructor(StorageArea);
|
|
@ -1,4 +1,4 @@
|
||||||
import { StorageArea, storage as defaultArea } from "std:async-local-storage";
|
import { StorageArea, storage as defaultArea } from "std:kv-storage";
|
||||||
import { assertArrayCustomEquals } from "./equality-asserters.js";
|
import { assertArrayCustomEquals } from "./equality-asserters.js";
|
||||||
|
|
||||||
export function testWithArea(testFn, description) {
|
export function testWithArea(testFn, description) {
|
|
@ -1,12 +1,12 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Async local storage: tests against various key types</title>
|
<title>KV Storage: tests against various key types</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 type="module">
|
<script type="module">
|
||||||
import { testWithArea, testVariousMethods } from "./helpers/als-tests.js";
|
import { testWithArea, testVariousMethods } from "./helpers/kvs-tests.js";
|
||||||
import { assertEqualDates, assertEqualArrayBuffers, assertArrayBufferEqualsABView }
|
import { assertEqualDates, assertEqualArrayBuffers, assertArrayBufferEqualsABView }
|
||||||
from "./helpers/equality-asserters.js";
|
from "./helpers/equality-asserters.js";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Async local storage: should not work in non-secure contexts when included via import()</title>
|
<title>KV Storage: should not work in non-secure contexts when included via import()</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>
|
||||||
|
@ -13,6 +13,6 @@ test(() => {
|
||||||
}, "Prerequisite check");
|
}, "Prerequisite check");
|
||||||
|
|
||||||
promise_test(t => {
|
promise_test(t => {
|
||||||
return promise_rejects(t, "SecurityError", import("std:async-local-storage"));
|
return promise_rejects(t, "SecurityError", import("std:kv-storage"));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Async local storage: should not work in non-secure contexts when included via an import statement</title>
|
<title>KV Storage: should not work in non-secure contexts when included via an import statement</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>
|
||||||
|
@ -23,5 +23,5 @@ async_test(t => {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="module">
|
<script type="module">
|
||||||
import "std:async-local-storage";
|
import "std:kv-storage";
|
||||||
</script>
|
</script>
|
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Async local storage: should not work in non-secure contexts when included via a script element</title>
|
<title>KV Storage: should not work in non-secure contexts when included via a script element</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>
|
||||||
|
@ -22,4 +22,4 @@ async_test(t => {
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="module" src="std:async-local-storage"></script>
|
<script type="module" src="std:kv-storage"></script>
|
|
@ -1,13 +1,13 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Async local storage storage export smoke test</title>
|
<title>KV storage: storage export smoke test</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 type="module">
|
<script type="module">
|
||||||
import { testVariousMethodsWithDefaultArea } from "./helpers/als-tests.js";
|
import { testVariousMethodsWithDefaultArea } from "./helpers/kvs-tests.js";
|
||||||
import { storage } from "std:async-local-storage";
|
import { storage } from "std:kv-storage";
|
||||||
|
|
||||||
test(() => {
|
test(() => {
|
||||||
const { backingStore } = storage;
|
const { backingStore } = storage;
|
||||||
|
@ -17,7 +17,7 @@ test(() => {
|
||||||
assert_own_property(backingStore, "version");
|
assert_own_property(backingStore, "version");
|
||||||
assert_equals(Object.getPrototypeOf(backingStore), Object.prototype);
|
assert_equals(Object.getPrototypeOf(backingStore), Object.prototype);
|
||||||
|
|
||||||
assert_equals(backingStore.database, "async-local-storage:default");
|
assert_equals(backingStore.database, "kv-storage:default");
|
||||||
assert_equals(backingStore.store, "store");
|
assert_equals(backingStore.store, "store");
|
||||||
assert_equals(backingStore.version, 1);
|
assert_equals(backingStore.version, 1);
|
||||||
}, "backingStore returns the correct object");
|
}, "backingStore returns the correct object");
|
|
@ -1,14 +1,14 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Async local storage: undefined keys</title>
|
<title>KV Storage: undefined values</title>
|
||||||
<!-- https://github.com/domenic/async-local-storage/commit/5bf31109f37d1371f619ea33d0e2391f10e8b8f5 -->
|
<!-- https://github.com/wicg/kv-storage/commit/5bf31109f37d1371f619ea33d0e2391f10e8b8f5 -->
|
||||||
|
|
||||||
<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 type="module">
|
<script type="module">
|
||||||
import { StorageArea } from "std:async-local-storage";
|
import { StorageArea } from "std:kv-storage";
|
||||||
import { testWithArea } from "./helpers/als-tests.js";
|
import { testWithArea } from "./helpers/kvs-tests.js";
|
||||||
|
|
||||||
testWithArea(async (area) => {
|
testWithArea(async (area) => {
|
||||||
assert_equals(await area.get("key"), undefined);
|
assert_equals(await area.get("key"), undefined);
|
|
@ -1,3 +1,3 @@
|
||||||
spec: https://w3c.github.io/mathml/
|
spec: http://www.mathml-association.org/MathMLinHTML5/
|
||||||
suggested_reviewers:
|
suggested_reviewers:
|
||||||
- fred-wang
|
- fred-wang
|
||||||
|
|
|
@ -4,11 +4,29 @@
|
||||||
<script src="/resources/testharnessreport.js"></script>
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
<script>
|
<script>
|
||||||
async_test(function(t) {
|
async_test(function(t) {
|
||||||
var bc = new BroadcastChannel("test");
|
var bc = new BroadcastChannel("test-eventlistener");
|
||||||
bc.onmessage = t.step_func_done(function(e) {
|
bc.onmessage = t.step_func_done(function(e) {
|
||||||
assert_equals(e.data, "passed");
|
assert_equals(e.data, "passed");
|
||||||
bc.close();
|
bc.close();
|
||||||
});
|
});
|
||||||
window.open("resources/portal-activate-event-window.html");
|
window.open("resources/portal-activate-event-window.html?test=eventlistener");
|
||||||
}, "Tests that the PortalActivateEvent is dispatched when a portal is activated.");
|
}, "Tests that the PortalActivateEvent is dispatched when a portal is activated.");
|
||||||
|
|
||||||
|
async_test(function(t) {
|
||||||
|
var bc = new BroadcastChannel("test-eventhandler");
|
||||||
|
bc.onmessage = t.step_func_done(function(e) {
|
||||||
|
assert_equals(e.data, "passed");
|
||||||
|
bc.close();
|
||||||
|
});
|
||||||
|
window.open("resources/portal-activate-event-window.html?test=eventhandler");
|
||||||
|
}, "Tests that the portalactivate event handler is dispatched when a portal is activated.");
|
||||||
|
|
||||||
|
async_test(function(t) {
|
||||||
|
var bc = new BroadcastChannel("test-bodyeventhandler");
|
||||||
|
bc.onmessage = t.step_func_done(function(e) {
|
||||||
|
assert_equals(e.data, "passed");
|
||||||
|
bc.close();
|
||||||
|
});
|
||||||
|
window.open("resources/portal-activate-event-window.html?test=bodyeventhandler");
|
||||||
|
}, "Tests that the HTMLBodyElement has the portalactivate event handler.");
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<title>Tests that the PortalActivateEvent is dispatched when a portal is activated</title>
|
<title>Tests that the PortalActivateEvent is dispatched when a portal is activated</title>
|
||||||
<script>
|
<script>
|
||||||
window.addEventListener("portalactivate", function(e) {
|
var test = (new URL(location)).searchParams.get("test");
|
||||||
var bc = new BroadcastChannel("test");
|
|
||||||
|
function portalActivate(e) {
|
||||||
|
var bc = new BroadcastChannel("test-" + test);
|
||||||
bc.postMessage("passed");
|
bc.postMessage("passed");
|
||||||
bc.close();
|
bc.close();
|
||||||
});
|
}
|
||||||
|
|
||||||
var bc = new BroadcastChannel("portal");
|
if (test == "bodyeventhandler") {
|
||||||
|
document.write('<body onportalactivate="portalActivate()"></body>');
|
||||||
|
} else if (test == "eventhandler") {
|
||||||
|
window.onportalactivate = portalActivate;
|
||||||
|
} else if (test == "eventlistener") {
|
||||||
|
window.addEventListener("portalactivate", portalActivate);
|
||||||
|
}
|
||||||
|
|
||||||
|
var bc = new BroadcastChannel("portal-" + test);
|
||||||
bc.postMessage("loaded");
|
bc.postMessage("loaded");
|
||||||
bc.close();
|
bc.close();
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<script>
|
<script>
|
||||||
var bc = new BroadcastChannel("portal");
|
window.onload = function(e) {
|
||||||
bc.onmessage = function(e) {
|
var test = (new URL(location)).searchParams.get("test");
|
||||||
document.querySelector("portal").activate();
|
var portal = document.createElement("portal");
|
||||||
bc.close();
|
portal.src = "portal-activate-event-portal.html" + location.search;
|
||||||
|
document.body.appendChild(portal);
|
||||||
|
|
||||||
|
var bc = new BroadcastChannel("portal-" + test);
|
||||||
|
bc.onmessage = function(e) {
|
||||||
|
document.querySelector("portal").activate();
|
||||||
|
bc.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<body>
|
<body>
|
||||||
<portal src="portal-activate-event-portal.html"></portal>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -11,16 +11,22 @@
|
||||||
<script src="resources/webperftestharnessextension.js"></script>
|
<script src="resources/webperftestharnessextension.js"></script>
|
||||||
<script>
|
<script>
|
||||||
let iframe;
|
let iframe;
|
||||||
|
const redirect_url = 'common/redirect.py';
|
||||||
|
const url_prefix = redirect_url + '?location=/resource-timing/resources/';
|
||||||
|
const https_url_prefix = redirect_url + '?location=https://{{hosts[][www]}}:{{ports[https][0]}}/resource-timing/resources/';
|
||||||
function setup_iframe() {
|
function setup_iframe() {
|
||||||
const iframe_content =
|
const iframe_content =
|
||||||
'<link rel="stylesheet" href="/common/redirect.py?location=/resource-timing/resources/resource_timing_test0.css"></link>' +
|
'<link rel="stylesheet" href="/' + url_prefix + 'resource_timing_test0.css"></link>' +
|
||||||
'<img src="/common/redirect.py?location=/resource-timing/resources/blue.png"></img>' +
|
'<img src="/' + url_prefix + 'blue.png"></img>' +
|
||||||
'<iframe src="/common/redirect.py?location=/resource-timing/resources/blank_page_green.htm"></iframe>' +
|
'<iframe src="/' + url_prefix + 'blank_page_green.htm"></iframe>' +
|
||||||
'<script src="/common/redirect.py?location=/resource-timing/resources/empty_script.js"></scr' + 'ipt>' +
|
'<script src="/' + url_prefix + 'empty_script.js"></scr' + 'ipt>' +
|
||||||
'<scr' + 'ipt>' +
|
'<scr' + 'ipt>' +
|
||||||
'const xhr = new XMLHttpRequest;' +
|
'const xhr = new XMLHttpRequest;' +
|
||||||
'xhr.open("GET", "/common/redirect.py?location=/resource-timing/resources/blank_page_green.htm?id=xhr", false);' +
|
'xhr.open("GET", "/' + url_prefix + 'blank_page_green.htm?id=xhr", false);' +
|
||||||
'xhr.send();' +
|
'xhr.send();' +
|
||||||
|
'const xhr2 = new XMLHttpRequest;' +
|
||||||
|
'xhr2.open("GET", "/' + https_url_prefix + 'blank_page_green.htm?id=xhr", false);' +
|
||||||
|
'xhr2.send();' +
|
||||||
'</scr' + 'ipt>';
|
'</scr' + 'ipt>';
|
||||||
iframe = document.getElementById('frameContext');
|
iframe = document.getElementById('frameContext');
|
||||||
iframe.contentWindow.document.write(iframe_content);
|
iframe.contentWindow.document.write(iframe_content);
|
||||||
|
@ -30,14 +36,15 @@ function onload_test() {
|
||||||
const entries = context.getEntriesByType('resource');
|
const entries = context.getEntriesByType('resource');
|
||||||
|
|
||||||
const index = window.location.pathname.lastIndexOf('resource-timing');
|
const index = window.location.pathname.lastIndexOf('resource-timing');
|
||||||
const pathname = window.location.pathname.substring(0, index) +
|
const pathname = window.location.pathname.substring(0, index) + url_prefix;
|
||||||
'common/redirect.py?location=/resource-timing/resources/';
|
const https_pathname = window.location.pathname.substring(0, index) + https_url_prefix;
|
||||||
let expected_entries = {};
|
let expected_entries = {};
|
||||||
expected_entries[pathname + 'resource_timing_test0.css'] = 'link';
|
expected_entries[pathname + 'resource_timing_test0.css'] = 'link';
|
||||||
expected_entries[pathname + 'blue.png'] = 'img';
|
expected_entries[pathname + 'blue.png'] = 'img';
|
||||||
expected_entries[pathname + 'blank_page_green.htm'] = 'iframe';
|
expected_entries[pathname + 'blank_page_green.htm'] = 'iframe';
|
||||||
expected_entries[pathname + 'empty_script.js'] = 'script';
|
expected_entries[pathname + 'empty_script.js'] = 'script';
|
||||||
expected_entries[pathname + 'blank_page_green.htm?id=xhr'] = 'xmlhttprequest';
|
expected_entries[pathname + 'blank_page_green.htm?id=xhr'] = 'xmlhttprequest';
|
||||||
|
expected_entries[https_pathname + 'blank_page_green.htm?id=xhr'] = 'xmlhttprequest';
|
||||||
|
|
||||||
test_resource_entries(entries, expected_entries);
|
test_resource_entries(entries, expected_entries);
|
||||||
}
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
Access-Control-Allow-Origin: *
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>iframe for xhr tests</title>
|
||||||
|
<script>
|
||||||
|
async function xhr(url) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
xhr.onload = () => {
|
||||||
|
resolve(xhr);
|
||||||
|
};
|
||||||
|
xhr.onerror = () => {
|
||||||
|
reject('xhr failed');
|
||||||
|
};
|
||||||
|
xhr.open('GET', url);
|
||||||
|
xhr.send();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Service Worker: XHR responseURL uses the response url</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="resources/test-helpers.sub.js"></script>
|
||||||
|
<script>
|
||||||
|
const scope = 'resources/xhr-iframe.html';
|
||||||
|
const script = 'resources/fetch-rewrite-worker.js';
|
||||||
|
let iframe;
|
||||||
|
|
||||||
|
// Test that XMLHttpRequest.responseURL uses the response URL from the service
|
||||||
|
// worker.
|
||||||
|
promise_test(async (t) => {
|
||||||
|
t.add_cleanup(async () => {
|
||||||
|
if (iframe)
|
||||||
|
iframe.remove();
|
||||||
|
await service_worker_unregister(t, scope);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Set up a controlled iframe.
|
||||||
|
const registration =
|
||||||
|
await service_worker_unregister_and_register(t, script, scope);
|
||||||
|
await wait_for_state(t, registration.installing, 'activated');
|
||||||
|
iframe = await with_iframe(scope);
|
||||||
|
|
||||||
|
// Build the XHR URL. Set the |url| param to tell the service worker
|
||||||
|
// to respondWith(fetch(|url|)).
|
||||||
|
const target = new URL('resources/dummy.txt', window.location);
|
||||||
|
const url = `test?url=${encodeURIComponent(target)}`;
|
||||||
|
|
||||||
|
// Perform the XHR.
|
||||||
|
const xhr = await iframe.contentWindow.xhr(url);
|
||||||
|
assert_equals(xhr.responseURL, target.href);
|
||||||
|
}, 'XHR responseURL should be the response URL');
|
||||||
|
</script>
|
|
@ -0,0 +1,38 @@
|
||||||
|
// META: title=StorageManager: estimate() for service worker registrations
|
||||||
|
const wait_for_active = worker => new Promise(resolve =>{
|
||||||
|
if (worker.active) { resolve(worker.active); }
|
||||||
|
|
||||||
|
const listen_for_active = worker => e => {
|
||||||
|
if (e.target.state === 'activated') { resolve(worker.active); }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (worker.waiting) {
|
||||||
|
worker.waiting
|
||||||
|
.addEventListener('statechange', listen_for_active(worker.waiting));
|
||||||
|
}
|
||||||
|
if (worker.installing) {
|
||||||
|
worker.installing
|
||||||
|
.addEventListener('statechange', listen_for_active(worker.installing));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
let estimate = await navigator.storage.estimate();
|
||||||
|
const usageBeforeCreate = estimate.usageDetails.serviceWorkerRegistrations ||
|
||||||
|
0;
|
||||||
|
// Note: helpers.js is an arbitrary file; it could be any file that
|
||||||
|
// exists, but this test does not depend on the contents of said file.
|
||||||
|
const serviceWorkerRegistration = await
|
||||||
|
navigator.serviceWorker.register('./helpers.js');
|
||||||
|
|
||||||
|
t.add_cleanup(() => serviceWorkerRegistration.unregister());
|
||||||
|
await wait_for_active(serviceWorkerRegistration);
|
||||||
|
|
||||||
|
estimate = await navigator.storage.estimate();
|
||||||
|
assert_true('serviceWorkerRegistrations' in estimate.usageDetails);
|
||||||
|
|
||||||
|
const usageAfterCreate = estimate.usageDetails.serviceWorkerRegistrations;
|
||||||
|
assert_greater_than(
|
||||||
|
usageAfterCreate, usageBeforeCreate,
|
||||||
|
'estimated usage should increase after service worker is registered');
|
||||||
|
}, 'estimate() shows usage increase after large value is stored');
|
|
@ -66,8 +66,7 @@ def sourcefile_strategy(draw):
|
||||||
|
|
||||||
|
|
||||||
@h.given(hs.lists(sourcefile_strategy(),
|
@h.given(hs.lists(sourcefile_strategy(),
|
||||||
min_size=1, average_size=10, max_size=1000,
|
min_size=1, max_size=1000, unique_by=lambda x: x.rel_path))
|
||||||
unique_by=lambda x: x.rel_path))
|
|
||||||
@h.example([SourceFileWithTest("a", "0"*40, item.ConformanceCheckerTest)])
|
@h.example([SourceFileWithTest("a", "0"*40, item.ConformanceCheckerTest)])
|
||||||
def test_manifest_to_json(s):
|
def test_manifest_to_json(s):
|
||||||
m = manifest.Manifest()
|
m = manifest.Manifest()
|
||||||
|
@ -83,8 +82,7 @@ def test_manifest_to_json(s):
|
||||||
|
|
||||||
|
|
||||||
@h.given(hs.lists(sourcefile_strategy(),
|
@h.given(hs.lists(sourcefile_strategy(),
|
||||||
min_size=1, average_size=10,
|
min_size=1, unique_by=lambda x: x.rel_path))
|
||||||
unique_by=lambda x: x.rel_path))
|
|
||||||
@h.example([SourceFileWithTest("a", "0"*40, item.TestharnessTest)])
|
@h.example([SourceFileWithTest("a", "0"*40, item.TestharnessTest)])
|
||||||
@h.example([SourceFileWithTest("a", "0"*40, item.RefTest, [("/aa", "==")])])
|
@h.example([SourceFileWithTest("a", "0"*40, item.RefTest, [("/aa", "==")])])
|
||||||
def test_manifest_idempotent(s):
|
def test_manifest_idempotent(s):
|
||||||
|
|
|
@ -8,7 +8,6 @@ deps =
|
||||||
pytest-cov
|
pytest-cov
|
||||||
mock
|
mock
|
||||||
hypothesis
|
hypothesis
|
||||||
pytest-catchlog
|
|
||||||
|
|
||||||
commands = pytest --cov {posargs}
|
commands = pytest --cov {posargs}
|
||||||
|
|
||||||
|
|
|
@ -758,3 +758,32 @@ class WebKit(Browser):
|
||||||
|
|
||||||
def version(self, binary=None, webdriver_binary=None):
|
def version(self, binary=None, webdriver_binary=None):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
class Epiphany(Browser):
|
||||||
|
"""Epiphany-specific interface."""
|
||||||
|
|
||||||
|
product = "epiphany"
|
||||||
|
requirements = "requirements_epiphany.txt"
|
||||||
|
|
||||||
|
def install(self, dest=None, channel=None):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def find_binary(self, venv_path=None, channel=None):
|
||||||
|
return find_executable("epiphany")
|
||||||
|
|
||||||
|
def find_webdriver(self, channel=None):
|
||||||
|
return find_executable("WebKitWebDriver")
|
||||||
|
|
||||||
|
def install_webdriver(self, dest=None, channel=None):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def version(self, binary=None, webdriver_binary=None):
|
||||||
|
if binary is None:
|
||||||
|
return None
|
||||||
|
output = call(binary, "--version")
|
||||||
|
if output:
|
||||||
|
# Stable release output looks like: "Web 3.30.2"
|
||||||
|
# Tech Preview output looks like "Web 3.31.3-88-g97db4f40f"
|
||||||
|
return output.split()[1]
|
||||||
|
return None
|
||||||
|
|
|
@ -422,7 +422,7 @@ class Servo(BrowserSetup):
|
||||||
binary = self.browser.find_binary(self.venv.path, None)
|
binary = self.browser.find_binary(self.venv.path, None)
|
||||||
|
|
||||||
if binary is None:
|
if binary is None:
|
||||||
raise WptrunError("Unable to find servo binary on the PATH")
|
raise WptrunError("Unable to find servo binary in PATH")
|
||||||
kwargs["binary"] = binary
|
kwargs["binary"] = binary
|
||||||
|
|
||||||
|
|
||||||
|
@ -442,6 +442,29 @@ class WebKit(BrowserSetup):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Epiphany(BrowserSetup):
|
||||||
|
name = "epiphany"
|
||||||
|
browser_cls = browser.Epiphany
|
||||||
|
|
||||||
|
def install(self, venv, channel=None):
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def setup_kwargs(self, kwargs):
|
||||||
|
if kwargs["binary"] is None:
|
||||||
|
binary = self.browser.find_binary()
|
||||||
|
|
||||||
|
if binary is None:
|
||||||
|
raise WptrunError("Unable to find epiphany in PATH")
|
||||||
|
kwargs["binary"] = binary
|
||||||
|
|
||||||
|
if kwargs["webdriver_binary"] is None:
|
||||||
|
webdriver_binary = self.browser.find_webdriver()
|
||||||
|
|
||||||
|
if webdriver_binary is None:
|
||||||
|
raise WptrunError("Unable to find WebKitWebDriver in PATH")
|
||||||
|
kwargs["webdriver_binary"] = webdriver_binary
|
||||||
|
|
||||||
|
|
||||||
product_setup = {
|
product_setup = {
|
||||||
"fennec": Fennec,
|
"fennec": Fennec,
|
||||||
"firefox": Firefox,
|
"firefox": Firefox,
|
||||||
|
@ -456,6 +479,7 @@ product_setup = {
|
||||||
"sauce": Sauce,
|
"sauce": Sauce,
|
||||||
"opera": Opera,
|
"opera": Opera,
|
||||||
"webkit": WebKit,
|
"webkit": WebKit,
|
||||||
|
"epiphany": Epiphany,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
mozprocess == 0.26
|
|
@ -34,4 +34,5 @@ product_list = ["chrome",
|
||||||
"servo",
|
"servo",
|
||||||
"servodriver",
|
"servodriver",
|
||||||
"opera",
|
"opera",
|
||||||
"webkit"]
|
"webkit",
|
||||||
|
"epiphany"]
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
from .base import get_timeout_multiplier # noqa: F401
|
||||||
|
from .webkit import WebKitBrowser
|
||||||
|
from ..executors import executor_kwargs as base_executor_kwargs
|
||||||
|
from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401
|
||||||
|
WebDriverRefTestExecutor) # noqa: F401
|
||||||
|
from ..executors.executorwebkit import WebKitDriverWdspecExecutor # noqa: F401
|
||||||
|
|
||||||
|
__wptrunner__ = {"product": "epiphany",
|
||||||
|
"check_args": "check_args",
|
||||||
|
"browser": "EpiphanyBrowser",
|
||||||
|
"browser_kwargs": "browser_kwargs",
|
||||||
|
"executor": {"testharness": "WebDriverTestharnessExecutor",
|
||||||
|
"reftest": "WebDriverRefTestExecutor",
|
||||||
|
"wdspec": "WebKitDriverWdspecExecutor"},
|
||||||
|
"executor_kwargs": "executor_kwargs",
|
||||||
|
"env_extras": "env_extras",
|
||||||
|
"env_options": "env_options",
|
||||||
|
"run_info_extras": "run_info_extras",
|
||||||
|
"timeout_multiplier": "get_timeout_multiplier"}
|
||||||
|
|
||||||
|
|
||||||
|
def check_args(**kwargs):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def browser_kwargs(test_type, run_info_data, config, **kwargs):
|
||||||
|
return {"binary": kwargs["binary"],
|
||||||
|
"webdriver_binary": kwargs["webdriver_binary"],
|
||||||
|
"webdriver_args": kwargs.get("webdriver_args")}
|
||||||
|
|
||||||
|
|
||||||
|
def capabilities(server_config, **kwargs):
|
||||||
|
args = kwargs.get("binary_args", [])
|
||||||
|
if "--automation-mode" not in args:
|
||||||
|
args.append("--automation-mode")
|
||||||
|
|
||||||
|
return {
|
||||||
|
"browserName": "Epiphany",
|
||||||
|
"browserVersion": "3.31.4", # First version to support automation
|
||||||
|
"platformName": "ANY",
|
||||||
|
"webkitgtk:browserOptions": {
|
||||||
|
"binary": kwargs["binary"],
|
||||||
|
"args": args,
|
||||||
|
"certificates": [
|
||||||
|
{"host": server_config["browser_host"],
|
||||||
|
"certificateFile": kwargs["host_cert_path"]}]}}
|
||||||
|
|
||||||
|
|
||||||
|
def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
|
||||||
|
**kwargs):
|
||||||
|
executor_kwargs = base_executor_kwargs(test_type, server_config,
|
||||||
|
cache_manager, run_info_data, **kwargs)
|
||||||
|
executor_kwargs["close_after_done"] = True
|
||||||
|
executor_kwargs["capabilities"] = capabilities(server_config, **kwargs)
|
||||||
|
return executor_kwargs
|
||||||
|
|
||||||
|
|
||||||
|
def env_extras(**kwargs):
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def env_options():
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def run_info_extras(**kwargs):
|
||||||
|
return {"webkit_port": "gtk"}
|
||||||
|
|
||||||
|
|
||||||
|
class EpiphanyBrowser(WebKitBrowser):
|
||||||
|
def __init__(self, logger, binary=None, webdriver_binary=None,
|
||||||
|
webdriver_args=None):
|
||||||
|
WebKitBrowser.__init__(self, logger, binary, webdriver_binary,
|
||||||
|
webdriver_args)
|
|
@ -0,0 +1,161 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Test AudioParam events very close in time</title>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="/webaudio/resources/audit-util.js"></script>
|
||||||
|
<script src="/webaudio/resources/audit.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
const audit = Audit.createTaskRunner();
|
||||||
|
|
||||||
|
// Largest sample rate that is required to be supported and is a power of
|
||||||
|
// two, to eliminate round-off as much as possible.
|
||||||
|
const sampleRate = 65536;
|
||||||
|
|
||||||
|
// Only need one render quantum for testing.
|
||||||
|
const testFrames = 128;
|
||||||
|
|
||||||
|
// Largest representable single-float number
|
||||||
|
const floatMax = Math.fround(3.4028234663852886e38);
|
||||||
|
|
||||||
|
// epspos is the smallest x such that 1 + x != 1
|
||||||
|
const epspos = 1.1102230246251568e-16;
|
||||||
|
// epsneg is the smallest x such that 1 - x != 1
|
||||||
|
const epsneg = 5.551115123125784e-17;
|
||||||
|
|
||||||
|
audit.define(
|
||||||
|
{label: 'no-nan', description: 'NaN does not occur'},
|
||||||
|
(task, should) => {
|
||||||
|
const context = new OfflineAudioContext({
|
||||||
|
numberOfChannels: 1,
|
||||||
|
sampleRate: sampleRate,
|
||||||
|
length: testFrames
|
||||||
|
});
|
||||||
|
|
||||||
|
const src0 = new ConstantSourceNode(context, {offset: 0});
|
||||||
|
|
||||||
|
// This should always succeed. We just want to print out a message
|
||||||
|
// that |src0| is a constant source node for the following
|
||||||
|
// processing.
|
||||||
|
should(src0, 'src0 = new ConstantSourceNode(context, {offset: 0})')
|
||||||
|
.beEqualTo(src0);
|
||||||
|
|
||||||
|
src0.connect(context.destination);
|
||||||
|
|
||||||
|
// Values for the first event (setValue). |time1| MUST be 0.
|
||||||
|
const time1 = 0;
|
||||||
|
const value1 = 10;
|
||||||
|
|
||||||
|
// Values for the second event (linearRamp). |value2| must be huge,
|
||||||
|
// and |time2| must be small enough that 1/|time2| overflows a
|
||||||
|
// single float. This value is the least positive single float.
|
||||||
|
const value2 = floatMax;
|
||||||
|
const time2 = 1.401298464324817e-45;
|
||||||
|
|
||||||
|
// These should always succeed; the messages are just informational
|
||||||
|
// to show the events that we scheduled.
|
||||||
|
should(
|
||||||
|
src0.offset.setValueAtTime(value1, time1),
|
||||||
|
`src0.offset.setValueAtTime(${value1}, ${time1})`)
|
||||||
|
.beEqualTo(src0.offset);
|
||||||
|
should(
|
||||||
|
src0.offset.linearRampToValueAtTime(value2, time2),
|
||||||
|
`src0.offset.linearRampToValueAtTime(${value2}, ${time2})`)
|
||||||
|
.beEqualTo(src0.offset);
|
||||||
|
|
||||||
|
src0.start();
|
||||||
|
|
||||||
|
context.startRendering()
|
||||||
|
.then(buffer => {
|
||||||
|
const output = buffer.getChannelData(0);
|
||||||
|
|
||||||
|
// Since time1 = 0, the output at frame 0 MUST be value1.
|
||||||
|
should(output[0], 'output[0]').beEqualTo(value1);
|
||||||
|
|
||||||
|
// Since time2 < 1, output from frame 1 and later must be a
|
||||||
|
// constant.
|
||||||
|
should(output.slice(1), 'output[1]')
|
||||||
|
.beConstantValueOf(value2);
|
||||||
|
})
|
||||||
|
.then(() => task.done());
|
||||||
|
});
|
||||||
|
|
||||||
|
audit.define(
|
||||||
|
{label: 'interpolation', description: 'Interpolation of linear ramp'},
|
||||||
|
(task, should) => {
|
||||||
|
const context = new OfflineAudioContext({
|
||||||
|
numberOfChannels: 1,
|
||||||
|
sampleRate: sampleRate,
|
||||||
|
length: testFrames
|
||||||
|
});
|
||||||
|
|
||||||
|
const src1 = new ConstantSourceNode(context, {offset: 0});
|
||||||
|
|
||||||
|
// This should always succeed. We just want to print out a message
|
||||||
|
// that |src1| is a constant source node for the following
|
||||||
|
// processing.
|
||||||
|
should(src1, 'src1 = new ConstantSourceNode(context, {offset: 0})')
|
||||||
|
.beEqualTo(src1);
|
||||||
|
|
||||||
|
src1.connect(context.destination);
|
||||||
|
|
||||||
|
const frame = 1;
|
||||||
|
|
||||||
|
// These time values are arranged so that time1 < frame/sampleRate <
|
||||||
|
// time2. This means we need to interpolate to get a value at given
|
||||||
|
// frame.
|
||||||
|
//
|
||||||
|
// The values are not so important, but |value2| should be huge.
|
||||||
|
const time1 = frame * (1 - epsneg) / context.sampleRate;
|
||||||
|
const value1 = 1e15;
|
||||||
|
|
||||||
|
const time2 = frame * (1 + epspos) / context.sampleRate;
|
||||||
|
const value2 = floatMax;
|
||||||
|
|
||||||
|
should(
|
||||||
|
src1.offset.setValueAtTime(value1, time1),
|
||||||
|
`src1.offset.setValueAtTime(${value1}, ${time1})`)
|
||||||
|
.beEqualTo(src1.offset);
|
||||||
|
should(
|
||||||
|
src1.offset.linearRampToValueAtTime(value2, time2),
|
||||||
|
`src1.offset.linearRampToValueAtTime(${value2}, ${time2})`)
|
||||||
|
.beEqualTo(src1.offset);
|
||||||
|
|
||||||
|
src1.start();
|
||||||
|
|
||||||
|
context.startRendering()
|
||||||
|
.then(buffer => {
|
||||||
|
const output = buffer.getChannelData(0);
|
||||||
|
|
||||||
|
// Sanity check
|
||||||
|
should(time2 - time1, 'Event time difference')
|
||||||
|
.notBeEqualTo(0);
|
||||||
|
|
||||||
|
// Because 0 < time1 < 1, output must be 0 at time 0.
|
||||||
|
should(output[0], 'output[0]').beEqualTo(0);
|
||||||
|
|
||||||
|
// Because time1 < 1/sampleRate < time2, we need to
|
||||||
|
// interpolate the value between these times to determine the
|
||||||
|
// output at frame 1.
|
||||||
|
const t = frame / context.sampleRate;
|
||||||
|
const v = value1 +
|
||||||
|
(value2 - value1) * (t - time1) / (time2 - time1);
|
||||||
|
|
||||||
|
should(output[1], 'output[1]').beCloseTo(v, {threshold: 0});
|
||||||
|
|
||||||
|
// Because 1 < time2 < 2, the output at frame 2 and higher is
|
||||||
|
// constant.
|
||||||
|
should(output.slice(2), 'output[2:]')
|
||||||
|
.beConstantValueOf(value2);
|
||||||
|
})
|
||||||
|
.then(() => task.done());
|
||||||
|
});
|
||||||
|
|
||||||
|
audit.run();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Add table
Add a link
Reference in a new issue