aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2019-01-16 22:50:02 -0500
committerGitHub <noreply@github.com>2019-01-16 22:50:02 -0500
commitc558db97372ce4bafe2bd74a0b42bbfedff752bd (patch)
treea512afc705de1ef32c8393cb96071039f3487371
parent7c043f1bd850790870c23854e5c801c8e04199b1 (diff)
parent2966715d10282c885f42b6399f20de47399c2fdd (diff)
downloadservo-c558db97372ce4bafe2bd74a0b42bbfedff752bd.tar.gz
servo-c558db97372ce4bafe2bd74a0b42bbfedff752bd.zip
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 -->
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini4
-rw-r--r--tests/wpt/metadata/MANIFEST.json363
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini2
-rw-r--r--tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini2
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini3
-rw-r--r--tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini2
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini31
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini)2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html.ini1
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini3
-rw-r--r--tests/wpt/metadata/resource-timing/redirects.sub.html.ini4
-rw-r--r--tests/wpt/metadata/resource-timing/resource_timing_buffer_full_eventually.html.ini2
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html.ini2
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini1
-rw-r--r--tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini1
-rw-r--r--tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini2
-rw-r--r--tests/wpt/mozilla/meta/mozilla/scroll_root.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/async-local-storage/META.yml3
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/background-image-first-line.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-inline-dynamic-001-ref.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-inline-dynamic-001.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-tree-abiding.html56
-rw-r--r--tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event-manual.html34
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/META.yml3
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/api-surface.https.html (renamed from tests/wpt/web-platform-tests/async-local-storage/api-surface.tentative.https.html)6
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/helpers/class-assert.js (renamed from tests/wpt/web-platform-tests/async-local-storage/helpers/class-assert.js)0
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js (renamed from tests/wpt/web-platform-tests/async-local-storage/helpers/equality-asserters.js)0
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/helpers/kvs-tests.js (renamed from tests/wpt/web-platform-tests/async-local-storage/helpers/als-tests.js)2
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/key-types.https.html (renamed from tests/wpt/web-platform-tests/async-local-storage/key-types.tentative.https.html)4
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/non-secure-context-dynamic-import.html (renamed from tests/wpt/web-platform-tests/async-local-storage/non-secure-context-dynamic-import.tentative.html)4
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/non-secure-context-import-statement.html (renamed from tests/wpt/web-platform-tests/async-local-storage/non-secure-context-import-statement.tentative.html)4
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/non-secure-context-script-element.html (renamed from tests/wpt/web-platform-tests/async-local-storage/non-secure-context-script-element.tentative.html)4
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/storage-smoke-test.https.html (renamed from tests/wpt/web-platform-tests/async-local-storage/storage-smoke-test.tentative.https.html)8
-rw-r--r--tests/wpt/web-platform-tests/kv-storage/undefined-value.https.html (renamed from tests/wpt/web-platform-tests/async-local-storage/undefined-value.https.html)8
-rw-r--r--tests/wpt/web-platform-tests/mathml/META.yml2
-rw-r--r--tests/wpt/web-platform-tests/portals/portal-activate-event.html22
-rw-r--r--tests/wpt/web-platform-tests/portals/resources/portal-activate-event-portal.html18
-rw-r--r--tests/wpt/web-platform-tests/portals/resources/portal-activate-event-window.html16
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/redirects.sub.html (renamed from tests/wpt/web-platform-tests/resource-timing/resource_redirects.html)21
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resources/blank_page_green.htm.headers1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/xhr-iframe.html18
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/xhr-response-url.https.html36
-rw-r--r--tests/wpt/web-platform-tests/storage/estimate-usage-details-service-workers.https.tentative.window.js38
-rw-r--r--tests/wpt/web-platform-tests/tools/manifest/tests/test_manifest.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/tox.ini1
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py29
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py26
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements_epiphany.txt1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/epiphany.py74
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html161
71 files changed, 893 insertions, 241 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index 76b398963ae..dd4ffcf4345 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -1,5 +1,4 @@
[url-in-tags-revoke.window.html]
- expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
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.]
expected: FAIL
- [Fetching a blob URL immediately before revoking it works in <script> tags.]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 38a655726e3..ce6ea9398db 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -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",
@@ -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",
@@ -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": [
[
{}
@@ -254910,6 +254908,11 @@
{}
]
],
+ "css/css-display/display-inline-dynamic-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"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": [
[
{}
@@ -307220,6 +307243,11 @@
{}
]
],
+ "resource-timing/resources/blank_page_green.htm.headers": [
+ [
+ {}
+ ]
+ ],
"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": [
[
{}
@@ -319375,6 +319408,11 @@
{}
]
],
+ "tools/wptrunner/requirements_epiphany.txt": [
+ [
+ {}
+ ]
+ ],
"tools/wptrunner/requirements_firefox.txt": [
[
{}
@@ -319595,6 +319633,11 @@
{}
]
],
+ "tools/wptrunner/wptrunner/browsers/epiphany.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.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",
@@ -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",
@@ -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",
@@ -407810,12 +407865,6 @@
{}
]
],
- "resource-timing/resource_redirects.html": [
- [
- "/resource-timing/resource_redirects.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",
@@ -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.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",
@@ -455531,50 +455598,6 @@
"55e8b9871e794c944f329e0e9df6ec140124c660",
"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": [
"b6a7d4d06259117af8fb843f6a8d252bac01a8f3",
"support"
@@ -540940,7 +540963,7 @@
"reftest"
],
"css/css-backgrounds/background-image-first-line.html": [
- "c8dee7050b6241279d5f462263b9fdead50004fc",
+ "206ff68d17360ee30768651eaab874f0a6c2996e",
"reftest"
],
"css/css-backgrounds/background-image-none-gradient-repaint.html": [
@@ -547323,6 +547346,14 @@
"3d1dcb020df129dd10d66bb4b04d62c3c280cfb6",
"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": [
"f8d6e85cee2325f3ae51a950a276430d26c04189",
"testharness"
@@ -569935,6 +569966,10 @@
"2dfd4b0510a758c73bf8ac8291088d39077578d7",
"testharness"
],
+ "css/css-shadow-parts/interaction-with-tree-abiding.html": [
+ "c11da7d12dea91306b79d141613ad6563dffb18f",
+ "testharness"
+ ],
"css/css-shadow-parts/invalidation-change-exportparts-forward.html": [
"1e319deb633cdb765ea4613eb7c2b8c6dd0e615a",
"testharness"
@@ -625171,6 +625206,10 @@
"c8bdaafdb89555c6708f0d84c3d41e437840be5b",
"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": [
"7346ce919d210a740104ca5e82264bed8377c2d0",
"support"
@@ -637679,6 +637718,50 @@
"5a4beba7e45830e72c28d460495e977a64a8bc7a",
"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": [
"c1fcbca4c1f8366da1dd9eb91bc9427edeef1153",
"support"
@@ -637852,7 +637935,7 @@
"testharness"
],
"mathml/META.yml": [
- "6b347c12d8978156737257ff90b89cc27ab69847",
+ "a410f582f0a9b006946e8d9c46e1e0a2b5acea43",
"support"
],
"mathml/README.md": [
@@ -650236,7 +650319,7 @@
"support"
],
"portals/portal-activate-event.html": [
- "ed5602667bb9c898291d81ab2171b99137827a87",
+ "ac1505d2a5b2fe1df083eae75893483e025a2ad7",
"testharness"
],
"portals/portals-host-null.html": [
@@ -650256,11 +650339,11 @@
"support"
],
"portals/resources/portal-activate-event-portal.html": [
- "d0eebcd12e65193024f6444af922b7503e76d8ec",
+ "b2759c3701aaba4f5887a8b90bf4ee30e8153661",
"support"
],
"portals/resources/portal-activate-event-window.html": [
- "1994dc3fad11e8b3ad9e8dc71f4aa96f06baa389",
+ "cf09caebc0ff9ac38facde84075a7af5be19fd48",
"support"
],
"portals/resources/portals-rendering-portal.html": [
@@ -659987,6 +660070,10 @@
"63f9e06e19083a6d956af0d5916455cd7e91b89c",
"testharness"
],
+ "resource-timing/redirects.sub.html": [
+ "0e3f405e14b7af9f0b2a4fe5ce916ed1e47534de",
+ "testharness"
+ ],
"resource-timing/resource-timing-level1.js": [
"95b5cdfb1ed0ca2bbfd6b692ad565512218dd7a4",
"support"
@@ -660079,10 +660166,6 @@
"89b5874978c97cd25e31da263d07c9f91c69bbfa",
"testharness"
],
- "resource-timing/resource_redirects.html": [
- "606662afda4401dd0dccbac2b71b66f3b1961e6f",
- "testharness"
- ],
"resource-timing/resource_reparenting.html": [
"7d4947fa7703d13a5adb465ff5eebbb4456cace9",
"testharness"
@@ -660135,6 +660218,10 @@
"b8a1947b77e25ac6b0d100c75932e8c0a67d846f",
"support"
],
+ "resource-timing/resources/blank_page_green.htm.headers": [
+ "cb762eff806849df46dc758ef7b98b63f27f54c9",
+ "support"
+ ],
"resource-timing/resources/blue.png": [
"820f8cace2143bfc45c0c301e84b6c29b8630068",
"support"
@@ -664987,6 +665074,10 @@
"e388e461448f64d37d747b26830f4e869a2c6528",
"support"
],
+ "service-workers/service-worker/resources/xhr-iframe.html": [
+ "bfdfac69712b3e10526e1f059d2638b1fab06eeb",
+ "support"
+ ],
"service-workers/service-worker/resources/xsl-base-url-iframe.xml": [
"065a07acb284821dde1cbea8680781a524f21bc2",
"support"
@@ -665171,6 +665262,10 @@
"f9ba656b5178359f2c7b6e2419a57ff12ec79d23",
"testharness"
],
+ "service-workers/service-worker/xhr-response-url.https.html": [
+ "9f00cdd183052568ed7c6933f28f7859739e926c",
+ "testharness"
+ ],
"service-workers/service-worker/xsl-base-url.https.html": [
"1d3c36408a66a7785b884c9cdc39dcd2820f9af0",
"testharness"
@@ -666119,6 +666214,10 @@
"c854d5b8848638d11563a48348e7c3393ff58459",
"testharness"
],
+ "storage/estimate-usage-details-service-workers.https.tentative.window.js": [
+ "cf3a2aa9430d480df4fc7ff2487e7a42d5c15699",
+ "testharness"
+ ],
"storage/helpers.js": [
"fbc746a30b6dfa6d00fc2db747c78ec09a7beefc",
"support"
@@ -670864,7 +670963,7 @@
"support"
],
"tools/manifest/tests/test_manifest.py": [
- "010a0c0a00a176bdabb561cc2a141aa0d1bbf139",
+ "8f649f1d098927b62bbf4c12ecade944ac081eee",
"support"
],
"tools/manifest/tests/test_sourcefile.py": [
@@ -675268,7 +675367,7 @@
"support"
],
"tools/tox.ini": [
- "fc66c6c2ac39ce66b915af90a610d420e1278d7a",
+ "3b0c6d172bc02e8df5fed5a08cd354416eff50dd",
"support"
],
"tools/webdriver/.gitignore": [
@@ -675308,7 +675407,7 @@
"support"
],
"tools/wpt/browser.py": [
- "71d1e61918a86e8d8f0a9faca96c6f1ceade6d31",
+ "ea8cc04f7d49eb2dd4691c0d7ce012ffb1ade5be",
"support"
],
"tools/wpt/commands.json": [
@@ -675336,7 +675435,7 @@
"support"
],
"tools/wpt/run.py": [
- "44cf3137d41338a7e57e29ae998859b4bc42a82b",
+ "633d6b254db289f50b77e4c7f589b888caa2b566",
"support"
],
"tools/wpt/testfiles.py": [
@@ -675443,6 +675542,10 @@
"497cad357398149ade1851079ac5380520932f88",
"support"
],
+ "tools/wptrunner/requirements_epiphany.txt": [
+ "9115b7ac4e8f6a6e4703a7b61d2715075e2f6053",
+ "support"
+ ],
"tools/wptrunner/requirements_firefox.txt": [
"9e6f6b51ad7bf39181811789f0372a6b085d4c7f",
"support"
@@ -675596,7 +675699,7 @@
"support"
],
"tools/wptrunner/wptrunner/browsers/__init__.py": [
- "f86792d47410f8f574843c13ed86262bdbfafb21",
+ "fdedda44d28dcdd079b059864d9fafc992eff8c0",
"support"
],
"tools/wptrunner/wptrunner/browsers/base.py": [
@@ -675619,6 +675722,10 @@
"c2545de46f0b5def00c273ecfb5a57f0d4029531",
"support"
],
+ "tools/wptrunner/wptrunner/browsers/epiphany.py": [
+ "599ec9f3110f89f5d64effe98130ede930f1fb7c",
+ "support"
+ ],
"tools/wptrunner/wptrunner/browsers/fennec.py": [
"b8e4ebc4aeb9574652ec7dcd83dd0eca6b78aa94",
"support"
@@ -679887,6 +679994,10 @@
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
"support"
],
+ "webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html": [
+ "b5555b0137af4c1c8f6c5578de4bc9c5eedfe405",
+ "testharness"
+ ],
"webaudio/the-audio-api/the-audioparam-interface/audioparam-connect-audioratesignal.html": [
"517d64f3dbb69e610a5ed17475c45f530f749a42",
"testharness"
diff --git a/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini
new file mode 100644
index 00000000000..86715ffc9c2
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/floats-in-table-caption-001.html.ini
@@ -0,0 +1,2 @@
+[floats-in-table-caption-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini b/tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini
index 7203ab0404c..3f98bb1fa20 100644
--- a/tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini
+++ b/tests/wpt/metadata/css/CSS2/positioning/abspos-float-with-inline-container.html.ini
@@ -1,2 +1,2 @@
[abspos-float-with-inline-container.html]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini b/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini
deleted file mode 100644
index b1d1b14db72..00000000000
--- a/tests/wpt/metadata/css/CSS2/text/white-space-002.xht.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[white-space-002.xht]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini b/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini
deleted file mode 100644
index 3d28990c283..00000000000
--- a/tests/wpt/metadata/css/CSS2/visudet/line-height-204.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[line-height-204.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini
deleted file mode 100644
index fb5b6fd0006..00000000000
--- a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[mix-blend-mode-paragraph.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini b/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini
deleted file mode 100644
index f20284a5396..00000000000
--- a/tests/wpt/metadata/css/css-backgrounds/background-repeat/background-repeat-round-roundup.xht.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[background-repeat-round-roundup.xht]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
index 433740c044f..15af52c70e3 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
@@ -329,3 +329,9 @@
[Matching font-weight: '430' should prefer '500' over '400 425']
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
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini
index 94b74b8dd02..9e36490490f 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini
@@ -38,3 +38,6 @@
[Test @font-face matching for weight 420]
expected: FAIL
+ [Test @font-face matching for weight 500]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini
new file mode 100644
index 00000000000..693999d7f9d
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/line-break/line-break-normal-018.xht.ini
@@ -0,0 +1,2 @@
+[line-break-normal-018.xht]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini
new file mode 100644
index 00000000000..bd79bd226f9
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/line-break/line-break-strict-018.xht.ini
@@ -0,0 +1,2 @@
+[line-break-strict-018.xht]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini
new file mode 100644
index 00000000000..ded993140eb
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-001.html.ini
@@ -0,0 +1,2 @@
+[text-transform-full-size-kana-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini
new file mode 100644
index 00000000000..047905d059b
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-002.html.ini
@@ -0,0 +1,2 @@
+[text-transform-full-size-kana-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini
new file mode 100644
index 00000000000..7e9e3e15a50
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-003.html.ini
@@ -0,0 +1,2 @@
+[text-transform-full-size-kana-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini
new file mode 100644
index 00000000000..f90c86d0e3d
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/text-transform/text-transform-full-size-kana-004.html.ini
@@ -0,0 +1,2 @@
+[text-transform-full-size-kana-004.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini
new file mode 100644
index 00000000000..240d1283c3a
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-004.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini
deleted file mode 100644
index 3a512b4a124..00000000000
--- a/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-006.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[word-break-keep-all-006.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
index 86ce5d7e7f6..8850ec200da 100644
--- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
@@ -74,6 +74,3 @@
[opacity end]
expected: FAIL
- [border-top-width end]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini b/tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini
index b6001e8bba9..b49624917df 100644
--- a/tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini
+++ b/tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini
@@ -1,2 +1,2 @@
[parser-sets-attributes-and-children.html]
- expected: CRASH
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
index 1a3993cb103..b935b9c9501 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -2,7 +2,7 @@
type: testharness
[single-byte-decoder.html?document]
- expected: CRASH
+ expected: TIMEOUT
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
expected: FAIL
@@ -32,7 +32,7 @@
[single-byte-decoder.html?XMLHttpRequest]
- expected: CRASH
+ expected: TIMEOUT
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
@@ -55,12 +55,9 @@
expected: FAIL
[windows-1252: iso_8859-1:1987 (XMLHttpRequest)]
- expected: FAIL
-
- [windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1258: cp1258 (XMLHttpRequest)]
+ [windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1256: cp1256 (XMLHttpRequest)]
@@ -96,9 +93,6 @@
[windows-1255: x-cp1255 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1257: x-cp1257 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1253: windows-1253 (XMLHttpRequest)]
expected: TIMEOUT
@@ -123,12 +117,6 @@
[windows-1255: windows-1255 (XMLHttpRequest)]
expected: TIMEOUT
- [x-mac-cyrillic: x-mac-cyrillic (XMLHttpRequest)]
- expected: TIMEOUT
-
- [windows-1256: windows-1256 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1256: x-cp1256 (XMLHttpRequest)]
expected: TIMEOUT
@@ -141,21 +129,12 @@
[windows-1254: cp1254 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1252: iso88591 (XMLHttpRequest)]
- expected: TIMEOUT
-
- [windows-1252: iso_8859-1 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1252: latin1 (XMLHttpRequest)]
expected: TIMEOUT
[windows-1253: cp1253 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1252: iso8859-1 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1252: x-cp1252 (XMLHttpRequest)]
expected: TIMEOUT
@@ -165,10 +144,10 @@
[windows-1252: windows-1252 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1252: iso-ir-100 (XMLHttpRequest)]
+ [windows-1252: us-ascii (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1252: us-ascii (XMLHttpRequest)]
+ [windows-1252: iso-8859-1 (XMLHttpRequest)]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 18f786d4963..ea271a945eb 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,3 +312,15 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
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
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
index dc2e45516de..385376c7321 100644
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_5.html]
+[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
index 4886d2227be..3352221fdd7 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
@@ -4,7 +4,7 @@
expected: FAIL
[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]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
deleted file mode 100644
index 8cc42056d34..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[non-active-document.html]
- [DOMParser]
- expected: FAIL
-
- [createHTMLDocument]
- expected: FAIL
-
- [<template>]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
new file mode 100644
index 00000000000..9e522297c94
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
@@ -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
+
diff --git a/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html.ini b/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html.ini
index 6c08b446ac6..b6e408b9b86 100644
--- a/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html.ini
+++ b/tests/wpt/metadata/offscreen-canvas/the-offscreen-canvas/offscreencanvas.commit.w.html.ini
@@ -1,4 +1,5 @@
[offscreencanvas.commit.w.html]
+ expected: ERROR
[Test that calling OffscreenCanvas's commit pushes its contents to its placeholder.]
expected: FAIL
diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
index 7725b118e9d..99a24216c88 100644
--- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
+++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
@@ -12,6 +12,3 @@
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
expected: TIMEOUT
- [Verifies the resolution of performance.now() is at least 5 microseconds.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/resource-timing/redirects.sub.html.ini b/tests/wpt/metadata/resource-timing/redirects.sub.html.ini
new file mode 100644
index 00000000000..be00d330226
--- /dev/null
+++ b/tests/wpt/metadata/resource-timing/redirects.sub.html.ini
@@ -0,0 +1,4 @@
+[redirects.sub.html]
+ [Testing resource entries]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/resource-timing/resource_timing_buffer_full_eventually.html.ini b/tests/wpt/metadata/resource-timing/resource_timing_buffer_full_eventually.html.ini
deleted file mode 100644
index 0a73b6ac31c..00000000000
--- a/tests/wpt/metadata/resource-timing/resource_timing_buffer_full_eventually.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[resource_timing_buffer_full_eventually.html]
- expected: CRASH
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index 66bd350083b..a56bad443a2 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,4 +1,5 @@
[realtimeanalyser-fft-scaling.html]
+ expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html.ini
new file mode 100644
index 00000000000..6c0e19ae401
--- /dev/null
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html.ini
@@ -0,0 +1,2 @@
+[audioparam-close.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
index bf2a1d61bab..bfd4d6dd2d6 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/import-in-moduleworker.html.ini
@@ -1,4 +1,5 @@
[import-in-moduleworker.html]
+ expected: ERROR
[Base URL in module dedicated workers: import]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
index 333edb3a26e..650c91da4a6 100644
--- a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
+++ b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini
@@ -1,4 +1,5 @@
[sharedworker-in-worker.html]
+ expected: ERROR
[Base URL in workers: new SharedWorker()]
expected: FAIL
diff --git a/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
new file mode 100644
index 00000000000..dbea4f293ad
--- /dev/null
+++ b/tests/wpt/mozilla/meta/css/transition_calc_implicit.html.ini
@@ -0,0 +1,2 @@
+[transition_calc_implicit.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/mozilla/meta/mozilla/scroll_root.html.ini b/tests/wpt/mozilla/meta/mozilla/scroll_root.html.ini
deleted file mode 100644
index ef9d00edd6e..00000000000
--- a/tests/wpt/mozilla/meta/mozilla/scroll_root.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[scroll_root.html]
- expected: FAIL
diff --git a/tests/wpt/web-platform-tests/async-local-storage/META.yml b/tests/wpt/web-platform-tests/async-local-storage/META.yml
deleted file mode 100644
index 1bbe9e5ac60..00000000000
--- a/tests/wpt/web-platform-tests/async-local-storage/META.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-spec: https://domenic.github.io/async-local-storage/
-suggested_reviewers:
- - domenic
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-image-first-line.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-image-first-line.html
index c8dee7050b6..206ff68d173 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-image-first-line.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-image-first-line.html
@@ -1,6 +1,9 @@
<!DOCTYPE html>
-<title>CSS Test: background-image applicability to ::first-letter</title>
-<link rel="help" href="http://www.w3.org/TR/css3-background/">
+<html class="reftest-wait">
+<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="match" href="reference/background-image-first-line-ref.html">
<meta name="flags" content="ahem image">
@@ -17,3 +20,11 @@
</style>
<p>Test passes if cat image is visible.</p>
<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> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-inline-dynamic-001-ref.html b/tests/wpt/web-platform-tests/css/css-display/display-inline-dynamic-001-ref.html
new file mode 100644
index 00000000000..8b5f5015f9e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-inline-dynamic-001-ref.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>
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-inline-dynamic-001.html b/tests/wpt/web-platform-tests/css/css-display/display-inline-dynamic-001.html
new file mode 100644
index 00000000000..7df697f940d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-inline-dynamic-001.html
@@ -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>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-tree-abiding.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-tree-abiding.html
new file mode 100644
index 00000000000..c11da7d12de
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/interaction-with-tree-abiding.html
@@ -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>
diff --git a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event-manual.html b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event-manual.html
new file mode 100644
index 00000000000..73a3ff667ea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-event-manual.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>
diff --git a/tests/wpt/web-platform-tests/kv-storage/META.yml b/tests/wpt/web-platform-tests/kv-storage/META.yml
new file mode 100644
index 00000000000..bf4a1e6e8b4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/kv-storage/META.yml
@@ -0,0 +1,3 @@
+spec: https://wicg.github.io/kv-storage/
+suggested_reviewers:
+ - domenic
diff --git a/tests/wpt/web-platform-tests/async-local-storage/api-surface.tentative.https.html b/tests/wpt/web-platform-tests/kv-storage/api-surface.https.html
index 927871a8961..65452f55be0 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/api-surface.tentative.https.html
+++ b/tests/wpt/web-platform-tests/kv-storage/api-surface.https.html
@@ -1,14 +1,14 @@
<!DOCTYPE html>
<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/testharnessreport.js"></script>
<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 { testWithArea } from "./helpers/als-tests.js";
+import { testWithArea } from "./helpers/kvs-tests.js";
test(() => {
classAssert.isConstructor(StorageArea);
diff --git a/tests/wpt/web-platform-tests/async-local-storage/helpers/class-assert.js b/tests/wpt/web-platform-tests/kv-storage/helpers/class-assert.js
index 31b25cab9f2..31b25cab9f2 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/helpers/class-assert.js
+++ b/tests/wpt/web-platform-tests/kv-storage/helpers/class-assert.js
diff --git a/tests/wpt/web-platform-tests/async-local-storage/helpers/equality-asserters.js b/tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js
index ad4623c179d..ad4623c179d 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/helpers/equality-asserters.js
+++ b/tests/wpt/web-platform-tests/kv-storage/helpers/equality-asserters.js
diff --git a/tests/wpt/web-platform-tests/async-local-storage/helpers/als-tests.js b/tests/wpt/web-platform-tests/kv-storage/helpers/kvs-tests.js
index 28087abf811..0ffe71fad78 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/helpers/als-tests.js
+++ b/tests/wpt/web-platform-tests/kv-storage/helpers/kvs-tests.js
@@ -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";
export function testWithArea(testFn, description) {
diff --git a/tests/wpt/web-platform-tests/async-local-storage/key-types.tentative.https.html b/tests/wpt/web-platform-tests/kv-storage/key-types.https.html
index c3985b7711f..0dc930258f8 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/key-types.tentative.https.html
+++ b/tests/wpt/web-platform-tests/kv-storage/key-types.https.html
@@ -1,12 +1,12 @@
<!DOCTYPE html>
<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/testharnessreport.js"></script>
<script type="module">
-import { testWithArea, testVariousMethods } from "./helpers/als-tests.js";
+import { testWithArea, testVariousMethods } from "./helpers/kvs-tests.js";
import { assertEqualDates, assertEqualArrayBuffers, assertArrayBufferEqualsABView }
from "./helpers/equality-asserters.js";
diff --git a/tests/wpt/web-platform-tests/async-local-storage/non-secure-context-dynamic-import.tentative.html b/tests/wpt/web-platform-tests/kv-storage/non-secure-context-dynamic-import.html
index 9270f6c82fa..6ccbf84ba1d 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/non-secure-context-dynamic-import.tentative.html
+++ b/tests/wpt/web-platform-tests/kv-storage/non-secure-context-dynamic-import.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<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/testharnessreport.js"></script>
@@ -13,6 +13,6 @@ test(() => {
}, "Prerequisite check");
promise_test(t => {
- return promise_rejects(t, "SecurityError", import("std:async-local-storage"));
+ return promise_rejects(t, "SecurityError", import("std:kv-storage"));
});
</script>
diff --git a/tests/wpt/web-platform-tests/async-local-storage/non-secure-context-import-statement.tentative.html b/tests/wpt/web-platform-tests/kv-storage/non-secure-context-import-statement.html
index 879729696db..fda02aadf14 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/non-secure-context-import-statement.tentative.html
+++ b/tests/wpt/web-platform-tests/kv-storage/non-secure-context-import-statement.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<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/testharnessreport.js"></script>
@@ -23,5 +23,5 @@ async_test(t => {
</script>
<script type="module">
-import "std:async-local-storage";
+import "std:kv-storage";
</script>
diff --git a/tests/wpt/web-platform-tests/async-local-storage/non-secure-context-script-element.tentative.html b/tests/wpt/web-platform-tests/kv-storage/non-secure-context-script-element.html
index feeddafc8da..66802b1254e 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/non-secure-context-script-element.tentative.html
+++ b/tests/wpt/web-platform-tests/kv-storage/non-secure-context-script-element.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<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/testharnessreport.js"></script>
@@ -22,4 +22,4 @@ async_test(t => {
});
</script>
-<script type="module" src="std:async-local-storage"></script>
+<script type="module" src="std:kv-storage"></script>
diff --git a/tests/wpt/web-platform-tests/async-local-storage/storage-smoke-test.tentative.https.html b/tests/wpt/web-platform-tests/kv-storage/storage-smoke-test.https.html
index f978480ff2b..df6fd8c8181 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/storage-smoke-test.tentative.https.html
+++ b/tests/wpt/web-platform-tests/kv-storage/storage-smoke-test.https.html
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<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/testharnessreport.js"></script>
<script type="module">
-import { testVariousMethodsWithDefaultArea } from "./helpers/als-tests.js";
-import { storage } from "std:async-local-storage";
+import { testVariousMethodsWithDefaultArea } from "./helpers/kvs-tests.js";
+import { storage } from "std:kv-storage";
test(() => {
const { backingStore } = storage;
@@ -17,7 +17,7 @@ test(() => {
assert_own_property(backingStore, "version");
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.version, 1);
}, "backingStore returns the correct object");
diff --git a/tests/wpt/web-platform-tests/async-local-storage/undefined-value.https.html b/tests/wpt/web-platform-tests/kv-storage/undefined-value.https.html
index c76c32f9507..89da5d5c44f 100644
--- a/tests/wpt/web-platform-tests/async-local-storage/undefined-value.https.html
+++ b/tests/wpt/web-platform-tests/kv-storage/undefined-value.https.html
@@ -1,14 +1,14 @@
<!DOCTYPE html>
<meta charset="utf-8">
-<title>Async local storage: undefined keys</title>
-<!-- https://github.com/domenic/async-local-storage/commit/5bf31109f37d1371f619ea33d0e2391f10e8b8f5 -->
+<title>KV Storage: undefined values</title>
+<!-- https://github.com/wicg/kv-storage/commit/5bf31109f37d1371f619ea33d0e2391f10e8b8f5 -->
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script type="module">
-import { StorageArea } from "std:async-local-storage";
-import { testWithArea } from "./helpers/als-tests.js";
+import { StorageArea } from "std:kv-storage";
+import { testWithArea } from "./helpers/kvs-tests.js";
testWithArea(async (area) => {
assert_equals(await area.get("key"), undefined);
diff --git a/tests/wpt/web-platform-tests/mathml/META.yml b/tests/wpt/web-platform-tests/mathml/META.yml
index 6b347c12d89..a410f582f0a 100644
--- a/tests/wpt/web-platform-tests/mathml/META.yml
+++ b/tests/wpt/web-platform-tests/mathml/META.yml
@@ -1,3 +1,3 @@
-spec: https://w3c.github.io/mathml/
+spec: http://www.mathml-association.org/MathMLinHTML5/
suggested_reviewers:
- fred-wang
diff --git a/tests/wpt/web-platform-tests/portals/portal-activate-event.html b/tests/wpt/web-platform-tests/portals/portal-activate-event.html
index ed5602667bb..ac1505d2a5b 100644
--- a/tests/wpt/web-platform-tests/portals/portal-activate-event.html
+++ b/tests/wpt/web-platform-tests/portals/portal-activate-event.html
@@ -4,11 +4,29 @@
<script src="/resources/testharnessreport.js"></script>
<script>
async_test(function(t) {
- var bc = new BroadcastChannel("test");
+ var bc = new BroadcastChannel("test-eventlistener");
bc.onmessage = t.step_func_done(function(e) {
assert_equals(e.data, "passed");
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.");
+
+ 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>
diff --git a/tests/wpt/web-platform-tests/portals/resources/portal-activate-event-portal.html b/tests/wpt/web-platform-tests/portals/resources/portal-activate-event-portal.html
index d0eebcd12e6..b2759c3701a 100644
--- a/tests/wpt/web-platform-tests/portals/resources/portal-activate-event-portal.html
+++ b/tests/wpt/web-platform-tests/portals/resources/portal-activate-event-portal.html
@@ -1,13 +1,23 @@
<!DOCTYPE html>
<title>Tests that the PortalActivateEvent is dispatched when a portal is activated</title>
<script>
- window.addEventListener("portalactivate", function(e) {
- var bc = new BroadcastChannel("test");
+ var test = (new URL(location)).searchParams.get("test");
+
+ function portalActivate(e) {
+ var bc = new BroadcastChannel("test-" + test);
bc.postMessage("passed");
bc.close();
- });
+ }
+
+ 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");
+ var bc = new BroadcastChannel("portal-" + test);
bc.postMessage("loaded");
bc.close();
</script>
diff --git a/tests/wpt/web-platform-tests/portals/resources/portal-activate-event-window.html b/tests/wpt/web-platform-tests/portals/resources/portal-activate-event-window.html
index 1994dc3fad1..cf09caebc0f 100644
--- a/tests/wpt/web-platform-tests/portals/resources/portal-activate-event-window.html
+++ b/tests/wpt/web-platform-tests/portals/resources/portal-activate-event-window.html
@@ -1,11 +1,17 @@
<!DOCTYPE html>
<script>
- var bc = new BroadcastChannel("portal");
- bc.onmessage = function(e) {
- document.querySelector("portal").activate();
- bc.close();
+ window.onload = function(e) {
+ var test = (new URL(location)).searchParams.get("test");
+ var portal = document.createElement("portal");
+ 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>
<body>
- <portal src="portal-activate-event-portal.html"></portal>
</body>
diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_redirects.html b/tests/wpt/web-platform-tests/resource-timing/redirects.sub.html
index 606662afda4..0e3f405e14b 100644
--- a/tests/wpt/web-platform-tests/resource-timing/resource_redirects.html
+++ b/tests/wpt/web-platform-tests/resource-timing/redirects.sub.html
@@ -11,16 +11,22 @@
<script src="resources/webperftestharnessextension.js"></script>
<script>
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() {
const iframe_content =
- '<link rel="stylesheet" href="/common/redirect.py?location=/resource-timing/resources/resource_timing_test0.css"></link>' +
- '<img src="/common/redirect.py?location=/resource-timing/resources/blue.png"></img>' +
- '<iframe src="/common/redirect.py?location=/resource-timing/resources/blank_page_green.htm"></iframe>' +
- '<script src="/common/redirect.py?location=/resource-timing/resources/empty_script.js"></scr' + 'ipt>' +
+ '<link rel="stylesheet" href="/' + url_prefix + 'resource_timing_test0.css"></link>' +
+ '<img src="/' + url_prefix + 'blue.png"></img>' +
+ '<iframe src="/' + url_prefix + 'blank_page_green.htm"></iframe>' +
+ '<script src="/' + url_prefix + 'empty_script.js"></scr' + 'ipt>' +
'<scr' + 'ipt>' +
'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();' +
+ 'const xhr2 = new XMLHttpRequest;' +
+ 'xhr2.open("GET", "/' + https_url_prefix + 'blank_page_green.htm?id=xhr", false);' +
+ 'xhr2.send();' +
'</scr' + 'ipt>';
iframe = document.getElementById('frameContext');
iframe.contentWindow.document.write(iframe_content);
@@ -30,14 +36,15 @@ function onload_test() {
const entries = context.getEntriesByType('resource');
const index = window.location.pathname.lastIndexOf('resource-timing');
- const pathname = window.location.pathname.substring(0, index) +
- 'common/redirect.py?location=/resource-timing/resources/';
+ const pathname = window.location.pathname.substring(0, index) + url_prefix;
+ const https_pathname = window.location.pathname.substring(0, index) + https_url_prefix;
let expected_entries = {};
expected_entries[pathname + 'resource_timing_test0.css'] = 'link';
expected_entries[pathname + 'blue.png'] = 'img';
expected_entries[pathname + 'blank_page_green.htm'] = 'iframe';
expected_entries[pathname + 'empty_script.js'] = 'script';
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);
}
diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/blank_page_green.htm.headers b/tests/wpt/web-platform-tests/resource-timing/resources/blank_page_green.htm.headers
new file mode 100644
index 00000000000..cb762eff806
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resource-timing/resources/blank_page_green.htm.headers
@@ -0,0 +1 @@
+Access-Control-Allow-Origin: *
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/xhr-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/xhr-iframe.html
new file mode 100644
index 00000000000..bfdfac69712
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/xhr-iframe.html
@@ -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>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/xhr-response-url.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/xhr-response-url.https.html
new file mode 100644
index 00000000000..9f00cdd1830
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/xhr-response-url.https.html
@@ -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>
diff --git a/tests/wpt/web-platform-tests/storage/estimate-usage-details-service-workers.https.tentative.window.js b/tests/wpt/web-platform-tests/storage/estimate-usage-details-service-workers.https.tentative.window.js
new file mode 100644
index 00000000000..cf3a2aa9430
--- /dev/null
+++ b/tests/wpt/web-platform-tests/storage/estimate-usage-details-service-workers.https.tentative.window.js
@@ -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');
diff --git a/tests/wpt/web-platform-tests/tools/manifest/tests/test_manifest.py b/tests/wpt/web-platform-tests/tools/manifest/tests/test_manifest.py
index 010a0c0a00a..8f649f1d098 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/tests/test_manifest.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/tests/test_manifest.py
@@ -66,8 +66,7 @@ def sourcefile_strategy(draw):
@h.given(hs.lists(sourcefile_strategy(),
- min_size=1, average_size=10, max_size=1000,
- unique_by=lambda x: x.rel_path))
+ min_size=1, max_size=1000, unique_by=lambda x: x.rel_path))
@h.example([SourceFileWithTest("a", "0"*40, item.ConformanceCheckerTest)])
def test_manifest_to_json(s):
m = manifest.Manifest()
@@ -83,8 +82,7 @@ def test_manifest_to_json(s):
@h.given(hs.lists(sourcefile_strategy(),
- min_size=1, average_size=10,
- unique_by=lambda x: x.rel_path))
+ min_size=1, unique_by=lambda x: x.rel_path))
@h.example([SourceFileWithTest("a", "0"*40, item.TestharnessTest)])
@h.example([SourceFileWithTest("a", "0"*40, item.RefTest, [("/aa", "==")])])
def test_manifest_idempotent(s):
diff --git a/tests/wpt/web-platform-tests/tools/tox.ini b/tests/wpt/web-platform-tests/tools/tox.ini
index fc66c6c2ac3..3b0c6d172bc 100644
--- a/tests/wpt/web-platform-tests/tools/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/tox.ini
@@ -8,7 +8,6 @@ deps =
pytest-cov
mock
hypothesis
- pytest-catchlog
commands = pytest --cov {posargs}
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index 71d1e61918a..ea8cc04f7d4 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -758,3 +758,32 @@ class WebKit(Browser):
def version(self, binary=None, webdriver_binary=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
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index 44cf3137d41..633d6b254db 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -422,7 +422,7 @@ class Servo(BrowserSetup):
binary = self.browser.find_binary(self.venv.path, 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
@@ -442,6 +442,29 @@ class WebKit(BrowserSetup):
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 = {
"fennec": Fennec,
"firefox": Firefox,
@@ -456,6 +479,7 @@ product_setup = {
"sauce": Sauce,
"opera": Opera,
"webkit": WebKit,
+ "epiphany": Epiphany,
}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_epiphany.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_epiphany.txt
new file mode 100644
index 00000000000..9115b7ac4e8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_epiphany.txt
@@ -0,0 +1 @@
+mozprocess == 0.26
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
index f86792d4741..fdedda44d28 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py
@@ -34,4 +34,5 @@ product_list = ["chrome",
"servo",
"servodriver",
"opera",
- "webkit"]
+ "webkit",
+ "epiphany"]
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/epiphany.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/epiphany.py
new file mode 100644
index 00000000000..599ec9f3110
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/epiphany.py
@@ -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)
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html
new file mode 100644
index 00000000000..b5555b0137a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-close.html
@@ -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>