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 4c1aa18e695..f28a19f1250 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 @@ -10,6 +10,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 806d5061874..2d83aa9ca40 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -8325,6 +8325,12 @@ {} ] ], + "css/css-pseudo/selection-text-shadow-006-manual.html": [ + [ + "css/css-pseudo/selection-text-shadow-006-manual.html", + {} + ] + ], "css/css-regions/animations/animations-001.html": [ [ "css/css-regions/animations/animations-001.html", @@ -20387,6 +20393,18 @@ {} ] ], + "compat/webkit-linear-gradient-diff-unprefixed.html": [ + [ + "compat/webkit-linear-gradient-diff-unprefixed.html", + [ + [ + "/compat/webkit-linear-gradient-diff-unprefixed-ref.html", + "==" + ] + ], + {} + ] + ], "compat/webkit-linear-gradient-line-bottom.html": [ [ "compat/webkit-linear-gradient-line-bottom.html", @@ -139341,6 +139359,18 @@ {} ] ], + "css/css-pseudo/grammar-error-001.html": [ + [ + "css/css-pseudo/grammar-error-001.html", + [ + [ + "/css/css-pseudo/grammar-error-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-pseudo/marker-and-other-pseudo-elements.html": [ [ "css/css-pseudo/marker-and-other-pseudo-elements.html", @@ -139533,6 +139563,30 @@ {} ] ], + "css/css-pseudo/marker-content-012.html": [ + [ + "css/css-pseudo/marker-content-012.html", + [ + [ + "/css/css-pseudo/marker-content-012-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-pseudo/marker-content-013.html": [ + [ + "css/css-pseudo/marker-content-013.html", + [ + [ + "/css/css-pseudo/marker-content-013-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-pseudo/marker-display-dynamic-001.html": [ [ "css/css-pseudo/marker-display-dynamic-001.html", @@ -139665,6 +139719,30 @@ {} ] ], + "css/css-pseudo/selection-text-shadow-016.html": [ + [ + "css/css-pseudo/selection-text-shadow-016.html", + [ + [ + "/css/css-pseudo/selection-text-shadow-016-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-pseudo/spelling-error-001.html": [ + [ + "css/css-pseudo/spelling-error-001.html", + [ + [ + "/css/css-pseudo/spelling-error-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-regions/contentEditable/contentEditable-001.html": [ [ "css/css-regions/contentEditable/contentEditable-001.html", @@ -166909,6 +166987,18 @@ {} ] ], + "css/css-ui/outline-offset-table-001.html": [ + [ + "css/css-ui/outline-offset-table-001.html", + [ + [ + "/css/css-ui/outline-offset-table-001-notref.html", + "!=" + ] + ], + {} + ] + ], "css/css-ui/outline-offset.html": [ [ "css/css-ui/outline-offset.html", @@ -207603,6 +207693,18 @@ {} ] ], + "svg/embedded/image-fractional-width-vertical-fidelity.svg": [ + [ + "svg/embedded/image-fractional-width-vertical-fidelity.svg", + [ + [ + "/svg/embedded/reference/green-rect-100x100.svg", + "==" + ] + ], + {} + ] + ], "svg/extensibility/foreignObject/composited-inside-object.html": [ [ "svg/extensibility/foreignObject/composited-inside-object.html", @@ -214227,18 +214329,6 @@ "2dcontext/imagebitmap/common.sub.js": [ [] ], - "2dcontext/imagebitmap/resources/coop-coep-popup.html": [ - [] - ], - "2dcontext/imagebitmap/resources/coop-coep-popup.html.headers": [ - [] - ], - "2dcontext/imagebitmap/resources/coop-coep-worker.js": [ - [] - ], - "2dcontext/imagebitmap/resources/coop-coep-worker.js.headers": [ - [] - ], "2dcontext/imagebitmap/transfer-worker.js": [ [] ], @@ -216804,6 +216894,9 @@ "compat/webkit-box-fieldset-ref.html": [ [] ], + "compat/webkit-linear-gradient-diff-unprefixed-ref.html": [ + [] + ], "compat/webkit-text-fill-color-property-001-ref.html": [ [] ], @@ -246504,6 +246597,9 @@ "css/css-cascade/reference/ref-filled-green-100px-square.xht": [ [] ], + "css/css-color-adjust/meta/support/compute-root-color-scheme.js": [ + [] + ], "css/css-color/LICENSE": [ [] ], @@ -255513,6 +255609,9 @@ "css/css-pseudo/first-line-with-out-of-flow-ref.html": [ [] ], + "css/css-pseudo/grammar-error-001-ref.html": [ + [] + ], "css/css-pseudo/marker-and-other-pseudo-elements-ref.html": [ [] ], @@ -255552,6 +255651,12 @@ "css/css-pseudo/marker-content-011-ref.html": [ [] ], + "css/css-pseudo/marker-content-012-ref.html": [ + [] + ], + "css/css-pseudo/marker-content-013-ref.html": [ + [] + ], "css/css-pseudo/marker-font-properties-ref.html": [ [] ], @@ -255570,6 +255675,12 @@ "css/css-pseudo/placeholder-input-number-notref.html": [ [] ], + "css/css-pseudo/selection-text-shadow-016-ref.html": [ + [] + ], + "css/css-pseudo/spelling-error-001-ref.html": [ + [] + ], "css/css-regions/META.yml": [ [] ], @@ -260211,6 +260322,9 @@ "css/css-ui/appearance-textfield-001-ref.html": [ [] ], + "css/css-ui/outline-offset-table-001-notref.html": [ + [] + ], "css/css-ui/reference/box-sizing-001-ref.html": [ [] ], @@ -267786,6 +267900,96 @@ "element-timing/resources/square20.png": [ [] ], + "encoding-detection/__dir__.headers": [ + [] + ], + "encoding-detection/support/__dir__.headers": [ + [] + ], + "encoding-detection/support/ar-ISO-8859-6-late.sub.html": [ + [] + ], + "encoding-detection/support/ar-windows-1256-late.sub.html": [ + [] + ], + "encoding-detection/support/el-ISO-8859-7-late.sub.html": [ + [] + ], + "encoding-detection/support/el-windows-1253-late.sub.html": [ + [] + ], + "encoding-detection/support/fa-windows-1256-late.sub.html": [ + [] + ], + "encoding-detection/support/fi-windows-1252-late.sub.html": [ + [] + ], + "encoding-detection/support/he-ISO-8859-8-late.sub.html": [ + [] + ], + "encoding-detection/support/he-windows-1255-late.sub.html": [ + [] + ], + "encoding-detection/support/is-windows-1252-late.sub.html": [ + [] + ], + "encoding-detection/support/ja-EUC-JP-late.sub.html": [ + [] + ], + "encoding-detection/support/ja-ISO-2022-JP-late.sub.html": [ + [] + ], + "encoding-detection/support/ja-Shift_JIS-late.sub.html": [ + [] + ], + "encoding-detection/support/ko-EUC-KR-late.sub.html": [ + [] + ], + "encoding-detection/support/lt-windows-1257-late.sub.html": [ + [] + ], + "encoding-detection/support/lv-windows-1257-late.sub.html": [ + [] + ], + "encoding-detection/support/pl-ISO-8859-2-late.sub.html": [ + [] + ], + "encoding-detection/support/pl-windows-1250-late.sub.html": [ + [] + ], + "encoding-detection/support/pt-windows-1252-late.sub.html": [ + [] + ], + "encoding-detection/support/ru-IBM866-late.sub.html": [ + [] + ], + "encoding-detection/support/ru-ISO-8859-5-late.sub.html": [ + [] + ], + "encoding-detection/support/th-windows-874-late.sub.html": [ + [] + ], + "encoding-detection/support/tr-windows-1254-late.sub.html": [ + [] + ], + "encoding-detection/support/uk-KOI8-U-late.sub.html": [ + [] + ], + "encoding-detection/support/uk-windows-1251-late.sub.html": [ + [] + ], + "encoding-detection/support/vi-windows-1258-late.sub.html": [ + [] + ], + "encoding-detection/support/yi-windows-1255-late.sub.html": [ + [] + ], + "encoding-detection/support/zh-Big5-late.sub.html": [ + [] + ], + "encoding-detection/support/zh-GBK-late.sub.html": [ + [] + ], "encoding/META.yml": [ [] ], @@ -279867,6 +280071,12 @@ "portals/resources/eval-portal.html": [ [] ], + "portals/resources/focus-page-with-button.html": [ + [] + ], + "portals/resources/focus-page-with-x-origin-iframe.sub.html": [ + [] + ], "portals/resources/open-blank-host.js": [ [] ], @@ -289191,9 +289401,6 @@ "tools/third_party/six/MANIFEST.in": [ [] ], - "tools/third_party/six/PKG-INFO": [ - [] - ], "tools/third_party/six/README.rst": [ [] ], @@ -289212,16 +289419,22 @@ "tools/third_party/six/setup.py": [ [] ], - "tools/third_party/six/six.egg-info/PKG-INFO": [ + "tools/third_party/six/six-1.13.0.dist-info/INSTALLER": [ [] ], - "tools/third_party/six/six.egg-info/SOURCES.txt": [ + "tools/third_party/six/six-1.13.0.dist-info/LICENSE": [ [] ], - "tools/third_party/six/six.egg-info/dependency_links.txt": [ + "tools/third_party/six/six-1.13.0.dist-info/METADATA": [ [] ], - "tools/third_party/six/six.egg-info/top_level.txt": [ + "tools/third_party/six/six-1.13.0.dist-info/RECORD": [ + [] + ], + "tools/third_party/six/six-1.13.0.dist-info/WHEEL": [ + [] + ], + "tools/third_party/six/six-1.13.0.dist-info/top_level.txt": [ [] ], "tools/third_party/six/six.py": [ @@ -297167,23 +297380,6 @@ {} ] ], - "2dcontext/imagebitmap/no-coop-coep.https.window.js": [ - [ - "2dcontext/imagebitmap/no-coop-coep.https.window.html", - { - "script_metadata": [ - [ - "script", - "/common/utils.js" - ], - [ - "script", - "/common/get-host-info.sub.js" - ] - ] - } - ] - ], "2dcontext/line-styles/2d.line.cap.butt.html": [ [ "2dcontext/line-styles/2d.line.cap.butt.html", @@ -320662,6 +320858,72 @@ {} ] ], + "css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-insert.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-insert.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-no-content-value.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-no-content-value.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-remove-head.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-remove-head.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-remove.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-remove.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html", + {} + ] + ], + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html": [ + [ + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html", + {} + ] + ], "css/css-color-adjust/parsing/color-scheme-computed.html": [ [ "css/css-color-adjust/parsing/color-scheme-computed.html", @@ -321852,6 +322114,12 @@ {} ] ], + "css/css-fonts/animations/font-variation-settings-composition.html": [ + [ + "css/css-fonts/animations/font-variation-settings-composition.html", + {} + ] + ], "css/css-fonts/animations/font-variation-settings-interpolation.html": [ [ "css/css-fonts/animations/font-variation-settings-interpolation.html", @@ -334532,6 +334800,12 @@ {} ] ], + "css/css-values/ch-recalc-on-font-load.html": [ + [ + "css/css-values/ch-recalc-on-font-load.html", + {} + ] + ], "css/css-values/clamp-length-computed.html": [ [ "css/css-values/clamp-length-computed.html", @@ -335678,6 +335952,12 @@ {} ] ], + "css/cssom-view/getClientRects-inline-atomic-child.html": [ + [ + "css/cssom-view/getClientRects-inline-atomic-child.html", + {} + ] + ], "css/cssom-view/historical.html": [ [ "css/cssom-view/historical.html", @@ -340838,6 +341118,18 @@ {} ] ], + "domxpath/node-sets.html": [ + [ + "domxpath/node-sets.html", + {} + ] + ], + "domxpath/predicates.html": [ + [ + "domxpath/predicates.html", + {} + ] + ], "domxpath/xml_xpath_runner.html": [ [ "domxpath/xml_xpath_runner.html", @@ -341837,6 +342129,348 @@ {} ] ], + "encoding-detection/ar-ISO-8859-6-late.tentative.html": [ + [ + "encoding-detection/ar-ISO-8859-6-late.tentative.html", + {} + ] + ], + "encoding-detection/ar-ISO-8859-6.tentative.html": [ + [ + "encoding-detection/ar-ISO-8859-6.tentative.html", + {} + ] + ], + "encoding-detection/ar-windows-1256-late.tentative.html": [ + [ + "encoding-detection/ar-windows-1256-late.tentative.html", + {} + ] + ], + "encoding-detection/ar-windows-1256.tentative.html": [ + [ + "encoding-detection/ar-windows-1256.tentative.html", + {} + ] + ], + "encoding-detection/el-ISO-8859-7-late.tentative.html": [ + [ + "encoding-detection/el-ISO-8859-7-late.tentative.html", + {} + ] + ], + "encoding-detection/el-ISO-8859-7.tentative.html": [ + [ + "encoding-detection/el-ISO-8859-7.tentative.html", + {} + ] + ], + "encoding-detection/el-windows-1253-late.tentative.html": [ + [ + "encoding-detection/el-windows-1253-late.tentative.html", + {} + ] + ], + "encoding-detection/el-windows-1253.tentative.html": [ + [ + "encoding-detection/el-windows-1253.tentative.html", + {} + ] + ], + "encoding-detection/fa-windows-1256-late.tentative.html": [ + [ + "encoding-detection/fa-windows-1256-late.tentative.html", + {} + ] + ], + "encoding-detection/fa-windows-1256.tentative.html": [ + [ + "encoding-detection/fa-windows-1256.tentative.html", + {} + ] + ], + "encoding-detection/fi-windows-1252-late.tentative.html": [ + [ + "encoding-detection/fi-windows-1252-late.tentative.html", + {} + ] + ], + "encoding-detection/fi-windows-1252.tentative.html": [ + [ + "encoding-detection/fi-windows-1252.tentative.html", + {} + ] + ], + "encoding-detection/he-ISO-8859-8-late.tentative.html": [ + [ + "encoding-detection/he-ISO-8859-8-late.tentative.html", + {} + ] + ], + "encoding-detection/he-ISO-8859-8.tentative.html": [ + [ + "encoding-detection/he-ISO-8859-8.tentative.html", + {} + ] + ], + "encoding-detection/he-windows-1255-late.tentative.html": [ + [ + "encoding-detection/he-windows-1255-late.tentative.html", + {} + ] + ], + "encoding-detection/he-windows-1255.tentative.html": [ + [ + "encoding-detection/he-windows-1255.tentative.html", + {} + ] + ], + "encoding-detection/is-windows-1252-late.tentative.html": [ + [ + "encoding-detection/is-windows-1252-late.tentative.html", + {} + ] + ], + "encoding-detection/is-windows-1252.tentative.html": [ + [ + "encoding-detection/is-windows-1252.tentative.html", + {} + ] + ], + "encoding-detection/ja-EUC-JP-late.tentative.html": [ + [ + "encoding-detection/ja-EUC-JP-late.tentative.html", + {} + ] + ], + "encoding-detection/ja-EUC-JP.tentative.html": [ + [ + "encoding-detection/ja-EUC-JP.tentative.html", + {} + ] + ], + "encoding-detection/ja-ISO-2022-JP-late.tentative.html": [ + [ + "encoding-detection/ja-ISO-2022-JP-late.tentative.html", + {} + ] + ], + "encoding-detection/ja-ISO-2022-JP.tentative.html": [ + [ + "encoding-detection/ja-ISO-2022-JP.tentative.html", + {} + ] + ], + "encoding-detection/ja-Shift_JIS-late.tentative.html": [ + [ + "encoding-detection/ja-Shift_JIS-late.tentative.html", + {} + ] + ], + "encoding-detection/ja-Shift_JIS.tentative.html": [ + [ + "encoding-detection/ja-Shift_JIS.tentative.html", + {} + ] + ], + "encoding-detection/ko-EUC-KR-late.tentative.html": [ + [ + "encoding-detection/ko-EUC-KR-late.tentative.html", + {} + ] + ], + "encoding-detection/ko-EUC-KR.tentative.html": [ + [ + "encoding-detection/ko-EUC-KR.tentative.html", + {} + ] + ], + "encoding-detection/lt-windows-1257-late.tentative.html": [ + [ + "encoding-detection/lt-windows-1257-late.tentative.html", + {} + ] + ], + "encoding-detection/lt-windows-1257.tentative.html": [ + [ + "encoding-detection/lt-windows-1257.tentative.html", + {} + ] + ], + "encoding-detection/lv-windows-1257-late.tentative.html": [ + [ + "encoding-detection/lv-windows-1257-late.tentative.html", + {} + ] + ], + "encoding-detection/lv-windows-1257.tentative.html": [ + [ + "encoding-detection/lv-windows-1257.tentative.html", + {} + ] + ], + "encoding-detection/pl-ISO-8859-2-late.tentative.html": [ + [ + "encoding-detection/pl-ISO-8859-2-late.tentative.html", + {} + ] + ], + "encoding-detection/pl-ISO-8859-2.tentative.html": [ + [ + "encoding-detection/pl-ISO-8859-2.tentative.html", + {} + ] + ], + "encoding-detection/pl-windows-1250-late.tentative.html": [ + [ + "encoding-detection/pl-windows-1250-late.tentative.html", + {} + ] + ], + "encoding-detection/pl-windows-1250.tentative.html": [ + [ + "encoding-detection/pl-windows-1250.tentative.html", + {} + ] + ], + "encoding-detection/pt-windows-1252-late.tentative.html": [ + [ + "encoding-detection/pt-windows-1252-late.tentative.html", + {} + ] + ], + "encoding-detection/pt-windows-1252.tentative.html": [ + [ + "encoding-detection/pt-windows-1252.tentative.html", + {} + ] + ], + "encoding-detection/ru-IBM866-late.tentative.html": [ + [ + "encoding-detection/ru-IBM866-late.tentative.html", + {} + ] + ], + "encoding-detection/ru-IBM866.tentative.html": [ + [ + "encoding-detection/ru-IBM866.tentative.html", + {} + ] + ], + "encoding-detection/ru-ISO-8859-5-late.tentative.html": [ + [ + "encoding-detection/ru-ISO-8859-5-late.tentative.html", + {} + ] + ], + "encoding-detection/ru-ISO-8859-5.tentative.html": [ + [ + "encoding-detection/ru-ISO-8859-5.tentative.html", + {} + ] + ], + "encoding-detection/th-windows-874-late.tentative.html": [ + [ + "encoding-detection/th-windows-874-late.tentative.html", + {} + ] + ], + "encoding-detection/th-windows-874.tentative.html": [ + [ + "encoding-detection/th-windows-874.tentative.html", + {} + ] + ], + "encoding-detection/tr-windows-1254-late.tentative.html": [ + [ + "encoding-detection/tr-windows-1254-late.tentative.html", + {} + ] + ], + "encoding-detection/tr-windows-1254.tentative.html": [ + [ + "encoding-detection/tr-windows-1254.tentative.html", + {} + ] + ], + "encoding-detection/uk-KOI8-U-late.tentative.html": [ + [ + "encoding-detection/uk-KOI8-U-late.tentative.html", + {} + ] + ], + "encoding-detection/uk-KOI8-U.tentative.html": [ + [ + "encoding-detection/uk-KOI8-U.tentative.html", + {} + ] + ], + "encoding-detection/uk-windows-1251-late.tentative.html": [ + [ + "encoding-detection/uk-windows-1251-late.tentative.html", + {} + ] + ], + "encoding-detection/uk-windows-1251.tentative.html": [ + [ + "encoding-detection/uk-windows-1251.tentative.html", + {} + ] + ], + "encoding-detection/utf-8.html": [ + [ + "encoding-detection/utf-8.html", + {} + ] + ], + "encoding-detection/vi-windows-1258-late.tentative.html": [ + [ + "encoding-detection/vi-windows-1258-late.tentative.html", + {} + ] + ], + "encoding-detection/vi-windows-1258.tentative.html": [ + [ + "encoding-detection/vi-windows-1258.tentative.html", + {} + ] + ], + "encoding-detection/yi-windows-1255-late.tentative.html": [ + [ + "encoding-detection/yi-windows-1255-late.tentative.html", + {} + ] + ], + "encoding-detection/yi-windows-1255.tentative.html": [ + [ + "encoding-detection/yi-windows-1255.tentative.html", + {} + ] + ], + "encoding-detection/zh-Big5-late.tentative.html": [ + [ + "encoding-detection/zh-Big5-late.tentative.html", + {} + ] + ], + "encoding-detection/zh-Big5.tentative.html": [ + [ + "encoding-detection/zh-Big5.tentative.html", + {} + ] + ], + "encoding-detection/zh-GBK-late.tentative.html": [ + [ + "encoding-detection/zh-GBK-late.tentative.html", + {} + ] + ], + "encoding-detection/zh-GBK.tentative.html": [ + [ + "encoding-detection/zh-GBK.tentative.html", + {} + ] + ], "encoding/api-basics.any.js": [ [ "encoding/api-basics.any.html", @@ -355277,6 +355911,14 @@ } ] ], + "fetch/metadata/download.tentative.https.sub.html": [ + [ + "fetch/metadata/download.tentative.https.sub.html", + { + "testdriver": true + } + ] + ], "fetch/metadata/embed.tentative.https.sub.html": [ [ "fetch/metadata/embed.tentative.https.sub.html", @@ -358421,6 +359063,12 @@ {} ] ], + "html/cross-origin-embedder-policy/meta-http-equiv.https.html": [ + [ + "html/cross-origin-embedder-policy/meta-http-equiv.https.html", + {} + ] + ], "html/cross-origin-embedder-policy/non-initial-about-blank.https.html": [ [ "html/cross-origin-embedder-policy/non-initial-about-blank.https.html", @@ -372939,6 +373587,12 @@ {} ] ], + "layout-instability/body-display-change.html": [ + [ + "layout-instability/body-display-change.html", + {} + ] + ], "layout-instability/buffer-layout-shift.html": [ [ "layout-instability/buffer-layout-shift.html", @@ -373112,6 +373766,12 @@ {} ] ], + "loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html": [ + [ + "loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html", + {} + ] + ], "loading/lazyload/disconnected-image-loading-lazy.tentative.html": [ [ "loading/lazyload/disconnected-image-loading-lazy.tentative.html", @@ -373136,9 +373796,15 @@ {} ] ], - "loading/lazyload/image-loading-lazy-multicol-tentative.html": [ + "loading/lazyload/image-loading-lazy-load-event.tentative.html": [ [ - "loading/lazyload/image-loading-lazy-multicol-tentative.html", + "loading/lazyload/image-loading-lazy-load-event.tentative.html", + {} + ] + ], + "loading/lazyload/image-loading-lazy-multicol.tentative.html": [ + [ + "loading/lazyload/image-loading-lazy-multicol.tentative.html", {} ] ], @@ -373154,9 +373820,15 @@ {} ] ], - "loading/lazyload/invisible-lazy-image.tentative.html": [ + "loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html": [ [ - "loading/lazyload/invisible-lazy-image.tentative.html", + "loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html", + {} + ] + ], + "loading/lazyload/not-rendered-image-loading-lazy.tentative.html": [ + [ + "loading/lazyload/not-rendered-image-loading-lazy.tentative.html", {} ] ], @@ -390737,6 +391409,12 @@ {} ] ], + "portals/portals-focus.sub.html": [ + [ + "portals/portals-focus.sub.html", + {} + ] + ], "portals/portals-host-exposure.sub.html": [ [ "portals/portals-host-exposure.sub.html", @@ -406596,6 +407274,12 @@ {} ] ], + "scroll-animations/setting-current-time.html": [ + [ + "scroll-animations/setting-current-time.html", + {} + ] + ], "scroll-to-text-fragment/scroll-to-text-fragment-api.html": [ [ "scroll-to-text-fragment/scroll-to-text-fragment-api.html", @@ -463994,7 +464678,7 @@ "testharness" ], "2dcontext/imagebitmap/createImageBitmap-serializable.html": [ - "b40d9cec3f37f4c5d88f030829ac9cadaa30d51e", + "a4434aec6e43cefe0f78a56f748f4a37709b1cea", "testharness" ], "2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html": [ @@ -464002,29 +464686,9 @@ "testharness" ], "2dcontext/imagebitmap/createImageBitmap-transfer.html": [ - "580ec8a5ed04d674d5eae4a8f5b74c46e1bae2b2", + "708f97097c16e9074cc3cbf54dad0ee75df7967c", "testharness" ], - "2dcontext/imagebitmap/no-coop-coep.https.window.js": [ - "5295f1e10cfdd572272519f96e4f17d63f60abec", - "testharness" - ], - "2dcontext/imagebitmap/resources/coop-coep-popup.html": [ - "f0228503ffa8aa6dd57eebdead094f085ed7dedf", - "support" - ], - "2dcontext/imagebitmap/resources/coop-coep-popup.html.headers": [ - "63b60e490f47f4db77d33d7a4ca2f5b9a4181de8", - "support" - ], - "2dcontext/imagebitmap/resources/coop-coep-worker.js": [ - "a6e9cc58935c417369cf5aee29c03dd17c86a5c7", - "support" - ], - "2dcontext/imagebitmap/resources/coop-coep-worker.js.headers": [ - "6604450991a122e3e241e40b1b9e0516c525389d", - "support" - ], "2dcontext/imagebitmap/transfer-worker.js": [ "55465a899ca27d5202dfa796ec5200bde845892b", "support" @@ -471882,7 +472546,7 @@ "testharness" ], "bluetooth/requestDevice/not-processing-user-gesture.https.html": [ - "98dc0ce80e7ba1b0e83c096c3f371548399f5cf3", + "f74540db958c2b5bc924be0f909e34196c937999", "testharness" ], "bluetooth/requestDevice/radio-not-present.https.html": [ @@ -472062,7 +472726,7 @@ "testharness" ], "bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js": [ - "1eb62d3a3118e9c63decb6d82aeb0aa906e396f3", + "4a1baf3ebc2d89f541b7ad5e057d980317902a09", "testharness" ], "bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.window.js": [ @@ -472074,11 +472738,11 @@ "testharness" ], "bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js": [ - "c95f8b921a74eeedf06f8c987bd233ca97c060fb", + "0d3e5cf18a4c708d0f9620148819150deeb7f682", "testharness" ], "bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js": [ - "e610b715b3aae554bec472cc5fcc74d3fc4fb7ad", + "7bb1ef5cb634c5af76ae835247f967a51845f04e", "testharness" ], "bluetooth/server/getPrimaryService/gen-discovery-complete-no-permission-absent-service.https.window.js": [ @@ -472146,11 +472810,11 @@ "testharness" ], "bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js": [ - "ad446499cbabf6efa98a8d4fb65aeebc1dc22da5", + "8bc12f3c474441514a568c27d7f63c1883c99d1e", "testharness" ], "bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js": [ - "485dbb30421e31108e256cd2f7a57ad2a27bfab5", + "1c77e4e710ae766e72bf13b82d290309ebe30bb0", "testharness" ], "bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.window.js": [ @@ -472170,19 +472834,19 @@ "testharness" ], "bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js": [ - "d9f61674671bf0c31776af26c6c477578e6760b6", + "c226d2dc65ea69f19116906104a5d1fe5da750ac", "testharness" ], "bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js": [ - "b1c9688cc14e68069eac95e8a9b1cc272cf1f527", + "d69f6c5d5c27377958becb16fd660961e4e3c5e2", "testharness" ], "bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js": [ - "8d64dafb760e2d04d4d9dd3c2f9db7e167ffe718", + "a35984f85115ad27eb9903c1aeded5e627308365", "testharness" ], "bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js": [ - "9c411120a0446017e85ce151b96f31bdabb9b8f9", + "36d7e64d5551cae9020834e49f5876e2a42bc7ca", "testharness" ], "bluetooth/server/getPrimaryServices/gen-discovery-complete-no-permission-absent-service-with-uuid.https.window.js": [ @@ -473025,6 +473689,14 @@ "b288a9a43fe8eba26a4ef37bd5439cbe75047885", "testharness" ], + "compat/webkit-linear-gradient-diff-unprefixed-ref.html": [ + "96c2089d6566b370f7e65d1455e202933ea80436", + "support" + ], + "compat/webkit-linear-gradient-diff-unprefixed.html": [ + "ee49dc4e158bdec6013860afc443d4b6e9c4411c", + "reftest" + ], "compat/webkit-linear-gradient-line-bottom.html": [ "21e1c8948bfedb697e64627d7c2372163cd5bb28", "reftest" @@ -561609,6 +562281,54 @@ "f7f6529349bf1ba0436e2d1165a81552de95ffaa", "testharness" ], + "css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html": [ + "bb9fa659f32778b3860d93b0c4964521db01720d", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html": [ + "86cc93c2dc9e2eef670f9f153b89e6f764db382e", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html": [ + "0ade6df501eef9ac035b6688a0b1b6a38ecda1e7", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-insert.html": [ + "861818284bcb74857bc89b293c34b02c7a464223", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-no-content-value.html": [ + "6edb761960b60b2b0b69842179772aeb9288e4c8", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html": [ + "5a87604e86b992669e92fd1be3a243841e5d890e", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-remove-head.html": [ + "d627f62df781a15b3bc9f8d1ea28f755104a7e54", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-remove.html": [ + "8439c5046259dfe3648331476849976f1b60f9e5", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html": [ + "ff8fe416251c15f28e45ba07d2cca4b4f87733a3", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html": [ + "6b5e5c0f8a6f6519a5ac63945811671ef743dee7", + "testharness" + ], + "css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html": [ + "23ec7de1a945876a6a2e75eb4b72ce41be972a8a", + "testharness" + ], + "css/css-color-adjust/meta/support/compute-root-color-scheme.js": [ + "8ceddbc40bf2cdc37c0c26e0bede9b7a24892caf", + "support" + ], "css/css-color-adjust/parsing/color-scheme-computed.html": [ "a5ad4d534056973883f47c615d50f8dff854ece8", "testharness" @@ -569809,6 +570529,10 @@ "d84ff7e5dfe3f4c86ed4b9bf30914ed3d11b156c", "testharness" ], + "css/css-fonts/animations/font-variation-settings-composition.html": [ + "58f037415e23801fb2c540e5ae3b032cdd4ff0c8", + "testharness" + ], "css/css-fonts/animations/font-variation-settings-interpolation.html": [ "cb99d7b255e9ac8743b7afadc79c7276ff5f74ed", "testharness" @@ -581426,7 +582150,7 @@ "reftest" ], "css/css-images/inheritance.html": [ - "5ca1ed6b23ff70637d790baf81ae4e3cbf5afe8c", + "cf51ef3f7d91b15724e93f4c9a2060319f248aba", "testharness" ], "css/css-images/linear-gradient-1.html": [ @@ -588777,6 +589501,14 @@ "798ecf8264e2ddb38257c6cb1174bcc069c6e6d1", "reftest" ], + "css/css-pseudo/grammar-error-001-ref.html": [ + "ecdb308f2f426af4f2763fabb30f7244f42fcf62", + "support" + ], + "css/css-pseudo/grammar-error-001.html": [ + "3fe34ae7bcdd8ad1dfd4fb94983fb0a7d7259fb8", + "reftest" + ], "css/css-pseudo/idlharness.html": [ "eb0652e9eeb374ed1d3bb4bf235b0b3cf13fde06", "testharness" @@ -588897,6 +589629,22 @@ "0cc20b0cdcd242021bc37b9e2d3500ed21c5b35f", "reftest" ], + "css/css-pseudo/marker-content-012-ref.html": [ + "d40c55c7362e0bee717efa86259161926085bb66", + "support" + ], + "css/css-pseudo/marker-content-012.html": [ + "f36228719a0656e822892661e83a23a8382c742c", + "reftest" + ], + "css/css-pseudo/marker-content-013-ref.html": [ + "7657cfbd710763325972f860af7744eda98a236a", + "support" + ], + "css/css-pseudo/marker-content-013.html": [ + "427578f9c5abfd1be809ea71cfcfdac4298def44", + "reftest" + ], "css/css-pseudo/marker-default-styles.html": [ "05da6f89a9e2f858eadfdfb63e5194feda5ce3fc", "testharness" @@ -588993,6 +589741,26 @@ "a557f1091ec29dd90cd4290cf96ac4752b04ff3f", "reftest" ], + "css/css-pseudo/selection-text-shadow-006-manual.html": [ + "57c9ad67d17bd7a3a37acd86bef43989c45d9480", + "manual" + ], + "css/css-pseudo/selection-text-shadow-016-ref.html": [ + "5e3eabc976e2bc75b6a290f2b740b54d8cdbf99a", + "support" + ], + "css/css-pseudo/selection-text-shadow-016.html": [ + "44403c1b5f5fb2bf7245c73f5eb5c15ffd19a98a", + "reftest" + ], + "css/css-pseudo/spelling-error-001-ref.html": [ + "1e068262780074b3f2acb50ae8cee69b84c72af3", + "support" + ], + "css/css-pseudo/spelling-error-001.html": [ + "a71d6f0155e42ad0ebe33f6ea11aa5755201beaa", + "reftest" + ], "css/css-regions/META.yml": [ "37bdc98c84c0f4c9a32d3cc5b2f4e3494eb63999", "support" @@ -611185,6 +611953,14 @@ "a131e96e29ef8d6dd0f3cbbc03235ede4f71e014", "reftest" ], + "css/css-ui/outline-offset-table-001-notref.html": [ + "aafa2b053cb30d77997743a226901d6dd4472724", + "support" + ], + "css/css-ui/outline-offset-table-001.html": [ + "4b6f46949b7dae8b162b3d41f4efcadc9464a1d0", + "reftest" + ], "css/css-ui/outline-offset.html": [ "5dee28e3b4f4e98c44be820f9f7ed0dafb661038", "reftest" @@ -612965,6 +613741,10 @@ "ffb2ecd6dc9c1a1bf4b8f5fc23c851f00e01fd6d", "reftest" ], + "css/css-values/ch-recalc-on-font-load.html": [ + "625521b8102deb6cb2ca89eced91dda720c8408c", + "testharness" + ], "css/css-values/ch-unit-001.html": [ "83374e7bb291e45a44e3002635f967611aa1a5b7", "reftest" @@ -616430,7 +617210,7 @@ "reftest" ], "css/css-writing-modes/float-shrink-to-fit-vrl-vlr-016.xht": [ - "3dfcd4716caafb0b4bd225ef1b8ff43a29ded025", + "f76d119a076f16b0cdfe523153f684e662b16a80", "reftest" ], "css/css-writing-modes/float-vlr-003.xht": [ @@ -621177,6 +621957,10 @@ "c5a3062cf495fdb5061951c4184156d90ff056d5", "testharness" ], + "css/cssom-view/getClientRects-inline-atomic-child.html": [ + "f1f6fc5abc679d087d221573456eb9219d1a405c", + "testharness" + ], "css/cssom-view/getClientRects-inline.html": [ "415e34a6f0430e08441ee32b3f7c0ca8cd11a692", "reftest" @@ -626214,7 +626998,7 @@ "support" ], "css/support/interpolation-testcommon.js": [ - "d1cb7cfbeb07fb16439c2245f12c5fbc174c77b4", + "16a1c0e7f7fb83f52b3b5d55fda4d49462fa9fe6", "support" ], "css/support/parsing-testcommon.js": [ @@ -638258,7 +639042,7 @@ "support" ], "domparsing/DOMParser-parseFromString-html.html": [ - "ad65cc58618462591568dda622f35b68a64c1d63", + "2660d1d6c87ab6cddbafe92e1b63e93ea192fcd2", "testharness" ], "domparsing/DOMParser-parseFromString-xml-doctype.html": [ @@ -638385,6 +639169,14 @@ "c7c102945d070a4ea65cae0e30ea6ec64bb82c95", "testharness" ], + "domxpath/node-sets.html": [ + "a47314fb0869885db01fd13bd8aa35687e283d0d", + "testharness" + ], + "domxpath/predicates.html": [ + "1786740dbd2522c15325a6e8677b07402a7cd767", + "testharness" + ], "domxpath/xml_xpath_runner.html": [ "42404562a3c95b3004c7b0b7402ea366faeb4d83", "testharness" @@ -639169,6 +639961,354 @@ "d988934708116f29f9289511559079544aba1ba6", "testharness" ], + "encoding-detection/__dir__.headers": [ + "a50d2c8454fd943a3e26a80398ad11e8fa9e9551", + "support" + ], + "encoding-detection/ar-ISO-8859-6-late.tentative.html": [ + "2fc94256dde5fa4b57dec409bdd0fa76ac7dba73", + "testharness" + ], + "encoding-detection/ar-ISO-8859-6.tentative.html": [ + "6967aaeb0a0da8497192a60257cdbfef72d66ae5", + "testharness" + ], + "encoding-detection/ar-windows-1256-late.tentative.html": [ + "9928968869d5a3747f593c395278e01f7ec0814f", + "testharness" + ], + "encoding-detection/ar-windows-1256.tentative.html": [ + "d2d6d93d581021856add19c474286ee66abeaed1", + "testharness" + ], + "encoding-detection/el-ISO-8859-7-late.tentative.html": [ + "fc5e799b814d58d9503bc9449ad8d96e71c8097e", + "testharness" + ], + "encoding-detection/el-ISO-8859-7.tentative.html": [ + "f22b6ec5757dd96342142fcbb86cf2976dd1cb49", + "testharness" + ], + "encoding-detection/el-windows-1253-late.tentative.html": [ + "9a2960b4ff68d2a170957461753b5608ef745303", + "testharness" + ], + "encoding-detection/el-windows-1253.tentative.html": [ + "b314aa58e6b47642c203fb46b942b4747deba965", + "testharness" + ], + "encoding-detection/fa-windows-1256-late.tentative.html": [ + "5398445c0ee03c091ed427aec99335b4721dd3ed", + "testharness" + ], + "encoding-detection/fa-windows-1256.tentative.html": [ + "fb93c389fd17bbded9bf8165f90b876822ce7b75", + "testharness" + ], + "encoding-detection/fi-windows-1252-late.tentative.html": [ + "b84a257a51988a99a7fcfb55f657e98015e710d1", + "testharness" + ], + "encoding-detection/fi-windows-1252.tentative.html": [ + "5a4efcaf95eca332d6a0d599eb550de9210c8a68", + "testharness" + ], + "encoding-detection/he-ISO-8859-8-late.tentative.html": [ + "bd19bdb6d40d9e5ca306a7569fa2cf183e46d046", + "testharness" + ], + "encoding-detection/he-ISO-8859-8.tentative.html": [ + "f1651da3ef6dd9d28247fb812977ed976ed7ec73", + "testharness" + ], + "encoding-detection/he-windows-1255-late.tentative.html": [ + "9627458c034924ea7d935730d8f7f84080654a1f", + "testharness" + ], + "encoding-detection/he-windows-1255.tentative.html": [ + "738cc35da897d578064aab548c2bbe9436969b2d", + "testharness" + ], + "encoding-detection/is-windows-1252-late.tentative.html": [ + "7f733a4fb156f3d2060f800543a17c8e7b052bf2", + "testharness" + ], + "encoding-detection/is-windows-1252.tentative.html": [ + "06151d857542cd8028e24bd32b3a294313e75b7c", + "testharness" + ], + "encoding-detection/ja-EUC-JP-late.tentative.html": [ + "aac50f6cd12959e7b902a69f79bc018ef7d5643e", + "testharness" + ], + "encoding-detection/ja-EUC-JP.tentative.html": [ + "5929825f357e18bc90e6d2f4ba82a3f0d1f2cd83", + "testharness" + ], + "encoding-detection/ja-ISO-2022-JP-late.tentative.html": [ + "6e4bc9157d809aa6ed795164bc68baeca7260258", + "testharness" + ], + "encoding-detection/ja-ISO-2022-JP.tentative.html": [ + "405e123808dfa46a95c680ceffd8df1528a776cd", + "testharness" + ], + "encoding-detection/ja-Shift_JIS-late.tentative.html": [ + "c822ae34a5916b789997181ab4ef62b8b213c339", + "testharness" + ], + "encoding-detection/ja-Shift_JIS.tentative.html": [ + "a496e48ad98c6c2e8aff20d147db77d3f0cb280b", + "testharness" + ], + "encoding-detection/ko-EUC-KR-late.tentative.html": [ + "9ff224a54cb2b65d6a2598eb0160e86c0faf020b", + "testharness" + ], + "encoding-detection/ko-EUC-KR.tentative.html": [ + "dac67b1e934359ea95449b93039995ba6e666d75", + "testharness" + ], + "encoding-detection/lt-windows-1257-late.tentative.html": [ + "6f9ceed7639f1c288c54de450deb50f8de451b80", + "testharness" + ], + "encoding-detection/lt-windows-1257.tentative.html": [ + "88112a2c643c8a459824788ff6db092e59f97fcb", + "testharness" + ], + "encoding-detection/lv-windows-1257-late.tentative.html": [ + "5651e415ad4728f0f81a6cbb5ffd4220e1d98c5b", + "testharness" + ], + "encoding-detection/lv-windows-1257.tentative.html": [ + "3baeb4015e7df7163bf6f3529cc815726bf38636", + "testharness" + ], + "encoding-detection/pl-ISO-8859-2-late.tentative.html": [ + "e5db00b005637078130753bc05aa11bca2887be8", + "testharness" + ], + "encoding-detection/pl-ISO-8859-2.tentative.html": [ + "da1fcefb18a3517236a32a6579191fe692abfc6a", + "testharness" + ], + "encoding-detection/pl-windows-1250-late.tentative.html": [ + "adeca83fac1512860458ff27e4b5220f78e19c7c", + "testharness" + ], + "encoding-detection/pl-windows-1250.tentative.html": [ + "b3955c418488081f5b9d999f294baa1e025ce9f4", + "testharness" + ], + "encoding-detection/pt-windows-1252-late.tentative.html": [ + "d37dac058f23c422e9dba2de867db48405d222c2", + "testharness" + ], + "encoding-detection/pt-windows-1252.tentative.html": [ + "cf55dbb6278625b4ad16deb7f99bbf0db5189679", + "testharness" + ], + "encoding-detection/ru-IBM866-late.tentative.html": [ + "03f5643a9a1011583b5304c7cc91b526986f1979", + "testharness" + ], + "encoding-detection/ru-IBM866.tentative.html": [ + "79924952594905b0035c21c35b7172072d186e62", + "testharness" + ], + "encoding-detection/ru-ISO-8859-5-late.tentative.html": [ + "760dc96c1204e9a6c64a72b6d4c86e1b6bb92b0e", + "testharness" + ], + "encoding-detection/ru-ISO-8859-5.tentative.html": [ + "a2ee62c65f53610691f366ed9eac0f19ae310ff9", + "testharness" + ], + "encoding-detection/support/__dir__.headers": [ + "a50d2c8454fd943a3e26a80398ad11e8fa9e9551", + "support" + ], + "encoding-detection/support/ar-ISO-8859-6-late.sub.html": [ + "b5d8d50498ec87cc10bebaf586452913f640a26b", + "support" + ], + "encoding-detection/support/ar-windows-1256-late.sub.html": [ + "fd80acd437deaf8b9593e0717e7e8819713806c6", + "support" + ], + "encoding-detection/support/el-ISO-8859-7-late.sub.html": [ + "26cc057b9ea7c74cd8357b540f16ae8c5ddcfbc8", + "support" + ], + "encoding-detection/support/el-windows-1253-late.sub.html": [ + "235c8e06eca32c2624c624e0b92800e07a3029d1", + "support" + ], + "encoding-detection/support/fa-windows-1256-late.sub.html": [ + "6cb79b9c366e3493a78c4d95c50f1634b9b3c8c4", + "support" + ], + "encoding-detection/support/fi-windows-1252-late.sub.html": [ + "7d99bf3f693dd4c7a89565a26c49bc3441e81ca6", + "support" + ], + "encoding-detection/support/he-ISO-8859-8-late.sub.html": [ + "32aadf0b7349a8d588eb4a9240b2397ed47f32d5", + "support" + ], + "encoding-detection/support/he-windows-1255-late.sub.html": [ + "3ded8c05857961d1f22b384a06b57d17a1a13b90", + "support" + ], + "encoding-detection/support/is-windows-1252-late.sub.html": [ + "41654c0c896d6b8eb0ba0615ab7c4b3e55571d58", + "support" + ], + "encoding-detection/support/ja-EUC-JP-late.sub.html": [ + "d957a12c50059e90cde5738956605eb8033a857a", + "support" + ], + "encoding-detection/support/ja-ISO-2022-JP-late.sub.html": [ + "6f6561c50a91b34b7416ae90374aeef835108506", + "support" + ], + "encoding-detection/support/ja-Shift_JIS-late.sub.html": [ + "c28380fe96211502d63c1dbe759805ec504833db", + "support" + ], + "encoding-detection/support/ko-EUC-KR-late.sub.html": [ + "58b6f96e613e33abeac74cdb7b87b660ca2cea68", + "support" + ], + "encoding-detection/support/lt-windows-1257-late.sub.html": [ + "4957b4563cba7212c8bf1c781d7417df7bcba257", + "support" + ], + "encoding-detection/support/lv-windows-1257-late.sub.html": [ + "f258839a8181daf415b9fdda7d6e5592d615225c", + "support" + ], + "encoding-detection/support/pl-ISO-8859-2-late.sub.html": [ + "53ec94dc31b149322fc5d4d27b9ade8c5f1c6a21", + "support" + ], + "encoding-detection/support/pl-windows-1250-late.sub.html": [ + "894a065e011acac36f10c9509bbffdd15027ade8", + "support" + ], + "encoding-detection/support/pt-windows-1252-late.sub.html": [ + "7a950e48722ab0a74f68fadedceffe9575a2c957", + "support" + ], + "encoding-detection/support/ru-IBM866-late.sub.html": [ + "929ce96640ea11d346087d03b6cc3c6a61f68edf", + "support" + ], + "encoding-detection/support/ru-ISO-8859-5-late.sub.html": [ + "7ad29ce34df2676289e46f0c28d66d71db9cc4f0", + "support" + ], + "encoding-detection/support/th-windows-874-late.sub.html": [ + "11d569cb71fc9fa8fe3976189be0f22a9e98848e", + "support" + ], + "encoding-detection/support/tr-windows-1254-late.sub.html": [ + "adcf9ccd53de24a127ceecf659b20cb10b63afa9", + "support" + ], + "encoding-detection/support/uk-KOI8-U-late.sub.html": [ + "3802d0e3f7b9eb068922754739bb553aa23abd3b", + "support" + ], + "encoding-detection/support/uk-windows-1251-late.sub.html": [ + "0bd38d93eabff8ec3762c57edabab7a921667820", + "support" + ], + "encoding-detection/support/vi-windows-1258-late.sub.html": [ + "9139072035c5d1ed9419f8f7e5b5bc4ac0818d9f", + "support" + ], + "encoding-detection/support/yi-windows-1255-late.sub.html": [ + "2e5adcb31a0dfd6253f37cdde70d5c13935389fe", + "support" + ], + "encoding-detection/support/zh-Big5-late.sub.html": [ + "517ae19c993a5692723a6dba0b495fec84940686", + "support" + ], + "encoding-detection/support/zh-GBK-late.sub.html": [ + "74e5c131bdec94b541b4cae0865470bcff80b918", + "support" + ], + "encoding-detection/th-windows-874-late.tentative.html": [ + "1428ca0a672eb75d6e571f032ef149b72d7be091", + "testharness" + ], + "encoding-detection/th-windows-874.tentative.html": [ + "2069360f5228ac9b9b455d2808ad1f32530514ae", + "testharness" + ], + "encoding-detection/tr-windows-1254-late.tentative.html": [ + "bc48d31907d87b60f5a3e6bf89bcaee9eed4ac0a", + "testharness" + ], + "encoding-detection/tr-windows-1254.tentative.html": [ + "73e888b20177aa21f748c78dafe3fa0c3bd86289", + "testharness" + ], + "encoding-detection/uk-KOI8-U-late.tentative.html": [ + "f82ff24abda84ccf0701abaecd087ae3bbed24f9", + "testharness" + ], + "encoding-detection/uk-KOI8-U.tentative.html": [ + "9852ae8a012c35b77bc6bb67a82ef0f3ea233930", + "testharness" + ], + "encoding-detection/uk-windows-1251-late.tentative.html": [ + "2dc83eecd98362d2a78787daaf193177e8cb5545", + "testharness" + ], + "encoding-detection/uk-windows-1251.tentative.html": [ + "d410eee62286725e4bc1dddb9ae8e96146fec6b3", + "testharness" + ], + "encoding-detection/utf-8.html": [ + "a2a5982ef480bd0fd2b8944c39a077b476c49588", + "testharness" + ], + "encoding-detection/vi-windows-1258-late.tentative.html": [ + "1a2499cd501de157aa58066c1f4cec8d5149c481", + "testharness" + ], + "encoding-detection/vi-windows-1258.tentative.html": [ + "15f3b122f8d9461ea94f73810fd8fa834e354c39", + "testharness" + ], + "encoding-detection/yi-windows-1255-late.tentative.html": [ + "52c3ffe5d68931d172c74530b323ad3e25a295bc", + "testharness" + ], + "encoding-detection/yi-windows-1255.tentative.html": [ + "b778590cd458f4b26321b2f370461e5ae8e686ac", + "testharness" + ], + "encoding-detection/zh-Big5-late.tentative.html": [ + "7df76aac4e0f040bb017ead6509120b56d3e1a99", + "testharness" + ], + "encoding-detection/zh-Big5.tentative.html": [ + "edd8017f491bd713b515f0fb67df6ae379e54288", + "testharness" + ], + "encoding-detection/zh-GBK-late.tentative.html": [ + "83e9b8e2a24849b46b935e35441541f22b7e2ab7", + "testharness" + ], + "encoding-detection/zh-GBK.tentative.html": [ + "0b88da6751dd106510936c63e5b01ea2060aec89", + "testharness" + ], "encoding/META.yml": [ "a219a492f0b963f19c50c094e9f00cf3cb69d467", "support" @@ -643090,11 +644230,11 @@ "support" ], "fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js": [ - "c1b6c506e957198c97db679c7d25e93952af3376", + "a583b1272a128c96e49d867841e95c58399026d0", "support" ], "fetch/api/request/destination/resources/fetch-destination-worker.js": [ - "f8e8e2669d07b22539e9c1fe78398f395604480e", + "904009c1721645b30b2f069a3c1d750f67b2823d", "support" ], "fetch/api/request/destination/resources/importer.js": [ @@ -643206,7 +644346,7 @@ "testharness" ], "fetch/api/request/request-structure.html": [ - "e137a7ea5120ff24de310020fe330a6725cdb9d7", + "806606cf627c115aad4c3fd89d4cc2377a3c8a61", "testharness" ], "fetch/api/request/resources/cache.py": [ @@ -643817,6 +644957,10 @@ "3dc47c696fb87ead0ef808b99b7e6e52cff01ebe", "testharness" ], + "fetch/metadata/download.tentative.https.sub.html": [ + "6f2a0434d497f695a44cc0d8972083d7cfa194c9", + "testharness" + ], "fetch/metadata/embed.tentative.https.sub.html": [ "8a59b821b45544848279035921df041b9d63c033", "testharness" @@ -643894,11 +645038,11 @@ "testharness" ], "fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html": [ - "e2715a658545a3090d47dfd49a7ce8f595b3e81e", + "970eb3373a04b603f297a4e32b44a0f9af9a27cb", "testharness" ], "fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html": [ - "37b2415168068d33f38e44c9930ede3608d202d6", + "907cf5c617df56d710d705e4d7d68e31109a893c", "testharness" ], "fetch/metadata/redirect/multiple-redirect-same-site.tentative.https.sub.html": [ @@ -643906,11 +645050,11 @@ "testharness" ], "fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html": [ - "45fd4efaace01a735f888a8dea29fcf5e59d6723", + "c69f0e92592723b00561517bd1a6b1111291fefa", "testharness" ], "fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html": [ - "c47190651e5c929741060add0f0b40dab1e4461c", + "133576cb0d7236de649a5b28044f8f06f7402e4f", "testharness" ], "fetch/metadata/redirect/redirect-https-downgrade-prefetch.optional.tentative.sub.html": [ @@ -643982,7 +645126,7 @@ "support" ], "fetch/metadata/resources/redirectTestHelper.sub.js": [ - "e5547e7ac7931f87e4dc4ae947d169caadf66ba3", + "8654356aa9628bea83a68322d19fb98e38372951", "support" ], "fetch/metadata/resources/sharedWorker.js": [ @@ -648569,6 +649713,10 @@ "6604450991a122e3e241e40b1b9e0516c525389d", "support" ], + "html/cross-origin-embedder-policy/meta-http-equiv.https.html": [ + "d35df3135ac44685f2c7cc1cc5eb19ba3b67318f", + "testharness" + ], "html/cross-origin-embedder-policy/non-initial-about-blank.https.html": [ "7fed1fe58194a2b15b1af4804e2215bcd8353fde", "testharness" @@ -648594,7 +649742,7 @@ "support" ], "html/cross-origin-embedder-policy/none.https.html": [ - "b1bb6fefc6cfa45a217cc3b04534df8065fa1579", + "f13a7523011674b0bab6b265d481b58649dc5531", "testharness" ], "html/cross-origin-embedder-policy/none.https.html.headers": [ @@ -648638,7 +649786,7 @@ "support" ], "html/cross-origin-embedder-policy/require-corp.https.html": [ - "446003723a19a1db88569bb3b0bf07540dfb98c8", + "49b2eb123b519dc96314b1db31cc4d6797efae92", "testharness" ], "html/cross-origin-embedder-policy/require-corp.https.html.headers": [ @@ -648814,7 +649962,7 @@ "support" ], "html/cross-origin-opener-policy/resources/common.js": [ - "c5d3c6c1084668ecd3ff02615725c7c3dc6117bb", + "53b80bb6e998e6f93a46176b58be4c016275ce0f", "support" ], "html/cross-origin-opener-policy/resources/coop-coep.py": [ @@ -649934,7 +651082,7 @@ "testharness" ], "html/dom/reflection.js": [ - "fca9e43f245a9796982685c66ef8ee892d6cd7eb", + "a5f7b3fd0a08e60729192a62902a9e9f07805821", "support" ], "html/dom/resources/self-origin-subframe.html": [ @@ -660286,11 +661434,11 @@ "testharness" ], "html/semantics/forms/the-input-element/input-stepdown.html": [ - "9ce5e5e1f454c22da589b5ecb0299e23626bb897", + "a970b531f5d1499818a1537c2619478d14fda2b4", "testharness" ], "html/semantics/forms/the-input-element/input-stepup.html": [ - "47457066e3c530abe56d6d1d5cdef4b2f00f7475", + "8f5888a6e4e1504a7451e8ec66337af88f1314d8", "testharness" ], "html/semantics/forms/the-input-element/input-type-button.html": [ @@ -665894,7 +667042,7 @@ "testharness" ], "imagebitmap-renderingcontext/context-creation-offscreen.html": [ - "41cc6dc02a239cf26ea37bbdca1a252f19917ee7", + "05a920cd3e605ade63aa4d01171d9d3f5597ed72", "testharness" ], "imagebitmap-renderingcontext/context-creation-with-alpha.html": [ @@ -665906,7 +667054,7 @@ "testharness" ], "imagebitmap-renderingcontext/context-preserves-canvas.html": [ - "eca7afe9ddd18f23e14f9cb2b16208713af7974b", + "9c3a1fb39f2a75db8cd89c1b2225ce469a1caeec", "testharness" ], "imagebitmap-renderingcontext/toBlob-origin-clean-offscreen.sub.html": [ @@ -666830,23 +667978,23 @@ "support" ], "infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini": [ - "c7b3482c786fc4532488f388b802930ccea8dc0e", + "d97432ed39c5f161c4e6feeac5b954e63f17e73d", "support" ], "infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini": [ - "68ccafcec2a1dd55184d234071c809ce1fcc73d8", + "3adcbe6885645fbf3b8cb08e0133de836a3357f0", "support" ], "infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini": [ - "5d714dd77733edd0199535f0f1cb20a46237d6dd", + "d01525b3cfa16083b00a07060935fe93450028fa", "support" ], "infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini": [ - "40626b8193ecc99e3e5ec5fe181f5553bfd8473a", + "a87d9f936fdbf5a9d1ac97352ee1417a06bc678a", "support" ], "infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini": [ - "4f1939a431ae272024f62a4169bf8431efc2c5bb", + "fe1bf469f4f07575469878ccfb9bedcad32fdca8", "support" ], "infrastructure/metadata/infrastructure/testdriver/actions/pause.html.ini": [ @@ -667394,7 +668542,7 @@ "support" ], "interfaces/encrypted-media.idl": [ - "26c03f6f24dc0321332c7e1d16443d350d35975a", + "5d6bbe36ce38e7e91ee0f0364a161cbed16e7579", "support" ], "interfaces/entries-api.idl": [ @@ -667498,7 +668646,7 @@ "support" ], "interfaces/media-playback-quality.idl": [ - "71c835677a76f454dec5ddaa146d41f0c045c186", + "c3ee5237e4ca43656807dfdb36c3fa9c5d7344a8", "support" ], "interfaces/media-source.idl": [ @@ -667758,7 +668906,7 @@ "support" ], "interfaces/webrtc.idl": [ - "3b2be61cedc88b559c2ea86388f86cfe44bdb93a", + "e30fc38fd003a283ebb4184786d181c5b4293dc4", "support" ], "interfaces/webusb.idl": [ @@ -668310,7 +669458,7 @@ "testharness" ], "largest-contentful-paint/idlharness.html": [ - "273fef80ce2d855075781512a9a8ab0a736af420", + "84d1c7ff9aea26fe7b5810b3d236213d8fac6a5a", "testharness" ], "largest-contentful-paint/iframe-content-not-observed.html": [ @@ -668389,6 +669537,10 @@ "9ad9c4cdfd09bfb3c3de4b77c29fff31a2d7089f", "testharness" ], + "layout-instability/body-display-change.html": [ + "0576bd6865084fac5d8c5ccc24285709d50f587e", + "testharness" + ], "layout-instability/buffer-layout-shift.html": [ "0cfce2f7124226cf4256284c1238ba1ef024c42b", "testharness" @@ -668549,6 +669701,10 @@ "cf46037be689ed345755b4c14fc76ae0a9951e8e", "support" ], + "loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html": [ + "a42b0f6a8ec70b0ecd3c348e2d1377c3eb5744a0", + "testharness" + ], "loading/lazyload/common.js": [ "06f18b3e0498549df1811c6a8008857e65b4117c", "support" @@ -668569,20 +669725,28 @@ "76eef3a8f45c131bdbf90028f8bcad75be0e5f32", "testharness" ], - "loading/lazyload/image-loading-lazy-multicol-tentative.html": [ + "loading/lazyload/image-loading-lazy-load-event.tentative.html": [ + "9e56a3150953494533d117841dcdd454aaa039f2", + "testharness" + ], + "loading/lazyload/image-loading-lazy-multicol.tentative.html": [ "eb69d6810d60a198ae5861211423acb7f76245f9", "testharness" ], "loading/lazyload/image-loading-lazy.tentative.html": [ - "e593a58e56351322819b8589ecc155f92a19a535", + "04625e0d7c4d87f04302e455f0ae001aa14ce2e9", "testharness" ], "loading/lazyload/invisible-image.tentative.html": [ "b8b945ee01e9c36b665b8358264f4e872204a7f0", "testharness" ], - "loading/lazyload/invisible-lazy-image.tentative.html": [ - "94f0dbfd6da8178119f51e3be29f77869e46da22", + "loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html": [ + "0c40d7dbcd832b379a3d8427f9390fca842439cd", + "testharness" + ], + "loading/lazyload/not-rendered-image-loading-lazy.tentative.html": [ + "fafd668e32ad995968f0ec00650f6f785ea26b6b", "testharness" ], "loading/lazyload/original-base-url-applied-2-tentative.html": [ @@ -669522,11 +670686,11 @@ "reftest" ], "mathml/relations/css-styling/mathsize-attribute-css-keywords-ref.html": [ - "d24fbf041afe481c8cab8cb3ffcbe154357b6955", + "ebb12a6c6c6789efefdcd313da0700584c352f68", "support" ], "mathml/relations/css-styling/mathsize-attribute-css-keywords.html": [ - "6390ebfabaf5cf5cf83590d86b3efd3231a55b00", + "84c31d743c930d93cbd6993bddb18f1c5d295f33", "reftest" ], "mathml/relations/css-styling/mathsize-attribute-legacy-values-ref.html": [ @@ -682545,6 +683709,10 @@ "e19a225de046ba01a1232fb0cb456b6a706f583a", "testharness" ], + "portals/portals-focus.sub.html": [ + "a05786186e5d332c019765106e051ec457eb4495", + "testharness" + ], "portals/portals-host-exposure.sub.html": [ "36fc2b48c8d87e10a1cb533e19372de1a9251825", "testharness" @@ -682617,6 +683785,14 @@ "98c2013915eae38bea2b8722bb8f80378ae894a0", "support" ], + "portals/resources/focus-page-with-button.html": [ + "2b6f0ff75604a5750ba96f6c19c9cc6508495676", + "support" + ], + "portals/resources/focus-page-with-x-origin-iframe.sub.html": [ + "7c9df9dba643a8202529d9f0b154a504535d7bcb", + "support" + ], "portals/resources/open-blank-host.js": [ "f7580bd15212234c36b55a368efa0c729bd64e5b", "support" @@ -696302,7 +697478,7 @@ "support" ], "resource-timing/resources/sw-install.html": [ - "0a2fbe2245b865681e88178903e450a6edfe9d73", + "2f1dccf1ace2025eefc847a7bf39508249ad603e", "support" ], "resource-timing/resources/sw.js": [ @@ -696350,7 +697526,7 @@ "support" ], "resource-timing/workerStart-tao-protected.https.html": [ - "cf5c2e3d606fba4543e251caa980abc71a901c14", + "f9b50f70360dd6e09908bc2d81dff13735aad236", "testharness" ], "resources/.htaccess": [ @@ -696466,7 +697642,7 @@ "support" ], "resources/chromium/nfc-mock.js": [ - "6823f6362fa13c77c3acb556b4b7f6467144dde8", + "956947a4daf39756750571129982229b39d1decc", "support" ], "resources/chromium/sensor.mojom.js": [ @@ -696526,7 +697702,7 @@ "support" ], "resources/chromium/webxr-test.js": [ - "739d771d40bede77937cf5f767727fff63f8b9f9", + "15e14dce5ef89c8971bcb2114180170f1c714d16", "support" ], "resources/chromium/webxr-test.js.headers": [ @@ -697054,11 +698230,11 @@ "testharness" ], "scroll-animations/current-time-writing-modes.html": [ - "083c4cf594d80bf331b6c4243b9e2e32af46f531", + "b409f097bcb6d120d32227baab9f0f276b927c0c", "testharness" ], "scroll-animations/current-time.html": [ - "bdd27487ac8dfe8bc2286b689a4a6142854ef725", + "9db7ec6a6b5c63758b3fb8d291146e1ea42f4db4", "testharness" ], "scroll-animations/idlharness.window.js": [ @@ -697070,7 +698246,11 @@ "support" ], "scroll-animations/scroll-animation.html": [ - "0320210f8394c7439353a6e1efd0eba339b27e20", + "d565788e1089af140fb3579fca67d4ca9b60bdf3", + "testharness" + ], + "scroll-animations/setting-current-time.html": [ + "7a77f17509c6fff104d268d6a753f66469bb5dec", "testharness" ], "scroll-to-text-fragment/META.yml": [ @@ -698826,7 +700006,7 @@ "testharness" ], "service-workers/service-worker/fetch-request-resources.https.html": [ - "50421b40fbb69803f2770b0159de8706dd2fe339", + "e0ddac74dbf8bd308a8942d925e1f9139c5f5685", "testharness" ], "service-workers/service-worker/fetch-request-xhr-sync-on-worker.https.html": [ @@ -700330,11 +701510,11 @@ "support" ], "service-workers/service-worker/resources/test-request-headers-worker.js": [ - "8d475912dcf9617aea5d0c9801603cd830f6bd4d", + "566e2e9984b5d6b5d3a79738542f1b2b24d1f6b2", "support" ], "service-workers/service-worker/resources/test-request-headers-worker.py": [ - "d3057057763ca31416c9b3afebf2ea03b9d94ba5", + "b128a2a689159af3e71a970be1e199aa0abc2dbd", "support" ], "service-workers/service-worker/resources/testharness-helpers.js": [ @@ -703237,6 +704417,10 @@ "653856de21bc50a48d8d2aa55fdaa276f994b8f6", "reftest" ], + "svg/embedded/image-fractional-width-vertical-fidelity.svg": [ + "4409ee32a93aebf34ed9dbaac9b7592f5bd54b85", + "reftest" + ], "svg/embedded/reference/green-rect-100x100.svg": [ "120941444a4898197d6b6001f9908a6cd48b62ba", "support" @@ -708350,7 +709534,7 @@ "support" ], "tools/requirements_mypy.txt": [ - "194f4284b26903b1faf969b6ab5d30f5c48eb562", + "50afed2bb2dec184caee69a1074e428d115c5b40", "support" ], "tools/runner/css/bootstrap-theme.min.css": [ @@ -712222,23 +713406,19 @@ "support" ], "tools/third_party/six/CHANGES": [ - "b399882561ec295d8defcadbe1b9b995b1eb9e11", + "ffa702601b6509b25fbd6787d1e7682e5ac39356", "support" ], "tools/third_party/six/LICENSE": [ - "f3068bfd9e0cd86de6b2ce5f5fa7faf38c68e5ce", + "4b05a545261c0f9b31abe3edec710587587a659a", "support" ], "tools/third_party/six/MANIFEST.in": [ "b924e068eeeec0f2816bb0b2adb5340a6f7a36b7", "support" ], - "tools/third_party/six/PKG-INFO": [ - "cd5ff4bb8e4fa0a1caf6d3df528abc20b3df5aef", - "support" - ], "tools/third_party/six/README.rst": [ - "c17d8d732af859de2c46abad0064434a84dc160a", + "a99e6f5585a918b8a68ceabace2fb6e34e92183b", "support" ], "tools/third_party/six/documentation/Makefile": [ @@ -712246,43 +713426,51 @@ "support" ], "tools/third_party/six/documentation/conf.py": [ - "ad925c1c1d1e83614937072bbe94e6c3056d188d", + "b3d1328adc2a42afde71915193060433504ce208", "support" ], "tools/third_party/six/documentation/index.rst": [ - "dd0dc6e3bde8c458dc4f11331ef7be12ed67aba8", + "b7ec2754ecf83d5a291c13988738fef62045c986", "support" ], "tools/third_party/six/setup.cfg": [ - "e12068c573c6f6efd3a93796e6dceeae188b35cd", + "317e016c8cc04d097b3b69639710357deb1c972b", "support" ], "tools/third_party/six/setup.py": [ - "ca44e100e427ecf5424bacb84d5eb6f5c712f231", + "97c685b5a50bd9769804861f4ad7a8396215d239", "support" ], - "tools/third_party/six/six.egg-info/PKG-INFO": [ - "cd5ff4bb8e4fa0a1caf6d3df528abc20b3df5aef", + "tools/third_party/six/six-1.13.0.dist-info/INSTALLER": [ + "a1b589e38a32041e49332e5e81c2d363dc418d68", "support" ], - "tools/third_party/six/six.egg-info/SOURCES.txt": [ - "9a7f3dec6df334d8423d903b0439a106d7d22a15", + "tools/third_party/six/six-1.13.0.dist-info/LICENSE": [ + "4b05a545261c0f9b31abe3edec710587587a659a", "support" ], - "tools/third_party/six/six.egg-info/dependency_links.txt": [ - "8b137891791fe96927ad78e64b0aad7bded08bdc", + "tools/third_party/six/six-1.13.0.dist-info/METADATA": [ + "b0c8f51e1f366138d3816abe0ddb3efee4175c3c", "support" ], - "tools/third_party/six/six.egg-info/top_level.txt": [ + "tools/third_party/six/six-1.13.0.dist-info/RECORD": [ + "e57665c9964255d1702f016c8bd11daede5166ef", + "support" + ], + "tools/third_party/six/six-1.13.0.dist-info/WHEEL": [ + "10012355333e0664fac31238aa04216ff5362217", + "support" + ], + "tools/third_party/six/six-1.13.0.dist-info/top_level.txt": [ "ffe2fce498955b628014618b28c6bcf152466a4a", "support" ], "tools/third_party/six/six.py": [ - "6bf4fd381046207a4794aee17be6d22db237f30a", + "d0aece89fa4aae948d75e8ef2277ce24951ebb2f", "support" ], "tools/third_party/six/test_six.py": [ - "43e7426dea1241bbd371d2f24f63f510427a519f", + "3eefce37c328d7b15b23ee83dd898c4b3e57633d", "support" ], "tools/third_party/tooltool/tooltool.py": [ @@ -712830,7 +714018,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorselenium.py": [ - "d6745018279e74affce1493da3cbb9b01f828fb0", + "ceca81211e1140577cc3a5f163ffe17c73dd56a3", "support" ], "tools/wptrunner/wptrunner/executors/executorservo.py": [ @@ -713078,11 +714266,11 @@ "support" ], "tools/wptrunner/wptrunner/wptmanifest/backends/base.py": [ - "45e2147fc4ca509a9de28fcdcbb707d823459711", + "c539d4367e94a5e525c5d8d8e9edc3116e8afffb", "support" ], "tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py": [ - "aacd7857072f420a209aeeff559ec2ae294170ba", + "a81ad9d06a144bff7f3cc9ed91a4260cd061b7fb", "support" ], "tools/wptrunner/wptrunner/wptmanifest/backends/static.py": [ @@ -713094,11 +714282,11 @@ "support" ], "tools/wptrunner/wptrunner/wptmanifest/parser.py": [ - "62c5f7d3a4679ca9aea961afecc63f25e7a54962", + "b8b840fcaee1514712c2b0d26cc62891c96051b3", "support" ], "tools/wptrunner/wptrunner/wptmanifest/serializer.py": [ - "3b29c99ede7cac58ede5d48237696e30c9d856c7", + "e92fd70d9fd80f41a776257017eebe1be987ee98", "support" ], "tools/wptrunner/wptrunner/wptmanifest/tests/__init__.py": [ @@ -713106,19 +714294,19 @@ "support" ], "tools/wptrunner/wptrunner/wptmanifest/tests/test_conditional.py": [ - "fbc75ec8390fa34ab7e3caa391c3e6e7837a554d", + "af4d9960322c7e8dfccb076a2e466125457d1878", "support" ], "tools/wptrunner/wptrunner/wptmanifest/tests/test_parser.py": [ - "805e47b371f5a730765f3e5d1ac5f6c94dc3e997", + "28d89bd18472ba243758c41d534ac8786bb3544c", "support" ], "tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py": [ - "7fe7ac85cb8a14f05113cbfd483b8d042a07b989", + "70fca9310907a06717cd723b5fab5457e21475c1", "support" ], "tools/wptrunner/wptrunner/wptmanifest/tests/test_static.py": [ - "aaf8465915246aac58a068dcfc0697b8c9af4181", + "e811a2b42b4550ccec1cda9f6b1a2b9bb270face", "support" ], "tools/wptrunner/wptrunner/wptmanifest/tests/test_tokenizer.py": [ @@ -719486,7 +720674,7 @@ "manual" ], "web-nfc/NDEFReader_scan.https.html": [ - "d3101ab8e1a9b3da7b16b4b2530493ac46ed2528", + "46e4cb7f23a2721e6d53a79cd896022e3f5b3d8b", "testharness" ], "web-nfc/NDEFReader_scan_filter.https.html": [ @@ -719502,7 +720690,7 @@ "testharness" ], "web-nfc/NDEFRecord_constructor.https.html": [ - "f3546b99dcb9461a519579b656ce33adacaaf5a3", + "d46503ab172bf358bff005ce8c2c56941e333eea", "testharness" ], "web-nfc/NDEFWriter-document-hidden-manual.https.html": [ @@ -719694,7 +720882,7 @@ "support" ], "webaudio/resources/audit.js": [ - "fe6fc45b1400ac7526e37a53a54ec3ac52fde528", + "ac97b66249db236e3175ebc1102531ec869f47cc", "support" ], "webaudio/resources/biquad-filters.js": [ @@ -720138,7 +721326,7 @@ "support" ], "webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html": [ - "89d361d22f35ffc6e7fbff6abdfc60c57a1d8ebb", + "685546aeb5e2f96e77e9c88cec19946f2b0fcb16", "testharness" ], "webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [ @@ -722722,7 +723910,7 @@ "testharness" ], "webrtc/RTCDTMFSender-ontonechange.https.html": [ - "7aa7975c131abd9763a62140a02f07d4e65e4250", + "1061698d21bd8febcc62ba795b4d3412d0e5a6d5", "testharness" ], "webrtc/RTCDataChannel-bufferedAmount.html": [ @@ -727966,7 +729154,7 @@ "support" ], "webxr/xrBoundedReferenceSpace_updates.https.html": [ - "812acf457c155c64bd47341ba3b710d696993a8c", + "55d311591116bf0ab175dcbd4b1b13b7a2ef9d9f", "testharness" ], "webxr/xrDevice_disconnect_ends.https.html": [ @@ -728106,7 +729294,7 @@ "testharness" ], "webxr/xrSession_requestAnimationFrame_getViewerPose.https.html": [ - "70e9d6e6e5951aa8c7cfd69e8fcac6e158351153", + "0b83b4c6bb13faef3a6114c60f3dcfc14e7757c2", "testharness" ], "webxr/xrSession_requestAnimationFrame_timestamp.https.html": [ diff --git a/tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-composition.html.ini b/tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-composition.html.ini new file mode 100644 index 00000000000..fe8c87260b7 --- /dev/null +++ b/tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-composition.html.ini @@ -0,0 +1,91 @@ +[font-variation-settings-composition.html] + [Compositing: property underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (1.5) should be ['test' 200\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (0.5) should be ['test' 200\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (0) should be ['test' 150\]] + expected: FAIL + + [Compositing: property underlying ['aaaa' 100, 'bbbb' 200\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (0) should be ['aaaa' 120, 'bbbb' 250\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (1.5) should be ['aaaa' 35, 'bbbb' 125\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (0) should be [normal\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (-0.3) should be ['test' 120\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (1) should be ['test' 200\]] + expected: FAIL + + [Compositing: property underlying ['aaaa' 100, 'bbbb' 200\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (1) should be ['aaaa' 130, 'bbbb' 300\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (0.5) should be ['test' 300\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (0.5) should be ['test' 175\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (-0.3) should be [normal\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (0) should be [normal\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (-0.3) should be ['aaaa' 17, 'bbbb' 35\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (0.5) should be ['test' 200\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (1) should be ['test' 300\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (-0.3) should be [normal\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (1) should be ['test' 250\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (1.5) should be ['test' 225\]] + expected: FAIL + + [Compositing: property underlying ['aaaa' 100, 'bbbb' 200\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (1.5) should be ['aaaa' 135, 'bbbb' 325\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (1) should be ['test' 200\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (-0.3) should be ['test' 135\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (0) should be ['test' 150\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (1.5) should be ['test' 300\]] + expected: FAIL + + [Compositing: property underlying ['aaaa' 100, 'bbbb' 200\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (-0.3) should be ['aaaa' 117, 'bbbb' 235\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (1) should be ['aaaa' 30, 'bbbb' 100\]] + expected: FAIL + + [Compositing: property underlying ['aaaa' 100, 'bbbb' 200\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (0.5) should be ['aaaa' 125, 'bbbb' 275\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (0) should be ['aaaa' 20, 'bbbb' 50\]] + expected: FAIL + + [Compositing: property underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (1.5) should be ['test' 300\]] + expected: FAIL + + [Compositing: property underlying ['test' 100\] from add ['aaaa' 20, 'bbbb' 50\] to add ['aaaa' 30, 'bbbb' 100\] at (0.5) should be ['aaaa' 25, 'bbbb' 75\]] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-images/inheritance.html.ini b/tests/wpt/metadata/css/css-images/inheritance.html.ini index 7a0b5d392c5..9f8bf376d9b 100644 --- a/tests/wpt/metadata/css/css-images/inheritance.html.ini +++ b/tests/wpt/metadata/css/css-images/inheritance.html.ini @@ -17,3 +17,6 @@ [Property image-orientation has initial value 0deg] expected: FAIL + [Property image-orientation has initial value from-image] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-values/ch-recalc-on-font-load.html.ini b/tests/wpt/metadata/css/css-values/ch-recalc-on-font-load.html.ini new file mode 100644 index 00000000000..6e8e5c32f59 --- /dev/null +++ b/tests/wpt/metadata/css/css-values/ch-recalc-on-font-load.html.ini @@ -0,0 +1,11 @@ +[ch-recalc-on-font-load.html] + expected: ERROR + [ch in a normal div should be recalculated after loading a web font] + expected: FAIL + + [ch in display:none should be recalculated after loading a web font] + expected: FAIL + + [ch in display:contents should be recalculated after loading a web font] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 628b1fab770..c884dc82eab 100644 --- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -2,3 +2,6 @@ [listeners are called when + diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html b/tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html index 0a2fbe2245b..2f1dccf1ace 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html +++ b/tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html @@ -1,31 +1,33 @@ diff --git a/tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html b/tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html index cf5c2e3d606..f9b50f70360 100644 --- a/tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html +++ b/tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html @@ -24,9 +24,7 @@ let openee; promise_test(t => { return new Promise(resolve => { addEventListener("message", e => { - if (e.data == "installed") { - // Close window once we get an event that it was installed - openee.close(); + if (e.data === 'installed') { performance.clearResourceTimings(); resolve(); } @@ -59,6 +57,19 @@ promise_test(t => { // Add iframe to remote origin - page with TAO promise_test(t => { + let unregisterPromise = new Promise(resolve => { + addEventListener("message", e => { + if (e.data === "unregistered") { + resolve(); + } + }); + }); + t.add_cleanup(async () => { + openee.postMessage("unregister", "*"); + await unregisterPromise; + // Close the window. + openee.close(); + }); return new Promise((resolve, reject) => { const observer = new PerformanceObserver(list => { const entries = list.getEntries(); diff --git a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js index 6823f6362fa..956947a4daf 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js +++ b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js @@ -351,6 +351,9 @@ var WebNFCTest = (() => { setIsNDEFTech(isNdef) { this.is_ndef_tech_ = isNdef; + if (!isNdef && this.watchers_.length != 0) { + this.client_.onError(device.mojom.NDEFErrorType.NOT_SUPPORTED); + } } setIsFormattedTag(isFormatted) { diff --git a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js index 739d771d40b..15e14dce5ef 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js +++ b/tests/wpt/web-platform-tests/resources/chromium/webxr-test.js @@ -632,9 +632,11 @@ class MockRuntime { } runtimeSupportsSession(options) { + + let isInlineRequest = (options.mode === device.mojom.XRSessionMode.kInline); return Promise.resolve({ supportsSession: - !options.immersive || this.displayInfo_.capabilities.canPresent + isInlineRequest || this.displayInfo_.capabilities.canPresent }); }; } @@ -830,6 +832,10 @@ class MockXRInputSource { input_state.primaryInputPressed = this.primary_input_pressed_; input_state.primaryInputClicked = this.primary_input_clicked_; + // Setting the input source's "clicked" state should generate one "select" + // event. Reset the input value to prevent it from continuously generating + // events. + this.primary_input_clicked_ = false; input_state.mojoFromInput = this.mojo_from_input_; diff --git a/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html b/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html index 083c4cf594d..b409f097bcb 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html +++ b/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html @@ -4,7 +4,7 @@ - + @@ -222,7 +222,7 @@ test(function() { lengthScrollTimeline.currentTime, 0, 'Length-based timeline at the startScrollOffset point'); scroller.scrollLeft = -50; - assert_equals( + assert_times_equal( lengthScrollTimeline.currentTime, calculateCurrentTime(50, 20, scrollerSize, scrollerSize), 'Length-based timeline after the startScrollOffset point'); @@ -237,7 +237,7 @@ test(function() { percentageScrollTimeline.currentTime, 0, 'Percentage-based timeline at the startScrollOffset point'); scroller.scrollLeft = -(0.4 * scrollerSize); - assert_equals( + assert_times_equal( percentageScrollTimeline.currentTime, calculateCurrentTime( 0.4 * scrollerSize, 0.2 * scrollerSize, scrollerSize, scrollerSize), @@ -253,7 +253,7 @@ test(function() { calcScrollTimeline.currentTime, 0, 'Calc-based timeline at the startScrollOffset point'); scroller.scrollLeft = -(0.2 * scrollerSize); - assert_equals( + assert_times_equal( calcScrollTimeline.currentTime, calculateCurrentTime( 0.2 * scrollerSize, 0.2 * scrollerSize - 5, scrollerSize, @@ -303,7 +303,7 @@ test(function() { lengthScrollTimeline.currentTime, null, 'Length-based timeline at the endScrollOffset point'); scroller.scrollLeft = 50 - scrollerSize; - assert_equals( + assert_times_equal( lengthScrollTimeline.currentTime, calculateCurrentTime( scrollerSize - 50, 0, scrollerSize - 20, scrollerSize), @@ -319,7 +319,7 @@ test(function() { percentageScrollTimeline.currentTime, null, 'Percentage-based timeline at the endScrollOffset point'); scroller.scrollLeft = 0.4 * scrollerSize - scrollerSize; - assert_equals( + assert_times_equal( percentageScrollTimeline.currentTime, calculateCurrentTime( 0.6 * scrollerSize, 0, 0.8 * scrollerSize, scrollerSize), @@ -335,7 +335,7 @@ test(function() { calcScrollTimeline.currentTime, null, 'Calc-based timeline at the endScrollOffset point'); scroller.scrollLeft = -0.8 * scrollerSize; - assert_equals( + assert_times_equal( calcScrollTimeline.currentTime, calculateCurrentTime( 0.8 * scrollerSize, 0, 0.8 * scrollerSize + 5, scrollerSize), @@ -386,16 +386,16 @@ test(function() { let expectedCurrentTime = calculateCurrentTime( scroller.scrollLeft, 0, scrollerSize, scrollerSize); - assert_equals( + assert_times_equal( inclusiveAutoScrollTimeline.currentTime, expectedCurrentTime, 'Inclusive auto timeline at the endScrollOffset point'); - assert_equals( + assert_times_equal( inclusiveLengthScrollTimeline.currentTime, expectedCurrentTime, 'Inclusive length-based timeline at the endScrollOffset point'); - assert_equals( + assert_times_equal( inclusivePercentageScrollTimeline.currentTime, expectedCurrentTime, 'Inclusive percentage-based timeline at the endScrollOffset point'); - assert_equals( + assert_times_equal( inclusiveCalcScrollTimeline.currentTime, expectedCurrentTime, 'Inclusive calc-based timeline at the endScrollOffset point'); }, 'currentTime handles endScrollOffset (inclusive case) with direction: rtl correctly'); diff --git a/tests/wpt/web-platform-tests/scroll-animations/current-time.html b/tests/wpt/web-platform-tests/scroll-animations/current-time.html index bdd27487ac8..9db7ec6a6b5 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/current-time.html +++ b/tests/wpt/web-platform-tests/scroll-animations/current-time.html @@ -4,7 +4,7 @@ - + @@ -127,7 +127,7 @@ test(function() { lengthScrollTimeline.currentTime, 0, 'Length-based timeline at the startScrollOffset point'); scroller.scrollTop = 50; - assert_equals( + assert_times_equal( lengthScrollTimeline.currentTime, calculateCurrentTime(50, 20, scrollerSize, scrollerSize), 'Length-based timeline after the startScrollOffsetPoint'); @@ -142,7 +142,7 @@ test(function() { percentageScrollTimeline.currentTime, 0, 'Percentage-based scroller at the startScrollOffset point'); scroller.scrollTop = 0.50 * scrollerSize; - assert_equals( + assert_times_equal( percentageScrollTimeline.currentTime, calculateCurrentTime( scroller.scrollTop, 0.2 * scrollerSize, scrollerSize, scrollerSize), @@ -158,7 +158,7 @@ test(function() { calcScrollTimeline.currentTime, 0, 'Calc-based scroller at the startScrollOffset point'); scroller.scrollTop = 0.2 * scrollerSize; - assert_equals( + assert_times_equal( calcScrollTimeline.currentTime, calculateCurrentTime( scroller.scrollTop, 0.2 * scrollerSize - 5, scrollerSize, @@ -202,7 +202,7 @@ test(function() { lengthScrollTimeline.currentTime, null, 'Length-based timeline at the endScrollOffset point'); scroller.scrollTop = scrollerSize - 50; - assert_equals( + assert_times_equal( lengthScrollTimeline.currentTime, calculateCurrentTime( scrollerSize - 50, 0, scrollerSize - 20, scrollerSize), @@ -218,7 +218,7 @@ test(function() { percentageScrollTimeline.currentTime, null, 'Percentage-based timeline at the endScrollOffset point'); scroller.scrollTop = 0.50 * scrollerSize; - assert_equals( + assert_times_equal( percentageScrollTimeline.currentTime, calculateCurrentTime( scroller.scrollTop, 0, 0.8 * scrollerSize, scrollerSize), @@ -234,7 +234,7 @@ test(function() { calcScrollTimeline.currentTime, null, 'Calc-based timeline at the endScrollOffset point'); scroller.scrollTop = 0.5 * scrollerSize; - assert_equals( + assert_times_equal( calcScrollTimeline.currentTime, calculateCurrentTime( scroller.scrollTop, 0, 0.8 * scrollerSize + 5, scrollerSize), @@ -279,16 +279,16 @@ test(function() { let expectedCurrentTime = calculateCurrentTime( scroller.scrollTop, 0, scrollerSize, scrollerSize); - assert_equals( + assert_times_equal( inclusiveAutoScrollTimeline.currentTime, expectedCurrentTime, 'Inclusive auto timeline at the endScrollOffset point'); - assert_equals( + assert_times_equal( inclusiveLengthScrollTimeline.currentTime, expectedCurrentTime, 'Inclusive length-based timeline at the endScrollOffset point'); - assert_equals( + assert_times_equal( inclusivePercentageScrollTimeline.currentTime, expectedCurrentTime, 'Inclusive percentage-based timeline at the endScrollOffset point'); - assert_equals( + assert_times_equal( inclusiveCalcScrollTimeline.currentTime, expectedCurrentTime, 'Inclusive calc-based timeline at the endScrollOffset point'); }, 'currentTime handles endScrollOffset correctly (inclusive cases)'); @@ -309,7 +309,7 @@ test(function() { }); scroller.scrollTop = 150; - assert_equals( + assert_times_equal( scrollTimeline.currentTime, calculateCurrentTime(150, 20, scrollerSize - 50, scrollerSize)); }, 'currentTime handles startScrollOffset and endScrollOffset together correctly'); diff --git a/tests/wpt/web-platform-tests/scroll-animations/scroll-animation.html b/tests/wpt/web-platform-tests/scroll-animations/scroll-animation.html index 0320210f839..d565788e108 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/scroll-animation.html +++ b/tests/wpt/web-platform-tests/scroll-animations/scroll-animation.html @@ -89,7 +89,7 @@ promise_test(async t => { "The start time is null in Idle state."); animation.play(); // Verify initial start and current times in Pending state. - assert_equals(animation.currentTime, 0, + assert_equals(animation.currentTime, animation.timeline.currentTime, "The current time is a hold time in Pending state."); assert_equals(animation.startTime, null, "The start time is null in Pending state."); @@ -125,12 +125,14 @@ promise_test(async t => { animation1.play(); animation2.play(); // Verify initial start and current times in Pending state. - assert_equals(animation1.currentTime, 0, - "The current time is a hold time in Pending state."); + assert_equals(animation1.currentTime, timeline.currentTime, + "The current time corresponds to the scroll position of the scroller" + + " in Pending state."); assert_equals(animation1.startTime, null, "The start time is null in Pending state."); - assert_equals(animation2.currentTime, 0, - "The current time is a hold time in Pending state."); + assert_equals(animation2.currentTime, timeline.currentTime, + "The current time corresponds to the scroll position of the scroller" + + " in Pending state."); assert_equals(animation2.startTime, null, "The start time is null in Pending state."); diff --git a/tests/wpt/web-platform-tests/scroll-animations/setting-current-time.html b/tests/wpt/web-platform-tests/scroll-animations/setting-current-time.html new file mode 100644 index 00000000000..7a77f17509c --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/setting-current-time.html @@ -0,0 +1,223 @@ + + +Setting the current time of an animation + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html index 50421b40fbb..e0ddac74dbf 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html @@ -120,7 +120,7 @@ function fetch_test(frame, url, mode, credentials, credentials: expected_credentials, redirect: 'follow', integrity: '', - destination: '', + destination: 'empty', message: 'fetch (url:' + actual_url + ' mode:' + mode + ' credentials:' + credentials + ')' }; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.js index 8d475912dcf..566e2e9984b 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.js @@ -1,5 +1,5 @@ -// Add a unique timestamp per request to induce service worker script update. -// Time stamp: %TIMESTAMP% +// Add a unique UUID per request to induce service worker script update. +// Time stamp: %UUID% // The server injects the request headers here as a JSON string. const headersAsJson = `%HEADERS%`; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.py index d3057057763..b128a2a6891 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.py @@ -1,6 +1,6 @@ import json import os -import time +import uuid def main(request, response): path = os.path.join(os.path.dirname(__file__), @@ -9,7 +9,7 @@ def main(request, response): data = {key:request.headers[key] for key,value in request.headers.iteritems()} body = body.replace("%HEADERS%", json.dumps(data)) - body = body.replace("%TIMESTAMP%", str(time.time())) + body = body.replace("%UUID%", str(uuid.uuid4())) headers = [] headers.append(("ETag", "etag")) diff --git a/tests/wpt/web-platform-tests/svg/embedded/image-fractional-width-vertical-fidelity.svg b/tests/wpt/web-platform-tests/svg/embedded/image-fractional-width-vertical-fidelity.svg new file mode 100644 index 00000000000..4409ee32a93 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/embedded/image-fractional-width-vertical-fidelity.svg @@ -0,0 +1,15 @@ + + Vertical fidelity of <image> element with fractional width + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/tools/requirements_mypy.txt b/tests/wpt/web-platform-tests/tools/requirements_mypy.txt index 194f4284b26..50afed2bb2d 100644 --- a/tests/wpt/web-platform-tests/tools/requirements_mypy.txt +++ b/tests/wpt/web-platform-tests/tools/requirements_mypy.txt @@ -1,3 +1,3 @@ -mypy==0.750 +mypy==0.760 mypy-extensions==0.4.3 typed-ast==1.4.0 diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/CHANGES b/tests/wpt/web-platform-tests/tools/third_party/six/CHANGES index b399882561e..ffa702601b6 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/CHANGES +++ b/tests/wpt/web-platform-tests/tools/third_party/six/CHANGES @@ -3,6 +3,28 @@ Changelog for six This file lists the changes in each six version. +1.13.0 +------ + +- Issue #298, pull request #299: Add `six.moves.dbm_ndbm`. + +- Issue #155: Add `six.moves.collections_abc`, which aliases the `collections` + module on Python 2-3.2 and the `collections.abc` on Python 3.3 and greater. + +- Pull request #304: Re-add distutils fallback in `setup.py`. + +- Pull request #305: On Python 3.7, `with_metaclass` supports classes using PEP + 560 features. + +1.12.0 +------ + +- Issue #259, pull request #260: `six.add_metaclass` now preserves + `__qualname__` from the original class. + +- Pull request #204: Add `six.ensure_binary`, `six.ensure_text`, and + `six.ensure_str`. + 1.11.0 ------ diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/LICENSE b/tests/wpt/web-platform-tests/tools/third_party/six/LICENSE index f3068bfd9e0..4b05a545261 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/LICENSE +++ b/tests/wpt/web-platform-tests/tools/third_party/six/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2010-2017 Benjamin Peterson +Copyright (c) 2010-2019 Benjamin Peterson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/PKG-INFO b/tests/wpt/web-platform-tests/tools/third_party/six/PKG-INFO deleted file mode 100644 index cd5ff4bb8e4..00000000000 --- a/tests/wpt/web-platform-tests/tools/third_party/six/PKG-INFO +++ /dev/null @@ -1,41 +0,0 @@ -Metadata-Version: 1.1 -Name: six -Version: 1.11.0 -Summary: Python 2 and 3 compatibility utilities -Home-page: http://pypi.python.org/pypi/six/ -Author: Benjamin Peterson -Author-email: benjamin@python.org -License: MIT -Description: .. image:: http://img.shields.io/pypi/v/six.svg - :target: https://pypi.python.org/pypi/six - - .. image:: https://travis-ci.org/benjaminp/six.svg?branch=master - :target: https://travis-ci.org/benjaminp/six - - .. image:: http://img.shields.io/badge/license-MIT-green.svg - :target: https://github.com/benjaminp/six/blob/master/LICENSE - - Six is a Python 2 and 3 compatibility library. It provides utility functions - for smoothing over the differences between the Python versions with the goal of - writing Python code that is compatible on both Python versions. See the - documentation for more information on what is provided. - - Six supports every Python version since 2.6. It is contained in only one Python - file, so it can be easily copied into your project. (The copyright and license - notice must be retained.) - - Online documentation is at http://six.rtfd.org. - - Bugs can be reported to https://github.com/benjaminp/six. The code can also - be found there. - - For questions about six or porting in general, email the python-porting mailing - list: https://mail.python.org/mailman/listinfo/python-porting - -Platform: UNKNOWN -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 3 -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Topic :: Software Development :: Libraries -Classifier: Topic :: Utilities diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/README.rst b/tests/wpt/web-platform-tests/tools/third_party/six/README.rst index c17d8d732af..a99e6f5585a 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/README.rst +++ b/tests/wpt/web-platform-tests/tools/third_party/six/README.rst @@ -1,11 +1,18 @@ -.. image:: http://img.shields.io/pypi/v/six.svg - :target: https://pypi.python.org/pypi/six +.. image:: https://img.shields.io/pypi/v/six.svg + :target: https://pypi.org/project/six/ + :alt: six on PyPI .. image:: https://travis-ci.org/benjaminp/six.svg?branch=master - :target: https://travis-ci.org/benjaminp/six + :target: https://travis-ci.org/benjaminp/six + :alt: six on TravisCI -.. image:: http://img.shields.io/badge/license-MIT-green.svg +.. image:: https://readthedocs.org/projects/six/badge/?version=latest + :target: https://six.readthedocs.io/ + :alt: six's documentation on Read the Docs + +.. image:: https://img.shields.io/badge/license-MIT-green.svg :target: https://github.com/benjaminp/six/blob/master/LICENSE + :alt: MIT License badge Six is a Python 2 and 3 compatibility library. It provides utility functions for smoothing over the differences between the Python versions with the goal of @@ -16,7 +23,7 @@ Six supports every Python version since 2.6. It is contained in only one Python file, so it can be easily copied into your project. (The copyright and license notice must be retained.) -Online documentation is at http://six.rtfd.org. +Online documentation is at https://six.readthedocs.io/. Bugs can be reported to https://github.com/benjaminp/six. The code can also be found there. diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/documentation/conf.py b/tests/wpt/web-platform-tests/tools/third_party/six/documentation/conf.py index ad925c1c1d1..b3d1328adc2 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/documentation/conf.py +++ b/tests/wpt/web-platform-tests/tools/third_party/six/documentation/conf.py @@ -33,7 +33,7 @@ master_doc = "index" # General information about the project. project = u"six" -copyright = u"2010-2017, Benjamin Peterson" +copyright = u"2010-2019, Benjamin Peterson" sys.path.append(os.path.abspath(os.path.join(".", ".."))) from six import __version__ as six_version diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/documentation/index.rst b/tests/wpt/web-platform-tests/tools/third_party/six/documentation/index.rst index dd0dc6e3bde..b7ec2754ecf 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/documentation/index.rst +++ b/tests/wpt/web-platform-tests/tools/third_party/six/documentation/index.rst @@ -13,7 +13,7 @@ Python 3. It is intended to support codebases that work on both Python 2 and 3 without modification. six consists of only one Python file, so it is painless to copy into a project. -Six can be downloaded on `PyPi `_. Its bug +Six can be downloaded on `PyPI `_. Its bug tracker and code hosting is on `GitHub `_. The name, "six", comes from the fact that 2*3 equals 6. Why not addition? @@ -50,8 +50,9 @@ Six provides constants that may differ between Python versions. Ones ending .. data:: class_types - Possible class types. In Python 2, this encompasses old-style and new-style - classes. In Python 3, this is just new-styles. + Possible class types. In Python 2, this encompasses old-style + :data:`py2:types.ClassType` and new-style ``type`` classes. In Python 3, + this is just ``type``. .. data:: integer_types @@ -75,7 +76,9 @@ Six provides constants that may differ between Python versions. Ones ending .. data:: binary_type Type for representing binary data. This is :func:`py2:str` in Python 2 and - :func:`py3:bytes` in Python 3. + :func:`py3:bytes` in Python 3. Python 2.6 and 2.7 include ``bytes`` as a + builtin alias of ``str``, so six’s version is only necessary for Python 2.5 + compatibility. .. data:: MAXSIZE @@ -371,7 +374,7 @@ string data in all Python versions. .. function:: b(data) A "fake" bytes literal. *data* should always be a normal string literal. In - Python 2, :func:`b` returns a 8-bit string. In Python 3, *data* is encoded + Python 2, :func:`b` returns an 8-bit string. In Python 3, *data* is encoded with the latin-1 encoding to bytes. @@ -433,6 +436,24 @@ string data in all Python versions. a bytes object iterator in Python 3. +.. function:: ensure_binary(s, encoding='utf-8', errors='strict') + + Coerce *s* to :data:`binary_type`. *encoding*, *errors* are the same as + :meth:`py3:str.encode` + + +.. function:: ensure_str(s, encoding='utf-8', errors='strict') + + Coerce *s* to ``str``. *encoding*, *errors* are the same as + :meth:`py3:str.encode` + + +.. function:: ensure_text(s, encoding='utf-8', errors='strict') + + Coerce *s* to :data:`text_type`. *encoding*, *errors* are the same as + :meth:`py3:str.encode` + + .. data:: StringIO This is a fake file object for textual data. It's an alias for @@ -503,7 +524,7 @@ Python 2 or 3, write:: from six.moves import html_parser Similarly, to get the function to reload modules, which was moved from the -builtin module to the ``imp`` module, use:: +builtin module to the ``importlib`` module, use:: from six.moves import reload_module @@ -563,7 +584,11 @@ Supported renames: +------------------------------+-------------------------------------+---------------------------------------+ | ``cStringIO`` | :func:`py2:cStringIO.StringIO` | :class:`py3:io.StringIO` | +------------------------------+-------------------------------------+---------------------------------------+ -| ``dbm_gnu`` | :func:`py2:gdbm` | :class:`py3:dbm.gnu` | +| ``collections_abc`` | :mod:`py2:collections` | :mod:`py3:collections.abc` (3.3+) | ++------------------------------+-------------------------------------+---------------------------------------+ +| ``dbm_gnu`` | :mod:`py2:gdbm` | :mod:`py3:dbm.gnu` | ++------------------------------+-------------------------------------+---------------------------------------+ +| ``dbm_ndbm`` | :mod:`py2:dbm` | :mod:`py3:dbm.ndbm` | +------------------------------+-------------------------------------+---------------------------------------+ | ``_dummy_thread`` | :mod:`py2:dummy_thread` | :mod:`py3:_dummy_thread` | +------------------------------+-------------------------------------+---------------------------------------+ diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/setup.cfg b/tests/wpt/web-platform-tests/tools/third_party/six/setup.cfg index e12068c573c..317e016c8cc 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/setup.cfg +++ b/tests/wpt/web-platform-tests/tools/third_party/six/setup.cfg @@ -5,17 +5,16 @@ universal = 1 max-line-length = 100 ignore = F821 +[metadata] +license_file = LICENSE + [tool:pytest] -minversion = 2.2.0 -pep8ignore = - documentation/*.py ALL - test_six.py ALL -flakes-ignore = - documentation/*.py ALL - test_six.py ALL - six.py UndefinedName - -[egg_info] -tag_build = -tag_date = 0 +minversion=2.2.0 +pep8ignore = + documentation/*.py ALL + test_six.py ALL +flakes-ignore = + documentation/*.py ALL + test_six.py ALL + six.py UndefinedName diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/setup.py b/tests/wpt/web-platform-tests/tools/third_party/six/setup.py index ca44e100e42..97c685b5a50 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/setup.py +++ b/tests/wpt/web-platform-tests/tools/third_party/six/setup.py @@ -1,4 +1,4 @@ -# Copyright (c) 2010-2017 Benjamin Peterson +# Copyright (c) 2010-2019 Benjamin Peterson # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -31,6 +31,7 @@ except ImportError: import six six_classifiers = [ + "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Intended Audience :: Developers", @@ -46,11 +47,12 @@ setup(name="six", version=six.__version__, author="Benjamin Peterson", author_email="benjamin@python.org", - url="http://pypi.python.org/pypi/six/", + url="https://github.com/benjaminp/six", tests_require=["pytest"], py_modules=["six"], description="Python 2 and 3 compatibility utilities", long_description=six_long_description, license="MIT", - classifiers=six_classifiers + classifiers=six_classifiers, + python_requires=">=2.6, !=3.0.*, !=3.1.*", ) diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/INSTALLER b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/INSTALLER new file mode 100644 index 00000000000..a1b589e38a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/LICENSE b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/LICENSE new file mode 100644 index 00000000000..4b05a545261 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/LICENSE @@ -0,0 +1,18 @@ +Copyright (c) 2010-2019 Benjamin Peterson + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/METADATA b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/METADATA new file mode 100644 index 00000000000..b0c8f51e1f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/METADATA @@ -0,0 +1,52 @@ +Metadata-Version: 2.1 +Name: six +Version: 1.13.0 +Summary: Python 2 and 3 compatibility utilities +Home-page: https://github.com/benjaminp/six +Author: Benjamin Peterson +Author-email: benjamin@python.org +License: MIT +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Programming Language :: Python :: 2 +Classifier: Programming Language :: Python :: 3 +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Topic :: Software Development :: Libraries +Classifier: Topic :: Utilities +Requires-Python: >=2.6, !=3.0.*, !=3.1.* + +.. image:: https://img.shields.io/pypi/v/six.svg + :target: https://pypi.org/project/six/ + :alt: six on PyPI + +.. image:: https://travis-ci.org/benjaminp/six.svg?branch=master + :target: https://travis-ci.org/benjaminp/six + :alt: six on TravisCI + +.. image:: https://readthedocs.org/projects/six/badge/?version=latest + :target: https://six.readthedocs.io/ + :alt: six's documentation on Read the Docs + +.. image:: https://img.shields.io/badge/license-MIT-green.svg + :target: https://github.com/benjaminp/six/blob/master/LICENSE + :alt: MIT License badge + +Six is a Python 2 and 3 compatibility library. It provides utility functions +for smoothing over the differences between the Python versions with the goal of +writing Python code that is compatible on both Python versions. See the +documentation for more information on what is provided. + +Six supports every Python version since 2.6. It is contained in only one Python +file, so it can be easily copied into your project. (The copyright and license +notice must be retained.) + +Online documentation is at https://six.readthedocs.io/. + +Bugs can be reported to https://github.com/benjaminp/six. The code can also +be found there. + +For questions about six or porting in general, email the python-porting mailing +list: https://mail.python.org/mailman/listinfo/python-porting + + diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/RECORD b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/RECORD new file mode 100644 index 00000000000..e57665c9964 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/RECORD @@ -0,0 +1,8 @@ +six-1.13.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +six-1.13.0.dist-info/LICENSE,sha256=t1KbjAcXGniow2wyg5BVKOSBKUXZd9El65JujMvyRbY,1066 +six-1.13.0.dist-info/METADATA,sha256=hxS4rSPRfO8ewbcLS30anoFi6LFgUQ3mk_xknZ8RV4w,1940 +six-1.13.0.dist-info/RECORD,, +six-1.13.0.dist-info/WHEEL,sha256=8T8fxefr_r-A79qbOJ9d_AaEgkpCGmEPHc-gpCq5BRg,110 +six-1.13.0.dist-info/top_level.txt,sha256=_iVH_iYEtEXnD8nYGQYpYFUvkUW9sEO1GYbkeKSAais,4 +six.py,sha256=o9WHO8utWGayNhNqDmNqPdQsQair5RaRWjL_8IYf1qw,33051 +six.pyc,, diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/WHEEL b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/WHEEL new file mode 100644 index 00000000000..10012355333 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.32.1) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/top_level.txt b/tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/top_level.txt similarity index 100% rename from tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/top_level.txt rename to tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/top_level.txt diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/PKG-INFO b/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/PKG-INFO deleted file mode 100644 index cd5ff4bb8e4..00000000000 --- a/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/PKG-INFO +++ /dev/null @@ -1,41 +0,0 @@ -Metadata-Version: 1.1 -Name: six -Version: 1.11.0 -Summary: Python 2 and 3 compatibility utilities -Home-page: http://pypi.python.org/pypi/six/ -Author: Benjamin Peterson -Author-email: benjamin@python.org -License: MIT -Description: .. image:: http://img.shields.io/pypi/v/six.svg - :target: https://pypi.python.org/pypi/six - - .. image:: https://travis-ci.org/benjaminp/six.svg?branch=master - :target: https://travis-ci.org/benjaminp/six - - .. image:: http://img.shields.io/badge/license-MIT-green.svg - :target: https://github.com/benjaminp/six/blob/master/LICENSE - - Six is a Python 2 and 3 compatibility library. It provides utility functions - for smoothing over the differences between the Python versions with the goal of - writing Python code that is compatible on both Python versions. See the - documentation for more information on what is provided. - - Six supports every Python version since 2.6. It is contained in only one Python - file, so it can be easily copied into your project. (The copyright and license - notice must be retained.) - - Online documentation is at http://six.rtfd.org. - - Bugs can be reported to https://github.com/benjaminp/six. The code can also - be found there. - - For questions about six or porting in general, email the python-porting mailing - list: https://mail.python.org/mailman/listinfo/python-porting - -Platform: UNKNOWN -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 3 -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Topic :: Software Development :: Libraries -Classifier: Topic :: Utilities diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/SOURCES.txt b/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/SOURCES.txt deleted file mode 100644 index 9a7f3dec6df..00000000000 --- a/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/SOURCES.txt +++ /dev/null @@ -1,15 +0,0 @@ -CHANGES -LICENSE -MANIFEST.in -README.rst -setup.cfg -setup.py -six.py -test_six.py -documentation/Makefile -documentation/conf.py -documentation/index.rst -six.egg-info/PKG-INFO -six.egg-info/SOURCES.txt -six.egg-info/dependency_links.txt -six.egg-info/top_level.txt \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/dependency_links.txt b/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/dependency_links.txt deleted file mode 100644 index 8b137891791..00000000000 --- a/tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/six.py b/tests/wpt/web-platform-tests/tools/third_party/six/six.py index 6bf4fd38104..d0aece89fa4 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/six.py +++ b/tests/wpt/web-platform-tests/tools/third_party/six/six.py @@ -1,4 +1,4 @@ -# Copyright (c) 2010-2017 Benjamin Peterson +# Copyright (c) 2010-2019 Benjamin Peterson # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -29,7 +29,7 @@ import sys import types __author__ = "Benjamin Peterson " -__version__ = "1.11.0" +__version__ = "1.13.0" # Useful for very coarse version differentiation. @@ -255,8 +255,10 @@ _moved_attributes = [ MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), MovedModule("builtins", "__builtin__"), MovedModule("configparser", "ConfigParser"), + MovedModule("collections_abc", "collections", "collections.abc" if sys.version_info >= (3, 3) else "collections"), MovedModule("copyreg", "copy_reg"), MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), + MovedModule("dbm_ndbm", "dbm", "dbm.ndbm"), MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"), MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), MovedModule("http_cookies", "Cookie", "http.cookies"), @@ -637,6 +639,7 @@ if PY3: import io StringIO = io.StringIO BytesIO = io.BytesIO + del io _assertCountEqual = "assertCountEqual" if sys.version_info[1] <= 1: _assertRaisesRegex = "assertRaisesRegexp" @@ -824,7 +827,15 @@ def with_metaclass(meta, *bases): class metaclass(type): def __new__(cls, name, this_bases, d): - return meta(name, bases, d) + if sys.version_info[:2] >= (3, 7): + # This version introduced PEP 560 that requires a bit + # of extra care (we mimic what is done by __build_class__). + resolved_bases = types.resolve_bases(bases) + if resolved_bases is not bases: + d['__orig_bases__'] = bases + else: + resolved_bases = bases + return meta(name, resolved_bases, d) @classmethod def __prepare__(cls, name, this_bases): @@ -844,13 +855,74 @@ def add_metaclass(metaclass): orig_vars.pop(slots_var) orig_vars.pop('__dict__', None) orig_vars.pop('__weakref__', None) + if hasattr(cls, '__qualname__'): + orig_vars['__qualname__'] = cls.__qualname__ return metaclass(cls.__name__, cls.__bases__, orig_vars) return wrapper +def ensure_binary(s, encoding='utf-8', errors='strict'): + """Coerce **s** to six.binary_type. + + For Python 2: + - `unicode` -> encoded to `str` + - `str` -> `str` + + For Python 3: + - `str` -> encoded to `bytes` + - `bytes` -> `bytes` + """ + if isinstance(s, text_type): + return s.encode(encoding, errors) + elif isinstance(s, binary_type): + return s + else: + raise TypeError("not expecting type '%s'" % type(s)) + + +def ensure_str(s, encoding='utf-8', errors='strict'): + """Coerce *s* to `str`. + + For Python 2: + - `unicode` -> encoded to `str` + - `str` -> `str` + + For Python 3: + - `str` -> `str` + - `bytes` -> decoded to `str` + """ + if not isinstance(s, (text_type, binary_type)): + raise TypeError("not expecting type '%s'" % type(s)) + if PY2 and isinstance(s, text_type): + s = s.encode(encoding, errors) + elif PY3 and isinstance(s, binary_type): + s = s.decode(encoding, errors) + return s + + +def ensure_text(s, encoding='utf-8', errors='strict'): + """Coerce *s* to six.text_type. + + For Python 2: + - `unicode` -> `unicode` + - `str` -> `unicode` + + For Python 3: + - `str` -> `str` + - `bytes` -> decoded to `str` + """ + if isinstance(s, binary_type): + return s.decode(encoding, errors) + elif isinstance(s, text_type): + return s + else: + raise TypeError("not expecting type '%s'" % type(s)) + + + def python_2_unicode_compatible(klass): """ - A decorator that defines __unicode__ and __str__ methods under Python 2. + A class decorator that defines __unicode__ and __str__ methods under Python 2. Under Python 3 it does nothing. To support Python 2 and 3 with a single code base, define a __str__ method diff --git a/tests/wpt/web-platform-tests/tools/third_party/six/test_six.py b/tests/wpt/web-platform-tests/tools/third_party/six/test_six.py index 43e7426dea1..3eefce37c32 100644 --- a/tests/wpt/web-platform-tests/tools/third_party/six/test_six.py +++ b/tests/wpt/web-platform-tests/tools/third_party/six/test_six.py @@ -1,4 +1,4 @@ -# Copyright (c) 2010-2017 Benjamin Peterson +# Copyright (c) 2010-2019 Benjamin Peterson # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -22,8 +22,9 @@ import operator import sys import types import unittest +import abc -import py +import pytest import six @@ -80,7 +81,7 @@ def test_MAXSIZE(): except AttributeError: # Before Python 2.6. pass - py.test.raises( + pytest.raises( (ValueError, OverflowError), operator.mul, [None], six.MAXSIZE + 1) @@ -112,7 +113,7 @@ except ImportError: except ImportError: have_gdbm = False -@py.test.mark.parametrize("item_name", +@pytest.mark.parametrize("item_name", [item.name for item in six._moved_attributes]) def test_move_items(item_name): """Ensure that everything loads correctly.""" @@ -122,36 +123,36 @@ def test_move_items(item_name): __import__("six.moves." + item_name) except AttributeError: if item_name == "zip_longest" and sys.version_info < (2, 6): - py.test.skip("zip_longest only available on 2.6+") + pytest.skip("zip_longest only available on 2.6+") except ImportError: if item_name == "winreg" and not sys.platform.startswith("win"): - py.test.skip("Windows only module") + pytest.skip("Windows only module") if item_name.startswith("tkinter"): if not have_tkinter: - py.test.skip("requires tkinter") + pytest.skip("requires tkinter") if item_name == "tkinter_ttk" and sys.version_info[:2] <= (2, 6): - py.test.skip("ttk only available on 2.7+") + pytest.skip("ttk only available on 2.7+") if item_name.startswith("dbm_gnu") and not have_gdbm: - py.test.skip("requires gdbm") + pytest.skip("requires gdbm") raise if sys.version_info[:2] >= (2, 6): assert item_name in dir(six.moves) -@py.test.mark.parametrize("item_name", +@pytest.mark.parametrize("item_name", [item.name for item in six._urllib_parse_moved_attributes]) def test_move_items_urllib_parse(item_name): """Ensure that everything loads correctly.""" if item_name == "ParseResult" and sys.version_info < (2, 5): - py.test.skip("ParseResult is only found on 2.5+") + pytest.skip("ParseResult is only found on 2.5+") if item_name in ("parse_qs", "parse_qsl") and sys.version_info < (2, 6): - py.test.skip("parse_qs[l] is new in 2.6") + pytest.skip("parse_qs[l] is new in 2.6") if sys.version_info[:2] >= (2, 6): assert item_name in dir(six.moves.urllib.parse) getattr(six.moves.urllib.parse, item_name) -@py.test.mark.parametrize("item_name", +@pytest.mark.parametrize("item_name", [item.name for item in six._urllib_error_moved_attributes]) def test_move_items_urllib_error(item_name): """Ensure that everything loads correctly.""" @@ -160,7 +161,7 @@ def test_move_items_urllib_error(item_name): getattr(six.moves.urllib.error, item_name) -@py.test.mark.parametrize("item_name", +@pytest.mark.parametrize("item_name", [item.name for item in six._urllib_request_moved_attributes]) def test_move_items_urllib_request(item_name): """Ensure that everything loads correctly.""" @@ -169,7 +170,7 @@ def test_move_items_urllib_request(item_name): getattr(six.moves.urllib.request, item_name) -@py.test.mark.parametrize("item_name", +@pytest.mark.parametrize("item_name", [item.name for item in six._urllib_response_moved_attributes]) def test_move_items_urllib_response(item_name): """Ensure that everything loads correctly.""" @@ -178,7 +179,7 @@ def test_move_items_urllib_response(item_name): getattr(six.moves.urllib.response, item_name) -@py.test.mark.parametrize("item_name", +@pytest.mark.parametrize("item_name", [item.name for item in six._urllib_robotparser_moved_attributes]) def test_move_items_urllib_robotparser(item_name): """Ensure that everything loads correctly.""" @@ -243,7 +244,7 @@ def test_zip(): assert six.advance_iterator(zip(range(2), range(2))) == (0, 0) -@py.test.mark.skipif("sys.version_info < (2, 6)") +@pytest.mark.skipif("sys.version_info < (2, 6)") def test_zip_longest(): from six.moves import zip_longest it = zip_longest(range(2), range(1)) @@ -321,7 +322,7 @@ class TestCustomizedMoves: def test_empty_remove(self): - py.test.raises(AttributeError, six.remove_move, "eggs") + pytest.raises(AttributeError, six.remove_move, "eggs") def test_get_unbound_function(): @@ -337,7 +338,7 @@ def test_get_method_self(): pass x = X() assert six.get_method_self(x.m) is x - py.test.raises(AttributeError, six.get_method_self, 42) + pytest.raises(AttributeError, six.get_method_self, 42) def test_get_method_function(): @@ -346,7 +347,7 @@ def test_get_method_function(): pass x = X() assert six.get_method_function(x.m) is X.__dict__["m"] - py.test.raises(AttributeError, six.get_method_function, hasattr) + pytest.raises(AttributeError, six.get_method_function, hasattr) def test_get_function_closure(): @@ -364,7 +365,7 @@ def test_get_function_code(): pass assert isinstance(six.get_function_code(f), types.CodeType) if not hasattr(sys, "pypy_version_info"): - py.test.raises(AttributeError, six.get_function_code, hasattr) + pytest.raises(AttributeError, six.get_function_code, hasattr) def test_get_function_defaults(): @@ -404,7 +405,7 @@ def test_dictionary_iterators(monkeypatch): it = meth(d) assert not isinstance(it, list) assert list(it) == list(getattr(d, name)()) - py.test.raises(StopIteration, six.advance_iterator, it) + pytest.raises(StopIteration, six.advance_iterator, it) record = [] def with_kw(*args, **kw): record.append(kw["kw"]) @@ -416,17 +417,9 @@ def test_dictionary_iterators(monkeypatch): monkeypatch.undo() -@py.test.mark.skipif("sys.version_info[:2] < (2, 7)", +@pytest.mark.skipif("sys.version_info[:2] < (2, 7)", reason="view methods on dictionaries only available on 2.7+") def test_dictionary_views(): - def stock_method_name(viewwhat): - """Given a method suffix like "keys" or "values", return the name - of the dict method that delivers those on the version of Python - we're running in.""" - if six.PY3: - return viewwhat - return 'view' + viewwhat - d = dict(zip(range(10), (range(11, 20)))) for name in "keys", "values", "items": meth = getattr(six, "view" + name) @@ -440,8 +433,8 @@ def test_advance_iterator(): it = iter(l) assert six.next(it) == 1 assert six.next(it) == 2 - py.test.raises(StopIteration, six.next, it) - py.test.raises(StopIteration, six.next, it) + pytest.raises(StopIteration, six.next, it) + pytest.raises(StopIteration, six.next, it) def test_iterator(): @@ -489,7 +482,7 @@ def test_create_unbound_method(): def f(self): return self u = six.create_unbound_method(f, X) - py.test.raises(TypeError, u) + pytest.raises(TypeError, u) if six.PY2: assert isinstance(u, types.MethodType) x = X() @@ -537,13 +530,13 @@ def test_unichr(): def test_int2byte(): assert six.int2byte(3) == six.b("\x03") - py.test.raises(Exception, six.int2byte, 256) + pytest.raises(Exception, six.int2byte, 256) def test_byte2int(): assert six.byte2int(six.b("\x03")) == 3 assert six.byte2int(six.b("\x03\x04")) == 3 - py.test.raises(IndexError, six.byte2int, six.b("")) + pytest.raises(IndexError, six.byte2int, six.b("")) def test_bytesindex(): @@ -554,7 +547,7 @@ def test_bytesiter(): it = six.iterbytes(six.b("hi")) assert six.next(it) == ord("h") assert six.next(it) == ord("i") - py.test.raises(StopIteration, six.next, it) + pytest.raises(StopIteration, six.next, it) def test_StringIO(): @@ -689,7 +682,7 @@ def test_print_(): assert out.flushed -@py.test.mark.skipif("sys.version_info[:2] >= (2, 6)") +@pytest.mark.skipif("sys.version_info[:2] >= (2, 6)") def test_print_encoding(monkeypatch): # Fool the type checking in print_. monkeypatch.setattr(six, "file", six.BytesIO, raising=False) @@ -701,16 +694,16 @@ def test_print_encoding(monkeypatch): out = six.BytesIO() out.encoding = "ascii" out.errors = "strict" - py.test.raises(UnicodeEncodeError, six.print_, six.u("\u053c"), file=out) + pytest.raises(UnicodeEncodeError, six.print_, six.u("\u053c"), file=out) out.errors = "backslashreplace" six.print_(six.u("\u053c"), end="", file=out) assert out.getvalue() == six.b("\\u053c") def test_print_exceptions(): - py.test.raises(TypeError, six.print_, x=3) - py.test.raises(TypeError, six.print_, end=3) - py.test.raises(TypeError, six.print_, sep=42) + pytest.raises(TypeError, six.print_, x=3) + pytest.raises(TypeError, six.print_, end=3) + pytest.raises(TypeError, six.print_, sep=42) def test_with_metaclass(): @@ -744,7 +737,54 @@ def test_with_metaclass(): assert Y.__mro__ == (Y, X, object) -@py.test.mark.skipif("sys.version_info[:2] < (3, 0)") +@pytest.mark.skipif("sys.version_info[:2] < (2, 7)") +def test_with_metaclass_typing(): + try: + import typing + except ImportError: + pytest.skip("typing module required") + class Meta(type): + pass + if sys.version_info[:2] < (3, 7): + # Generics with custom metaclasses were broken on older versions. + class Meta(Meta, typing.GenericMeta): + pass + T = typing.TypeVar('T') + class G(six.with_metaclass(Meta, typing.Generic[T])): + pass + class GA(six.with_metaclass(abc.ABCMeta, typing.Generic[T])): + pass + assert isinstance(G, Meta) + assert isinstance(GA, abc.ABCMeta) + assert G[int] is not G[G[int]] + assert GA[int] is not GA[GA[int]] + assert G.__bases__ == (typing.Generic,) + assert G.__orig_bases__ == (typing.Generic[T],) + + +@pytest.mark.skipif("sys.version_info[:2] < (3, 7)") +def test_with_metaclass_pep_560(): + class Meta(type): + pass + class A: + pass + class B: + pass + class Fake: + def __mro_entries__(self, bases): + return (A, B) + fake = Fake() + class G(six.with_metaclass(Meta, fake)): + pass + class GA(six.with_metaclass(abc.ABCMeta, fake)): + pass + assert isinstance(G, Meta) + assert isinstance(GA, abc.ABCMeta) + assert G.__bases__ == (A, B) + assert G.__orig_bases__ == (fake,) + + +@pytest.mark.skipif("sys.version_info[:2] < (3, 0)") def test_with_metaclass_prepare(): """Test that with_metaclass causes Meta.__prepare__ to be called with the correct arguments.""" @@ -857,7 +897,7 @@ def test_add_metaclass(): assert MySlots.__slots__ == ["a", "b"] instance = MySlots() instance.a = "foo" - py.test.raises(AttributeError, setattr, instance, "c", "baz") + pytest.raises(AttributeError, setattr, instance, "c", "baz") # Test a class with string for slots. class MyStringSlots(object): @@ -866,8 +906,8 @@ def test_add_metaclass(): assert MyStringSlots.__slots__ == "ab" instance = MyStringSlots() instance.ab = "foo" - py.test.raises(AttributeError, setattr, instance, "a", "baz") - py.test.raises(AttributeError, setattr, instance, "b", "baz") + pytest.raises(AttributeError, setattr, instance, "a", "baz") + pytest.raises(AttributeError, setattr, instance, "b", "baz") class MySlotsWeakref(object): __slots__ = "__weakref__", @@ -875,7 +915,27 @@ def test_add_metaclass(): assert type(MySlotsWeakref) is Meta -@py.test.mark.skipif("sys.version_info[:2] < (2, 7) or sys.version_info[:2] in ((3, 0), (3, 1))") +@pytest.mark.skipif("sys.version_info[:2] < (3, 3)") +def test_add_metaclass_nested(): + # Regression test for https://github.com/benjaminp/six/issues/259 + class Meta(type): + pass + + class A: + class B: pass + + expected = 'test_add_metaclass_nested..A.B' + + assert A.B.__qualname__ == expected + + class A: + @six.add_metaclass(Meta) + class B: pass + + assert A.B.__qualname__ == expected + + +@pytest.mark.skipif("sys.version_info[:2] < (2, 7) or sys.version_info[:2] in ((3, 0), (3, 1))") def test_assertCountEqual(): class TestAssertCountEqual(unittest.TestCase): def test(self): @@ -887,7 +947,7 @@ def test_assertCountEqual(): TestAssertCountEqual('test').test() -@py.test.mark.skipif("sys.version_info[:2] < (2, 7)") +@pytest.mark.skipif("sys.version_info[:2] < (2, 7)") def test_assertRegex(): class TestAssertRegex(unittest.TestCase): def test(self): @@ -899,7 +959,7 @@ def test_assertRegex(): TestAssertRegex('test').test() -@py.test.mark.skipif("sys.version_info[:2] < (2, 7)") +@pytest.mark.skipif("sys.version_info[:2] < (2, 7)") def test_assertRaisesRegex(): class TestAssertRaisesRegex(unittest.TestCase): def test(self): @@ -932,3 +992,61 @@ def test_python_2_unicode_compatible(): assert str(my_test) == six.u("hello") assert getattr(six.moves.builtins, 'bytes', str)(my_test) == six.b("hello") + + +class EnsureTests: + + # grinning face emoji + UNICODE_EMOJI = six.u("\U0001F600") + BINARY_EMOJI = b"\xf0\x9f\x98\x80" + + def test_ensure_binary_raise_type_error(self): + with pytest.raises(TypeError): + six.ensure_str(8) + + def test_errors_and_encoding(self): + six.ensure_binary(self.UNICODE_EMOJI, encoding='latin-1', errors='ignore') + with pytest.raises(UnicodeEncodeError): + six.ensure_binary(self.UNICODE_EMOJI, encoding='latin-1', errors='strict') + + def test_ensure_binary_raise(self): + converted_unicode = six.ensure_binary(self.UNICODE_EMOJI, encoding='utf-8', errors='strict') + converted_binary = six.ensure_binary(self.BINARY_EMOJI, encoding="utf-8", errors='strict') + if six.PY2: + # PY2: unicode -> str + assert converted_unicode == self.BINARY_EMOJI and isinstance(converted_unicode, str) + # PY2: str -> str + assert converted_binary == self.BINARY_EMOJI and isinstance(converted_binary, str) + else: + # PY3: str -> bytes + assert converted_unicode == self.BINARY_EMOJI and isinstance(converted_unicode, bytes) + # PY3: bytes -> bytes + assert converted_binary == self.BINARY_EMOJI and isinstance(converted_binary, bytes) + + def test_ensure_str(self): + converted_unicode = six.ensure_str(self.UNICODE_EMOJI, encoding='utf-8', errors='strict') + converted_binary = six.ensure_str(self.BINARY_EMOJI, encoding="utf-8", errors='strict') + if six.PY2: + # PY2: unicode -> str + assert converted_unicode == self.BINARY_EMOJI and isinstance(converted_unicode, str) + # PY2: str -> str + assert converted_binary == self.BINARY_EMOJI and isinstance(converted_binary, str) + else: + # PY3: str -> str + assert converted_unicode == self.UNICODE_EMOJI and isinstance(converted_unicode, str) + # PY3: bytes -> str + assert converted_binary == self.UNICODE_EMOJI and isinstance(converted_unicode, str) + + def test_ensure_text(self): + converted_unicode = six.ensure_text(self.UNICODE_EMOJI, encoding='utf-8', errors='strict') + converted_binary = six.ensure_text(self.BINARY_EMOJI, encoding="utf-8", errors='strict') + if six.PY2: + # PY2: unicode -> unicode + assert converted_unicode == self.UNICODE_EMOJI and isinstance(converted_unicode, unicode) + # PY2: str -> unicode + assert converted_binary == self.UNICODE_EMOJI and isinstance(converted_unicode, unicode) + else: + # PY3: str -> str + assert converted_unicode == self.UNICODE_EMOJI and isinstance(converted_unicode, str) + # PY3: bytes -> str + assert converted_binary == self.UNICODE_EMOJI and isinstance(converted_unicode, str) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py index d6745018279..ceca81211e1 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py @@ -60,6 +60,9 @@ class SeleniumBaseProtocolPart(BaseProtocolPart): def set_window(self, handle): self.webdriver.switch_to_window(handle) + def load(self, url): + self.webdriver.get(url) + def wait(self): while True: try: @@ -269,7 +272,7 @@ class SeleniumTestharnessExecutor(TestharnessExecutor): def __init__(self, browser, server_config, timeout_multiplier=1, close_after_done=True, capabilities=None, debug_info=None, - **kwargs): + supports_eager_pageload=True, **kwargs): """Selenium-based executor for testharness.js tests""" TestharnessExecutor.__init__(self, browser, server_config, timeout_multiplier=timeout_multiplier, @@ -279,6 +282,7 @@ class SeleniumTestharnessExecutor(TestharnessExecutor): self.script_resume = f.read() self.close_after_done = close_after_done self.window_id = str(uuid.uuid4()) + self.supports_eager_pageload = supports_eager_pageload def is_alive(self): return self.protocol.is_alive() @@ -308,10 +312,15 @@ class SeleniumTestharnessExecutor(TestharnessExecutor): parent_window = protocol.testharness.close_old_windows() # Now start the test harness protocol.base.execute_script("window.open('about:blank', '%s', 'noopener')" % self.window_id) - test_window = protocol.testharness.get_test_window(self.window_id, parent_window, + test_window = protocol.testharness.get_test_window(self.window_id, + parent_window, timeout=5*self.timeout_multiplier) self.protocol.base.set_window(test_window) - protocol.webdriver.get(url) + protocol.base.load(url) + + if not self.supports_eager_pageload: + self.wait_for_load(protocol) + handler = CallbackHandler(self.logger, protocol, test_window) while True: result = protocol.base.execute_script( @@ -321,6 +330,29 @@ class SeleniumTestharnessExecutor(TestharnessExecutor): break return rv + def wait_for_load(self, protocol): + # pageLoadStrategy=eager doesn't work in Chrome so try to emulate in user script + loaded = False + seen_error = False + while not loaded: + try: + loaded = protocol.base.execute_script(""" +var callback = arguments[arguments.length - 1]; +if (location.href === "about:blank") { + callback(false); +} else if (document.readyState !== "loading") { + callback(true); +} else { + document.addEventListener("readystatechange", () => {if (document.readyState !== "loading") {callback(true)}}); +}""", asynchronous=True) + except Exception: + # We can get an error here if the script runs in the initial about:blank + # document before it has navigated, with the driver returning an error + # indicating that the document was unloaded + if seen_error: + raise + seen_error = True + class SeleniumRefTestExecutor(RefTestExecutor): def __init__(self, browser, server_config, timeout_multiplier=1, @@ -339,7 +371,7 @@ class SeleniumRefTestExecutor(RefTestExecutor): self.close_after_done = close_after_done self.has_window = False - with open(os.path.join(here, "reftest-wait_webdriver.js")) as f: + with open(os.path.join(here, "test-wait.js" % {"classname": "reftest-wait"})) as f: self.wait_script = f.read() def reset(self): @@ -355,8 +387,8 @@ class SeleniumRefTestExecutor(RefTestExecutor): """return [window.outerWidth - window.innerWidth, window.outerHeight - window.innerHeight];""" ) - self.protocol.webdriver.set_window_size(0, 0) - self.protocol.webdriver.set_window_position(800 + width_offset, 600 + height_offset) + self.protocol.webdriver.set_window_position(0, 0) + self.protocol.webdriver.set_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/wptmanifest/backends/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/base.py index 45e2147fc4c..c539d4367e9 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/base.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/base.py @@ -1,4 +1,5 @@ import abc +from six import iteritems, iterkeys, itervalues from ..node import NodeVisitor from ..parser import parse @@ -186,21 +187,21 @@ class ManifestItem(object): def _flatten(self): rv = {} for node in [self, self.root]: - for name, value in node._data.iteritems(): + for name, value in iteritems(node._data): if name not in rv: rv[name] = value return rv def iteritems(self): - for item in self._flatten().iteritems(): + for item in iteritems(self._flatten()): yield item def iterkeys(self): - for item in self._flatten().iterkeys(): + for item in iterkeys(self._flatten()): yield item def itervalues(self): - for item in self._flatten().itervalues(): + for item in itervalues(self._flatten()): yield item def append(self, child): 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 aacd7857072..a81ad9d06a1 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 @@ -1,4 +1,5 @@ import operator +from six import ensure_text, iteritems, iterkeys, text_type from ..node import NodeVisitor, DataNode, ConditionalNode, KeyValueNode, ListNode, ValueNode, BinaryExpressionNode, VariableNode from ..parser import parse @@ -42,9 +43,7 @@ class ConditionalValue(object): return self.condition_func(run_info) def set_value(self, value): - if type(value) not in (str, unicode): - value = unicode(value) - self.value = value + self.value = ensure_text(value) def value_as(self, type_func): """Get value and convert to a given type. @@ -301,9 +300,9 @@ class ManifestItem(object): if isinstance(value, list): value_node = ListNode() for item in value: - value_node.append(ValueNode(unicode(item))) + value_node.append(ValueNode(text_type(item))) else: - value_node = ValueNode(unicode(value)) + value_node = ValueNode(text_type(value)) if condition is not None: if not isinstance(condition, ConditionalNode): conditional_node = ConditionalNode() @@ -369,17 +368,17 @@ class ManifestItem(object): def _flatten(self): rv = {} for node in [self, self.root]: - for name, value in node._data.iteritems(): + for name, value in iteritems(node._data): if name not in rv: rv[name] = value return rv def iteritems(self): - for item in self._flatten().iteritems(): + for item in iteritems(self._flatten()): yield item def iterkeys(self): - for item in self._flatten().iterkeys(): + for item in iterkeys(self._flatten()): yield item def remove_value(self, key, value): diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py index 62c5f7d3a46..b8b840fcaee 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py @@ -14,7 +14,7 @@ from __future__ import unicode_literals -from six import binary_type, text_type, BytesIO +from six import binary_type, text_type, BytesIO, unichr from six.moves import xrange from .node import (Node, AtomNode, BinaryExpressionNode, BinaryOperatorNode, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py index 3b29c99ede7..e92fd70d9fd 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py @@ -1,3 +1,5 @@ +from six import ensure_str, ensure_text + from .node import NodeVisitor, ValueNode, ListNode, BinaryExpressionNode from .parser import atoms, precedence @@ -10,7 +12,7 @@ def escape(string, extras=""): rv = "" for c in string: if c in named_escapes: - rv += c.encode("unicode_escape") + rv += c.encode("unicode_escape").decode() elif c == "\\": rv += "\\\\" elif c < '\x20': @@ -19,10 +21,7 @@ def escape(string, extras=""): rv += "\\" + c else: rv += c - if isinstance(rv, unicode): - return rv.encode("utf8") - else: - return rv + return ensure_str(rv) class ManifestSerializer(NodeVisitor): @@ -74,10 +73,7 @@ class ManifestSerializer(NodeVisitor): return ["".join(rv)] def visit_ValueNode(self, node): - if not isinstance(node.data, (str, unicode)): - data = unicode(node.data) - else: - data = node.data + data = ensure_text(node.data) if ("#" in data or data.startswith("if ") or (isinstance(node.parent, ListNode) and diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_conditional.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_conditional.py index fbc75ec8390..af4d9960322 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_conditional.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_conditional.py @@ -1,19 +1,15 @@ -import pytest -import sys import unittest from ..backends import conditional from ..node import BinaryExpressionNode, BinaryOperatorNode, VariableNode, NumberNode -@pytest.mark.xfail(sys.version[0] == "3", - reason="wptmanifest.parser doesn't support py3") class TestConditional(unittest.TestCase): def compile(self, input_text): return conditional.compile(input_text) def test_get_0(self): - data = """ + data = b""" key: value [Heading 1] @@ -25,19 +21,19 @@ key: value manifest = self.compile(data) - self.assertEquals(manifest.get("key"), "value") + self.assertEqual(manifest.get("key"), "value") children = list(item for item in manifest.iterchildren()) - self.assertEquals(len(children), 1) + self.assertEqual(len(children), 1) section = children[0] - self.assertEquals(section.name, "Heading 1") + self.assertEqual(section.name, "Heading 1") - self.assertEquals(section.get("other_key", {"a": 1}), "value_1") - self.assertEquals(section.get("other_key", {"a": 2}), "value_2") - self.assertEquals(section.get("other_key", {"a": 7}), "value_3") - self.assertEquals(section.get("key"), "value") + self.assertEqual(section.get("other_key", {"a": 1}), "value_1") + self.assertEqual(section.get("other_key", {"a": 2}), "value_2") + self.assertEqual(section.get("other_key", {"a": 7}), "value_3") + self.assertEqual(section.get("key"), "value") def test_get_1(self): - data = """ + data = b""" key: value [Heading 1] @@ -52,11 +48,11 @@ key: value children = list(item for item in manifest.iterchildren()) section = children[0] - self.assertEquals(section.get("other_key", {"a": "1"}), "value_1") - self.assertEquals(section.get("other_key", {"a": 1}), "value_3") + self.assertEqual(section.get("other_key", {"a": "1"}), "value_1") + self.assertEqual(section.get("other_key", {"a": 1}), "value_3") def test_get_2(self): - data = """ + data = b""" key: if a[1] == "b": value_1 if a[1] == 2: value_2 @@ -65,11 +61,11 @@ key: manifest = self.compile(data) - self.assertEquals(manifest.get("key", {"a": "ab"}), "value_1") - self.assertEquals(manifest.get("key", {"a": [1, 2]}), "value_2") + self.assertEqual(manifest.get("key", {"a": "ab"}), "value_1") + self.assertEqual(manifest.get("key", {"a": [1, 2]}), "value_2") def test_get_3(self): - data = """ + data = b""" key: if a[1] == "ab"[1]: value_1 if a[1] == 2: value_2 @@ -78,11 +74,11 @@ key: manifest = self.compile(data) - self.assertEquals(manifest.get("key", {"a": "ab"}), "value_1") - self.assertEquals(manifest.get("key", {"a": [1, 2]}), "value_2") + self.assertEqual(manifest.get("key", {"a": "ab"}), "value_1") + self.assertEqual(manifest.get("key", {"a": [1, 2]}), "value_2") def test_set_0(self): - data = """ + data = b""" key: if a == "a": value_1 if a == "b": value_2 @@ -92,10 +88,10 @@ key: manifest.set("new_key", "value_new") - self.assertEquals(manifest.get("new_key"), "value_new") + self.assertEqual(manifest.get("new_key"), "value_new") def test_set_1(self): - data = """ + data = b""" key: if a == "a": value_1 if a == "b": value_2 @@ -106,11 +102,11 @@ key: manifest.set("key", "value_new") - self.assertEquals(manifest.get("key"), "value_new") - self.assertEquals(manifest.get("key", {"a": "a"}), "value_1") + self.assertEqual(manifest.get("key"), "value_new") + self.assertEqual(manifest.get("key", {"a": "a"}), "value_1") def test_set_2(self): - data = """ + data = b""" key: if a == "a": value_1 if a == "b": value_2 @@ -125,11 +121,11 @@ key: manifest.set("key", "value_new", expr) - self.assertEquals(manifest.get("key", {"a": 1}), "value_new") - self.assertEquals(manifest.get("key", {"a": "a"}), "value_1") + self.assertEqual(manifest.get("key", {"a": 1}), "value_new") + self.assertEqual(manifest.get("key", {"a": "a"}), "value_1") def test_api_0(self): - data = """ + data = b""" key: if a == 1.5: value_1 value_2 @@ -138,8 +134,8 @@ key_1: other_value manifest = self.compile(data) self.assertFalse(manifest.is_empty) - self.assertEquals(manifest.root, manifest) + self.assertEqual(manifest.root, manifest) self.assertTrue(manifest.has_key("key_1")) self.assertFalse(manifest.has_key("key_2")) - self.assertEquals(set(manifest.iterkeys()), {"key", "key_1"}) + self.assertEqual(set(manifest.iterkeys()), {"key", "key_1"}) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_parser.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_parser.py index 805e47b371f..28d89bd1847 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_parser.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_parser.py @@ -18,9 +18,9 @@ class TestExpression(unittest.TestCase): self.match(expected, actual) def match(self, expected_node, actual_node): - self.assertEquals(expected_node[0], actual_node.__class__.__name__) - self.assertEquals(expected_node[1], actual_node.data) - self.assertEquals(len(expected_node[2]), len(actual_node.children)) + self.assertEqual(expected_node[0], actual_node.__class__.__name__) + self.assertEqual(expected_node[1], actual_node.data) + self.assertEqual(len(expected_node[2]), len(actual_node.children)) for expected_child, actual_child in zip(expected_node[2], actual_node.children): self.match(expected_child, actual_child) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py index 7fe7ac85cb8..70fca931090 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py @@ -1,3 +1,4 @@ +import six import sys import unittest @@ -6,8 +7,6 @@ import pytest from .. import parser, serializer -@pytest.mark.xfail(sys.version[0] == "3", - reason="wptmanifest.parser doesn't support py3") class TokenizerTest(unittest.TestCase): def setUp(self): self.serializer = serializer.ManifestSerializer() @@ -18,26 +17,25 @@ class TokenizerTest(unittest.TestCase): def compare(self, input_str, expected=None): if expected is None: - expected = input_str - expected = expected.encode("utf8") - actual = self.serialize(input_str) - self.assertEquals(actual, expected) + expected = input_str.decode("utf-8") + actual = six.ensure_text(self.serialize(input_str)) + self.assertEqual(actual, expected) def test_0(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: other_value """) def test_1(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if a or b: other_value """) def test_2(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if a or b: other_value @@ -45,7 +43,7 @@ class TokenizerTest(unittest.TestCase): """) def test_3(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if a == 1: other_value @@ -53,7 +51,7 @@ class TokenizerTest(unittest.TestCase): """) def test_4(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if a == "1": other_value @@ -61,7 +59,7 @@ class TokenizerTest(unittest.TestCase): """) def test_5(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if a == "abc"[1]: other_value @@ -69,7 +67,7 @@ class TokenizerTest(unittest.TestCase): """) def test_6(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if a == "abc"[c]: other_value @@ -77,7 +75,7 @@ class TokenizerTest(unittest.TestCase): """) def test_7(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if (a or b) and c: other_value @@ -91,7 +89,7 @@ class TokenizerTest(unittest.TestCase): """) def test_8(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if a or (b and c): other_value @@ -99,7 +97,7 @@ class TokenizerTest(unittest.TestCase): """) def test_9(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] other_key: if not (a and b): other_value @@ -107,7 +105,7 @@ class TokenizerTest(unittest.TestCase): """) def test_10(self): - self.compare("""key: value + self.compare(b"""key: value [Heading 1] some_key: some_value @@ -116,121 +114,121 @@ class TokenizerTest(unittest.TestCase): """) def test_11(self): - self.compare("""key: + self.compare(b"""key: if not a and b and c and d: true """) def test_12(self): - self.compare("""[Heading 1] + self.compare(b"""[Heading 1] key: [a:1, b:2] """) def test_13(self): - self.compare("""key: [a:1, "b:#"] + self.compare(b"""key: [a:1, "b:#"] """) def test_14(self): - self.compare("""key: [","] + self.compare(b"""key: [","] """) def test_15(self): - self.compare("""key: , + self.compare(b"""key: , """) def test_16(self): - self.compare("""key: ["]", b] + self.compare(b"""key: ["]", b] """) def test_17(self): - self.compare("""key: ] + self.compare(b"""key: ] """) def test_18(self): - self.compare(r"""key: \] + self.compare(br"""key: \] """, """key: ] """) def test_escape_0(self): - self.compare(r"""k\t\:y: \a\b\f\n\r\t\v""", + self.compare(br"""k\t\:y: \a\b\f\n\r\t\v""", r"""k\t\:y: \x07\x08\x0c\n\r\t\x0b """) def test_escape_1(self): - self.compare(r"""k\x00: \x12A\x45""", + self.compare(br"""k\x00: \x12A\x45""", r"""k\x00: \x12AE """) def test_escape_2(self): - self.compare(r"""k\u0045y: \u1234A\uABc6""", + self.compare(br"""k\u0045y: \u1234A\uABc6""", u"""kEy: \u1234A\uabc6 """) def test_escape_3(self): - self.compare(r"""k\u0045y: \u1234A\uABc6""", + self.compare(br"""k\u0045y: \u1234A\uABc6""", u"""kEy: \u1234A\uabc6 """) def test_escape_4(self): - self.compare(r"""key: '\u1234A\uABc6'""", + self.compare(br"""key: '\u1234A\uABc6'""", u"""key: \u1234A\uabc6 """) def test_escape_5(self): - self.compare(r"""key: [\u1234A\uABc6]""", + self.compare(br"""key: [\u1234A\uABc6]""", u"""key: [\u1234A\uabc6] """) def test_escape_6(self): - self.compare(r"""key: [\u1234A\uABc6\,]""", + self.compare(br"""key: [\u1234A\uABc6\,]""", u"""key: ["\u1234A\uabc6,"] """) def test_escape_7(self): - self.compare(r"""key: [\,\]\#]""", + self.compare(br"""key: [\,\]\#]""", r"""key: [",]#"] """) def test_escape_8(self): - self.compare(r"""key: \#""", + self.compare(br"""key: \#""", r"""key: "#" """) @pytest.mark.xfail(sys.maxunicode == 0xFFFF, reason="narrow unicode") def test_escape_9(self): - self.compare(r"""key: \U10FFFFabc""", + self.compare(br"""key: \U10FFFFabc""", u"""key: \U0010FFFFabc """) def test_escape_10(self): - self.compare(r"""key: \u10FFab""", + self.compare(br"""key: \u10FFab""", u"""key: \u10FFab """) def test_escape_11(self): - self.compare(r"""key: \\ab + self.compare(br"""key: \\ab """) def test_atom_1(self): - self.compare(r"""key: @True + self.compare(br"""key: @True """) def test_atom_2(self): - self.compare(r"""key: @False + self.compare(br"""key: @False """) def test_atom_3(self): - self.compare(r"""key: @Reset + self.compare(br"""key: @Reset """) def test_atom_4(self): - self.compare(r"""key: [a, @Reset, b] + self.compare(br"""key: [a, @Reset, b] """) def test_conditional_1(self): - self.compare("""foo: + self.compare(b"""foo: if a or b: [1, 2] """) def test_if_string_0(self): - self.compare("""foo: "if bar" + self.compare(b"""foo: "if bar" """) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_static.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_static.py index aaf84659152..e811a2b42b4 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_static.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_static.py @@ -1,5 +1,3 @@ -import pytest -import sys import unittest from ..backends import static @@ -8,14 +6,12 @@ from ..backends import static # use test_serializer for the majority of cases -@pytest.mark.xfail(sys.version[0] == "3", - reason="wptmanifest.parser doesn't support py3") class TestStatic(unittest.TestCase): def compile(self, input_text, input_data): return static.compile(input_text, input_data) def test_get_0(self): - data = """ + data = b""" key: value [Heading 1] @@ -27,17 +23,17 @@ key: value manifest = self.compile(data, {"a": 2}) - self.assertEquals(manifest.get("key"), "value") + self.assertEqual(manifest.get("key"), "value") children = list(item for item in manifest.iterchildren()) - self.assertEquals(len(children), 1) + self.assertEqual(len(children), 1) section = children[0] - self.assertEquals(section.name, "Heading 1") + self.assertEqual(section.name, "Heading 1") - self.assertEquals(section.get("other_key"), "value_2") - self.assertEquals(section.get("key"), "value") + self.assertEqual(section.get("other_key"), "value_2") + self.assertEqual(section.get("key"), "value") def test_get_1(self): - data = """ + data = b""" key: value [Heading 1] @@ -50,32 +46,32 @@ key: value children = list(item for item in manifest.iterchildren()) section = children[0] - self.assertEquals(section.get("other_key"), "value_3") + self.assertEqual(section.get("other_key"), "value_3") def test_get_3(self): - data = """key: + data = b"""key: if a == "1": value_1 if a[0] == "ab"[0]: value_2 """ manifest = self.compile(data, {"a": "1"}) - self.assertEquals(manifest.get("key"), "value_1") + self.assertEqual(manifest.get("key"), "value_1") manifest = self.compile(data, {"a": "ac"}) - self.assertEquals(manifest.get("key"), "value_2") + self.assertEqual(manifest.get("key"), "value_2") def test_get_4(self): - data = """key: + data = b"""key: if not a: value_1 value_2 """ manifest = self.compile(data, {"a": True}) - self.assertEquals(manifest.get("key"), "value_2") + self.assertEqual(manifest.get("key"), "value_2") manifest = self.compile(data, {"a": False}) - self.assertEquals(manifest.get("key"), "value_1") + self.assertEqual(manifest.get("key"), "value_1") def test_api(self): - data = """key: + data = b"""key: if a == 1.5: value_1 value_2 key_1: other_value @@ -83,15 +79,15 @@ key_1: other_value manifest = self.compile(data, {"a": 1.5}) self.assertFalse(manifest.is_empty) - self.assertEquals(manifest.root, manifest) + self.assertEqual(manifest.root, manifest) self.assertTrue(manifest.has_key("key_1")) self.assertFalse(manifest.has_key("key_2")) - self.assertEquals(set(manifest.iterkeys()), {"key", "key_1"}) - self.assertEquals(set(manifest.itervalues()), {"value_1", "other_value"}) + self.assertEqual(set(manifest.iterkeys()), {"key", "key_1"}) + self.assertEqual(set(manifest.itervalues()), {"value_1", "other_value"}) def test_is_empty_1(self): - data = """ + data = b""" [Section] [Subsection] """ diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html index d3101ab8e1a..46e4cb7f23a 100644 --- a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html +++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html @@ -168,17 +168,27 @@ nfc_test(async (t, mockNFC) => { }, "NDEFRecord.toRecords returns its embedded records correctly."); nfc_test(async (t, mockNFC) => { - mockNFC.setIsNDEFTech(false); + const promises = []; - const reader = new NDEFReader(); - reader.onreading = t.unreached_func("reading event should not be fired."); - await reader.scan(); - - mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)])); - await new Promise((resolve, reject) => { - t.step_timeout(resolve, 100); + const reader1 = new NDEFReader(); + const readerWatcher1 = new EventWatcher(t, reader1, ["reading", "error"]); + const promise1 = readerWatcher1.wait_for("error").then(event => { + assert_true(event instanceof ErrorEvent); }); -}, "Test that NDEFReader.onreading should not be fired if the NFC tag does not \ + promises.push(promise1); + await reader1.scan(); + + const reader2 = new NDEFReader(); + const readerWatcher2 = new EventWatcher(t, reader2, ["reading", "error"]); + const promise2 = readerWatcher2.wait_for("error").then(event => { + assert_true(event instanceof ErrorEvent); + }); + promises.push(promise2); + await reader2.scan(); + + mockNFC.setIsNDEFTech(false); + await Promise.all(promises); +}, "Test that NDEFReader.onerror should be fired if the NFC tag does not \ expose NDEF technology."); nfc_test(async (t, mockNFC) => { diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html index f3546b99dcb..d46503ab172 100644 --- a/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html +++ b/tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html @@ -69,6 +69,18 @@ } }, 'NDEFRecord constructor with custom record ids'); + test(() => { + const record = new NDEFRecord(createRecord('empty')); + assert_equals(record.recordType, 'empty', 'recordType'); + assert_equals(record.mediaType, null, 'mediaType'); + assert_equals(record.id, null, 'id'); + assert_equals(record.encoding, null, 'encoding'); + assert_equals(record.lang, null, 'lang'); + assert_equals(record.data, null, 'data'); + assert_throws('NotSupportedError', () => record.toRecords(), + 'Only smart-poster records and external type records could have embedded records.'); + }, 'NDEFRecord constructor with empty record type'); + test(() => { const record = new NDEFRecord(createTextRecord(test_text_data)); assert_equals(record.recordType, 'text', 'recordType'); diff --git a/tests/wpt/web-platform-tests/webaudio/resources/audit.js b/tests/wpt/web-platform-tests/webaudio/resources/audit.js index fe6fc45b140..ac97b66249d 100644 --- a/tests/wpt/web-platform-tests/webaudio/resources/audit.js +++ b/tests/wpt/web-platform-tests/webaudio/resources/audit.js @@ -51,12 +51,6 @@ window.Audit = (function() { }, message); } - function _logException(message, exception) { - test(function() { - throw exception; - }, message); - } - function _throwException(message) { throw new Error(message); } @@ -1185,30 +1179,22 @@ window.Audit = (function() { // Run this task. |this| task will be passed into the user-supplied test // task function. - run() { + run(harnessTest) { this._state = TaskState.STARTED; - + this._harnessTest = harnessTest; // Print out the task entry with label and description. _logPassed( '> [' + this._label + '] ' + (this._description ? this._description : '')); - // Ideally we would just use testharness async_test instead of reinventing - // that wheel, but since it's been reinvented... At least make sure that - // an exception while running a task doesn't preclude us running all the - // _other_ tasks for the test. - let testName = `Executing "${this.label}"`; - try { - this._taskFunction(this, this.should.bind(this)); - _logPassed(testName); - } catch (e) { - _logException(testName, e); - if (this.state != TaskState.FINISHED) { - // We threw before calling done(), so do that manually to run our - // other tasks. - this.done(); + return new Promise((resolve, reject) => { + this._resolve = resolve; + this._reject = reject; + let result = this._taskFunction(this, this.should.bind(this)); + if (result && typeof result.then === "function") { + result.then(() => this.done()).catch(reject); } - } + }); } // Update the task success based on the individual assertion/test inside. @@ -1224,6 +1210,7 @@ window.Audit = (function() { // Finish the current task and start the next one if available. done() { + assert_equals(this._state, TaskState.STARTED) this._state = TaskState.FINISHED; let message = '< [' + this._label + '] '; @@ -1238,17 +1225,24 @@ window.Audit = (function() { _logFailed(message); } - this._taskRunner._runNextTask(); + this._resolve(); } // Runs |subTask| |time| milliseconds later. |setTimeout| is not allowed in // WPT linter, so a thin wrapper around the harness's |step_timeout| is - // used here. + // used here. Returns a Promise which is resolved after |subTask| runs. timeout(subTask, time) { - async_test((test) => { - test.step_timeout(() => { - subTask(); - test.done(); + return new Promise(resolve => { + this._harnessTest.step_timeout(() => { + let result = subTask(); + if (result && typeof result.then === "function") { + // Chain rejection directly to the harness test Promise, to report + // the rejection against the subtest even when the caller of + // timeout does not handle the rejection. + result.then(resolve, this._reject()); + } else { + resolve(); + } }, time); }); } @@ -1271,20 +1265,11 @@ window.Audit = (function() { constructor() { this._tasks = {}; this._taskSequence = []; - this._currentTaskIndex = -1; // Configure testharness.js for the async operation. setup(new Function(), {explicit_done: true}); } - _runNextTask() { - if (this._currentTaskIndex < this._taskSequence.length) { - this._tasks[this._taskSequence[this._currentTaskIndex++]].run(); - } else { - this._finish(); - } - } - _finish() { let numberOfFailures = 0; for (let taskIndex in this._taskSequence) { @@ -1302,13 +1287,13 @@ window.Audit = (function() { prefix + this._taskSequence.length + ' tasks ran successfully.'); } - // From testharness.js, report back to the test infrastructure that - // the task runner completed all the tasks. - _testharnessDone(); + return Promise.resolve(); } // |taskLabel| can be either a string or a dictionary. See Task constructor - // for the detail. + // for the detail. If |taskFunction| returns a thenable, then the task + // is considered complete when the thenable is fulfilled; otherwise the + // task must be completed with an explicit call to |task.done()|. define(taskLabel, taskFunction) { let task = new Task(this, taskLabel, taskFunction); if (this._tasks.hasOwnProperty(task.label)) { @@ -1347,9 +1332,19 @@ window.Audit = (function() { return; } - // Start the first task. - this._currentTaskIndex = 0; - this._runNextTask(); + for (let taskIndex in this._taskSequence) { + let task = this._tasks[this._taskSequence[taskIndex]]; + // Some tests assume that tasks run in sequence, which is provided by + // promise_test(). + promise_test((t) => task.run(t), `Executing "${task.label}"`); + } + + // Schedule a summary report on completion. + promise_test(() => this._finish(), "Audit report"); + + // From testharness.js. The harness now need not wait for more subtests + // to be added. + _testharnessDone(); } } diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html index 89d361d22f3..685546aeb5e 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html @@ -25,12 +25,11 @@ const suspendTime = context.currentTime; const dummy = new AudioWorkletNode(context, 'dummy'); dummy.connect(context.destination); - task.timeout(() => { + return task.timeout(() => { should(context.currentTime === suspendTime, 'context.currentTime did not change after worklet started') .beTrue(); should(context.state, 'context.state').beEqualTo('suspended'); - task.done(); }, 500); }); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html index 7aa7975c131..1061698d21b 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html @@ -282,4 +282,13 @@ let ev = new RTCDTMFToneChangeEvent('worngname', {}); }, 'Tone change event with unexpected name should not crash'); + test(t => { + const ev1 = new RTCDTMFToneChangeEvent('tonechange', {}); + assert_equals(ev1.tone, ''); + + assert_equals(RTCDTMFToneChangeEvent.constructor.length, 1); + const ev2 = new RTCDTMFToneChangeEvent('tonechange'); + assert_equals(ev2.tone, ''); + }, 'Tone change event init optional parameters'); + diff --git a/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html b/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html index 812acf457c1..55d31159111 100644 --- a/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html @@ -24,38 +24,32 @@ let testFunction = function(session, fakeDeviceController, t) { session.requestReferenceSpace('bounded-floor') .then((referenceSpace) => { t.step(() => { - assert_unreached("Should not be able to get a bounded space until bounds set"); - }); - }).catch((err) => { - t.step(() => { - assert_equals(err.name, "NotSupportedError"); + // A bounded space may be created if no bounds have been set but the system has the capability to support bounded-floor + // A lack of bounds is indicated by an empty boundsGeometry + assert_true(referenceSpace.boundsGeometry.length == 0); }); function onFrame(time, xrFrame) { - // After setting the bounds explicitly, we should be able to get a - // reference space - session.requestReferenceSpace('bounded-floor') - .then((referenceSpace) => { - t.step(() => { - assert_equals(referenceSpace.boundsGeometry.length, VALID_BOUNDS.length); - for (i = 0; i < VALID_BOUNDS.length; ++i) { - let valid_point = VALID_BOUNDS[i]; - let bounds_point = referenceSpace.boundsGeometry[i]; - assert_equals(valid_point.x, bounds_point.x); - assert_equals(bounds_point.y, 0.0); - assert_equals(valid_point.z, bounds_point.z); - assert_equals(bounds_point.w, 1.0); - } - }); - - resolve(); + // After the bounds have been explicitly set, they should be what we expect. + t.step(() => { + assert_equals(referenceSpace.boundsGeometry.length, VALID_BOUNDS.length); + for (i = 0; i < VALID_BOUNDS.length; ++i) { + let valid_point = VALID_BOUNDS[i]; + let bounds_point = referenceSpace.boundsGeometry[i]; + assert_equals(valid_point.x, bounds_point.x); + assert_equals(bounds_point.y, 0.0); + assert_equals(valid_point.z, bounds_point.z); + assert_equals(bounds_point.w, 1.0); + } }); + + resolve(); } // Now set the bounds explicitly and check again on the next frame. fakeDeviceController.setBoundsGeometry(VALID_BOUNDS); session.requestAnimationFrame(onFrame); - }); + }); }); }; diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html index 70e9d6e6e59..0b83b4c6bb1 100644 --- a/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html @@ -37,7 +37,6 @@ .then((referenceSpace) => new Promise((resolve, reject) => { let counter = 0; function onFrame(time, vrFrame) { - session.requestAnimationFrame(onFrame); if (counter == 0) { t.step( () => { // Expecting to not get a pose since none has been supplied @@ -48,6 +47,14 @@ // Check that pose does not update pose within the same frame. assert_equals(vrFrame.getViewerPose(referenceSpace), null); }); + + // In order to avoid race conditions, after we've set the viewer + // pose, we queue up the next requestAnimationFrame. This should + // ensure that the next frame will be able to get the appropriate + // pose. + // Note that since the next frame will immediately resolve and end + // the test we only need to request a new frame once, here. + session.requestAnimationFrame(onFrame); } else { t.step( () => { let pose = vrFrame.getViewerPose(referenceSpace);