From 4851e4e2b9208439ae22403b7c3d9b29b5df5645 Mon Sep 17 00:00:00 2001
From: WPT Sync Bot
Date: Thu, 7 Mar 2019 20:52:27 -0500
Subject: [PATCH] Update web-platform-tests to revision
8a14626934f5748a4ea6210847a02c0d8bbc8560
---
.../FileAPI/url/url-with-fetch.any.js.ini | 6 -
tests/wpt/metadata/MANIFEST.json | 856 ++++++++++++++++--
.../scroll-behavior-smooth.html.ini | 3 -
.../tainting-feblend-001.html.ini | 2 +
.../tainting-feblend-002.html.ini | 2 +
.../tainting-fecomponenttransfer-001.html.ini | 2 +
.../tainting-fecomponenttransfer-002.html.ini | 2 +
.../tainting-fecomposite-001.html.ini | 2 +
.../tainting-fecomposite-002.html.ini | 2 +
.../tainting-feconvolvematrix-001.html.ini | 2 +
.../tainting-feconvolvematrix-002.html.ini | 2 +
.../tainting-fediffuselighting-001.html.ini | 2 +
.../tainting-fediffuselighting-002.html.ini | 2 +
.../tainting-fediffuselighting-003.html.ini | 2 +
...ainting-fediffuselighting-dynamic.html.ini | 2 +
.../tainting-fedisplacementmap-001.html.ini | 2 +
.../tainting-fedisplacementmap-002.html.ini | 2 +
.../tainting-fedropshadow-001.html.ini | 2 +
.../tainting-fedropshadow-002.html.ini | 2 +
.../tainting-fedropshadow-003.html.ini | 2 +
.../tainting-feflood-001.html.ini | 2 +
.../tainting-feflood-002.html.ini | 2 +
.../tainting-feflood-dynamic.html.ini | 2 +
.../tainting-fegaussianblur-001.html.ini | 2 +
.../tainting-fegaussianblur-002.html.ini | 2 +
.../tainting-femorphology-001.html.ini | 2 +
.../tainting-femorphology-002.html.ini | 2 +
.../tainting-feoffset-001.html.ini | 2 +
.../tainting-feoffset-002.html.ini | 2 +
.../tainting-fespecularlighting-001.html.ini | 2 +
.../tainting-fespecularlighting-002.html.ini | 2 +
.../tainting-fespecularlighting-003.html.ini | 2 +
.../tainting-fetile-001.html.ini | 2 +
.../tainting-fetile-002.html.ini | 2 +
.../encoding/single-byte-decoder.html.ini | 20 +-
.../fetch/content-type/response.window.js.ini | 6 +
.../nosniff/parsing-nosniff.window.js.ini | 6 +
.../fetch-sw.https.tentative.html.ini | 4 +
.../fetch.tentative.html.ini | 4 +
...-return-value-undefined.tentative.html.ini | 5 +
...ml.ini => traverse_the_history_4.html.ini} | 2 +-
.../traverse_the_history_5.html.ini | 4 -
.../closed-attribute.window.js.ini | 13 +
.../embedded-opener-remove-frame.html.ini | 1 +
.../the-details-element/toggleEvent.html.ini | 7 -
.../script-onerror-insertion-point-2.html.ini | 2 +
.../document-write/iframe_005.html.ini | 4 +
.../realtimeanalyser-fft-scaling.html.ini | 1 +
.../test_paint_worklet_timeout.html.ini | 1 -
.../acid/acid2/px-reference.html | 272 ++++++
.../acid/acid2/reftest.html | 14 +-
...KeyframeEffect-getKeyframes.tentative.html | 4 +-
.../range-percent-intrinsic-size-1-ref.html | 8 -
.../range-percent-intrinsic-size-1.html | 8 -
.../range-percent-intrinsic-size-2a-ref.html | 86 ++
.../range-percent-intrinsic-size-2a.html | 94 ++
.../text-decoration-underline-ref.html | 2 +
.../text-decoration-propagation-shadow.html | 16 +
.../parsing/transform-valid.html | 2 +-
.../reference/green-blue-stripe-100x100.html | 2 +
.../filter-effects/tainting-feblend-001.html | 24 +
.../filter-effects/tainting-feblend-002.html | 18 +
.../tainting-fecomponenttransfer-001.html | 24 +
.../tainting-fecomponenttransfer-002.html | 18 +
.../tainting-fecomposite-001.html | 24 +
.../tainting-fecomposite-002.html | 18 +
.../tainting-feconvolvematrix-001.html | 24 +
.../tainting-feconvolvematrix-002.html | 18 +
.../tainting-fediffuselighting-001.html | 25 +
.../tainting-fediffuselighting-002.html | 21 +
.../tainting-fediffuselighting-003.html | 20 +
.../tainting-fediffuselighting-dynamic.html | 30 +
.../tainting-fedisplacementmap-001.html | 25 +
.../tainting-fedisplacementmap-002.html | 19 +
.../tainting-fedropshadow-001.html | 25 +
.../tainting-fedropshadow-002.html | 20 +
.../tainting-fedropshadow-003.html | 21 +
.../filter-effects/tainting-feflood-001.html | 21 +
.../filter-effects/tainting-feflood-002.html | 16 +
.../tainting-feflood-dynamic.html | 25 +
.../tainting-fegaussianblur-001.html | 24 +
.../tainting-fegaussianblur-002.html | 18 +
.../tainting-femorphology-001.html | 24 +
.../tainting-femorphology-002.html | 18 +
.../filter-effects/tainting-feoffset-001.html | 24 +
.../filter-effects/tainting-feoffset-002.html | 18 +
.../tainting-fespecularlighting-001.html | 26 +
.../tainting-fespecularlighting-002.html | 21 +
.../tainting-fespecularlighting-003.html | 20 +
.../filter-effects/tainting-fetile-001.html | 24 +
.../filter-effects/tainting-fetile-002.html | 18 +
.../docs/_writing-tests/reftests.md | 65 +-
.../fetch-sw.https.tentative.html | 63 ++
.../fetch.tentative.html | 20 +-
.../fetch/stale-while-revalidate/stale-css.py | 2 +
.../stale-while-revalidate/stale-image.py | 2 +
.../stale-while-revalidate/stale-script.py | 2 +
.../stale-while-revalidate/sw-intercept.js | 14 +
.../closed-attribute.window.js | 69 ++
.../the-window-object/support/closed.html | 12 +
.../windows/embedded-opener-remove-frame.html | 76 +-
.../img-with-containment-and-size-ref.html | 8 +
.../img-with-containment-and-size.html | 22 +
.../import-maps/resources/resolving.js | 24 +
.../reftest/reftest_fuzzy.html.ini | 2 +
.../infrastructure/reftest/fuzzy-ref-1.html | 9 +
.../infrastructure/reftest/reftest_fuzzy.html | 13 +
.../reftest/reftest_fuzzy_1.html | 12 +
.../web-platform-tests/interfaces/web-nfc.idl | 1 +
.../cache-storage/script-tests/cache-match.js | 58 ++
.../registration-mime-types.https.html | 1 +
.../shadow-trees/text-decoration-001-ref.html | 13 -
.../shadow-trees/text-decoration-001.html | 22 -
.../web-platform-tests/tools/manifest/item.py | 12 +-
.../tools/manifest/manifest.py | 3 +-
.../tools/manifest/sourcefile.py | 77 +-
.../tools/manifest/tests/test_sourcefile.py | 38 +
.../tools/wptrunner/docs/expectation.rst | 35 +-
.../tools/wptrunner/requirements.txt | 2 +
.../tools/wptrunner/wptrunner/environment.py | 6 +-
.../wptrunner/wptrunner/executors/base.py | 58 +-
.../wptrunner/executors/executormarionette.py | 9 +-
.../wptrunner/executors/executorwebdriver.py | 6 +-
.../wptrunner/wptrunner/manifestexpected.py | 113 +++
.../tools/wptrunner/wptrunner/metadata.py | 2 +-
.../wptrunner/tests/test_manifestexpected.py | 38 +
.../wptrunner/wptrunner/tests/test_wpttest.py | 29 +
.../wptmanifest/backends/conditional.py | 2 +
.../tools/wptrunner/wptrunner/wpttest.py | 39 +-
.../web-nfc/NFCReader-manual.https.html | 64 ++
.../web-platform-tests/web-nfc/NFCReader.html | 39 +
.../web-nfc/nfc_watch.https.html | 73 --
.../audiocontextoptions.html | 39 +
133 files changed, 3076 insertions(+), 304 deletions(-)
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feblend-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feblend-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fecomposite-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fecomposite-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-003.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-dynamic.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-003.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feflood-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feflood-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feflood-dynamic.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-femorphology-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-femorphology-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feoffset-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-feoffset-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-002.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-003.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fetile-001.html.ini
create mode 100644 tests/wpt/metadata/css/filter-effects/tainting-fetile-002.html.ini
create mode 100644 tests/wpt/metadata/fetch/stale-while-revalidate/fetch-sw.https.tentative.html.ini
create mode 100644 tests/wpt/metadata/fetch/stale-while-revalidate/fetch.tentative.html.ini
create mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini
rename tests/wpt/metadata/html/browsers/history/the-history-interface/{traverse_the_history_3.html.ini => traverse_the_history_4.html.ini} (71%)
delete mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
create mode 100644 tests/wpt/metadata/html/browsers/the-window-object/closed-attribute.window.js.ini
delete mode 100644 tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
create mode 100644 tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
create mode 100644 tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini
create mode 100644 tests/wpt/web-platform-tests/acid/acid2/px-reference.html
create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-2a-ref.html
create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/range-percent-intrinsic-size-2a.html
create mode 100644 tests/wpt/web-platform-tests/css/css-text-decor/reference/text-decoration-underline-ref.html
create mode 100644 tests/wpt/web-platform-tests/css/css-text-decor/text-decoration-propagation-shadow.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/reference/green-blue-stripe-100x100.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-003.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-003.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-dynamic.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-002.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-003.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-001.html
create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-002.html
create mode 100644 tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch-sw.https.tentative.html
create mode 100644 tests/wpt/web-platform-tests/fetch/stale-while-revalidate/sw-intercept.js
create mode 100644 tests/wpt/web-platform-tests/html/browsers/the-window-object/closed-attribute.window.js
create mode 100644 tests/wpt/web-platform-tests/html/browsers/the-window-object/support/closed.html
create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html
create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html
create mode 100644 tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini
create mode 100644 tests/wpt/web-platform-tests/infrastructure/reftest/fuzzy-ref-1.html
create mode 100644 tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy.html
create mode 100644 tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy_1.html
delete mode 100644 tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html
delete mode 100644 tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001.html
create mode 100644 tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_manifestexpected.py
create mode 100644 tests/wpt/web-platform-tests/web-nfc/NFCReader-manual.https.html
create mode 100644 tests/wpt/web-platform-tests/web-nfc/NFCReader.html
delete mode 100644 tests/wpt/web-platform-tests/web-nfc/nfc_watch.https.html
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 3a3d15b8406..947e223fb28 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -14,9 +14,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
- [Revoke blob URL after calling fetch, fetch should succeed]
- expected: FAIL
-
[url-with-fetch.any.html]
[Untitled]
@@ -37,6 +34,3 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
- [Revoke blob URL after calling fetch, fetch should succeed]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 25b0730d62d..988d579088a 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -19177,6 +19177,12 @@
{}
]
],
+ "web-nfc/NFCReader-manual.https.html": [
+ [
+ "web-nfc/NFCReader-manual.https.html",
+ {}
+ ]
+ ],
"web-nfc/nfc_hw_disabled-manual.https.html": [
[
"web-nfc/nfc_hw_disabled-manual.https.html",
@@ -19502,7 +19508,7 @@
"/acid/acid2/reftest.html",
[
[
- "/acid/acid2/reference.html",
+ "/acid/acid2/px-reference.html",
"=="
]
],
@@ -137721,6 +137727,18 @@
{}
]
],
+ "css/css-sizing/range-percent-intrinsic-size-2a.html": [
+ [
+ "/css/css-sizing/range-percent-intrinsic-size-2a.html",
+ [
+ [
+ "/css/css-sizing/range-percent-intrinsic-size-2a-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-sizing/whitespace-and-break.html": [
[
"/css/css-sizing/whitespace-and-break.html",
@@ -138429,6 +138447,18 @@
{}
]
],
+ "css/css-text-decor/text-decoration-propagation-shadow.html": [
+ [
+ "/css/css-text-decor/text-decoration-propagation-shadow.html",
+ [
+ [
+ "/css/css-text-decor/reference/text-decoration-underline-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text-decor/text-decoration-style-multiple.html": [
[
"/css/css-text-decor/text-decoration-style-multiple.html",
@@ -172505,6 +172535,378 @@
{}
]
],
+ "css/filter-effects/tainting-feblend-001.html": [
+ [
+ "/css/filter-effects/tainting-feblend-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-feblend-002.html": [
+ [
+ "/css/filter-effects/tainting-feblend-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fecomponenttransfer-001.html": [
+ [
+ "/css/filter-effects/tainting-fecomponenttransfer-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fecomponenttransfer-002.html": [
+ [
+ "/css/filter-effects/tainting-fecomponenttransfer-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fecomposite-001.html": [
+ [
+ "/css/filter-effects/tainting-fecomposite-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fecomposite-002.html": [
+ [
+ "/css/filter-effects/tainting-fecomposite-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-feconvolvematrix-001.html": [
+ [
+ "/css/filter-effects/tainting-feconvolvematrix-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-feconvolvematrix-002.html": [
+ [
+ "/css/filter-effects/tainting-feconvolvematrix-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fediffuselighting-001.html": [
+ [
+ "/css/filter-effects/tainting-fediffuselighting-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fediffuselighting-002.html": [
+ [
+ "/css/filter-effects/tainting-fediffuselighting-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fediffuselighting-003.html": [
+ [
+ "/css/filter-effects/tainting-fediffuselighting-003.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fediffuselighting-dynamic.html": [
+ [
+ "/css/filter-effects/tainting-fediffuselighting-dynamic.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fedisplacementmap-001.html": [
+ [
+ "/css/filter-effects/tainting-fedisplacementmap-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fedisplacementmap-002.html": [
+ [
+ "/css/filter-effects/tainting-fedisplacementmap-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fedropshadow-001.html": [
+ [
+ "/css/filter-effects/tainting-fedropshadow-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fedropshadow-002.html": [
+ [
+ "/css/filter-effects/tainting-fedropshadow-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fedropshadow-003.html": [
+ [
+ "/css/filter-effects/tainting-fedropshadow-003.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-feflood-001.html": [
+ [
+ "/css/filter-effects/tainting-feflood-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-feflood-002.html": [
+ [
+ "/css/filter-effects/tainting-feflood-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-feflood-dynamic.html": [
+ [
+ "/css/filter-effects/tainting-feflood-dynamic.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fegaussianblur-001.html": [
+ [
+ "/css/filter-effects/tainting-fegaussianblur-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fegaussianblur-002.html": [
+ [
+ "/css/filter-effects/tainting-fegaussianblur-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-femorphology-001.html": [
+ [
+ "/css/filter-effects/tainting-femorphology-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-femorphology-002.html": [
+ [
+ "/css/filter-effects/tainting-femorphology-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-feoffset-001.html": [
+ [
+ "/css/filter-effects/tainting-feoffset-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-feoffset-002.html": [
+ [
+ "/css/filter-effects/tainting-feoffset-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fespecularlighting-001.html": [
+ [
+ "/css/filter-effects/tainting-fespecularlighting-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fespecularlighting-002.html": [
+ [
+ "/css/filter-effects/tainting-fespecularlighting-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fespecularlighting-003.html": [
+ [
+ "/css/filter-effects/tainting-fespecularlighting-003.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fetile-001.html": [
+ [
+ "/css/filter-effects/tainting-fetile-001.html",
+ [
+ [
+ "/css/filter-effects/reference/green-blue-stripe-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/filter-effects/tainting-fetile-002.html": [
+ [
+ "/css/filter-effects/tainting-fetile-002.html",
+ [
+ [
+ "/css/filter-effects/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/mediaqueries/aspect-ratio-001.html": [
[
"/css/mediaqueries/aspect-ratio-001.html",
@@ -193817,6 +194219,18 @@
{}
]
],
+ "html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html": [
+ [
+ "/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html",
+ [
+ [
+ "/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-img-element/sizes/sizes-dynamic-001.html": [
[
"/html/semantics/embedded-content/the-img-element/sizes/sizes-dynamic-001.html",
@@ -194741,6 +195155,70 @@
{}
]
],
+ "infrastructure/reftest/reftest_fuzzy.html": [
+ [
+ "/infrastructure/reftest/reftest_fuzzy.html",
+ [
+ [
+ "/infrastructure/reftest/fuzzy-ref-1.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ [
+ "/infrastructure/reftest/reftest_fuzzy.html",
+ "/infrastructure/reftest/fuzzy-ref-1.html",
+ "=="
+ ],
+ [
+ [
+ 128,
+ 128
+ ],
+ [
+ 100,
+ 100
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "infrastructure/reftest/reftest_fuzzy_1.html": [
+ [
+ "/infrastructure/reftest/reftest_fuzzy_1.html",
+ [
+ [
+ "/infrastructure/reftest/fuzzy-ref-1.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ [
+ "/infrastructure/reftest/reftest_fuzzy_1.html",
+ "/infrastructure/reftest/fuzzy-ref-1.html",
+ "=="
+ ],
+ [
+ [
+ 255,
+ 255
+ ],
+ [
+ 100,
+ 100
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"infrastructure/reftest/reftest_match.html": [
[
"/infrastructure/reftest/reftest_match.html",
@@ -195561,18 +196039,6 @@
{}
]
],
- "shadow-dom/untriaged/shadow-trees/text-decoration-001.html": [
- [
- "/shadow-dom/untriaged/shadow-trees/text-decoration-001.html",
- [
- [
- "/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"shadow-dom/untriaged/styles/not-apply-in-shadow-root-001.html": [
[
"/shadow-dom/untriaged/styles/not-apply-in-shadow-root-001.html",
@@ -203139,6 +203605,11 @@
{}
]
],
+ "acid/acid2/px-reference.html": [
+ [
+ {}
+ ]
+ ],
"acid/acid2/reference.html": [
[
{}
@@ -271124,6 +271595,11 @@
{}
]
],
+ "css/css-sizing/range-percent-intrinsic-size-2a-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-sizing/support/dynamic-available-size-iframe.html": [
[
{}
@@ -271654,6 +272130,11 @@
{}
]
],
+ "css/css-text-decor/reference/text-decoration-underline-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text-decor/reference/text-emphasis-color-001-ref.xht": [
[
{}
@@ -281239,6 +281720,11 @@
{}
]
],
+ "css/filter-effects/reference/green-blue-stripe-100x100.html": [
+ [
+ {}
+ ]
+ ],
"css/filter-effects/reference/svg-feflood-ref.html": [
[
{}
@@ -290719,6 +291205,11 @@
{}
]
],
+ "fetch/stale-while-revalidate/sw-intercept.js": [
+ [
+ {}
+ ]
+ ],
"fonts/AD.woff": [
[
{}
@@ -292964,6 +293455,11 @@
{}
]
],
+ "html/browsers/the-window-object/support/closed.html": [
+ [
+ {}
+ ]
+ ],
"html/browsers/the-window-object/support/noopener-target.html": [
[
{}
@@ -299949,6 +300445,11 @@
{}
]
],
+ "html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html": [
+ [
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-img-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html.headers": [
[
{}
@@ -302629,6 +303130,11 @@
{}
]
],
+ "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini": [
+ [
+ {}
+ ]
+ ],
"infrastructure/metadata/infrastructure/reftest/reftest_match_fail.html.ini": [
[
{}
@@ -302709,6 +303215,11 @@
{}
]
],
+ "infrastructure/reftest/fuzzy-ref-1.html": [
+ [
+ {}
+ ]
+ ],
"infrastructure/reftest/green.html": [
[
{}
@@ -314469,11 +314980,6 @@
{}
]
],
- "shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html": [
- [
- {}
- ]
- ],
"shadow-dom/untriaged/styles/not-apply-in-shadow-root-001-ref.html": [
[
{}
@@ -322529,6 +323035,11 @@
{}
]
],
+ "tools/wptrunner/wptrunner/tests/test_manifestexpected.py": [
+ [
+ {}
+ ]
+ ],
"tools/wptrunner/wptrunner/tests/test_products.py": [
[
{}
@@ -381129,6 +381640,12 @@
{}
]
],
+ "fetch/stale-while-revalidate/fetch-sw.https.tentative.html": [
+ [
+ "fetch/stale-while-revalidate/fetch-sw.https.tentative.html",
+ {}
+ ]
+ ],
"fetch/stale-while-revalidate/fetch.tentative.html": [
[
"fetch/stale-while-revalidate/fetch.tentative.html",
@@ -383279,6 +383796,19 @@
}
]
],
+ "html/browsers/the-window-object/closed-attribute.window.js": [
+ [
+ "html/browsers/the-window-object/closed-attribute.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/get-host-info.sub.js"
+ ]
+ ]
+ }
+ ]
+ ],
"html/browsers/the-window-object/focus.window.js": [
[
"html/browsers/the-window-object/focus.window.html",
@@ -426730,7 +427260,9 @@
"service-workers/service-worker/registration-mime-types.https.html": [
[
"service-workers/service-worker/registration-mime-types.https.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"service-workers/service-worker/registration-scope.https.html": [
@@ -439925,6 +440457,12 @@
{}
]
],
+ "web-nfc/NFCReader.html": [
+ [
+ "web-nfc/NFCReader.html",
+ {}
+ ]
+ ],
"web-nfc/NFCReadingEvent_constructor.https.html": [
[
"web-nfc/NFCReadingEvent_constructor.https.html",
@@ -439960,12 +440498,6 @@
{}
]
],
- "web-nfc/nfc_watch.https.html": [
- [
- "web-nfc/nfc_watch.https.html",
- {}
- ]
- ],
"web-share/canShare-files.https.html": [
[
"web-share/canShare-files.https.html",
@@ -479721,6 +480253,10 @@
"a17f4ecb85ab33ffce52d20e9cc8b1c7c109b0af",
"support"
],
+ "acid/acid2/px-reference.html": [
+ "5a350033e3c974c08f58db8c444ff9e2953de480",
+ "support"
+ ],
"acid/acid2/reference.html": [
"66eed5ae3553c879af28cf8d4b479dac7adfd0f3",
"support"
@@ -479730,7 +480266,7 @@
"support"
],
"acid/acid2/reftest.html": [
- "0f9b9ac023535183a534608e8df4a709ed269b11",
+ "80220cee7699343206378306a9e4c3fc0d048093",
"reftest"
],
"acid/acid2/test.html": [
@@ -566626,7 +567162,7 @@
"testharness"
],
"css/css-animations/KeyframeEffect-getKeyframes.tentative.html": [
- "81b0d18946440a34ed80e064ba9c9dd322d10f69",
+ "efb26e9502471983ef246eaafaaf7a49fd438c67",
"testharness"
],
"css/css-animations/KeyframeEffect-target.tentative.html": [
@@ -598526,11 +599062,11 @@
"testharness"
],
"css/css-sizing/range-percent-intrinsic-size-1-ref.html": [
- "a4419eab319e0732ae9d2ca1422a8154fdf2a781",
+ "9a68590b6389eb9c1fefc2dc37f42b2a60b3b41a",
"support"
],
"css/css-sizing/range-percent-intrinsic-size-1.html": [
- "87399578988a1c09c5d031c9090cdce7ba34c783",
+ "018129aae3a7fcdc127c757d9b4ddba558115d3c",
"reftest"
],
"css/css-sizing/range-percent-intrinsic-size-2-ref.html": [
@@ -598541,6 +599077,14 @@
"e11e2955891f251409e8519abd48f10fb2dd89e9",
"reftest"
],
+ "css/css-sizing/range-percent-intrinsic-size-2a-ref.html": [
+ "815b0a1021cb9113c39fad85b5052429dc74533f",
+ "support"
+ ],
+ "css/css-sizing/range-percent-intrinsic-size-2a.html": [
+ "f2c2431978b1596078f48727da0953f23e1f0d3e",
+ "reftest"
+ ],
"css/css-sizing/support/dynamic-available-size-iframe.html": [
"8b61c876389e1fbd0792dd58763e3e2a3d4ef133",
"support"
@@ -599685,6 +600229,10 @@
"8c0bee6720355c6216ce6f11d27e2f1fb4d4b401",
"support"
],
+ "css/css-text-decor/reference/text-decoration-underline-ref.html": [
+ "2370054a8fbd5cb8c00bfb95401129d01de38d00",
+ "support"
+ ],
"css/css-text-decor/reference/text-emphasis-color-001-ref.xht": [
"8380c197b326fa184369094e75c7748fff209ee2",
"support"
@@ -599809,6 +600357,10 @@
"ea6a0c86c19bb3bb27b04cc0c49d2bdf433c5dbf",
"reftest"
],
+ "css/css-text-decor/text-decoration-propagation-shadow.html": [
+ "ac365ee046666c7e2945d1e76622b38f723cf6a4",
+ "reftest"
+ ],
"css/css-text-decor/text-decoration-serialization.tentative.html": [
"2f7b2f55fea63bbb2c752c4c79e4e3415f1578be",
"testharness"
@@ -606318,7 +606870,7 @@
"testharness"
],
"css/css-transforms/parsing/transform-valid.html": [
- "fbde8eaf2d23306b34125eeeafc66a692eaad301",
+ "e6f10154cb6a1d8b5c9eddbb8f1e7c3b2756554e",
"testharness"
],
"css/css-transforms/parsing/translate-parsing-invalid.html": [
@@ -624461,6 +625013,10 @@
"f718ea6abfbab54333ba674ff0dcd320d8672bcd",
"support"
],
+ "css/filter-effects/reference/green-blue-stripe-100x100.html": [
+ "01546f115d112aa27495b3fd45347b22e30fe7ee",
+ "support"
+ ],
"css/filter-effects/reference/svg-feflood-ref.html": [
"5623b08ecd71b292e698ee249a79b59d0046300f",
"support"
@@ -624689,6 +625245,130 @@
"8c9e3ea05805a5030b8034a7a01e53d4984a39dc",
"testharness"
],
+ "css/filter-effects/tainting-feblend-001.html": [
+ "416f57849a479e01e2f70a489b92fc4f8bf0ecff",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-feblend-002.html": [
+ "3d753413a6cdf44d39d832f3171a8aceb0f6fb6b",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fecomponenttransfer-001.html": [
+ "89c60ba9688b6d680dfa77924531f1ab738e6f65",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fecomponenttransfer-002.html": [
+ "6f29b35ba3144fda4a6fbdce9dee5eaadfca83b5",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fecomposite-001.html": [
+ "ddaa53e1e24c02bba47919dadd572bcb1e146173",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fecomposite-002.html": [
+ "1e68378ac6cc2d6bd5444ea48c12768437ceea1c",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-feconvolvematrix-001.html": [
+ "eda1d7e2fc80346191af68a8b780ada1a70dea99",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-feconvolvematrix-002.html": [
+ "e7ec038fbdd249541af70caa704997f0c8c765f5",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fediffuselighting-001.html": [
+ "bce3a291819a7273ae1926bfe8dd08314ece3a79",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fediffuselighting-002.html": [
+ "773c25bf029940c84f2f9f8d50445a079755a34e",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fediffuselighting-003.html": [
+ "0b7bb4d19af286e29cf7a64c5cc9c5ea89f5c908",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fediffuselighting-dynamic.html": [
+ "89674095a0cab68653690b543b70c3385c69d0fe",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fedisplacementmap-001.html": [
+ "2c99cc4981e71434bef0786e540945d20fec243a",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fedisplacementmap-002.html": [
+ "9648b54bf3dfd90c40a7142f2ce5f4fc04e74608",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fedropshadow-001.html": [
+ "1b3dbb497ce6a1dde712941ed2d0ca0628a55578",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fedropshadow-002.html": [
+ "26fc687d88a08557c279f71db254e3f1acd55c36",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fedropshadow-003.html": [
+ "d42102aa6c58204da2ed37352851428310403206",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-feflood-001.html": [
+ "714e6b992fbd91816366246b3970d4b612f0b339",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-feflood-002.html": [
+ "79ea8dac522df16c3532f620e68b6db8b5216b23",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-feflood-dynamic.html": [
+ "fc9b3354fab77cdcccb10a42e9dac73a35236587",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fegaussianblur-001.html": [
+ "a938c7494fec6fd7024109338b8a31f6cf13dea1",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fegaussianblur-002.html": [
+ "55dabbbdbb34d8f23f78c776f2080f6dd4656a58",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-femorphology-001.html": [
+ "9af566410d2f1aad93efea604280ef4ff680f708",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-femorphology-002.html": [
+ "2c097202ee888444a0b7dcf37564744dcd986771",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-feoffset-001.html": [
+ "8704b693e812388c44eff46a812718fc504dc1ba",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-feoffset-002.html": [
+ "3c04268f5cbedb46a26381ac8f5cdf9e4577e785",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fespecularlighting-001.html": [
+ "c2825258a571c975f0cb6ea64966c2417f763fa7",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fespecularlighting-002.html": [
+ "773b0c7065caffe13462982d7e30dc38c7706ec1",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fespecularlighting-003.html": [
+ "173ed2da9f5ad935ea56ee8649c3a8a87c21eb46",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fetile-001.html": [
+ "c5b955eef85246434a9e884d41e3b0c143608708",
+ "reftest"
+ ],
+ "css/filter-effects/tainting-fetile-002.html": [
+ "ed77301d2ef6675662a5f3b121e2489e699cec10",
+ "reftest"
+ ],
"css/geometry/DOMMatrix-001.html": [
"a8a357bff606925aaa95dce6c4642b81bd8c88ea",
"testharness"
@@ -637118,7 +637798,7 @@
"support"
],
"docs/_writing-tests/reftests.md": [
- "f56a84af3a7915f66f82594f21b5dec2481a9e07",
+ "51016541365e3a4e658a61004b83fcdeecfc680e",
"support"
],
"docs/_writing-tests/rendering.md": [
@@ -644333,12 +645013,16 @@
"20d307e9188405dcec011042487aa2c7354930bf",
"support"
],
+ "fetch/stale-while-revalidate/fetch-sw.https.tentative.html": [
+ "2286739ecf27966d1efedad7c4d4031475693988",
+ "testharness"
+ ],
"fetch/stale-while-revalidate/fetch.tentative.html": [
- "5b9b2dc5de2835d1f4a9f49cc63e0b3f03317698",
+ "33d844fd08f3352bff1677cabf0c1dd06177e40a",
"testharness"
],
"fetch/stale-while-revalidate/stale-css.py": [
- "425c889ac5ec58527e63ab25a4f70558b7daeef3",
+ "9566833e507603a35aadd4de622f388d4f77307f",
"support"
],
"fetch/stale-while-revalidate/stale-css.tentative.html": [
@@ -644346,7 +645030,7 @@
"testharness"
],
"fetch/stale-while-revalidate/stale-image.py": [
- "ce7f0fc782613e0a36e3d0aba0521e45f1ca6bf0",
+ "e0cf94bcd0abc3e2f3aba3ad4448d5f519312335",
"support"
],
"fetch/stale-while-revalidate/stale-image.tentative.html": [
@@ -644354,13 +645038,17 @@
"testharness"
],
"fetch/stale-while-revalidate/stale-script.py": [
- "0f91a9b83486678eabd600ecb6336695e5dd6970",
+ "5ea5987db3dd707b7ab77d11d883c0217705aaf6",
"support"
],
"fetch/stale-while-revalidate/stale-script.tentative.html": [
"8cbb54b7dab3bc9b9e8763c5358a9232d24c1e7f",
"testharness"
],
+ "fetch/stale-while-revalidate/sw-intercept.js": [
+ "dca7de51b0b8c5518276e70ae219b7bc8f869a95",
+ "support"
+ ],
"fonts/AD.woff": [
"3df8ea8efdabd11bc45fdcc6d4f3fec771be6650",
"support"
@@ -647849,6 +648537,10 @@
"a9d42e26dea16afa9743d31aa7b72f3f09e46e68",
"support"
],
+ "html/browsers/the-window-object/closed-attribute.window.js": [
+ "88a3beba6f10b80b0b90acdc0b0f957e1a17cefc",
+ "testharness"
+ ],
"html/browsers/the-window-object/focus.window.js": [
"6ec7feee281e756ae6452e0f9b17d9b93032d010",
"testharness"
@@ -647961,6 +648653,10 @@
"1fb0ed7c1e62da55b890c6434bee6e46637e0209",
"testharness"
],
+ "html/browsers/the-window-object/support/closed.html": [
+ "3b70598e34d0e9b46a8ba2150a1589fecfb90ea8",
+ "support"
+ ],
"html/browsers/the-window-object/support/noopener-target.html": [
"41e197a74630ac70cb34ab2bf164b188767f7218",
"support"
@@ -648254,7 +648950,7 @@
"testharness"
],
"html/browsers/windows/embedded-opener-remove-frame.html": [
- "9bce93f0888ea25d713944efc9c8a4fdcc371da0",
+ "a66f52e5f649a1c473822d58182ee042a862d974",
"testharness"
],
"html/browsers/windows/embedded-opener.html": [
@@ -658389,6 +659085,14 @@
"d26878c9f22d53bb44be515fa9f0ffbb90a71cbd",
"support"
],
+ "html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html": [
+ "56176c4b71eb4960f3e11fd323cc09964ce3f3a9",
+ "support"
+ ],
+ "html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html": [
+ "a095adc7cf6775e9c9b63832c0c5c9df23756b6c",
+ "reftest"
+ ],
"html/semantics/embedded-content/the-img-element/img.complete.html": [
"42113cdd2ff15255292f1ad705355f732a4f137c",
"testharness"
@@ -665038,7 +665742,7 @@
"support"
],
"import-maps/resources/resolving.js": [
- "ec2645e599119ab64949c016076164b40277006c",
+ "0409962e4d7904bd9ddbe8601b7328d8d0ad6d11",
"support"
],
"import-maps/resources/test-helper.js": [
@@ -665205,6 +665909,10 @@
"472b33f7764bde6e2aea7bc2ccd8bf3739babad2",
"support"
],
+ "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini": [
+ "1ab2d770afef92b0af4eaf9153ce5344bbbdc964",
+ "support"
+ ],
"infrastructure/metadata/infrastructure/reftest/reftest_match_fail.html.ini": [
"f3dc3362fac41bbe8ded44589e898ef589cb1a89",
"support"
@@ -665273,6 +665981,10 @@
"c2e9986ad85dde0483a553459964a0345399a782",
"reftest"
],
+ "infrastructure/reftest/fuzzy-ref-1.html": [
+ "e50fc11ef6ea80754e702becfbf675feebe3dbb9",
+ "support"
+ ],
"infrastructure/reftest/green-ref.html": [
"0e145d60b55b3502639d15f10d4d63a6b0f79b7d",
"reftest"
@@ -665329,6 +666041,14 @@
"c8e548c462255638a32c474a177759ff6d7cceaf",
"reftest_node"
],
+ "infrastructure/reftest/reftest_fuzzy.html": [
+ "7429025798151b620dd72db71a46070aafe6c070",
+ "reftest"
+ ],
+ "infrastructure/reftest/reftest_fuzzy_1.html": [
+ "1930fe0ae8fb1aee30e91e691fe6a73ccfc87d0e",
+ "reftest"
+ ],
"infrastructure/reftest/reftest_match.html": [
"333cc6c1ecdf2000e4b118565661761b876a7299",
"reftest"
@@ -666006,7 +666726,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "11a36cde6eb7d2d287310635e867f2fe65f4a4fa",
+ "a5709161bdb45f7a02bdd9b78f73febd8d21e222",
"support"
],
"interfaces/web-share.idl": [
@@ -691934,7 +692654,7 @@
"support"
],
"service-workers/cache-storage/script-tests/cache-match.js": [
- "b2b731cc6546529770c20a0bb5a30168d60b0ec6",
+ "8bf7fda30967fbb4ed25325d49e0cd99fc16df55",
"support"
],
"service-workers/cache-storage/script-tests/cache-matchAll.js": [
@@ -692862,7 +693582,7 @@
"testharness"
],
"service-workers/service-worker/registration-mime-types.https.html": [
- "9ae5f0956fbaff5c2d94c27e3efd5d402acac36a",
+ "1d39ecfb086c4dd665f3350468e892381c44d15a",
"testharness"
],
"service-workers/service-worker/registration-scope.https.html": [
@@ -694881,14 +695601,6 @@
"24d5d016b91a50f1b794c62b81e6ace1d8dd04ba",
"reftest"
],
- "shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html": [
- "8c10d251557cfecbdd2bbb1228db284f0fd4b971",
- "support"
- ],
- "shadow-dom/untriaged/shadow-trees/text-decoration-001.html": [
- "d8def126d64a6c0c9b50677fba0b38e486cef479",
- "reftest"
- ],
"shadow-dom/untriaged/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-001.html": [
"71421481e0739e566ea71e1cf59ba8457ce90197",
"testharness"
@@ -700274,7 +700986,7 @@
"support"
],
"tools/manifest/item.py": [
- "c06daee3e24f07fbe83ab82c916e175832f386ed",
+ "c6363a707013e83e6ece724eee8069078a3413f4",
"support"
],
"tools/manifest/log.py": [
@@ -700282,11 +700994,11 @@
"support"
],
"tools/manifest/manifest.py": [
- "cec777a30c65532441acc33c92d9244657e973ea",
+ "159bed2e747f4b425f246639fb5947ce2d319a98",
"support"
],
"tools/manifest/sourcefile.py": [
- "b5d7cdf8799c98d5b7e00452a54fcd63ccd3e17b",
+ "78843b089b87c111efe24762e7bee55cf44f55ec",
"support"
],
"tools/manifest/tests/__init__.py": [
@@ -700306,7 +701018,7 @@
"support"
],
"tools/manifest/tests/test_sourcefile.py": [
- "7c368a5311838cc9ee3986ccc17fea5f161d003f",
+ "18aa55a63a2695b3f3581e1b7eee5042f5cea051",
"support"
],
"tools/manifest/tests/test_vcs.py": [
@@ -704874,7 +705586,7 @@
"support"
],
"tools/wptrunner/docs/expectation.rst": [
- "6a0c77684a3b83aba88436e84b399fd8fb64e325",
+ "7fe89d943ebdd0cf521d201bff40645fb9b663f7",
"support"
],
"tools/wptrunner/docs/index.rst": [
@@ -704890,7 +705602,7 @@
"support"
],
"tools/wptrunner/requirements.txt": [
- "24a7d3d7e0341472dd032c71d7abfd1f10425ca8",
+ "37f4fde47869bd0c1f30ab12ef96cb5d625b8c9d",
"support"
],
"tools/wptrunner/requirements_chrome.txt": [
@@ -705138,7 +705850,7 @@
"support"
],
"tools/wptrunner/wptrunner/environment.py": [
- "493d3c43fc06ff1e0bc2105a2c86fb851b3f4de9",
+ "6563721caee8288047ac84ef62456ce0723738bc",
"support"
],
"tools/wptrunner/wptrunner/executors/__init__.py": [
@@ -705146,7 +705858,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/base.py": [
- "8958ecfc3bb240ebda2999098f04951d14c90b6e",
+ "5fa30563890cc1d95bc7cd1843c0aeca4dd3e197",
"support"
],
"tools/wptrunner/wptrunner/executors/executorchrome.py": [
@@ -705162,7 +705874,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executormarionette.py": [
- "b70f0ed0b0c2dc9d7dd0fe24934818c0a25f2d3b",
+ "f9fd97b6ba8b88907db2115157407d153b443a82",
"support"
],
"tools/wptrunner/wptrunner/executors/executoropera.py": [
@@ -705186,7 +705898,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
- "73f5fcf84a8e742ea74a4d96760547671d593252",
+ "563252ce2bbfee5a3a92fd39d8c171d8aacdeb18",
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
@@ -705254,7 +705966,7 @@
"support"
],
"tools/wptrunner/wptrunner/manifestexpected.py": [
- "80284bd8a215e73a1140239a9aec1f312d8cacb5",
+ "fb3ef627d94dc643f2e64fb0c7203621214e4267",
"support"
],
"tools/wptrunner/wptrunner/manifestinclude.py": [
@@ -705266,7 +705978,7 @@
"support"
],
"tools/wptrunner/wptrunner/metadata.py": [
- "27d053ce9b62c893ddab37c063c18feeaea10351",
+ "b951ea5b9b43b27d2cf37ccbe17686c780cbd326",
"support"
],
"tools/wptrunner/wptrunner/products.py": [
@@ -705329,6 +706041,10 @@
"37ede150ef0dc81f97da86c638714cab2a8992e2",
"support"
],
+ "tools/wptrunner/wptrunner/tests/test_manifestexpected.py": [
+ "93557108fc7a429b7f0b035e839492538cbf5300",
+ "support"
+ ],
"tools/wptrunner/wptrunner/tests/test_products.py": [
"c3454a0dd8f5590c96d1be450a94fd3452ac8f4c",
"support"
@@ -705346,7 +706062,7 @@
"support"
],
"tools/wptrunner/wptrunner/tests/test_wpttest.py": [
- "f463dd73f2b8ecab628ae27224ff370834fd5575",
+ "6daa59b584738e6366ad6a51298746a235253b66",
"support"
],
"tools/wptrunner/wptrunner/update/__init__.py": [
@@ -705402,7 +706118,7 @@
"support"
],
"tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py": [
- "4eb292efb7508a0aac72f392c1af0e88e07fe5fc",
+ "7ad35756d0c6c34282f3d1a278a40b98a882ae9d",
"support"
],
"tools/wptrunner/wptrunner/wptmanifest/backends/static.py": [
@@ -705450,7 +706166,7 @@
"support"
],
"tools/wptrunner/wptrunner/wpttest.py": [
- "dc1c6b63aefef5ab225bef70e6c3f09e379f60e2",
+ "6a4fa4fdf82dca14e44d8e3c6d63ce2c7e2b56b2",
"support"
],
"tools/wptserve/.gitignore": [
@@ -708945,6 +709661,14 @@
"8a08fe0a70edaebb542a4d2ec3f033476fc8b865",
"testharness"
],
+ "web-nfc/NFCReader-manual.https.html": [
+ "a3171c3544e4640ca35d2a6de451d05cf8aa008c",
+ "manual"
+ ],
+ "web-nfc/NFCReader.html": [
+ "5a0e88433f23d0ca8f71df8d9fcd0c7ebe036345",
+ "testharness"
+ ],
"web-nfc/NFCReadingEvent_constructor.https.html": [
"6cfcc0d3bddae2430152504fce839d1b96b12ce0",
"testharness"
@@ -708993,10 +709717,6 @@
"4168898ad47eca829f173a34f7aa430da7b5e48f",
"manual"
],
- "web-nfc/nfc_watch.https.html": [
- "455b6437a8e1a16dc790adb0956fe72bf909af2c",
- "testharness"
- ],
"web-nfc/resources/nfc_help.js": [
"52d2710fd8173be6f6541b93ae8fa6d9251620f7",
"support"
@@ -709370,7 +710090,7 @@
"testharness"
],
"webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html": [
- "3a11074a41c0918343291505526eaf08a01117a3",
+ "bee1aa835bf64ef31e7bc61e4bc8e9e8d0c43ec3",
"testharness"
],
"webaudio/the-audio-api/the-audiodestinationnode-interface/.gitkeep": [
diff --git a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
index 8e2ceeddfbe..bcd187f508c 100644
--- a/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/scroll-behavior-smooth.html.ini
@@ -6,6 +6,3 @@
[Instant scrolling while doing history navigation.]
expected: FAIL
- [Smooth scrolling while doing history navigation.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feblend-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feblend-001.html.ini
new file mode 100644
index 00000000000..9166e3a6c14
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feblend-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-feblend-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feblend-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feblend-002.html.ini
new file mode 100644
index 00000000000..63ccc99a8df
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feblend-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-feblend-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-001.html.ini
new file mode 100644
index 00000000000..1694e02d5c9
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-fecomponenttransfer-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-002.html.ini
new file mode 100644
index 00000000000..04397518199
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fecomponenttransfer-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-fecomponenttransfer-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-001.html.ini
new file mode 100644
index 00000000000..3c58a0f32ff
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-fecomposite-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-002.html.ini
new file mode 100644
index 00000000000..7c4d29d8ad7
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fecomposite-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-fecomposite-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-001.html.ini
new file mode 100644
index 00000000000..3fa2cd4e419
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-feconvolvematrix-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-002.html.ini
new file mode 100644
index 00000000000..c1860185de0
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feconvolvematrix-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-feconvolvematrix-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-001.html.ini
new file mode 100644
index 00000000000..215d4b1de8f
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-fediffuselighting-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-002.html.ini
new file mode 100644
index 00000000000..bfb1a4daf01
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-fediffuselighting-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-003.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-003.html.ini
new file mode 100644
index 00000000000..7cefa8e7b3d
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-003.html.ini
@@ -0,0 +1,2 @@
+[tainting-fediffuselighting-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-dynamic.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-dynamic.html.ini
new file mode 100644
index 00000000000..267277ae17e
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fediffuselighting-dynamic.html.ini
@@ -0,0 +1,2 @@
+[tainting-fediffuselighting-dynamic.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-001.html.ini
new file mode 100644
index 00000000000..c78e0ede09d
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-fedisplacementmap-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-002.html.ini
new file mode 100644
index 00000000000..9afe3cfb3d7
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fedisplacementmap-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-fedisplacementmap-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-001.html.ini
new file mode 100644
index 00000000000..3abe70d200f
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-fedropshadow-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-002.html.ini
new file mode 100644
index 00000000000..a88aa8d2f47
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-fedropshadow-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-003.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-003.html.ini
new file mode 100644
index 00000000000..7a45c77aa6a
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fedropshadow-003.html.ini
@@ -0,0 +1,2 @@
+[tainting-fedropshadow-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feflood-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feflood-001.html.ini
new file mode 100644
index 00000000000..09f596d8c9c
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feflood-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-feflood-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feflood-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feflood-002.html.ini
new file mode 100644
index 00000000000..03fb3655f0d
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feflood-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-feflood-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feflood-dynamic.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feflood-dynamic.html.ini
new file mode 100644
index 00000000000..ecd011d67f6
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feflood-dynamic.html.ini
@@ -0,0 +1,2 @@
+[tainting-feflood-dynamic.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-001.html.ini
new file mode 100644
index 00000000000..0c7408acab8
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-fegaussianblur-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-002.html.ini
new file mode 100644
index 00000000000..463594ee34d
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fegaussianblur-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-fegaussianblur-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-femorphology-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-femorphology-001.html.ini
new file mode 100644
index 00000000000..c109f64e2d2
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-femorphology-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-femorphology-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-femorphology-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-femorphology-002.html.ini
new file mode 100644
index 00000000000..ff7222639f6
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-femorphology-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-femorphology-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feoffset-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feoffset-001.html.ini
new file mode 100644
index 00000000000..8339cbb3a7c
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feoffset-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-feoffset-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-feoffset-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-feoffset-002.html.ini
new file mode 100644
index 00000000000..c58d4a90afa
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-feoffset-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-feoffset-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-001.html.ini
new file mode 100644
index 00000000000..20a6eb30ba6
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-fespecularlighting-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-002.html.ini
new file mode 100644
index 00000000000..8147dca9a8b
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-fespecularlighting-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-003.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-003.html.ini
new file mode 100644
index 00000000000..190a5559ffc
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fespecularlighting-003.html.ini
@@ -0,0 +1,2 @@
+[tainting-fespecularlighting-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fetile-001.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fetile-001.html.ini
new file mode 100644
index 00000000000..a3c27a8772c
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fetile-001.html.ini
@@ -0,0 +1,2 @@
+[tainting-fetile-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/filter-effects/tainting-fetile-002.html.ini b/tests/wpt/metadata/css/filter-effects/tainting-fetile-002.html.ini
new file mode 100644
index 00000000000..033c30d252b
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/tainting-fetile-002.html.ini
@@ -0,0 +1,2 @@
+[tainting-fetile-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
index 381fcd872fa..7c5a3721677 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -32,7 +32,7 @@
[single-byte-decoder.html?XMLHttpRequest]
- expected: CRASH
+ expected: TIMEOUT
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
@@ -84,12 +84,6 @@
[windows-1255: cp1255 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1254: iso88599 (XMLHttpRequest)]
- expected: TIMEOUT
-
- [windows-1254: iso8859-9 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1255: windows-1255 (XMLHttpRequest)]
expected: TIMEOUT
@@ -111,21 +105,9 @@
[windows-1256: cp1256 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1254: iso-8859-9 (XMLHttpRequest)]
- expected: TIMEOUT
-
- [windows-1254: csisolatin5 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1257: x-cp1257 (XMLHttpRequest)]
expected: TIMEOUT
- [windows-1254: iso-ir-148 (XMLHttpRequest)]
- expected: TIMEOUT
-
- [windows-1256: windows-1256 (XMLHttpRequest)]
- expected: TIMEOUT
-
[windows-1254: iso_8859-9 (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..75eee535970 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,9 @@
[
+
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html
index fbde8eaf2d2..e6f10154cb6 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/transform-valid.html
@@ -39,7 +39,7 @@ test_valid_value("transform", "rotate(90deg)");
test_valid_value("transform", "skew(0)", "skew(0deg)");
test_valid_value("transform", "skew(90deg)");
test_valid_value("transform", "skew(0, -90deg)", "skew(0deg, -90deg)");
-test_valid_value("transform", "skew(90deg, 0)", "skew(90deg, 0deg)");
+test_valid_value("transform", "skew(90deg, 0)", ["skew(90deg)", "skew(90deg, 0deg)"]);
test_valid_value("transform", "skewX(0)", "skewX(0deg)");
test_valid_value("transform", "skewX(90deg)");
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/reference/green-blue-stripe-100x100.html b/tests/wpt/web-platform-tests/css/filter-effects/reference/green-blue-stripe-100x100.html
new file mode 100644
index 00000000000..01546f115d1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/reference/green-blue-stripe-100x100.html
@@ -0,0 +1,2 @@
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-001.html
new file mode 100644
index 00000000000..416f57849a4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-001.html
@@ -0,0 +1,24 @@
+
+feBlend: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-002.html
new file mode 100644
index 00000000000..3d753413a6c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feblend-002.html
@@ -0,0 +1,18 @@
+
+feBlend: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001.html
new file mode 100644
index 00000000000..89c60ba9688
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-001.html
@@ -0,0 +1,24 @@
+
+feComponentTransfer: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002.html
new file mode 100644
index 00000000000..6f29b35ba31
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomponenttransfer-002.html
@@ -0,0 +1,18 @@
+
+feComponentTransfer: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-001.html
new file mode 100644
index 00000000000..ddaa53e1e24
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-001.html
@@ -0,0 +1,24 @@
+
+feComposite: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-002.html
new file mode 100644
index 00000000000..1e68378ac6c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fecomposite-002.html
@@ -0,0 +1,18 @@
+
+feComposite: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001.html
new file mode 100644
index 00000000000..eda1d7e2fc8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-001.html
@@ -0,0 +1,24 @@
+
+feConvolveMatrix: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002.html
new file mode 100644
index 00000000000..e7ec038fbdd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feconvolvematrix-002.html
@@ -0,0 +1,18 @@
+
+feConvolveMatrix: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-001.html
new file mode 100644
index 00000000000..bce3a291819
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-001.html
@@ -0,0 +1,25 @@
+
+feDiffuseLighting: no tainting with regular <color> lighting-color
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-002.html
new file mode 100644
index 00000000000..773c25bf029
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-002.html
@@ -0,0 +1,21 @@
+
+feDiffuseLighting: 'currentcolor' lighting-color taints the primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-003.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-003.html
new file mode 100644
index 00000000000..0b7bb4d19af
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-003.html
@@ -0,0 +1,20 @@
+
+feDiffuseLighting: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic.html
new file mode 100644
index 00000000000..89674095a0c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fediffuselighting-dynamic.html
@@ -0,0 +1,30 @@
+
+
+feDiffuseLighting: tainting state changes dynamically
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001.html
new file mode 100644
index 00000000000..2c99cc4981e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-001.html
@@ -0,0 +1,25 @@
+
+feDisplacementMap: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002.html
new file mode 100644
index 00000000000..9648b54bf3d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedisplacementmap-002.html
@@ -0,0 +1,19 @@
+
+feDisplacementMap: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-001.html
new file mode 100644
index 00000000000..1b3dbb497ce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-001.html
@@ -0,0 +1,25 @@
+
+feDropShadow: no tainting with regular <color> flood-color
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-002.html
new file mode 100644
index 00000000000..26fc687d88a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-002.html
@@ -0,0 +1,20 @@
+
+feDropShadow: 'currentcolor' flood-color taints the primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-003.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-003.html
new file mode 100644
index 00000000000..d42102aa6c5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fedropshadow-003.html
@@ -0,0 +1,21 @@
+
+feDropShadow: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-001.html
new file mode 100644
index 00000000000..714e6b992fb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-001.html
@@ -0,0 +1,21 @@
+
+feFlood: no tainting with regular <color> flood-color
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-002.html
new file mode 100644
index 00000000000..79ea8dac522
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-002.html
@@ -0,0 +1,16 @@
+
+feFlood: 'currentcolor' flood-color taints the primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-dynamic.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-dynamic.html
new file mode 100644
index 00000000000..fc9b3354fab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feflood-dynamic.html
@@ -0,0 +1,25 @@
+
+
+feFlood: tainting state changes dynamically
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-001.html
new file mode 100644
index 00000000000..a938c7494fe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-001.html
@@ -0,0 +1,24 @@
+
+feGaussianBlur: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-002.html
new file mode 100644
index 00000000000..55dabbbdbb3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fegaussianblur-002.html
@@ -0,0 +1,18 @@
+
+feGaussianBlur: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-001.html
new file mode 100644
index 00000000000..9af566410d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-001.html
@@ -0,0 +1,24 @@
+
+feMorphology: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-002.html
new file mode 100644
index 00000000000..2c097202ee8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-femorphology-002.html
@@ -0,0 +1,18 @@
+
+feMorphology: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-001.html
new file mode 100644
index 00000000000..8704b693e81
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-001.html
@@ -0,0 +1,24 @@
+
+feOffset: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-002.html
new file mode 100644
index 00000000000..3c04268f5cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-feoffset-002.html
@@ -0,0 +1,18 @@
+
+feOffset: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-001.html
new file mode 100644
index 00000000000..c2825258a57
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-001.html
@@ -0,0 +1,26 @@
+
+feSpecularLighting: no tainting with regular <color> lighting-color
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-002.html
new file mode 100644
index 00000000000..773b0c7065c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-002.html
@@ -0,0 +1,21 @@
+
+feSpecularLighting: 'currentcolor' lighting-color taints the primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-003.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-003.html
new file mode 100644
index 00000000000..173ed2da9f5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fespecularlighting-003.html
@@ -0,0 +1,20 @@
+
+feSpecularLighting: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-001.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-001.html
new file mode 100644
index 00000000000..c5b955eef85
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-001.html
@@ -0,0 +1,24 @@
+
+feTile: does not taint the filter chain
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-002.html b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-002.html
new file mode 100644
index 00000000000..ed77301d2ef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/tainting-fetile-002.html
@@ -0,0 +1,18 @@
+
+feTile: propagates tainting from tainted input primitive
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md b/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md
index f56a84af3a7..51016541365 100644
--- a/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md
+++ b/tests/wpt/web-platform-tests/docs/_writing-tests/reftests.md
@@ -112,10 +112,67 @@ only guaranteed to be after those events.
## Fuzzy Matching
In some situations a test may have subtle differences in rendering
-compared to the reference due to, e.g., anti-aliasing. This may cause
-the test to pass on some platforms but fail on others. In this case
-some affordance for subtle discrepancies is desirable. However no
-mechanism to allow this has yet been standardized.
+compared to the reference due to, e.g., anti-aliasing. To allow for
+these small differences, we allow tests to specify a fuzziness
+characterised by two parameters, both of which must be specified:
+
+ * A maximum difference in the per-channel color value for any pixel.
+ * A number of total pixels that may be different.
+
+The maximum difference in the per pixel color value is formally
+defined as follows: let Tx,y,c
be the value of
+colour channel `c` at pixel coordinates `x`, `y` in the test image and
+Rx,y,c
be the corresponding value in the
+reference image, and let width
and height
be
+the dimensions of the image in pixels. Then maxDifference =
+maxx=[0,width) y=[0,height), c={r,g,b}(|Tx,y,c -
+Rx,y,c|)
.
+
+To specify the fuzziness in the test file one may add a `` element (or, in the case of more complex tests, to any
+page containing the `` elements). In the simplest
+case this has a `content` attribute containing the parameters above,
+separated by a colon e.g.
+
+```
+
+```
+
+would allow for a difference of exactly 15 / 255 on any color channel
+and 300 exactly pixels total difference. The argument names are optional
+and may be elided; the above is the same as:
+
+```
+
+```
+
+The values may also be given as ranges e.g.
+
+```
+
+```
+
+or
+
+```
+
+```
+
+In this case the maximum pixel difference must be in the range
+`10-15` and the total number of different pixels must be in the range
+`200-300`.
+
+In cases where a single test has multiple possible refs and the
+fuzziness is not the same for all refs, a ref may be specified by
+prefixing the `content` value with the relative url for the ref e.g.
+
+```
+
+```
+
+One meta element is required per reference requiring a unique
+fuzziness value, but any unprefixed value will automatically be
+applied to any ref that doesn't have a more specific value.
## Limitations
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch-sw.https.tentative.html b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch-sw.https.tentative.html
new file mode 100644
index 00000000000..2286739ecf2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch-sw.https.tentative.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+ Stale Revalidation Requests don't get sent to service worker
+
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.tentative.html b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.tentative.html
index 5b9b2dc5de2..33d844fd08f 100644
--- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.tentative.html
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/fetch.tentative.html
@@ -9,12 +9,28 @@ https://github.com/whatwg/fetch/pull/853
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py
index 425c889ac5e..9566833e507 100644
--- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-css.py
@@ -8,6 +8,8 @@ def main(request, response):
if request.GET.first("query", None) != None:
headers = [("Count", count)]
content = ""
+ if count < 2:
+ request.server.stash.put(token, count)
return 200, headers, content
else:
count = count + 1
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py
index ce7f0fc7826..e0cf94bcd0a 100644
--- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.py
@@ -10,6 +10,8 @@ def main(request, response):
if request.GET.first("query", None) != None:
headers = [("Count", count)]
content = ""
+ if count < 2:
+ request.server.stash.put(token, count)
return 200, headers, content
else:
count = count + 1
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py
index 0f91a9b8348..5ea5987db3d 100644
--- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-script.py
@@ -13,6 +13,8 @@ def main(request, response):
if request.GET.first("query", None) != None:
headers = [("Count", count)]
content = ""
+ if count < 2:
+ request.server.stash.put(token, count)
return 200, headers, content
else:
count = count + 1
diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/sw-intercept.js b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/sw-intercept.js
new file mode 100644
index 00000000000..dca7de51b0b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/sw-intercept.js
@@ -0,0 +1,14 @@
+async function broadcast(msg) {
+ for (const client of await clients.matchAll()) {
+ client.postMessage(msg);
+ }
+}
+
+self.addEventListener('fetch', event => {
+ event.waitUntil(broadcast(event.request.url));
+ event.respondWith(fetch(event.request));
+});
+
+self.addEventListener('activate', event => {
+ self.clients.claim();
+});
diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/closed-attribute.window.js b/tests/wpt/web-platform-tests/html/browsers/the-window-object/closed-attribute.window.js
new file mode 100644
index 00000000000..88a3beba6f1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/closed-attribute.window.js
@@ -0,0 +1,69 @@
+// META: script=/common/get-host-info.sub.js
+
+function closedTest(newWindow, closeNewWindowsBrowsingContext) {
+ assert_equals(newWindow.closed, false);
+ closeNewWindowsBrowsingContext();
+ assert_equals(newWindow.closed, true);
+}
+
+test(() => {
+ const frame = document.body.appendChild(document.createElement("iframe"));
+ closedTest(frame.contentWindow, () => frame.remove());
+}, "closed and same-origin nested browsing context");
+
+test(() => {
+ const openee = window.open();
+ closedTest(openee, () => openee.close());
+
+ // close() is a no-op once "is closing" is set
+ openee.close();
+ assert_equals(openee.closed, true);
+}, "closed/close() and same-origin auxiliary browsing context");
+
+const support = new URL("support/closed.html", location.href).pathname;
+[
+ {
+ type: "cross-origin",
+ url: `${get_host_info().HTTP_REMOTE_ORIGIN}${support}`
+ },
+ {
+ type: "cross-site",
+ url: `${get_host_info().HTTP_NOTSAMESITE_ORIGIN}${support}`
+ }
+].forEach(val => {
+ async_test(t => {
+ const frame = document.createElement("iframe"),
+ ident = `${val.type}-nested-bc`;
+ frame.src = `${val.url}?window=parent&ident=${ident}`;
+ const listener = t.step_func(e => {
+ if (e.data === ident) {
+ closedTest(frame.contentWindow, () => frame.remove());
+ self.removeEventListener("message", listener);
+ t.done();
+ }
+ });
+ // Use a message event rather than onload for consistency with auxiliary browsing contexts.
+ self.addEventListener("message", listener);
+ document.body.append(frame);
+ }, `closed and ${val.type} nested browsing context`);
+
+ async_test(t => {
+ const ident = `${val.type}-auxiliary-bc`,
+ support = new URL("support/closed.html", location.href).pathname,
+ openee = window.open(`${val.url}?window=opener&ident=${ident}`),
+ listener = t.step_func(e => {
+ if (e.data === ident) {
+ closedTest(openee, () => openee.close());
+
+ // close() is a no-op once "is closing" is set
+ openee.close();
+ assert_equals(openee.closed, true);
+
+ self.removeEventListener("message", listener);
+ t.done();
+ }
+ });
+ // As there's no cross-origin onload, use a message event.
+ self.addEventListener("message", listener);
+ }, `closed/close() and ${val.type} auxiliary browsing context`);
+});
diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/closed.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/closed.html
new file mode 100644
index 00000000000..3b70598e34d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/support/closed.html
@@ -0,0 +1,12 @@
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html b/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html
index 9bce93f0888..a66f52e5f64 100644
--- a/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html
+++ b/tests/wpt/web-platform-tests/html/browsers/windows/embedded-opener-remove-frame.html
@@ -1,10 +1,48 @@
-opener and "removed" embedded documents
+opener and discarded browsing contexts
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html
new file mode 100644
index 00000000000..56176c4b71e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size-ref.html
@@ -0,0 +1,8 @@
+
+
+
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html
new file mode 100644
index 00000000000..a095adc7cf6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/img-with-containment-and-size.html
@@ -0,0 +1,22 @@
+
+
+Ensure images with containment and size are rendered properly
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/import-maps/resources/resolving.js b/tests/wpt/web-platform-tests/import-maps/resources/resolving.js
index ec2645e5991..0409962e4d7 100644
--- a/tests/wpt/web-platform-tests/import-maps/resources/resolving.js
+++ b/tests/wpt/web-platform-tests/import-maps/resources/resolving.js
@@ -1,4 +1,9 @@
'use strict';
+
+// Imported from:
+// https://github.com/WICG/import-maps/blob/master/reference-implementation/__tests__/resolving.js
+// TODO: Upstream local changes.
+
const { URL } = require('url');
const { parseFromString } = require('../lib/parser.js');
const { resolve } = require('../lib/resolver.js');
@@ -203,4 +208,23 @@ describe('Mapped using the "imports" key only (no scopes)', () => {
expect(resolveUnderTest('/test')).toMatchURL('https://example.com/lib/test2.mjs');
});
});
+
+ describe('overlapping entries with trailing slashes', () => {
+ const resolveUnderTest = makeResolveUnderTest(`{
+ "imports": {
+ "a": "/1",
+ "a/": "/2/",
+ "a/b": "/3",
+ "a/b/": "/4/"
+ }
+ }`);
+
+ it('most-specific wins', () => {
+ expect(resolveUnderTest('a')).toMatchURL('https://example.com/1');
+ expect(resolveUnderTest('a/')).toMatchURL('https://example.com/2/');
+ expect(resolveUnderTest('a/b')).toMatchURL('https://example.com/3');
+ expect(resolveUnderTest('a/b/')).toMatchURL('https://example.com/4/');
+ expect(resolveUnderTest('a/b/c')).toMatchURL('https://example.com/4/c');
+ });
+ });
});
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini
new file mode 100644
index 00000000000..1ab2d770afe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy.html.ini
@@ -0,0 +1,2 @@
+[reftest_fuzzy.html]
+ fuzzy: fuzzy-ref-1.html:maxDifference=255;100-100
diff --git a/tests/wpt/web-platform-tests/infrastructure/reftest/fuzzy-ref-1.html b/tests/wpt/web-platform-tests/infrastructure/reftest/fuzzy-ref-1.html
new file mode 100644
index 00000000000..e50fc11ef6e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/reftest/fuzzy-ref-1.html
@@ -0,0 +1,9 @@
+
+
+
diff --git a/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy.html b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy.html
new file mode 100644
index 00000000000..74290257981
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy_1.html b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy_1.html
new file mode 100644
index 00000000000..1930fe0ae8f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/reftest/reftest_fuzzy_1.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
index 11a36cde6eb..a5709161bdb 100644
--- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
@@ -4,6 +4,7 @@
// Source: Web NFC API (https://w3c.github.io/web-nfc/)
dictionary NDEFMessage {
+ DOMString? serialNumber;
sequence records;
USVString url;
};
diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/script-tests/cache-match.js b/tests/wpt/web-platform-tests/service-workers/cache-storage/script-tests/cache-match.js
index b2b731cc654..8bf7fda3096 100644
--- a/tests/wpt/web-platform-tests/service-workers/cache-storage/script-tests/cache-match.js
+++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/script-tests/cache-match.js
@@ -356,4 +356,62 @@ cache_test(async (cache) => {
assert_equals(headers.get('set-cookie'), null);
}, 'cors-exposed header should be stored correctly.');
+cache_test(async (cache) => {
+ // A URL that should load a resource with a known mime type.
+ const url = '/service-workers/cache-storage/resources/blank.html';
+ const expected_mime_type = 'text/html';
+
+ // Verify we get the expected mime type from the network. Note,
+ // we cannot use an exact match here since some browsers append
+ // character encoding information to the blob.type value.
+ const net_response = await fetch(url);
+ const net_mime_type = (await net_response.blob()).type;
+ assert_true(net_mime_type.includes(expected_mime_type),
+ 'network response should include the expected mime type');
+
+ // Verify we get the exact same mime type when reading the same
+ // URL resource back out of the cache.
+ await cache.add(url);
+ const cache_response = await cache.match(url);
+ const cache_mime_type = (await cache_response.blob()).type;
+ assert_equals(cache_mime_type, net_mime_type,
+ 'network and cache response mime types should match');
+ }, 'MIME type should be set from content-header correctly.');
+
+cache_test(async (cache) => {
+ const url = '/dummy';
+ const original_type = 'text/html';
+ const init_with_headers = {
+ headers: {
+ 'content-type': original_type
+ }
+ }
+
+ // Verify constructing a synthetic response with a content-type header
+ // gets the correct mime type.
+ const response = new Response('hello world', init_with_headers);
+ const original_response_type = (await response.blob()).type;
+ assert_true(original_response_type.includes(original_type),
+ 'original response should include the expected mime type');
+
+ // Verify overwriting the content-type header does not change the mime
+ // type. It should be fixed at Response construction time.
+ const overwritten_response = new Response('hello world', init_with_headers);
+ overwritten_response.headers.set('content-type', 'text/plain');
+ const overwritten_response_type = (await overwritten_response.blob()).type;
+ assert_equals(overwritten_response_type, original_response_type,
+ 'original and overwritten response mime types should match');
+
+ // Verify the Response read from Cache uses the original mime type
+ // computed when it was first constructed.
+ const tmp = new Response('hello world', init_with_headers);
+ tmp.headers.set('content-type', 'text/plain');
+ await cache.put(url, tmp);
+ const cache_response = await cache.match(url);
+ const cache_mime_type = (await cache_response.blob()).type;
+ assert_equals(cache_mime_type, original_response_type,
+ 'original and cached overwritten response mime types ' +
+ 'should match');
+ }, 'MIME type should be frozen at response construction.');
+
done();
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/registration-mime-types.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/registration-mime-types.https.html
index 9ae5f0956fb..1d39ecfb086 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/registration-mime-types.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/registration-mime-types.https.html
@@ -1,5 +1,6 @@
Service Worker: Registration (MIME types)
+
diff --git a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html b/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html
deleted file mode 100644
index 8c10d251557..00000000000
--- a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001-ref.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- Shadow DOM Test
-
-
-
-
- if NOT underlined, it is success.
-
-
-
diff --git a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001.html b/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001.html
deleted file mode 100644
index d8def126d64..00000000000
--- a/tests/wpt/web-platform-tests/shadow-dom/untriaged/shadow-trees/text-decoration-001.html
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- Text Decoration Under Line Test
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/wpt/web-platform-tests/tools/manifest/item.py b/tests/wpt/web-platform-tests/tools/manifest/item.py
index c06daee3e24..c6363a70701 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/item.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/item.py
@@ -1,5 +1,5 @@
from copy import copy
-
+from six import iteritems
from six.moves.urllib.parse import urljoin, urlparse
from abc import ABCMeta, abstractproperty
@@ -169,6 +169,14 @@ class RefTestBase(URLManifestItem):
def dpi(self):
return self._extras.get("dpi")
+ @property
+ def fuzzy(self):
+ rv = self._extras.get("fuzzy", [])
+ if isinstance(rv, list):
+ return {tuple(item[0]): item[1]
+ for item in self._extras.get("fuzzy", [])}
+ return rv
+
def meta_key(self):
return (self.timeout, self.viewport_size, self.dpi)
@@ -181,6 +189,8 @@ class RefTestBase(URLManifestItem):
extras["viewport_size"] = self.viewport_size
if self.dpi is not None:
extras["dpi"] = self.dpi
+ if self.fuzzy:
+ extras["fuzzy"] = list(iteritems(self.fuzzy))
return rv
@classmethod
diff --git a/tests/wpt/web-platform-tests/tools/manifest/manifest.py b/tests/wpt/web-platform-tests/tools/manifest/manifest.py
index cec777a30c6..159bed2e747 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/manifest.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/manifest.py
@@ -4,7 +4,7 @@ from collections import defaultdict
from six import iteritems, iterkeys, itervalues, string_types
from . import vcs
-from .item import (ManualTest, WebDriverSpecTest, Stub, RefTestNode, RefTest, RefTestBase,
+from .item import (ManualTest, WebDriverSpecTest, Stub, RefTestNode, RefTest,
TestharnessTest, SupportFile, ConformanceCheckerTest, VisualTest)
from .log import get_logger
from .utils import from_os_path, to_os_path
@@ -37,7 +37,6 @@ def iterfilter(filters, iter):
item_classes = {"testharness": TestharnessTest,
"reftest": RefTest,
"reftest_node": RefTestNode,
- "reftest_base": RefTestBase,
"manual": ManualTest,
"stub": Stub,
"wdspec": WebDriverSpecTest,
diff --git a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
index b5d7cdf8799..78843b089b8 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
@@ -1,6 +1,7 @@
import hashlib
import re
import os
+from collections import deque
from six import binary_type
from six.moves.urllib.parse import urljoin
from fnmatch import fnmatch
@@ -452,6 +453,79 @@ class SourceFile(object):
return self.dpi_nodes[0].attrib.get("content", None)
+ @cached_property
+ def fuzzy_nodes(self):
+ """List of ElementTree Elements corresponding to nodes in a test that
+ specify reftest fuzziness"""
+ return self.root.findall(".//{http://www.w3.org/1999/xhtml}meta[@name='fuzzy']")
+
+ @cached_property
+ def fuzzy(self):
+ rv = {}
+ if self.root is None:
+ return rv
+
+ if not self.fuzzy_nodes:
+ return rv
+
+ args = ["maxDifference", "totalPixels"]
+
+ for node in self.fuzzy_nodes:
+ item = node.attrib.get("content", "")
+
+ parts = item.rsplit(":", 1)
+ if len(parts) == 1:
+ key = None
+ value = parts[0]
+ else:
+ key = urljoin(self.url, parts[0])
+ reftype = None
+ for ref in self.references:
+ if ref[0] == key:
+ reftype = ref[1]
+ break
+ if reftype not in ("==", "!="):
+ raise ValueError("Fuzzy key %s doesn't correspond to a references" % key)
+ key = (self.url, key, reftype)
+ value = parts[1]
+ ranges = value.split(";")
+ if len(ranges) != 2:
+ raise ValueError("Malformed fuzzy value %s" % item)
+ arg_values = {None: deque()}
+ for range_str_value in ranges:
+ if "=" in range_str_value:
+ name, range_str_value = [part.strip()
+ for part in range_str_value.split("=", 1)]
+ if name not in args:
+ raise ValueError("%s is not a valid fuzzy property" % name)
+ if arg_values.get(name):
+ raise ValueError("Got multiple values for argument %s" % name)
+ else:
+ name = None
+ if "-" in range_str_value:
+ range_min, range_max = range_str_value.split("-")
+ else:
+ range_min = range_str_value
+ range_max = range_str_value
+ try:
+ range_value = [int(x.strip()) for x in (range_min, range_max)]
+ except ValueError:
+ raise ValueError("Fuzzy value %s must be a range of integers" %
+ range_str_value)
+ if name is None:
+ arg_values[None].append(range_value)
+ else:
+ arg_values[name] = range_value
+ rv[key] = []
+ for arg_name in args:
+ if arg_values.get(arg_name):
+ value = arg_values.pop(arg_name)
+ else:
+ value = arg_values[None].popleft()
+ rv[key].append(value)
+ assert list(arg_values.keys()) == [None] and len(arg_values[None]) == 0
+ return rv
+
@cached_property
def testharness_nodes(self):
"""List of ElementTree Elements corresponding to nodes representing a
@@ -749,7 +823,8 @@ class SourceFile(object):
references=self.references,
timeout=self.timeout,
viewport_size=self.viewport_size,
- dpi=self.dpi
+ dpi=self.dpi,
+ fuzzy=self.fuzzy
)]
elif self.content_is_css_visual and not self.name_is_reference:
diff --git a/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py
index 7c368a53118..18aa55a63a2 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py
@@ -789,3 +789,41 @@ test()"""
u'/_fake_base/html/test.any.worker.html?wss']
assert items[0].url_base == "/_fake_base/"
+
+
+@pytest.mark.parametrize("fuzzy, expected", [
+ (b"ref.html:1;200", {("/foo/test.html", "/foo/ref.html", "=="): [[1, 1], [200, 200]]}),
+ (b"ref.html:0-1;100-200", {("/foo/test.html", "/foo/ref.html", "=="): [[0, 1], [100, 200]]}),
+ (b"0-1;100-200", {None: [[0,1], [100, 200]]}),
+ (b"maxDifference=1;totalPixels=200", {None: [[1, 1], [200, 200]]}),
+ (b"totalPixels=200;maxDifference=1", {None: [[1, 1], [200, 200]]}),
+ (b"totalPixels=200;1", {None: [[1, 1], [200, 200]]}),
+ (b"maxDifference=1;200", {None: [[1, 1], [200, 200]]}),])
+def test_reftest_fuzzy(fuzzy, expected):
+ content = b"""
+
+""" % fuzzy
+
+ s = create("foo/test.html", content)
+
+ assert s.content_is_ref_node
+ assert s.fuzzy == expected
+
+
+@pytest.mark.parametrize("fuzzy, expected", [
+ ([b"1;200"], {None: [[1, 1], [200, 200]]}),
+ ([b"ref-2.html:0-1;100-200"], {("/foo/test.html", "/foo/ref-2.html", "=="): [[0, 1], [100, 200]]}),
+ ([b"1;200", b"ref-2.html:0-1;100-200"],
+ {None: [[1, 1], [200, 200]],
+ ("/foo/test.html", "/foo/ref-2.html", "=="): [[0,1], [100, 200]]})])
+def test_reftest_fuzzy_multi(fuzzy, expected):
+ content = b"""
+
+"""
+ for item in fuzzy:
+ content += b'\n' % item
+
+ s = create("foo/test.html", content)
+
+ assert s.content_is_ref_node
+ assert s.fuzzy == expected
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
index 6a0c77684a3..7fe89d943eb 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/docs/expectation.rst
@@ -190,13 +190,6 @@ When used for expectation data, manifests have the following format:
* A subsection per subtest, with the heading being the title of the
subtest.
- * A key ``type`` indicating the test type. This takes the values
- ``testharness`` and ``reftest``.
-
- * For reftests, keys ``reftype`` indicating the reference type
- (``==`` or ``!=``) and ``refurl`` indicating the URL of the
- reference.
-
* A key ``expected`` giving the expectation value of each (sub)test.
* A key ``disabled`` which can be set to any value to indicate that
@@ -207,6 +200,19 @@ When used for expectation data, manifests have the following format:
the runner should restart the browser after running this test (e.g. to
clear out unwanted state).
+ * A key ``fuzzy`` that is used for reftests. This is interpreted as a
+ list containing entries like ```` content value,
+ which consists of an optional reference identifier followed by a
+ colon, then a range indicating the maximum permitted pixel
+ difference per channel, then semicolon, then a range indicating the
+ maximum permitted total number of differing pixels. The reference
+ identifier is either a single relative URL, resolved against the
+ base test URL, in which case the fuzziness applies to any
+ comparison with that URL, or takes the form lhs url, comparison,
+ rhs url, in which case the fuzziness only applies for any
+ comparison involving that specifc pair of URLs. Some illustrative
+ examples are given below.
+
* Variables ``debug``, ``os``, ``version``, ``processor`` and
``bits`` that describe the configuration of the browser under
test. ``debug`` is a boolean indicating whether a build is a debug
@@ -246,3 +252,18 @@ A more complex manifest with conditional properties might be::
Note that ``PASS`` in the above works, but is unnecessary; ``PASS``
(or ``OK``) is always the default expectation for (sub)tests.
+
+A manifest with fuzzy reftest values might be::
+
+ [reftest.html]
+ fuzzy: [10;200, ref1.html:20;200-300, subtest1.html==ref2.html:10-15;20]
+
+In this case the default fuzziness for any comparison would be to
+require a maximum difference per channel of less than or equal to 10
+and less than or equal to 200 total pixels different. For any
+comparison involving ref1.html on the right hand side, the limits
+would instead be a difference per channel not more than 20 and a total
+difference count of not less than 200 and not more than 300. For the
+specific comparison subtest1.html == ref2.html (both resolved against
+the test URL) these limits would instead be 10 to 15 and 0 to 20,
+respectively.
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
index 24a7d3d7e03..37f4fde4786 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
@@ -2,4 +2,6 @@ html5lib == 1.0.1
mozinfo == 0.10
mozlog==4.0
mozdebug==0.1.1
+pillow == 5.2.0
urllib3[secure]==1.24.1
+
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
index 493d3c43fc0..6563721caee 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
@@ -202,11 +202,13 @@ class TestEnvironment(object):
def ensure_started(self):
# Pause for a while to ensure that the server has a chance to start
- for _ in xrange(60):
+ total_sleep_secs = 30
+ each_sleep_secs = 0.01
+ for _ in xrange(int(total_sleep_secs / each_sleep_secs)):
failed = self.test_servers()
if not failed:
return
- time.sleep(0.5)
+ time.sleep(each_sleep_secs)
raise EnvironmentError("Servers failed to start: %s" %
", ".join("%s:%s" % item for item in failed))
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
index 8958ecfc3bb..5fa30563890 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
@@ -1,6 +1,7 @@
import base64
import hashlib
import httplib
+import io
import os
import threading
import traceback
@@ -8,6 +9,8 @@ import socket
import urlparse
from abc import ABCMeta, abstractmethod
+from PIL import Image, ImageChops, ImageStat
+
from ..testrunner import Stop
from protocol import Protocol, BaseProtocolPart
@@ -286,8 +289,7 @@ class RefTestImplementation(object):
screenshot = data
hash_value = hash_screenshot(data)
-
- self.screenshot_cache[key] = (hash_value, None)
+ self.screenshot_cache[key] = (hash_value, screenshot)
rv = (hash_value, screenshot)
else:
@@ -299,11 +301,32 @@ class RefTestImplementation(object):
def reset(self):
self.screenshot_cache.clear()
- def is_pass(self, lhs_hash, rhs_hash, relation):
+ def is_pass(self, hashes, screenshots, relation, fuzzy):
assert relation in ("==", "!=")
- self.message.append("Testing %s %s %s" % (lhs_hash, relation, rhs_hash))
- return ((relation == "==" and lhs_hash == rhs_hash) or
- (relation == "!=" and lhs_hash != rhs_hash))
+ if not fuzzy or fuzzy == ((0,0), (0,0)):
+ equal = hashes[0] == hashes[1]
+ else:
+ max_per_channel, pixels_different = self.get_differences(screenshots)
+ allowed_per_channel, allowed_different = fuzzy
+ self.logger.info("Allowed %s pixels different, maximum difference per channel %s" %
+ ("-".join(str(item) for item in allowed_different),
+ "-".join(str(item) for item in allowed_per_channel)))
+ equal = (allowed_per_channel[0] <= max_per_channel <= allowed_per_channel[1] and
+ allowed_different[0] <= pixels_different <= allowed_different[1])
+ return equal if relation == "==" else not equal
+
+ def get_differences(self, screenshots):
+ lhs = Image.open(io.BytesIO(base64.b64decode(screenshots[0]))).convert("RGB")
+ rhs = Image.open(io.BytesIO(base64.b64decode(screenshots[1]))).convert("RGB")
+ diff = ImageChops.difference(lhs, rhs)
+ minimal_diff = diff.crop(diff.getbbox())
+ mask = minimal_diff.convert("L", dither=None)
+ stat = ImageStat.Stat(minimal_diff, mask)
+ per_channel = max(item[1] for item in stat.extrema)
+ count = stat.count[0]
+ self.logger.info("Found %s pixels different, maximum difference per channel %s" %
+ (count, per_channel))
+ return per_channel, count
def run_test(self, test):
viewport_size = test.viewport_size
@@ -319,6 +342,7 @@ class RefTestImplementation(object):
screenshots = [None, None]
nodes, relation = stack.pop()
+ fuzzy = self.get_fuzzy(test, nodes, relation)
for i, node in enumerate(nodes):
success, data = self.get_hash(node, viewport_size, dpi)
@@ -327,7 +351,8 @@ class RefTestImplementation(object):
hashes[i], screenshots[i] = data
- if self.is_pass(hashes[0], hashes[1], relation):
+ if self.is_pass(hashes, screenshots, relation, fuzzy):
+ fuzzy = self.get_fuzzy(test, nodes, relation)
if nodes[1].references:
stack.extend(list(((nodes[1], item[0]), item[1]) for item in reversed(nodes[1].references)))
else:
@@ -352,6 +377,25 @@ class RefTestImplementation(object):
"message": "\n".join(self.message),
"extra": {"reftest_screenshots": log_data}}
+ def get_fuzzy(self, root_test, test_nodes, relation):
+ full_key = tuple([item.url for item in test_nodes] + [relation])
+ ref_only_key = test_nodes[1].url
+
+ fuzzy_override = root_test.fuzzy_override
+ fuzzy = test_nodes[0].fuzzy
+
+ sources = [fuzzy_override, fuzzy]
+ keys = [full_key, ref_only_key, None]
+ value = None
+ for source in sources:
+ for key in keys:
+ if key in source:
+ value = source[key]
+ break
+ if value:
+ break
+ return value
+
def retake_screenshot(self, node, viewport_size, dpi):
success, data = self.executor.screenshot(node, viewport_size, dpi)
if not success:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
index b70f0ed0b0c..f9fd97b6ba8 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
@@ -846,7 +846,7 @@ class MarionetteRefTestExecutor(RefTestExecutor):
return screenshot
-class InternalRefTestImplementation(object):
+class InternalRefTestImplementation(RefTestImplementation):
def __init__(self, executor):
self.timeout_multiplier = executor.timeout_multiplier
self.executor = executor
@@ -870,7 +870,7 @@ class InternalRefTestImplementation(object):
pass
def run_test(self, test):
- references = self.get_references(test)
+ references = self.get_references(test, test)
timeout = (test.timeout * 1000) * self.timeout_multiplier
rv = self.executor.protocol.marionette._send_message("reftest:run",
{"test": self.executor.test_url(test),
@@ -881,10 +881,11 @@ class InternalRefTestImplementation(object):
"height": 600})["value"]
return rv
- def get_references(self, node):
+ def get_references(self, root_test, node):
rv = []
for item, relation in node.references:
- rv.append([self.executor.test_url(item), self.get_references(item), relation])
+ rv.append([self.executor.test_url(item), self.get_references(root_test, item), relation,
+ {"fuzzy": self.get_fuzzy(root_test, [node, item], relation)}])
return rv
def teardown(self):
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 73f5fcf84a8..563252ce2bb 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -416,7 +416,11 @@ class WebDriverRefTestExecutor(RefTestExecutor):
"""return [window.outerWidth - window.innerWidth,
window.outerHeight - window.innerHeight];"""
)
- self.protocol.webdriver.window.position = (0, 0)
+ try:
+ self.protocol.webdriver.window.position = (0, 0)
+ except client.InvalidArgumentException:
+ # Safari 12 throws with 0 or 1, treating them as bools; fixed in STP
+ self.protocol.webdriver.window.position = (2, 2)
self.protocol.webdriver.window.size = (800 + width_offset, 600 + height_offset)
result = self.implementation.run_test(test)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py
index 80284bd8a21..fb3ef627d94 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py
@@ -1,5 +1,6 @@
import os
import urlparse
+from collections import deque
from wptmanifest.backends import static
from wptmanifest.backends.static import ManifestItem
@@ -97,6 +98,105 @@ def leak_threshold(node):
return rv
+def fuzzy_prop(node):
+ """Fuzzy reftest match
+
+ This can either be a list of strings or a single string. When a list is
+ supplied, the format of each item matches the description below.
+
+ The general format is
+ fuzzy = [key ":"] ";"
+ key = [reftype ]
+ reftype = "==" | "!="
+ prop = [propName "=" ] range
+ propName = "maxDifferences" | "totalPixels"
+ range = ["-" ]
+
+ So for example:
+ maxDifferences=10;totalPixels=10-20
+
+ specifies that for any test/ref pair for which no other rule is supplied,
+ there must be a maximum pixel difference of exactly 10, and betwen 10 and
+ 20 total pixels different.
+
+ test.html==ref.htm:10;20
+
+ specifies that for a equality comparison between test.html and ref.htm,
+ resolved relative to the test path, there can be a maximum difference
+ of 10 in the pixel value for any channel and 20 pixels total difference.
+
+ ref.html:10;20
+
+ is just like the above but applies to any comparison involving ref.html
+ on the right hand side.
+
+ The return format is [(key, (maxDifferenceRange, totalPixelsRange))], where
+ the key is either None where no specific reference is specified, the reference
+ name where there is only one component or a tuple (test, ref, reftype) when the
+ exact comparison is specified. maxDifferenceRange and totalPixelsRange are tuples
+ of integers indicating the inclusive range of allowed values.
+"""
+ rv = []
+ args = ["maxDifference", "totalPixels"]
+ try:
+ value = node.get("fuzzy")
+ except KeyError:
+ return rv
+ if not isinstance(value, list):
+ value = [value]
+ for item in value:
+ if not isinstance(item, (str, unicode)):
+ rv.append(item)
+ continue
+ parts = item.rsplit(":", 1)
+ if len(parts) == 1:
+ key = None
+ fuzzy_values = parts[0]
+ else:
+ key, fuzzy_values = parts
+ for reftype in ["==", "!="]:
+ if reftype in key:
+ key = key.split(reftype)
+ key.append(reftype)
+ key = tuple(key)
+ ranges = fuzzy_values.split(";")
+ if len(ranges) != 2:
+ raise ValueError("Malformed fuzzy value %s" % item)
+ arg_values = {None: deque()}
+ for range_str_value in ranges:
+ if "=" in range_str_value:
+ name, range_str_value = [part.strip()
+ for part in range_str_value.split("=", 1)]
+ if name not in args:
+ raise ValueError("%s is not a valid fuzzy property" % name)
+ if arg_values.get(name):
+ raise ValueError("Got multiple values for argument %s" % name)
+ else:
+ name = None
+ if "-" in range_str_value:
+ range_min, range_max = range_str_value.split("-")
+ else:
+ range_min = range_str_value
+ range_max = range_str_value
+ try:
+ range_value = tuple(int(item.strip()) for item in (range_min, range_max))
+ except ValueError:
+ raise ValueError("Fuzzy value %s must be a range of integers" % range_str_value)
+ if name is None:
+ arg_values[None].append(range_value)
+ else:
+ arg_values[name] = range_value
+ range_values = []
+ for arg_name in args:
+ if arg_values.get(arg_name):
+ value = arg_values.pop(arg_name)
+ else:
+ value = arg_values[None].popleft()
+ range_values.append(value)
+ rv.append((key, tuple(range_values)))
+ return rv
+
+
class ExpectedManifest(ManifestItem):
def __init__(self, name, test_path, url_base):
"""Object representing all the tests in a particular manifest
@@ -183,6 +283,10 @@ class ExpectedManifest(ManifestItem):
def lsan_max_stack_depth(self):
return int_prop("lsan-max-stack-depth", self)
+ @property
+ def fuzzy(self):
+ return fuzzy_prop(self)
+
class DirectoryManifest(ManifestItem):
@property
@@ -229,6 +333,11 @@ class DirectoryManifest(ManifestItem):
def lsan_max_stack_depth(self):
return int_prop("lsan-max-stack-depth", self)
+ @property
+ def fuzzy(self):
+ return fuzzy_prop(self)
+
+
class TestNode(ManifestItem):
def __init__(self, name):
"""Tree node associated with a particular test in a manifest
@@ -301,6 +410,10 @@ class TestNode(ManifestItem):
def lsan_max_stack_depth(self):
return int_prop("lsan-max-stack-depth", self)
+ @property
+ def fuzzy(self):
+ return fuzzy_prop(self)
+
def append(self, node):
"""Add a subtest to the current test
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py
index 27d053ce9b6..b951ea5b9b4 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py
@@ -445,7 +445,7 @@ def create_test_tree(metadata_path, test_manifest):
"""
do_delayed_imports()
id_test_map = {}
- exclude_types = frozenset(["stub", "helper", "manual", "support", "conformancechecker"])
+ exclude_types = frozenset(["stub", "helper", "manual", "support", "conformancechecker", "reftest_base"])
all_types = manifestitem.item_types.keys()
include_types = set(all_types) - exclude_types
for item_type, test_path, tests in test_manifest.itertypes(*include_types):
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_manifestexpected.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_manifestexpected.py
new file mode 100644
index 00000000000..93557108fc7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_manifestexpected.py
@@ -0,0 +1,38 @@
+import os
+import sys
+from io import BytesIO
+
+import pytest
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
+
+from wptrunner import manifestexpected
+
+
+@pytest.mark.parametrize("fuzzy, expected", [
+ (b"ref.html:1;200", [("ref.html", ((1, 1), (200, 200)))]),
+ (b"ref.html:0-1;100-200", [("ref.html", ((0, 1), (100, 200)))]),
+ (b"0-1;100-200", [(None, ((0, 1), (100, 200)))]),
+ (b"maxDifference=1;totalPixels=200", [(None, ((1, 1), (200, 200)))]),
+ (b"totalPixels=200;maxDifference=1", [(None, ((1, 1), (200, 200)))]),
+ (b"totalPixels=200;1", [(None, ((1, 1), (200, 200)))]),
+ (b"maxDifference=1;200", [(None, ((1, 1), (200, 200)))]),
+ (b"test.html==ref.html:maxDifference=1;totalPixels=200",
+ [((u"test.html", u"ref.html", "=="), ((1, 1), (200, 200)))]),
+ (b"test.html!=ref.html:maxDifference=1;totalPixels=200",
+ [((u"test.html", u"ref.html", "!="), ((1, 1), (200, 200)))]),
+ (b"[test.html!=ref.html:maxDifference=1;totalPixels=200, test.html==ref1.html:maxDifference=5-10;100]",
+ [((u"test.html", u"ref.html", "!="), ((1, 1), (200, 200))),
+ ((u"test.html", u"ref1.html", "=="), ((5,10), (100, 100)))]),
+])
+def test_fuzzy(fuzzy, expected):
+ data = """
+[test.html]
+ fuzzy: %s""" % fuzzy
+ f = BytesIO(data)
+ manifest = manifestexpected.static.compile(f,
+ {},
+ data_cls_getter=manifestexpected.data_cls_getter,
+ test_path="test/test.html",
+ url_base="/")
+ assert manifest.get_test("/test/test.html").fuzzy == expected
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py
index f463dd73f2b..6daa59b5847 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_wpttest.py
@@ -6,6 +6,7 @@ from mock import Mock
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", ".."))
+from manifest import manifest as wptmanifest
from manifest.item import TestharnessTest
from wptrunner import manifestexpected, wpttest
@@ -44,6 +45,11 @@ test_2 = """\
lsan-max-stack-depth: 42
"""
+test_fuzzy = """\
+[fuzzy.html]
+ fuzzy: fuzzy-ref.html:1;200
+"""
+
testharness_test = """
"""
@@ -139,3 +145,26 @@ def test_metadata_lsan_stack_depth():
test_obj = wpttest.from_manifest(tests, test, inherit_metadata, test_metadata.get_test(test.id))
assert test_obj.lsan_max_stack_depth == 42
+
+
+def test_metadata_fuzzy():
+ manifest_data = {
+ "items": {"reftest": {"a/fuzzy.html": [["/a/fuzzy.html",
+ [["/a/fuzzy-ref.html", "=="]],
+ {"fuzzy": [[["/a/fuzzy.html", '/a/fuzzy-ref.html', '=='],
+ [[2, 3], [10, 15]]]]}]]}},
+ "paths": {"a/fuzzy.html": ["0"*40, "reftest"]},
+ "version": wptmanifest.CURRENT_VERSION,
+ "url_base": "/"}
+ manifest = wptmanifest.Manifest.from_json(".", manifest_data)
+ test_metadata = manifestexpected.static.compile(BytesIO(test_fuzzy),
+ {},
+ data_cls_getter=manifestexpected.data_cls_getter,
+ test_path="a/fuzzy.html",
+ url_base="/")
+
+ test = manifest.iterpath("a/fuzzy.html").next()
+ test_obj = wpttest.from_manifest(manifest, test, [], test_metadata.get_test(test.id))
+
+ assert test_obj.fuzzy == {('/a/fuzzy.html', '/a/fuzzy-ref.html', '=='): [[2, 3], [10, 15]]}
+ assert test_obj.fuzzy_override == {'/a/fuzzy-ref.html': ((1, 1), (200, 200))}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py
index 4eb292efb75..7ad35756d0c 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py
@@ -341,6 +341,8 @@ class ManifestItem(object):
yield item
def remove_value(self, key, value):
+ if key not in self._data:
+ return
try:
self._data[key].remove(value)
except ValueError:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
index dc1c6b63aef..6a4fa4fdf82 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
@@ -1,5 +1,6 @@
import os
import subprocess
+import urlparse
from collections import defaultdict
from wptmanifest.parser import atoms
@@ -279,12 +280,12 @@ class Test(object):
@property
def prefs(self):
prefs = {}
- for meta in self.itermeta():
+ for meta in reversed(list(self.itermeta())):
meta_prefs = meta.prefs
- prefs.update(meta_prefs)
if atom_reset in meta_prefs:
- del prefs[atom_reset]
- break
+ del meta_prefs[atom_reset]
+ prefs = {}
+ prefs.update(meta_prefs)
return prefs
def expected(self, subtest=None):
@@ -359,7 +360,7 @@ class ReftestTest(Test):
test_type = "reftest"
def __init__(self, tests_root, url, inherit_metadata, test_metadata, references,
- timeout=None, path=None, viewport_size=None, dpi=None, protocol="http"):
+ timeout=None, path=None, viewport_size=None, dpi=None, fuzzy=None, protocol="http"):
Test.__init__(self, tests_root, url, inherit_metadata, test_metadata, timeout,
path, protocol)
@@ -370,6 +371,7 @@ class ReftestTest(Test):
self.references = references
self.viewport_size = viewport_size
self.dpi = dpi
+ self._fuzzy = fuzzy or {}
@classmethod
def from_manifest(cls,
@@ -398,7 +400,8 @@ class ReftestTest(Test):
path=manifest_test.path,
viewport_size=manifest_test.viewport_size,
dpi=manifest_test.dpi,
- protocol="https" if hasattr(manifest_test, "https") and manifest_test.https else "http")
+ protocol="https" if hasattr(manifest_test, "https") and manifest_test.https else "http",
+ fuzzy=manifest_test.fuzzy)
nodes[url] = node
@@ -454,6 +457,30 @@ class ReftestTest(Test):
def keys(self):
return ("reftype", "refurl")
+ @property
+ def fuzzy(self):
+ return self._fuzzy
+
+ @property
+ def fuzzy_override(self):
+ values = {}
+ for meta in reversed(list(self.itermeta(None))):
+ value = meta.fuzzy
+ if not value:
+ continue
+ if atom_reset in value:
+ value.remove(atom_reset)
+ values = {}
+ for key, data in value:
+ if len(key) == 3:
+ key[0] = urlparse.urljoin(self.url, key[0])
+ key[1] = urlparse.urljoin(self.url, key[1])
+ else:
+ # Key is just a relative url to a ref
+ key = urlparse.urljoin(self.url, key)
+ values[key] = data
+ return values
+
class WdspecTest(Test):
diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCReader-manual.https.html b/tests/wpt/web-platform-tests/web-nfc/NFCReader-manual.https.html
new file mode 100644
index 00000000000..a3171c3544e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-nfc/NFCReader-manual.https.html
@@ -0,0 +1,64 @@
+
+
+Web NFC: NFCReader tests
+
+
+
+
+
+
+
+Tap an NFC tag to the test device with NFC support.
+
+Note: All the actions need to be done in 60 seconds, otherwise it will get TIMEOUT.
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/web-nfc/NFCReader.html b/tests/wpt/web-platform-tests/web-nfc/NFCReader.html
new file mode 100644
index 00000000000..5a0e88433f2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-nfc/NFCReader.html
@@ -0,0 +1,39 @@
+
+
+Web NFC: NFCReader tests
+
+
+
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/web-nfc/nfc_watch.https.html b/tests/wpt/web-platform-tests/web-nfc/nfc_watch.https.html
deleted file mode 100644
index 455b6437a8e..00000000000
--- a/tests/wpt/web-platform-tests/web-nfc/nfc_watch.https.html
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-Web NFC: nfc.watch tests
-
-
-
-
-
-
-
-
-
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html
index 3a11074a41c..bee1aa835bf 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html
@@ -156,6 +156,45 @@
});
});
+ audit.define(
+ {
+ label: 'test-audiocontextoptions-sampleRate',
+ description:
+ 'Test creating contexts with non-default sampleRate values.'
+ },
+ function(task, should) {
+ // A sampleRate of 1 is unlikely to be supported on any browser,
+ // test that this rate is rejected.
+ should(
+ () => {
+ context = new AudioContext({sampleRate: 1})
+ },
+ 'context = new AudioContext({sampleRate: 1})')
+ .throw(DOMException);
+
+ // A sampleRate of 1,000,000 is unlikely to be supported on any
+ // browser, test that this rate is also rejected.
+ should(
+ () => {
+ context = new AudioContext({sampleRate: 1000000})
+ },
+ 'context = new AudioContext({sampleRate: 1000000})')
+ .throw(DOMException);
+
+ should(
+ () => {
+ context = new AudioContext({sampleRate: 24000})
+ },
+ 'context = new AudioContext({sampleRate: 24000})')
+ .notThrow();
+ should(
+ context.sampleRate, 'sampleRate inrange')
+ .beEqualTo(24000);
+
+ context.close();
+ task.done();
+ });
+
audit.run();