aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json1496
-rw-r--r--tests/wpt/metadata/css/css-fonts/animations/font-variation-settings-composition.html.ini91
-rw-r--r--tests/wpt/metadata/css/css-images/inheritance.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-values/ch-recalc-on-font-load.html.ini11
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/getClientRects-inline-atomic-child.html.ini10
-rw-r--r--tests/wpt/metadata/css/cssom-view/offsetTopLeft-border-box.html.ini7
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini1
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-structure.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini17
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html.ini9
-rw-r--r--tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html.ini9
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini8
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini4
-rw-r--r--tests/wpt/metadata/html/dom/reflection-metadata.html.ini60
-rw-r--r--tests/wpt/metadata/html/dom/reflection-misc.html.ini24
-rw-r--r--tests/wpt/metadata/html/dom/reflection-text.html.ini30
-rw-r--r--tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini6
-rw-r--r--tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini4
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini1
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini9
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini9
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html.ini4
-rw-r--r--tests/wpt/metadata/webxr/xrSession_features_deviceSupport.https.html.ini1
-rw-r--r--tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable.html9
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html11
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/no-coop-coep.https.window.js50
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-popup.html11
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-popup.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-worker.js9
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-worker.js.headers1
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html1
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js5
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js20
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js5
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js5
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js5
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js20
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js20
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js5
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js5
-rw-r--r--tests/wpt/web-platform-tests/compat/webkit-linear-gradient-diff-unprefixed-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/compat/webkit-linear-gradient-diff-unprefixed.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-insert.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-head.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-color-adjust/meta/support/compute-root-color-scheme.js7
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition.html92
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/inheritance.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/grammar-error-001-ref.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/grammar-error-001.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-content-012-ref.html72
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-content-012.html66
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-content-013-ref.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/marker-content-013.html44
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-006-manual.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-016-ref.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-016.html47
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-001-ref.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-001.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/outline-offset-table-001-notref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/outline-offset-table-001.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/ch-recalc-on-font-load.html78
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/float-shrink-to-fit-vrl-vlr-016.xht2
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/getClientRects-inline-atomic-child.html44
-rw-r--r--tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js93
-rw-r--r--tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-html.html13
-rw-r--r--tests/wpt/web-platform-tests/domxpath/node-sets.html24
-rw-r--r--tests/wpt/web-platform-tests/domxpath/predicates.html25
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/__dir__.headers1
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ar-ISO-8859-6-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ar-ISO-8859-6.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ar-windows-1256-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ar-windows-1256.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/el-ISO-8859-7-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/el-ISO-8859-7.tentative.html15
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/el-windows-1253-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/el-windows-1253.tentative.html15
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/fa-windows-1256-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/fa-windows-1256.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/fi-windows-1252-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/fi-windows-1252.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/he-ISO-8859-8-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/he-ISO-8859-8.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/he-windows-1255-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/he-windows-1255.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/is-windows-1252-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/is-windows-1252.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ja-EUC-JP-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ja-EUC-JP.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ja-ISO-2022-JP-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ja-ISO-2022-JP.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ja-Shift_JIS-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ja-Shift_JIS.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ko-EUC-KR-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ko-EUC-KR.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/lt-windows-1257-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/lt-windows-1257.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/lv-windows-1257-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/lv-windows-1257.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/pl-ISO-8859-2-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/pl-ISO-8859-2.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/pl-windows-1250-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/pl-windows-1250.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/pt-windows-1252-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/pt-windows-1252.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ru-IBM866-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ru-IBM866.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ru-ISO-8859-5-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/ru-ISO-8859-5.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/__dir__.headers1
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/ar-ISO-8859-6-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/ar-windows-1256-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/el-ISO-8859-7-late.sub.html10
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/el-windows-1253-late.sub.html10
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/fa-windows-1256-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/fi-windows-1252-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/he-ISO-8859-8-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/he-windows-1255-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/is-windows-1252-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/ja-EUC-JP-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/ja-ISO-2022-JP-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/ja-Shift_JIS-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/ko-EUC-KR-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/lt-windows-1257-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/lv-windows-1257-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/pl-ISO-8859-2-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/pl-windows-1250-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/pt-windows-1252-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/ru-IBM866-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/ru-ISO-8859-5-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/th-windows-874-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/tr-windows-1254-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/uk-KOI8-U-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/uk-windows-1251-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/vi-windows-1258-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/yi-windows-1255-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/zh-Big5-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/support/zh-GBK-late.sub.html9
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/th-windows-874-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/th-windows-874.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/tr-windows-1254-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/tr-windows-1254.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/uk-KOI8-U-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/uk-KOI8-U.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/uk-windows-1251-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/uk-windows-1251.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/utf-8.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/vi-windows-1258-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/vi-windows-1258.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/yi-windows-1255-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/yi-windows-1255.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/zh-Big5-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/zh-Big5.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/zh-GBK-late.tentative.html16
-rw-r--r--tests/wpt/web-platform-tests/encoding-detection/zh-GBK.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js3
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker.js3
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/request-structure.html2
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/download.tentative.https.sub.html37
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html8
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html6
-rw-r--r--tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js16
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/meta-http-equiv.https.html20
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html15
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp.https.html4
-rw-r--r--tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js2
-rw-r--r--tests/wpt/web-platform-tests/html/dom/reflection.js6
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepdown.html49
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepup.html51
-rw-r--r--tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-creation-offscreen.html13
-rw-r--r--tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-preserves-canvas.html4
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini6
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/encrypted-media.idl8
-rw-r--r--tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl3
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webrtc.idl4
-rw-r--r--tests/wpt/web-platform-tests/largest-contentful-paint/idlharness.html2
-rw-r--r--tests/wpt/web-platform-tests/layout-instability/body-display-change.html51
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html73
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-load-event.tentative.html55
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol.tentative.html (renamed from tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol-tentative.html)0
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy.tentative.html55
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/invisible-lazy-image.tentative.html78
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html67
-rw-r--r--tests/wpt/web-platform-tests/loading/lazyload/not-rendered-image-loading-lazy.tentative.html53
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords-ref.html6
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords.html6
-rw-r--r--tests/wpt/web-platform-tests/portals/portals-focus.sub.html72
-rw-r--r--tests/wpt/web-platform-tests/portals/resources/focus-page-with-button.html24
-rw-r--r--tests/wpt/web-platform-tests/portals/resources/focus-page-with-x-origin-iframe.sub.html28
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resources/sw-install.html59
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/workerStart-tao-protected.https.html17
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js3
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/webxr-test.js8
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html22
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/current-time.html24
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/scroll-animation.html12
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/setting-current-time.html223
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html2
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.js4
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/test-request-headers-worker.py4
-rw-r--r--tests/wpt/web-platform-tests/svg/embedded/image-fractional-width-vertical-fidelity.svg15
-rw-r--r--tests/wpt/web-platform-tests/tools/requirements_mypy.txt2
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/CHANGES22
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/LICENSE2
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/PKG-INFO41
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/README.rst17
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/documentation/conf.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/documentation/index.rst39
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/setup.cfg23
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/setup.py8
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/INSTALLER1
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/LICENSE18
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/METADATA52
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/RECORD8
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/WHEEL6
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six-1.13.0.dist-info/top_level.txt (renamed from tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/top_level.txt)0
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/PKG-INFO41
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/SOURCES.txt15
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six.egg-info/dependency_links.txt1
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/six.py80
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/six/test_six.py216
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py44
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/base.py9
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py15
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/parser.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/serializer.py14
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_conditional.py60
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_parser.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_serializer.py84
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptmanifest/tests/test_static.py42
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html26
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFRecord_constructor.https.html12
-rw-r--r--tests/wpt/web-platform-tests/webaudio/resources/audit.js85
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html3
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html9
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrBoundedReferenceSpace_updates.https.html40
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html9
261 files changed, 5508 insertions, 961 deletions
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-1.13.0.dist-info/LICENSE": [
+ []
+ ],
+ "tools/third_party/six/six-1.13.0.dist-info/METADATA": [
[]
],
- "tools/third_party/six/six.egg-info/SOURCES.txt": [
+ "tools/third_party/six/six-1.13.0.dist-info/RECORD": [
[]
],
- "tools/third_party/six/six.egg-info/dependency_links.txt": [
+ "tools/third_party/six/six-1.13.0.dist-info/WHEEL": [
[]
],
- "tools/third_party/six/six.egg-info/top_level.txt": [
+ "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",
- "testharness"
- ],
- "2dcontext/imagebitmap/no-coop-coep.https.window.js": [
- "5295f1e10cfdd572272519f96e4f17d63f60abec",
+ "708f97097c16e9074cc3cbf54dad0ee75df7967c",
"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-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.egg-info/top_level.txt": [
+ "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 <font-variation-settings> underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (1.5) should be ['test' 200\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (0.5) should be ['test' 200\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (0) should be ['test' 150\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> 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 <font-variation-settings> 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 <font-variation-settings> underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (-0.3) should be ['test' 120\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (1) should be ['test' 200\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> 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 <font-variation-settings> underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (0.5) should be ['test' 300\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (0.5) should be ['test' 175\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (0) should be [normal\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> 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 <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (0.5) should be ['test' 200\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (1) should be ['test' 300\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 100\] from add [normal\] to replace ['test' 200\] at (-0.3) should be [normal\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (1) should be ['test' 250\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (1.5) should be ['test' 225\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> 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 <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (1) should be ['test' 200\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to replace ['test' 200\] at (-0.3) should be ['test' 135\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (0) should be ['test' 150\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> underlying ['test' 100\] from add [normal\] to add ['test' 200\] at (1.5) should be ['test' 300\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> 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 <font-variation-settings> 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 <font-variation-settings> 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 <font-variation-settings> 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 <font-variation-settings> underlying ['test' 50\] from add ['test' 100\] to add ['test' 200\] at (1.5) should be ['test' 300\]]
+ expected: FAIL
+
+ [Compositing: property <font-variation-settings> 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 <iframe> is resized]
expected: FAIL
+ [listeners are called correct number of times]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini
deleted file mode 100644
index 61d0496ba40..00000000000
--- a/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[MediaQueryListEvent.html]
- [argument of onchange]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
deleted file mode 100644
index e38782d8c85..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[elementFromPoint-001.html]
- [CSSOM View - 5 - extensions to the Document interface]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/getClientRects-inline-atomic-child.html.ini b/tests/wpt/metadata/css/cssom-view/getClientRects-inline-atomic-child.html.ini
new file mode 100644
index 00000000000..9edff2020cf
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/getClientRects-inline-atomic-child.html.ini
@@ -0,0 +1,10 @@
+[getClientRects-inline-atomic-child.html]
+ [getClientRects-inline-atomic-child]
+ expected: FAIL
+
+ [getClientRects-inline-atomic-child 2]
+ expected: FAIL
+
+ [getClientRects-inline-atomic-child 1]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/offsetTopLeft-border-box.html.ini b/tests/wpt/metadata/css/cssom-view/offsetTopLeft-border-box.html.ini
deleted file mode 100644
index 239c35135e4..00000000000
--- a/tests/wpt/metadata/css/cssom-view/offsetTopLeft-border-box.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[offsetTopLeft-border-box.html]
- [container: 1]
- expected: FAIL
-
- [container: 0]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
index 3d135f3bd66..939a36eb9d9 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -2,7 +2,6 @@
type: testharness
[single-byte-decoder.html?document]
- expected: TIMEOUT
[ISO-8859-4: iso_8859-4:1988 (document.characterSet and document.inputEncoding)]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/api/request/request-structure.html.ini b/tests/wpt/metadata/fetch/api/request/request-structure.html.ini
index d90b69a1a99..7ff4fa9a21f 100644
--- a/tests/wpt/metadata/fetch/api/request/request-structure.html.ini
+++ b/tests/wpt/metadata/fetch/api/request/request-structure.html.ini
@@ -5,3 +5,6 @@
[Check isHistoryNavigation attribute]
expected: FAIL
+ [Check destination attribute]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 043922cce77..9e1add4143e 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -309,15 +309,24 @@
[<iframe>: separate response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: */* text/html]
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/plain */*]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index d2df9b78483..e67f0406fc3 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -53,6 +53,3 @@
[combined text/javascript ]
expected: FAIL
- [separate text/javascript x/x]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html.ini b/tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html.ini
index 442b30f029d..1a795f47c10 100644
--- a/tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html.ini
+++ b/tests/wpt/metadata/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html.ini
@@ -27,3 +27,12 @@
[Https downgrade-upgrade top level navigation: sec-fetch-site]
expected: FAIL
+ [Https downgrade-upgrade script => No headers: sec-fetch-dest]
+ expected: FAIL
+
+ [Https downgrade-upgrade iframe: sec-fetch-dest]
+ expected: FAIL
+
+ [Https downgrade-upgrade top level navigation: sec-fetch-dest]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html.ini b/tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html.ini
index 91f62c8f6bd..6c3afc4c100 100644
--- a/tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html.ini
+++ b/tests/wpt/metadata/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html.ini
@@ -27,3 +27,12 @@
[Http upgrade script => No headers: sec-fetch-site]
expected: FAIL
+ [Http upgrade script => No headers: sec-fetch-dest]
+ expected: FAIL
+
+ [Http upgrade iframe: sec-fetch-dest]
+ expected: FAIL
+
+ [Http upgrade top level navigation: sec-fetch-dest]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 87c807a49ff..536384f36e1 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
+ [X-Content-Type-Options%3A%20%2Cnosniff]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
index 8353d6acdf8..6bd06899fdd 100644
--- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
+++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini
@@ -8,8 +8,14 @@
expected: FAIL
[Embedded credentials are treated as network errors in new windows.]
- expected: TIMEOUT
+ expected: FAIL
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
expected: TIMEOUT
+ [Embedded credentials matching the top-level are not treated as network errors for same-origin URLs.]
+ expected: TIMEOUT
+
+ [Embedded credentials matching the top-level are not treated as network errors for relative URLs.]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
deleted file mode 100644
index 87b07c3e670..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_1.html]
- [Multiple history traversals from the same task]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
new file mode 100644
index 00000000000..16fa2c5cfc1
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
@@ -0,0 +1,4 @@
+[creating_browsing_context_test_01.html]
+ [first argument: absolute url]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/reflection-metadata.html.ini b/tests/wpt/metadata/html/dom/reflection-metadata.html.ini
index 483a032ffc4..cabdb8fa3ac 100644
--- a/tests/wpt/metadata/html/dom/reflection-metadata.html.ini
+++ b/tests/wpt/metadata/html/dom/reflection-metadata.html.ini
@@ -12597,3 +12597,63 @@
[link.autofocus: setAttribute() to object "[object Object\]"]
expected: FAIL
+ [link.referrerPolicy: setAttribute() to "ſtrict-origin"]
+ expected: FAIL
+
+ [link.as: setAttribute() to "xſlt"]
+ expected: FAIL
+
+ [link.referrerPolicy: setAttribute() to "unſafe-url"]
+ expected: FAIL
+
+ [link.as: setAttribute() to "ſharedworker"]
+ expected: FAIL
+
+ [link.as: IDL set to "ſharedworker"]
+ expected: FAIL
+
+ [link.referrerPolicy: setAttribute() to "ſtrict-origin-when-croſſ-origin"]
+ expected: FAIL
+
+ [link.referrerPolicy: IDL set to "origin-when-croſſ-origin"]
+ expected: FAIL
+
+ [link.referrerPolicy: IDL set to "ſtrict-origin"]
+ expected: FAIL
+
+ [link.referrerPolicy: IDL set to "unſafe-url"]
+ expected: FAIL
+
+ [link.referrerPolicy: IDL set to "ſame-origin"]
+ expected: FAIL
+
+ [link.as: IDL set to "ſcript"]
+ expected: FAIL
+
+ [link.as: IDL set to "manifeſt"]
+ expected: FAIL
+
+ [link.referrerPolicy: setAttribute() to "origin-when-croſſ-origin"]
+ expected: FAIL
+
+ [link.referrerPolicy: IDL set to "ſtrict-origin-when-croſſ-origin"]
+ expected: FAIL
+
+ [link.as: setAttribute() to "ſtyle"]
+ expected: FAIL
+
+ [link.as: IDL set to "xſlt"]
+ expected: FAIL
+
+ [link.referrerPolicy: setAttribute() to "ſame-origin"]
+ expected: FAIL
+
+ [link.as: IDL set to "ſtyle"]
+ expected: FAIL
+
+ [link.as: setAttribute() to "ſcript"]
+ expected: FAIL
+
+ [link.as: setAttribute() to "manifeſt"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/reflection-misc.html.ini b/tests/wpt/metadata/html/dom/reflection-misc.html.ini
index 76ab532894d..4a991afe689 100644
--- a/tests/wpt/metadata/html/dom/reflection-misc.html.ini
+++ b/tests/wpt/metadata/html/dom/reflection-misc.html.ini
@@ -21252,3 +21252,27 @@
[summary.autofocus: typeof IDL attribute]
expected: FAIL
+ [undefinedelement.enterKeyHint: IDL set to "previouſ"]
+ expected: FAIL
+
+ [undefinedelement.inputMode: IDL set to "ſearch"]
+ expected: FAIL
+
+ [undefinedelement.enterKeyHint: IDL set to "ſearch"]
+ expected: FAIL
+
+ [undefinedelement.enterKeyHint: IDL set to "ſend"]
+ expected: FAIL
+
+ [undefinedelement.enterKeyHint: setAttribute() to "ſend"]
+ expected: FAIL
+
+ [undefinedelement.enterKeyHint: setAttribute() to "ſearch"]
+ expected: FAIL
+
+ [undefinedelement.inputMode: setAttribute() to "ſearch"]
+ expected: FAIL
+
+ [undefinedelement.enterKeyHint: setAttribute() to "previouſ"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/reflection-text.html.ini b/tests/wpt/metadata/html/dom/reflection-text.html.ini
index 25b5ae1ee58..4eedd2c9928 100644
--- a/tests/wpt/metadata/html/dom/reflection-text.html.ini
+++ b/tests/wpt/metadata/html/dom/reflection-text.html.ini
@@ -39759,3 +39759,33 @@
[bdi.autofocus: IDL set to -Infinity]
expected: FAIL
+ [a.referrerPolicy: setAttribute() to "ſtrict-origin"]
+ expected: FAIL
+
+ [a.referrerPolicy: IDL set to "ſame-origin"]
+ expected: FAIL
+
+ [a.referrerPolicy: IDL set to "ſtrict-origin"]
+ expected: FAIL
+
+ [a.referrerPolicy: setAttribute() to "ſame-origin"]
+ expected: FAIL
+
+ [a.referrerPolicy: IDL set to "ſtrict-origin-when-croſſ-origin"]
+ expected: FAIL
+
+ [a.referrerPolicy: setAttribute() to "unſafe-url"]
+ expected: FAIL
+
+ [a.referrerPolicy: IDL set to "origin-when-croſſ-origin"]
+ expected: FAIL
+
+ [a.referrerPolicy: setAttribute() to "ſtrict-origin-when-croſſ-origin"]
+ expected: FAIL
+
+ [a.referrerPolicy: IDL set to "unſafe-url"]
+ expected: FAIL
+
+ [a.referrerPolicy: setAttribute() to "origin-when-croſſ-origin"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
index c35ccf11a71..65424f7891a 100644
--- a/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
+++ b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
@@ -5,14 +5,14 @@
expected: NOTRUN
[Check that rel=noopener with target=_parent does a normal load]
- expected: TIMEOUT
+ expected: FAIL
[Check that rel=noopener with target=_top does a normal load]
- expected: TIMEOUT
+ expected: FAIL
[Check that targeting of rel=noopener with a given name reuses an existing window with that name]
expected: NOTRUN
[Check that rel=noopener with target=_self does a normal load]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
new file mode 100644
index 00000000000..a9677391662
--- /dev/null
+++ b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini
@@ -0,0 +1,4 @@
+[DOMContentLoaded-defer.html]
+ [The end: DOMContentLoaded and defer scripts]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
index 034d9baebfa..496bad988c6 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
@@ -1,5 +1,4 @@
[promise-rejection-events.html]
- expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
@@ -9,6 +8,3 @@
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
expected: FAIL
- [rejectionhandled is dispatched from a queued task, and not immediately]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
index 6d08beab111..97f8a0cc51f 100644
--- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
+++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
@@ -10,3 +10,6 @@
[Verifies the resolution of entry.startTime is at least 20 microseconds.]
expected: TIMEOUT
+ [Verifies the resolution of performance.now() is at least 5 microseconds.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
index a56bad443a2..66bd350083b 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini
@@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html]
- expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
index d85973ca825..3b9abdec5a5 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
@@ -1,2 +1,11 @@
[audiobuffersource-multi-channels.html]
expected: ERROR
+ [Executing "initialize"]
+ expected: TIMEOUT
+
+ [Audit report]
+ expected: NOTRUN
+
+ [Executing "test"]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini
index 7aa97f3b4f6..ffe661ec7bc 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini
@@ -18,3 +18,12 @@
[< [test-resume\] 1 out of 4 assertions were failed.]
expected: FAIL
+ [Executing "test-after-close"]
+ expected: TIMEOUT
+
+ [Audit report]
+ expected: NOTRUN
+
+ [Executing "resume-running-context"]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html.ini
index 289bde2ec04..4c2aeeedb75 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html.ini
@@ -1,2 +1,4 @@
[audioworklet-suspend.https.html]
- expected: ERROR
+ [Executing "load-worklet-and-suspend"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webxr/xrSession_features_deviceSupport.https.html.ini b/tests/wpt/metadata/webxr/xrSession_features_deviceSupport.https.html.ini
index 8b100779745..c2051682335 100644
--- a/tests/wpt/metadata/webxr/xrSession_features_deviceSupport.https.html.ini
+++ b/tests/wpt/metadata/webxr/xrSession_features_deviceSupport.https.html.ini
@@ -1,5 +1,4 @@
[xrSession_features_deviceSupport.https.html]
- expected: ERROR
[Immersive XRSession requests with no supported device should reject]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
index 268949ced5c..f584fce5df1 100644
--- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
@@ -1,4 +1,5 @@
[005.html]
+ expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable.html
index b40d9cec3f3..a4434aec6e4 100644
--- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable.html
+++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-serializable.html
@@ -6,6 +6,7 @@
<script src="/common/namespaces.js"></script>
<script src="/common/media.js"></script>
<script src="common.sub.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
<div id=log></div>
<script>
let worker, continuations = {};
@@ -40,4 +41,12 @@ for (let { name, factory } of imageSourceTypes) {
});
}, `Serialize ImageBitmap created from ${name}`);
}
+
+promise_test(async (t) => {
+ const url = get_host_info().REMOTE_ORIGIN + '/images/pattern.png';
+ const image = await makeMakeHTMLImage(url)();
+ const bitmap = await createImageBitmap(image);
+
+ assert_throws('DataCloneError', () => worker.postMessage(bitmap));
+}, 'Serializing a non-origin-clean ImageBitmap throws.');
</script>
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html
index 580ec8a5ed0..708f97097c1 100644
--- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html
+++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html
@@ -5,6 +5,7 @@
<script src="/resources/testharnessreport.js"></script>
<script src="/common/media.js"></script>
<script src="common.sub.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
<div id=log></div>
<script>
let worker, continuations = {};
@@ -39,4 +40,14 @@ for (let { name, factory } of imageSourceTypes) {
});
}, `Transfer ImageBitmap created from ${name}`);
}
+
+promise_test(async (t) => {
+ const url = get_host_info().REMOTE_ORIGIN + '/images/pattern.png';
+ const image = await makeMakeHTMLImage(url)();
+ const bitmap = await createImageBitmap(image);
+
+ assert_throws('DataCloneError',
+ () => worker.postMessage(bitmap, [bitmap]));
+}, 'Transferring a non-origin-clean ImageBitmap throws.');
+
</script>
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/no-coop-coep.https.window.js b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/no-coop-coep.https.window.js
deleted file mode 100644
index 5295f1e10cf..00000000000
--- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/no-coop-coep.https.window.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// META: script=/common/utils.js
-// META: script=/common/get-host-info.sub.js
-
-function taintedImageBitmap(t) {
- return new Promise(resolve => {
- const img = new Image();
- img.src = `${get_host_info().HTTPS_REMOTE_ORIGIN}/images/blue.png`;
- img.onload = t.step_func(() => {
- resolve(createImageBitmap(img));
- });
- img.onerror = t.unreached_func();
- });
-}
-
-async_test(t => {
- const bc = new BroadcastChannel(token());
- const popup = window.open(`resources/coop-coep-popup.html?channel=${bc.name}`);
- const popupReady = new Promise(resolve => {
- bc.onmessage = t.step_func(resolve);
- });
- const imageReady = taintedImageBitmap(t);
- Promise.all([popupReady, imageReady]).then(t.step_func(([, bitmap]) => {
- bc.onmessage = t.step_func_done(e => {
- assert_equals(e.data, "Got failure as expected.");
- });
- bc.postMessage(bitmap);
- }));
-}, "BroadcastChannel'ing a tainted ImageBitmap to a COOP+COEP popup");
-
-[
- {
- "type": "serialize/deserialize",
- "message": (port, bitmap) => port.postMessage(bitmap)
- },
- {
- "type": "transfer",
- "message": (port, bitmap) => port.postMessage(bitmap, [bitmap])
- }
-].forEach(({ type, message }) => {
- async_test(t => {
- const sw = new SharedWorker("resources/coop-coep-worker.js");
- const imageReady = taintedImageBitmap(t);
- imageReady.then(t.step_func(bitmap => {
- sw.port.onmessage = t.step_func_done(e => {
- assert_equals(e.data, "Got failure as expected.");
- });
- message(sw.port, bitmap);
- }));
- }, `Messaging a tainted ImageBitMap via ${type} to a COEP shared worker`);
-});
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-popup.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-popup.html
deleted file mode 100644
index f0228503ffa..00000000000
--- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-popup.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<script>
-const channel = new URLSearchParams(location.search).get("channel");
-const bc = new BroadcastChannel(channel);
-bc.onmessageerror = e => {
- bc.postMessage("Got failure as expected.");
-}
-bc.onmessage = e => {
- bc.postMessage("Got message, expected failure.");
-}
-bc.postMessage("Initialize");
-</script>
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-popup.html.headers b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-popup.html.headers
deleted file mode 100644
index 63b60e490f4..00000000000
--- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-popup.html.headers
+++ /dev/null
@@ -1,2 +0,0 @@
-Cross-Origin-Opener-Policy: same-origin
-Cross-Origin-Embedder-Policy: require-corp
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-worker.js b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-worker.js
deleted file mode 100644
index a6e9cc58935..00000000000
--- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-worker.js
+++ /dev/null
@@ -1,9 +0,0 @@
-onconnect = e => {
- const port = e.source;
- port.onmessageerror = e => {
- port.postMessage("Got failure as expected.");
- }
- port.onmessage = e => {
- port.postMessage("Got message, expected failure.");
- }
-}
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-worker.js.headers b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-worker.js.headers
deleted file mode 100644
index 6604450991a..00000000000
--- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/resources/coop-coep-worker.js.headers
+++ /dev/null
@@ -1 +0,0 @@
-Cross-Origin-Embedder-Policy: require-corp
diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html
index 98dc0ce80e7..f74540db958 100644
--- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html
@@ -8,6 +8,7 @@
'use strict';
const test_desc = 'Requires a user gesture.';
const expected = new DOMException(
+ 'Failed to execute \'requestDevice\' on \'Bluetooth\': ' +
'Must be handling a user gesture to show a permission request.',
'SecurityError');
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js
index 1eb62d3a311..4a1baf3ebc2 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.window.js
@@ -6,8 +6,9 @@
const test_desc = 'disconnect() called before getPrimaryService. ' +
'Reject with NetworkError.';
const expected = new DOMException(
- 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' +
- 'first with `device.gatt.connect`.',
+ `Failed to execute 'getPrimaryService' on 'BluetoothRemoteGATTServer': ` +
+ `GATT Server is disconnected. Cannot retrieve services. (Re)connect ` +
+ `first with \`device.gatt.connect\`.`,
'NetworkError');
let device;
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js
index c95f8b921a7..0d3e5cf18a4 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-invalidates-objects.https.window.js
@@ -7,6 +7,14 @@ const test_desc = 'Calls on services after we disconnect and connect again. ' +
'Should reject with InvalidStateError.';
let device, services;
+function createDOMException(func, uuid) {
+ return new DOMException(
+ `Failed to execute '${func}' on 'BluetoothRemoteGATTService': ` +
+ `Service with UUID ${uuid} is no longer valid. Remember to retrieve ` +
+ `the service again after reconnecting.`,
+ 'InvalidStateError');
+}
+
bluetooth_test(
() => getHealthThermometerDevice(
{filters: [{services: ['health_thermometer']}]})
@@ -19,22 +27,18 @@ bluetooth_test(
.then(() => {
let promises = Promise.resolve();
for (let service of services) {
- let error = new DOMException(
- `Service with UUID ${
- service.uuid} is no longer valid. Remember ` +
- `to retrieve the service again after reconnecting.`,
- 'InvalidStateError');
promises = promises.then(
() => assert_promise_rejects_with_message(
service.getCharacteristic('measurement_interval'),
- error));
+ createDOMException('getCharacteristic' , service.uuid)));
promises = promises.then(
() => assert_promise_rejects_with_message(
- service.getCharacteristics(), error));
+ service.getCharacteristics(),
+ createDOMException('getCharacteristics' , service.uuid)));
promises = promises.then(
() => assert_promise_rejects_with_message(
service.getCharacteristics('measurement_interval'),
- error));
+ createDOMException('getCharacteristics' , service.uuid)));
}
return promises;
}),
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js
index e610b715b3a..7bb1ef5cb63 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnected-device.https.window.js
@@ -6,8 +6,9 @@
const test_desc = 'getPrimaryService called before connecting. Reject with ' +
'NetworkError.';
const expected = new DOMException(
- 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' +
- 'first with `device.gatt.connect`.',
+ `Failed to execute 'getPrimaryService' on 'BluetoothRemoteGATTServer': ` +
+ `GATT Server is disconnected. Cannot retrieve services. (Re)connect ` +
+ `first with \`device.gatt.connect\`.`,
'NetworkError');
bluetooth_test(
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js
index ad446499cba..8bc12f3c474 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.window.js
@@ -6,8 +6,9 @@
const test_desc = 'disconnect() called before getPrimaryServices. ' +
'Reject with NetworkError.';
const expected = new DOMException(
- 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' +
- 'first with `device.gatt.connect`.',
+ `Failed to execute 'getPrimaryServices' on 'BluetoothRemoteGATTServer': ` +
+ `GATT Server is disconnected. Cannot retrieve services. (Re)connect ` +
+ `first with \`device.gatt.connect\`.`,
'NetworkError');
let device;
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js
index 485dbb30421..1c77e4e710a 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.window.js
@@ -6,8 +6,9 @@
const test_desc = 'disconnect() called before getPrimaryServices. ' +
'Reject with NetworkError.';
const expected = new DOMException(
- 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' +
- 'first with `device.gatt.connect`.',
+ `Failed to execute 'getPrimaryServices' on 'BluetoothRemoteGATTServer': ` +
+ `GATT Server is disconnected. Cannot retrieve services. (Re)connect ` +
+ `first with \`device.gatt.connect\`.`,
'NetworkError');
let device;
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js
index d9f61674671..c226d2dc65e 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects-with-uuid.https.window.js
@@ -7,6 +7,14 @@ const test_desc = 'Calls on services after we disconnect and connect again. ' +
'Should reject with InvalidStateError.';
let device, services;
+function createDOMException(func, uuid) {
+ return new DOMException(
+ `Failed to execute '${func}' on 'BluetoothRemoteGATTService': ` +
+ `Service with UUID ${uuid} is no longer valid. Remember to retrieve ` +
+ `the service again after reconnecting.`,
+ 'InvalidStateError');
+}
+
bluetooth_test(
() => getHealthThermometerDevice(
{filters: [{services: ['health_thermometer']}]})
@@ -19,22 +27,18 @@ bluetooth_test(
.then(() => {
let promises = Promise.resolve();
for (let service of services) {
- let error = new DOMException(
- `Service with UUID ${
- service.uuid} is no longer valid. Remember ` +
- `to retrieve the service again after reconnecting.`,
- 'InvalidStateError');
promises = promises.then(
() => assert_promise_rejects_with_message(
service.getCharacteristic('measurement_interval'),
- error));
+ createDOMException('getCharacteristic', service.uuid)));
promises = promises.then(
() => assert_promise_rejects_with_message(
- service.getCharacteristics(), error));
+ service.getCharacteristics(),
+ createDOMException('getCharacteristics', service.uuid)));
promises = promises.then(
() => assert_promise_rejects_with_message(
service.getCharacteristics('measurement_interval'),
- error));
+ createDOMException('getCharacteristics', service.uuid)));
}
return promises;
}),
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js
index b1c9688cc14..d69f6c5d5c2 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-invalidates-objects.https.window.js
@@ -7,6 +7,14 @@ const test_desc = 'Calls on services after we disconnect and connect again. ' +
'Should reject with InvalidStateError.';
let device, services;
+function createDOMException(func, uuid) {
+ return new DOMException(
+ `Failed to execute '${func}' on 'BluetoothRemoteGATTService': ` +
+ `Service with UUID ${uuid} is no longer valid. Remember to retrieve ` +
+ `the service again after reconnecting.`,
+ 'InvalidStateError');
+}
+
bluetooth_test(
() => getHealthThermometerDevice(
{filters: [{services: ['health_thermometer']}]})
@@ -19,22 +27,18 @@ bluetooth_test(
.then(() => {
let promises = Promise.resolve();
for (let service of services) {
- let error = new DOMException(
- `Service with UUID ${
- service.uuid} is no longer valid. Remember ` +
- `to retrieve the service again after reconnecting.`,
- 'InvalidStateError');
promises = promises.then(
() => assert_promise_rejects_with_message(
service.getCharacteristic('measurement_interval'),
- error));
+ createDOMException('getCharacteristic', service.uuid)));
promises = promises.then(
() => assert_promise_rejects_with_message(
- service.getCharacteristics(), error));
+ service.getCharacteristics(),
+ createDOMException('getCharacteristics', service.uuid)));
promises = promises.then(
() => assert_promise_rejects_with_message(
service.getCharacteristics('measurement_interval'),
- error));
+ createDOMException('getCharacteristics', service.uuid)));
}
return promises;
}),
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js
index 8d64dafb760..a35984f8511 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device-with-uuid.https.window.js
@@ -6,8 +6,9 @@
const test_desc = 'getPrimaryServices called before connecting. Reject with ' +
'NetworkError.';
const expected = new DOMException(
- 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' +
- 'first with `device.gatt.connect`.',
+ `Failed to execute 'getPrimaryServices' on 'BluetoothRemoteGATTServer': ` +
+ `GATT Server is disconnected. Cannot retrieve services. (Re)connect ` +
+ `first with \`device.gatt.connect\`.`,
'NetworkError');
bluetooth_test(
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js
index 9c411120a04..36d7e64d555 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnected-device.https.window.js
@@ -6,8 +6,9 @@
const test_desc = 'getPrimaryServices called before connecting. Reject with ' +
'NetworkError.';
const expected = new DOMException(
- 'GATT Server is disconnected. Cannot retrieve services. (Re)connect ' +
- 'first with `device.gatt.connect`.',
+ `Failed to execute 'getPrimaryServices' on 'BluetoothRemoteGATTServer': ` +
+ `GATT Server is disconnected. Cannot retrieve services. (Re)connect ` +
+ `first with \`device.gatt.connect\`.`,
'NetworkError');
bluetooth_test(
diff --git a/tests/wpt/web-platform-tests/compat/webkit-linear-gradient-diff-unprefixed-ref.html b/tests/wpt/web-platform-tests/compat/webkit-linear-gradient-diff-unprefixed-ref.html
new file mode 100644
index 00000000000..96c2089d656
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compat/webkit-linear-gradient-diff-unprefixed-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<title>Compatibility Test Reference</title>
+<style>
+ #square {
+ height: 100px;
+ width: 100px;
+ background-image: linear-gradient(to bottom, orange, blue);
+ }
+</style>
+<p>You should see a square, orange at the top, blue at the bottom.</p>
+<div id="square"></div>
diff --git a/tests/wpt/web-platform-tests/compat/webkit-linear-gradient-diff-unprefixed.html b/tests/wpt/web-platform-tests/compat/webkit-linear-gradient-diff-unprefixed.html
new file mode 100644
index 00000000000..ee49dc4e158
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compat/webkit-linear-gradient-diff-unprefixed.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<title>Compatibility Test: -webkit-linear-gradient() diff with linear-gradient()</title>
+<link rel="help" href="https://compat.spec.whatwg.org/#css-gradients-webkit-linear-gradient">
+<link rel="match" href="webkit-linear-gradient-diff-unprefixed-ref.html">
+<style>
+ #square {
+ height: 100px;
+ width: 100px;
+ }
+</style>
+<p>You should see a square, orange at the top, blue at the bottom.</p>
+<div id="square"></div>
+<script>
+ square.offsetTop;
+ square.style.backgroundImage = "-webkit-linear-gradient(bottom, orange, blue)";
+ square.offsetTop;
+ square.style.backgroundImage = "linear-gradient(to bottom, orange, blue)";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html
new file mode 100644
index 00000000000..bb9fa659f32
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - attribute changes</title>
+<meta id="meta" name="color-scheme" content="dark">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+ assert_root_color_scheme("dark", "Meta color-scheme initially 'dark'.");
+
+ meta.removeAttribute("name");
+ assert_root_color_scheme("normal", "Removed name attribute from meta color-scheme.");
+
+ meta.setAttribute("name", "color-scheme");
+ assert_root_color_scheme("dark", "Set meta name to color-scheme.");
+
+ meta.setAttribute("content", "");
+ assert_root_color_scheme("normal", "Set content attribute of meta color-scheme to empty string.");
+
+ meta.setAttribute("content", ",,invalid");
+ assert_root_color_scheme("normal", "Set content attribute of meta color-scheme to an invalid value.");
+
+ meta.setAttribute("content", "light");
+ assert_root_color_scheme("light", "Set content attribute of meta color-scheme to 'light'.");
+
+ meta.removeAttribute("content");
+ assert_root_color_scheme("normal", "Removed the content attribute of meta color-scheme.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html
new file mode 100644
index 00000000000..86cc93c2dc9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - empty content value</title>
+<meta name="color-scheme" content="">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+ assert_root_color_scheme("normal", "Meta color-scheme with empty content attribute has no effect.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html
new file mode 100644
index 00000000000..0ade6df501e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>CSS Color Adjust Test: multiple meta tags - first valid applies</title>
+<meta name="color-scheme">
+<meta name="color-scheme" content>
+<meta name="color-scheme" content="">
+<meta name="color-scheme" content="light,dark">
+<!-- This is first with a valid content value -->
+<meta name="color-scheme" content="dark">
+<meta name="color-scheme" content="light">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+ assert_root_color_scheme("dark", "Tree order decides which meta color-scheme applies.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-insert.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-insert.html
new file mode 100644
index 00000000000..861818284bc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-insert.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>CSS Color Adjust Test: insert meta tags</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+ function createMeta(content) {
+ const meta = document.createElement("meta");
+ meta.setAttribute("name", "color-scheme");
+ meta.setAttribute("content", content);
+ return meta;
+ }
+
+ assert_root_color_scheme("normal", "Initial color-scheme");
+
+ document.head.appendChild(createMeta("light"));
+ assert_root_color_scheme("light", "Inserted meta color-scheme applies");
+
+ document.head.insertBefore(createMeta("dark"), document.head.lastChild);
+ assert_root_color_scheme("dark", "Inserted meta color-scheme before existing in head applies");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html
new file mode 100644
index 00000000000..6edb761960b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - no content value</title>
+<meta name="color-scheme">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+ assert_root_color_scheme("normal", "Meta color-scheme without content attribute has no effect.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html
new file mode 100644
index 00000000000..5a87604e86b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - presentational hint</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<style>
+ * { color-scheme: light }
+</style>
+<meta name="color-scheme" content="dark">
+<script>
+ // Author level CSS color-scheme property overrides meta color-scheme value
+ // which is at the presentational hint cascade order.
+ assert_root_color_scheme("light", "Author origin style rule overrides meta color-scheme.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-head.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-head.html
new file mode 100644
index 00000000000..d627f62df78
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove-head.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>CSS Color Adjust Test: Remove head with meta color-scheme</title>
+<meta name="color-scheme" content="dark">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<body></body>
+<script>
+ assert_root_color_scheme("dark", "Meta color-scheme applies.");
+ document.head.remove();
+ assert_root_color_scheme("normal", "Initial value after removing head including meta color-scheme.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove.html
new file mode 100644
index 00000000000..8439c504625
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-remove.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Color Adjust Test: remove meta tag</title>
+<meta id="dark" name="color-scheme" content="dark">
+<meta id="light" name="color-scheme" content="light">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+ assert_root_color_scheme("dark", "First meta applies.");
+ dark.remove();
+ assert_root_color_scheme("light", "Second meta applies after first one is removed.");
+ light.remove();
+ assert_root_color_scheme("normal", "Initial color-scheme with both meta elements removed.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html
new file mode 100644
index 00000000000..ff8fe416251
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme in body should not apply</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<body>
+ <meta name="color-scheme" content="dark">
+</body>
+<script>
+ assert_root_color_scheme("normal", "Meta color-scheme in body does not apply.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html
new file mode 100644
index 00000000000..6b5e5c0f8a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: Single meta color-scheme in head</title>
+<meta name="color-scheme" content="dark">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+ assert_root_color_scheme("dark", "Meta color-scheme in head applies.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html
new file mode 100644
index 00000000000..23ec7de1a94
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme in shadow-tree should not apply</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+ const host = document.createElement("div");
+ host.id = "host";
+ document.head.appendChild(host);
+ const root = host.attachShadow({mode:"open"});
+ const meta = document.createElement("meta");
+ meta.setAttribute("name", "color-scheme");
+ meta.setAttribute("content", "dark");
+ root.appendChild(meta);
+
+ assert_root_color_scheme("normal", "Meta color-scheme in shadow tree does not apply.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-color-adjust/meta/support/compute-root-color-scheme.js b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/support/compute-root-color-scheme.js
new file mode 100644
index 00000000000..8ceddbc40bf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-color-adjust/meta/support/compute-root-color-scheme.js
@@ -0,0 +1,7 @@
+'use strict';
+
+function assert_root_color_scheme(expected, description) {
+ test(() => {
+ assert_equals(getComputedStyle(document.documentElement).colorScheme, expected), "Check root element color scheme";
+ }, description);
+}
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition.html b/tests/wpt/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition.html
new file mode 100644
index 00000000000..58f037415e2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/animations/font-variation-settings-composition.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>font-variation-settings composition</title>
+<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#propdef-font-variation-settings">
+<meta name="assert" content="font-variation-settings supports animation pairwise by 'like' properties">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<body></body>
+
+<script>
+test_composition({
+ property: 'font-variation-settings',
+ underlying: "'test' 50",
+ addFrom: "'test' 100",
+ addTo: "'test' 200",
+}, [
+ {at: -0.3, expect: "'test' 120"},
+ {at: 0, expect: "'test' 150"},
+ {at: 0.5, expect: "'test' 200"},
+ {at: 1, expect: "'test' 250"},
+ {at: 1.5, expect: "'test' 300"},
+]);
+
+test_composition({
+ property: 'font-variation-settings',
+ underlying: "'test' 50",
+ addFrom: "'test' 100",
+ replaceTo: "'test' 200",
+}, [
+ {at: -0.3, expect: "'test' 135"},
+ {at: 0, expect: "'test' 150"},
+ {at: 0.5, expect: "'test' 175"},
+ {at: 1, expect: "'test' 200"},
+ {at: 1.5, expect: "'test' 225"},
+]);
+
+test_composition({
+ property: 'font-variation-settings',
+ underlying: "'test' 100",
+ addFrom: 'normal',
+ replaceTo: "'test' 200",
+}, [
+ {at: -0.3, expect: 'normal'},
+ {at: 0, expect: 'normal'},
+ {at: 0.5, expect: "'test' 200"},
+ {at: 1, expect: "'test' 200"},
+ {at: 1.5, expect: "'test' 200"},
+]);
+
+test_composition({
+ property: 'font-variation-settings',
+ underlying: "'test' 100",
+ addFrom: 'normal',
+ addTo: "'test' 200",
+}, [
+ {at: -0.3, expect: 'normal'},
+ {at: 0, expect: 'normal'},
+ {at: 0.5, expect: "'test' 300"},
+ {at: 1, expect: "'test' 300"},
+ {at: 1.5, expect: "'test' 300"},
+]);
+
+test_composition({
+ property: 'font-variation-settings',
+ underlying: "'aaaa' 100, 'bbbb' 200",
+ addFrom: "'aaaa' 20, 'bbbb' 50",
+ addTo: "'aaaa' 30, 'bbbb' 100",
+}, [
+ {at: -0.3, expect: "'aaaa' 117, 'bbbb' 235"},
+ {at: 0, expect: "'aaaa' 120, 'bbbb' 250"},
+ {at: 0.5, expect: "'aaaa' 125, 'bbbb' 275"},
+ {at: 1, expect: "'aaaa' 130, 'bbbb' 300"},
+ {at: 1.5, expect: "'aaaa' 135, 'bbbb' 325"},
+]);
+
+test_composition({
+ property: 'font-variation-settings',
+ underlying: "'test' 100",
+ addFrom: "'aaaa' 20, 'bbbb' 50",
+ addTo: "'aaaa' 30, 'bbbb' 100",
+}, [
+ {at: -0.3, expect: "'aaaa' 17, 'bbbb' 35"},
+ {at: 0, expect: "'aaaa' 20, 'bbbb' 50"},
+ {at: 0.5, expect: "'aaaa' 25, 'bbbb' 75"},
+ {at: 1, expect: "'aaaa' 30, 'bbbb' 100"},
+ {at: 1.5, expect: "'aaaa' 35, 'bbbb' 125"},
+]);
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-images/inheritance.html b/tests/wpt/web-platform-tests/css/css-images/inheritance.html
index 5ca1ed6b23f..cf51ef3f7d9 100644
--- a/tests/wpt/web-platform-tests/css/css-images/inheritance.html
+++ b/tests/wpt/web-platform-tests/css/css-images/inheritance.html
@@ -15,7 +15,7 @@
<div id="target"></div>
</div>
<script>
-assert_inherited('image-orientation', '0deg', 'from-image'); // none is 0deg
+assert_inherited('image-orientation', 'from-image', 'none');
assert_inherited('image-rendering', 'auto', 'pixelated');
assert_not_inherited('object-fit', 'fill', 'contain');
assert_not_inherited('object-position', '50% 50%', '10px 20px');
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/grammar-error-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/grammar-error-001-ref.html
new file mode 100644
index 00000000000..ecdb308f2f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/grammar-error-001-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+
+ <html lang="en">
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ div
+ {
+ font-size: 300%;
+ }
+
+ span
+ {
+ color: maroon;
+ text-decoration: underline dotted fuchsia;
+ }
+ </style>
+
+ <p>PREREQUISITE: User agent needs to have an enabled and capable grammar error module. If it does not, then this test does not apply to such user agent.
+
+ <p>Test passes if each glyph of "thing" is maroon and if "thing" is underlined with a fuchsia dotted line.
+
+ <div contenteditable="true">Many <span>thing</span> can happen.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/grammar-error-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/grammar-error-001.html
new file mode 100644
index 00000000000..3fe34ae7bcd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/grammar-error-001.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+
+ <html lang="en">
+
+ <meta charset="UTF-8">
+
+ <title>CSS Pseudo-Elements Test: highlighting of grammar error (basic)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
+ <link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
+ <link rel="match" href="grammar-error-001-ref.html">
+
+ <meta content="" name="flags">
+
+ <style>
+ div
+ {
+ font-size: 300%;
+ }
+
+ div::grammar-error
+ {
+ color: maroon;
+ text-decoration: underline dotted fuchsia;
+ }
+ </style>
+
+ <p>PREREQUISITE: User agent needs to have an enabled and capable grammar error module. If it does not, then this test does not apply to such user agent.
+
+ <p>Test passes if each glyph of "thing" is maroon and if "thing" is underlined with a fuchsia dotted line.
+
+ <div contenteditable="true">Many thing can happen.</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-012-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-012-ref.html
new file mode 100644
index 00000000000..d40c55c7362
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-012-ref.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html><head>
+<meta charset="utf-8">
+<title>CSS Reference: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<style>
+:root {
+ --red-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="16" style="background: red"></svg>');
+ --green-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="16" style="background: green"></svg>');
+}
+ul {
+ float: left;
+}
+.inside {
+ list-style-position: inside;
+}
+.text, .image {
+ list-style-type: none;
+ list-style-image: none;
+}
+.outside.text::before, .outside.image::before {
+ display: inline-block;
+ direction: rtl;
+ width: 0;
+}
+.text::before {
+ content: "text";
+}
+.image::before {
+ content: var(--green-image);
+}
+</style>
+<ul style="list-style-type: none">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: decimal">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: disc">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: 'string'">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
+<ul style="list-style-image: var(--red-image)">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-012.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-012.html
new file mode 100644
index 00000000000..f36228719a0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-012.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<link rel="match" href="marker-content-012-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
+<link rel="help" href="https://drafts.csswg.org/css-lists/#content-property">
+<meta name="assert" content="Checks that ::marker's 'content' takes precendence over 'list-style-type' and 'list-style-image'">
+<style>
+:root {
+ --red-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="16" style="background: red"></svg>');
+ --green-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="16" style="background: green"></svg>');
+}
+ul {
+ float: left;
+}
+.inside {
+ list-style-position: inside;
+}
+.text::marker {
+ content: "text";
+}
+.image::marker {
+ content: var(--green-image);
+}
+</style>
+<ul style="list-style-type: none">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: decimal">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: disc">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: 'string'">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
+<ul style="list-style-image: var(--red-image)">
+ <li class="outside normal">item</li>
+ <li class="outside text">item</li>
+ <li class="outside image">item</li>
+ <li class="inside normal">item</li>
+ <li class="inside text">item</li>
+ <li class="inside image">item</li>
+</ul>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-013-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-013-ref.html
new file mode 100644
index 00000000000..7657cfbd710
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-013-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html><head>
+<meta charset="utf-8">
+<title>CSS Reference: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<style>
+.inside {
+ list-style-position: inside;
+}
+.string {
+ list-style-type: "string";
+}
+.content::marker {
+ content: "content";
+}
+</style>
+<ol class="outside">
+ <li class="decimal">item</li>
+ <li class="string">item</li>
+ <li class="content">item</li>
+</ol>
+<ol class="inside">
+ <li class="decimal">item</li>
+ <li class="string">item</li>
+ <li class="content">item</li>
+</ol>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-013.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-013.html
new file mode 100644
index 00000000000..427578f9c5a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-013.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="utf-8">
+<title>CSS Test: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<link rel="match" href="marker-content-013-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
+<link rel="help" href="https://drafts.csswg.org/css-lists/#list-style-position-property">
+<meta name="assert" content="Checks that ::marker is updated when 'list-style-position' changes dynamically.">
+<style>
+.inside {
+ list-style-position: inside;
+}
+.string {
+ list-style-type: "string";
+}
+.content::marker {
+ content: "content";
+}
+</style>
+<ol class="inside">
+ <li class="decimal">item</li>
+ <li class="string">item</li>
+ <li class="content">item</li>
+</ol>
+<ol class="outside">
+ <li class="decimal">item</li>
+ <li class="string">item</li>
+ <li class="content">item</li>
+</ol>
+<script src="/common/reftest-wait.js"></script>
+<script>
+"use strict";
+addEventListener("load", function() {
+ requestAnimationFrame(() => {
+ for (const list of document.querySelectorAll("ol")) {
+ list.classList.toggle("inside");
+ list.classList.toggle("outside");
+ }
+ takeScreenshot();
+ });
+}, {once: true});
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-006-manual.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-006-manual.html
new file mode 100644
index 00000000000..57c9ad67d17
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-006-manual.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Pseudo-Elements Test: partial selection done manually and multiple text-shadow (complex)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
+
+ <meta content="interact" name="flags">
+ <meta content="This test checks that text selectedness done manually must affect multiple text shadows." name="assert">
+
+ <style>
+ div
+ {
+ color: blue;
+ font-size: 300%;
+ margin-left: 7.16667em;
+ margin-top: 1.5em;
+ text-shadow: red 0em -1.2em 0em, red -7em 0em 0em, red 7em 0em 0em, red 0em 1.2em 0em;
+ }
+
+ div::selection
+ {
+ background-color: yellow;
+ color: green;
+ text-shadow: none;
+ }
+ </style>
+
+ <p>Instructions: select a few characters from the blue words "Text sample". Select them with mouse dragging (leftwardedly or rightwardedly) or text-highlighting them with <kbd>Shift</kbd> and keyboard arrows when keyboard navigation (also called caret browsing) is enabled.
+
+ <p>Test passes if each of the 4 correspondent red glyph counterparts disappear.
+
+ <div>Text sample</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-016-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-016-ref.html
new file mode 100644
index 00000000000..5e3eabc976e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-016-ref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ div
+ {
+ color: green;
+ font-size: 300%;
+ margin-left: 0.66667em;
+ margin-top: 1.5em;
+ }
+ </style>
+
+ <p>Test passes if each glyph of "Selected Text" is green and not red.
+
+ <div>Selected Text</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-016.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-016.html
new file mode 100644
index 00000000000..44403c1b5f5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-text-shadow-016.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Pseudo-Elements Test: selection and text-shadow in 4 directions (static variation)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
+ <link rel="match" href="selection-text-shadow-016-ref.html">
+
+ <meta content="" name="flags">
+ <meta content="This test checks that text selectedness must affect multiple text shadows." name="assert">
+
+ <style>
+ div
+ {
+ color: blue;
+ font-size: 300%;
+ margin-left: 0.66667em;
+ margin-top: 1.5em;
+ text-shadow: red 0em -0.5em 0em, red -0.5em 0em 0em, red 0.5em 0em 0em, red 0em 0.5em 0em;
+ }
+
+ div::selection
+ {
+ color: green;
+ text-shadow: none;
+ }
+ </style>
+
+ <script>
+ function startTest()
+ {
+ var targetRange = document.createRange();
+ /* We first create an empty range */
+ targetRange.selectNodeContents(document.getElementById("test"));
+ /* Then we set the range boundaries to the children of div#test */
+ window.getSelection().addRange(targetRange);
+ /* Finally, we now select such range of content */
+ }
+ </script>
+
+ <body onload="startTest();">
+
+ <p>Test passes if each glyph of "Selected Text" is green and not red.
+
+ <div id="test">Selected Text</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-001-ref.html
new file mode 100644
index 00000000000..1e068262780
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-001-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+
+ <html lang="en">
+
+ <meta charset="UTF-8">
+
+ <title>CSS Reftest Reference</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ div
+ {
+ font-size: 300%;
+ }
+
+ span
+ {
+ color: maroon;
+ text-decoration: underline dotted fuchsia;
+ }
+ </style>
+
+ <p>PREREQUISITE: User agent needs to have an enabled and capable spelling error module. If it does not, then this test does not apply to such user agent.
+
+ <p>Test passes if each glyph of "txet" is maroon and if "txet" is underlined with a fuchsia dotted line.
+
+ <div contenteditable="true">A <span>txet</span> sample</div>
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-001.html
new file mode 100644
index 00000000000..a71d6f0155e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-pseudo/spelling-error-001.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+
+ <html lang="en">
+
+ <meta charset="UTF-8">
+
+ <title>CSS Pseudo-Elements Test: highlighting of spelling error (basic)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
+ <link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
+ <link rel="match" href="spelling-error-001-ref.html">
+
+ <meta content="" name="flags">
+
+ <style>
+ div
+ {
+ font-size: 300%;
+ }
+
+ div::spelling-error
+ {
+ color: maroon;
+ text-decoration: underline dotted fuchsia;
+ }
+ </style>
+
+ <p>PREREQUISITE: User agent needs to have an enabled and capable spelling error module. If it does not, then this test does not apply to such user agent.
+
+ <p>Test passes if each glyph of "txet" is maroon and if "txet" is underlined with a fuchsia dotted line.
+
+ <div contenteditable="true">A txet sample</div>
diff --git a/tests/wpt/web-platform-tests/css/css-ui/outline-offset-table-001-notref.html b/tests/wpt/web-platform-tests/css/css-ui/outline-offset-table-001-notref.html
new file mode 100644
index 00000000000..aafa2b053cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-ui/outline-offset-table-001-notref.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<title>CSS Rest Reference</title>
+<style>
+table {
+ outline: 1px solid blue;
+ outline-offset: 10px;
+}
+</style>
+<table>
+ Some content
+</table>
diff --git a/tests/wpt/web-platform-tests/css/css-ui/outline-offset-table-001.html b/tests/wpt/web-platform-tests/css/css-ui/outline-offset-table-001.html
new file mode 100644
index 00000000000..4b6f46949b7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-ui/outline-offset-table-001.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>outline-offset applies to tables</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui/#propdef-outline">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1603049">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<link rel="mismatch" href="outline-offset-table-001-notref.html">
+<style>
+table { outline: 1px solid blue }
+</style>
+<table>
+ Some content
+</table>
diff --git a/tests/wpt/web-platform-tests/css/css-values/ch-recalc-on-font-load.html b/tests/wpt/web-platform-tests/css/css-values/ch-recalc-on-font-load.html
new file mode 100644
index 00000000000..625521b8102
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/ch-recalc-on-font-load.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<title>Length unit 'ch' should be recalculated after loading a web font</title>
+<link rel="help" href="https://www.w3.org/TR/css-values-4/#font-relative-lengths">
+<link rel="author" href="mailto:xiaochengh@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+.container {
+ font: 25px/1 "custom font", monospace;
+}
+
+.test {
+ width: 1ch;
+}
+</style>
+
+<div class="container">
+ <div class="test"></div>
+</div>
+
+<div class="container" style="display: contents">
+ <div class="test"></div>
+</div>
+
+<div class="container" style="display: none">
+ <div class="test"></div>
+</div>
+
+<script>
+function parseWidthInPx(element) {
+ const value = CSSNumericValue.parse(getComputedStyle(element).width);
+ if (!value || !(value instanceof CSSUnitValue) || value.unit !== 'px')
+ throw 'Cannot parse width in pixels';
+ return value.value;
+}
+
+const testCases = document.querySelectorAll('.test');
+
+const asyncTests = [
+ async_test('ch in a normal div should be recalculated after loading a web font'),
+ async_test('ch in display:contents should be recalculated after loading a web font'),
+ async_test('ch in display:none should be recalculated after loading a web font')
+];
+
+// Before loading custom font, tests should be rendered with monospace
+// fallback and have a '1ch' measurement much shorter than 25px.
+for (let i = 0; i < testCases.length; ++i) {
+ asyncTests[i].step(() => {
+ const widthPx = parseWidthInPx(testCases[i]);
+ assert_less_than(widthPx, 24);
+ });
+}
+
+// Insert custom font into style sheet and load it
+const customFont = new FontFace('custom font', 'url(/fonts/Ahem.ttf)');
+document.fonts.add(customFont);
+
+// After loading custom font, tests should be rendered with the custom font,
+// which is Ahem, and have a '1ch' measurement that equals 25px.
+customFont.load().then(
+ () => {
+ for (let i = 0; i < testCases.length; ++i) {
+ asyncTests[i].step(() => {
+ const widthPx = parseWidthInPx(testCases[i]);
+ assert_approx_equals(widthPx, 25, 0.1);
+ asyncTests[i].done();
+ });
+ }
+ },
+ () => {
+ for (let i = 0; i < testCases.length; ++i) {
+ asyncTests[i].step(() => {
+ assert_unreached('Failed to load font');
+ });
+ }
+ }
+);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/float-shrink-to-fit-vrl-vlr-016.xht b/tests/wpt/web-platform-tests/css/css-writing-modes/float-shrink-to-fit-vrl-vlr-016.xht
index 3dfcd4716ca..f76d119a076 100644
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/float-shrink-to-fit-vrl-vlr-016.xht
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/float-shrink-to-fit-vrl-vlr-016.xht
@@ -33,7 +33,7 @@
div.vrl
{
- writing-mode: vertical-lr;
+ writing-mode: vertical-rl;
}
div.vlr
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/getClientRects-inline-atomic-child.html b/tests/wpt/web-platform-tests/css/cssom-view/getClientRects-inline-atomic-child.html
new file mode 100644
index 00000000000..f1f6fc5abc6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/getClientRects-inline-atomic-child.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/cssom-view-1/#dom-element-getclientrects">
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+inline-block {
+ display: inline-block;
+ height: 100px;
+}
+</style>
+<body>
+ <div>
+ <span class="target">
+ <inline-block></inline-block>
+ </span>
+ </div>
+ <div>
+ <span class="target">
+ <span>
+ <inline-block></inline-block>
+ </span>
+ </span>
+ </div>
+ <div>
+ <span class="target">
+ <span>
+ <span>
+ <inline-block></inline-block>
+ </span>
+ </span>
+ </span>
+ </div>
+<script>
+for (let element of document.getElementsByClassName('target')) {
+ let rects = element.getClientRects();
+ test(() => {
+ assert_equals(rects.length, 1);
+ for (let rect of rects)
+ assert_not_equals(rect.height, 100);
+ });
+}
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
index d1cb7cfbeb0..16a1c0e7f7f 100644
--- a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
@@ -1,6 +1,7 @@
'use strict';
(function() {
var interpolationTests = [];
+ var compositionTests = [];
var cssAnimationsData = {
sharedStyle: null,
nextID: 0,
@@ -301,7 +302,75 @@
});
}
- function createTestTargets(interpolationMethods, interpolationTests, container) {
+ function createCompositionTestTargets(compositionContainer, compositionTest) {
+ var options = compositionTest.options;
+ var property = options.property;
+ var underlying = options.underlying;
+ var comparisonFunction = options.comparisonFunction;
+ var from = options.accumulateFrom || options.addFrom || options.replaceFrom;
+ var to = options.accumulateTo || options.addTo || options.replaceTo;
+ var fromComposite = 'accumulateFrom' in options ? 'accumulate' : 'addFrom' in options ? 'add' : 'replace';
+ var toComposite = 'accumulateTo' in options ? 'accumulate' : 'addTo' in options ? 'add' : 'replace';
+ const invalidFrom = 'addFrom' in options === 'replaceFrom' in options
+ && 'addFrom' in options === 'accumulateFrom' in options;
+ const invalidTo = 'addTo' in options === 'replaceTo' in options
+ && 'addTo' in options === 'accumulateTo' in options;
+ if (invalidFrom || invalidTo) {
+ test(function() {
+ assert_false(invalidFrom, 'Exactly one of accumulateFrom, addFrom, or replaceFrom must be specified');
+ assert_false(invalidTo, 'Exactly one of accumulateTo, addTo, or replaceTo must be specified');
+ }, `Composition tests must have valid setup`);
+ }
+
+ var testText = `Compositing: property <${property}> underlying [${underlying}] from ${fromComposite} [${from}] to ${toComposite} [${to}]`;
+ var testContainer = createElement(compositionContainer, 'div');
+ createElement(testContainer);
+
+ // Setup a standard equality function if an override is not provided.
+ if (!comparisonFunction) {
+ comparisonFunction = (actual, expected) => {
+ assert_equals(normalizeValue(actual), normalizeValue(expected));
+ };
+ }
+
+ return compositionTest.expectations.map(function(expectation) {
+ var actualTargetContainer = createTargetContainer(testContainer, 'actual');
+ var expectedTargetContainer = createTargetContainer(testContainer, 'expected');
+ var expectedStr = expectation.option || expectation.expect;
+ if (!isNeutralKeyframe(expectedStr)) {
+ expectedTargetContainer.target.style.setProperty(property, expectedStr);
+ }
+ var target = actualTargetContainer.target;
+ target.style.setProperty(property, underlying);
+ target.interpolate = function() {
+ webAnimationsInterpolation.interpolateComposite(property, from, fromComposite, to, toComposite, expectation.at, target);
+ };
+ target.measure = function() {
+ var expectedValue = getComputedStyle(expectedTargetContainer.target).getPropertyValue(property);
+ test(function() {
+
+ if (from && from !== neutralKeyframe) {
+ assert_true(CSS.supports(property, from), '\'from\' value should be supported');
+ }
+ if (to && to !== neutralKeyframe) {
+ assert_true(CSS.supports(property, to), '\'to\' value should be supported');
+ }
+ if (typeof underlying !== 'undefined') {
+ assert_true(CSS.supports(property, underlying), '\'underlying\' value should be supported');
+ }
+
+ comparisonFunction(
+ getComputedStyle(target).getPropertyValue(property),
+ expectedValue);
+ }, `${testText} at (${expectation.at}) should be [${sanitizeUrls(expectedStr)}]`);
+ };
+ return target;
+ });
+ }
+
+
+
+ function createTestTargets(interpolationMethods, interpolationTests, compositionTests, container) {
var targets = [];
for (var interpolationMethod of interpolationMethods) {
var interpolationMethodContainer = createElement(container);
@@ -309,15 +378,17 @@
[].push.apply(targets, createInterpolationTestTargets(interpolationMethod, interpolationMethodContainer, interpolationTest));
}
}
+ var compositionContainer = createElement(container);
+ for (var compositionTest of compositionTests) {
+ [].push.apply(targets, createCompositionTestTargets(compositionContainer, compositionTest));
+ }
return targets;
}
function test_no_interpolation(options) {
test_interpolation(options, expectNoInterpolation);
}
-
- function test_interpolation(options, expectations) {
- interpolationTests.push({options, expectations});
+ function create_tests() {
var interpolationMethods = [
cssTransitionsInterpolation,
cssTransitionAllInterpolation,
@@ -325,7 +396,7 @@
webAnimationsInterpolation,
];
var container = createElement(document.body);
- var targets = createTestTargets(interpolationMethods, interpolationTests, container);
+ var targets = createTestTargets(interpolationMethods, interpolationTests, compositionTests, container);
// Separate interpolation and measurement into different phases to avoid O(n^2) of the number of targets.
for (var target of targets) {
target.interpolate();
@@ -334,10 +405,20 @@
target.measure();
}
container.remove();
- interpolationTests = [];
}
+ function test_interpolation(options, expectations) {
+ interpolationTests.push({options, expectations});
+ create_tests();
+ interpolationTests = [];
+ }
+ function test_composition(options, expectations) {
+ compositionTests.push({options, expectations});
+ create_tests();
+ compositionTests = [];
+ }
window.test_interpolation = test_interpolation;
window.test_no_interpolation = test_no_interpolation;
+ window.test_composition = test_composition;
window.neutralKeyframe = neutralKeyframe;
})();
diff --git a/tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-html.html b/tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-html.html
index ad65cc58618..2660d1d6c87 100644
--- a/tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-html.html
+++ b/tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-html.html
@@ -76,4 +76,17 @@ test(function() {
new DOMParser().parseFromString("", "text/foo-this-is-invalid");
})
}, "DOMParser throws on an invalid enum value")
+
+test(() => {
+ const doc = new DOMParser().parseFromString(`
+<html><body>
+<style>
+ @import url(/dummy.css)
+</style>
+<script>x = 8<\/script>
+</body></html>`, 'text/html');
+
+ assert_not_equals(doc.querySelector('script'), null, 'script must be found');
+ assert_equals(doc.x, undefined, 'script must not be executed');
+}, 'script is found synchronously even when there is a css import');
</script>
diff --git a/tests/wpt/web-platform-tests/domxpath/node-sets.html b/tests/wpt/web-platform-tests/domxpath/node-sets.html
new file mode 100644
index 00000000000..a47314fb086
--- /dev/null
+++ b/tests/wpt/web-platform-tests/domxpath/node-sets.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#node-sets">
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+function nodesetToSet(result) {
+ const set = new Set();
+ for (let node = result.iterateNext(); node; node = result.iterateNext()) {
+ set.add(node);
+ }
+ return set;
+}
+
+test(() => {
+ const doc = document.implementation.createHTMLDocument();
+ doc.documentElement.innerHTML = '<body><div></div></body>';
+ const result = nodesetToSet(doc.evaluate('(.//div)[1]|.', doc.documentElement));
+ assert_equals(result.size, 2);
+ assert_true(result.has(doc.documentElement));
+ assert_true(result.has(doc.body.firstChild));
+}, '| operator should evaluate both sides of expressions with the same context node');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/domxpath/predicates.html b/tests/wpt/web-platform-tests/domxpath/predicates.html
new file mode 100644
index 00000000000..1786740dbd2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/domxpath/predicates.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#predicates">
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+function nodesetToSet(result) {
+ const set = new Set();
+ for (let node = result.iterateNext(); node; node = result.iterateNext()) {
+ set.add(node);
+ }
+ return set;
+}
+
+test(() => {
+ const doc = document.implementation.createHTMLDocument();
+ doc.body.innerHTML = '<table></table>' +
+ '<table><tr><th><th><th><th></table>' +
+ '<table></table>';
+ const result = nodesetToSet(doc.evaluate('(//table)[count((//table)[2]/descendant::th)-1]', doc.documentElement));
+ assert_equals(result.size, 1);
+ assert_true(result.has(doc.body.lastChild));
+}, 'An expression in a predicate should not change the context node');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/__dir__.headers b/tests/wpt/web-platform-tests/encoding-detection/__dir__.headers
new file mode 100644
index 00000000000..a50d2c8454f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/__dir__.headers
@@ -0,0 +1 @@
+X-Content-Type-Options: nosniff
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ar-ISO-8859-6-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ar-ISO-8859-6-late.tentative.html
new file mode 100644
index 00000000000..2fc94256dde
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ar-ISO-8859-6-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ar ISO-8859-6 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "ISO-8859-6", 'Expected ISO-8859-6');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/ar-ISO-8859-6-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ar-ISO-8859-6.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ar-ISO-8859-6.tentative.html
new file mode 100644
index 00000000000..6967aaeb0a0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ar-ISO-8859-6.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ar ISO-8859-6</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> .</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "ISO-8859-6", 'Expected ISO-8859-6');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ar-windows-1256-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ar-windows-1256-late.tentative.html
new file mode 100644
index 00000000000..9928968869d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ar-windows-1256-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ar windows-1256 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1256", 'Expected windows-1256');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/ar-windows-1256-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ar-windows-1256.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ar-windows-1256.tentative.html
new file mode 100644
index 00000000000..d2d6d93d581
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ar-windows-1256.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ar windows-1256</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> .</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1256", 'Expected windows-1256');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/el-ISO-8859-7-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/el-ISO-8859-7-late.tentative.html
new file mode 100644
index 00000000000..fc5e799b814
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/el-ISO-8859-7-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>el ISO-8859-7 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "ISO-8859-7", 'Expected ISO-8859-7');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/el-ISO-8859-7-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/el-ISO-8859-7.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/el-ISO-8859-7.tentative.html
new file mode 100644
index 00000000000..f22b6ec5757
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/el-ISO-8859-7.tentative.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>el ISO-8859-7</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> :
+<!-- I needed to work capital alpha with tonos into the test somehow... --></p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "ISO-8859-7", 'Expected ISO-8859-7');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/el-windows-1253-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/el-windows-1253-late.tentative.html
new file mode 100644
index 00000000000..9a2960b4ff6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/el-windows-1253-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>el windows-1253 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1253", 'Expected windows-1253');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/el-windows-1253-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/el-windows-1253.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/el-windows-1253.tentative.html
new file mode 100644
index 00000000000..b314aa58e6b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/el-windows-1253.tentative.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>el windows-1253</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> :
+<!-- I needed to work capital alpha with tonos into the test somehow... --></p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1253", 'Expected windows-1253');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/fa-windows-1256-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/fa-windows-1256-late.tentative.html
new file mode 100644
index 00000000000..5398445c0ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/fa-windows-1256-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>fa windows-1256 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1256", 'Expected windows-1256');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/fa-windows-1256-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/fa-windows-1256.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/fa-windows-1256.tentative.html
new file mode 100644
index 00000000000..fb93c389fd1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/fa-windows-1256.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>fa windows-1256</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>&#1740; &#1740; Ґ&#1740; ǘ .</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1256", 'Expected windows-1256');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/fi-windows-1252-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/fi-windows-1252-late.tentative.html
new file mode 100644
index 00000000000..b84a257a519
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/fi-windows-1252-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>fi windows-1252 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1252", 'Expected windows-1252');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/fi-windows-1252-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/fi-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/fi-windows-1252.tentative.html
new file mode 100644
index 00000000000..5a4efcaf95e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/fi-windows-1252.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>fi windows-1252</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Tm on merkkikoodaustesti.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/he-ISO-8859-8-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/he-ISO-8859-8-late.tentative.html
new file mode 100644
index 00000000000..bd19bdb6d40
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/he-ISO-8859-8-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>he ISO-8859-8 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "ISO-8859-8", 'Expected ISO-8859-8');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/he-ISO-8859-8-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/he-ISO-8859-8.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/he-ISO-8859-8.tentative.html
new file mode 100644
index 00000000000..f1651da3ef6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/he-ISO-8859-8.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>he ISO-8859-8</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>. </p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "ISO-8859-8", 'Expected ISO-8859-8');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/he-windows-1255-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/he-windows-1255-late.tentative.html
new file mode 100644
index 00000000000..9627458c034
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/he-windows-1255-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>he windows-1255 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1255", 'Expected windows-1255');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/he-windows-1255-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/he-windows-1255.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/he-windows-1255.tentative.html
new file mode 100644
index 00000000000..738cc35da89
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/he-windows-1255.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>he windows-1255</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> .</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1255", 'Expected windows-1255');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/is-windows-1252-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/is-windows-1252-late.tentative.html
new file mode 100644
index 00000000000..7f733a4fb15
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/is-windows-1252-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>is windows-1252 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1252", 'Expected windows-1252');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/is-windows-1252-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/is-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/is-windows-1252.tentative.html
new file mode 100644
index 00000000000..06151d85754
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/is-windows-1252.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>is windows-1252</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>etta er kunarprf staf. Fyrir sum tunguml sem nota latneska stafi urfum vi meira inntak til a taka kvrunina.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ja-EUC-JP-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ja-EUC-JP-late.tentative.html
new file mode 100644
index 00000000000..aac50f6cd12
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ja-EUC-JP-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ja EUC-JP late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "EUC-JP", 'Expected EUC-JP');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/ja-EUC-JP-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ja-EUC-JP.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ja-EUC-JP.tentative.html
new file mode 100644
index 00000000000..5929825f357
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ja-EUC-JP.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ja EUC-JP</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>ʸ¸Ǥ</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "EUC-JP", 'Expected EUC-JP');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ja-ISO-2022-JP-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ja-ISO-2022-JP-late.tentative.html
new file mode 100644
index 00000000000..6e4bc9157d8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ja-ISO-2022-JP-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ja ISO-2022-JP late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "ISO-2022-JP", 'Expected ISO-2022-JP');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/ja-ISO-2022-JP-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ja-ISO-2022-JP.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ja-ISO-2022-JP.tentative.html
new file mode 100644
index 00000000000..405e123808d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ja-ISO-2022-JP.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ja ISO-2022-JP</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>$B$3$l$OJ8;z<B83$G$9!#(B</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "ISO-2022-JP", 'Expected ISO-2022-JP');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ja-Shift_JIS-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ja-Shift_JIS-late.tentative.html
new file mode 100644
index 00000000000..c822ae34a59
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ja-Shift_JIS-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ja Shift_JIS late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "Shift_JIS", 'Expected Shift_JIS');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/ja-Shift_JIS-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ja-Shift_JIS.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ja-Shift_JIS.tentative.html
new file mode 100644
index 00000000000..a496e48ad98
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ja-Shift_JIS.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ja Shift_JIS</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>͕łB</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "Shift_JIS", 'Expected Shift_JIS');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ko-EUC-KR-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ko-EUC-KR-late.tentative.html
new file mode 100644
index 00000000000..9ff224a54cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ko-EUC-KR-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ko EUC-KR late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "EUC-KR", 'Expected EUC-KR');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/ko-EUC-KR-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ko-EUC-KR.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ko-EUC-KR.tentative.html
new file mode 100644
index 00000000000..dac67b1e934
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ko-EUC-KR.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ko EUC-KR</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>̰ ڵ ׽ƮԴϴ.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "EUC-KR", 'Expected EUC-KR');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/lt-windows-1257-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/lt-windows-1257-late.tentative.html
new file mode 100644
index 00000000000..6f9ceed7639
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/lt-windows-1257-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>lt windows-1257 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1257", 'Expected windows-1257');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/lt-windows-1257-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/lt-windows-1257.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/lt-windows-1257.tentative.html
new file mode 100644
index 00000000000..88112a2c643
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/lt-windows-1257.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>lt windows-1257</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Tai simboli kodavimo testas. Kai kurioms kalboms, naudojanioms lotynikus ramenis, mums reikia daugiau informacijos, kad galtume priimti sprendim.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1257", 'Expected windows-1257');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/lv-windows-1257-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/lv-windows-1257-late.tentative.html
new file mode 100644
index 00000000000..5651e415ad4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/lv-windows-1257-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>lv windows-1257 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1257", 'Expected windows-1257');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/lv-windows-1257-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/lv-windows-1257.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/lv-windows-1257.tentative.html
new file mode 100644
index 00000000000..3baeb4015e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/lv-windows-1257.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>lv windows-1257</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>is ir rakstzmju kodanas tests. Das valods, kurs tiek izmantotas latu valodas burti, lmuma pieemanai mums ir nepiecieams vairk ieguldjuma.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1257", 'Expected windows-1257');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/pl-ISO-8859-2-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/pl-ISO-8859-2-late.tentative.html
new file mode 100644
index 00000000000..e5db00b0056
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/pl-ISO-8859-2-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>pl ISO-8859-2 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "ISO-8859-2", 'Expected ISO-8859-2');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/pl-ISO-8859-2-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/pl-ISO-8859-2.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/pl-ISO-8859-2.tentative.html
new file mode 100644
index 00000000000..da1fcefb18a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/pl-ISO-8859-2.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>pl ISO-8859-2</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>To jest test kodowania znakw. W przypadku niektrych jzykw, ktre uywaj znakw aciskich, potrzebujemy wicej danych, aby podj decyzj.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "ISO-8859-2", 'Expected ISO-8859-2');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/pl-windows-1250-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/pl-windows-1250-late.tentative.html
new file mode 100644
index 00000000000..adeca83fac1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/pl-windows-1250-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>pl windows-1250 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1250", 'Expected windows-1250');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/pl-windows-1250-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/pl-windows-1250.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/pl-windows-1250.tentative.html
new file mode 100644
index 00000000000..b3955c41848
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/pl-windows-1250.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>pl windows-1250</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>To jest test kodowania znakw. W przypadku niektrych jzykw, ktre uywaj znakw aciskich, potrzebujemy wicej danych, aby podj decyzj.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1250", 'Expected windows-1250');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/pt-windows-1252-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/pt-windows-1252-late.tentative.html
new file mode 100644
index 00000000000..d37dac058f2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/pt-windows-1252-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>pt windows-1252 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1252", 'Expected windows-1252');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/pt-windows-1252-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/pt-windows-1252.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/pt-windows-1252.tentative.html
new file mode 100644
index 00000000000..cf55dbb6278
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/pt-windows-1252.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>pt windows-1252</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Este um teste de codificao de caracteres.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ru-IBM866-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ru-IBM866-late.tentative.html
new file mode 100644
index 00000000000..03f5643a9a1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ru-IBM866-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ru IBM866 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "IBM866", 'Expected IBM866');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/ru-IBM866-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ru-IBM866.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ru-IBM866.tentative.html
new file mode 100644
index 00000000000..79924952594
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ru-IBM866.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ru IBM866</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> ஢ ᨬ.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "IBM866", 'Expected IBM866');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ru-ISO-8859-5-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ru-ISO-8859-5-late.tentative.html
new file mode 100644
index 00000000000..760dc96c120
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ru-ISO-8859-5-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ru ISO-8859-5 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "ISO-8859-5", 'Expected ISO-8859-5');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/ru-ISO-8859-5-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/ru-ISO-8859-5.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/ru-ISO-8859-5.tentative.html
new file mode 100644
index 00000000000..a2ee62c65f5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/ru-ISO-8859-5.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ru ISO-8859-5</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> .</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "ISO-8859-5", 'Expected ISO-8859-5');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/__dir__.headers b/tests/wpt/web-platform-tests/encoding-detection/support/__dir__.headers
new file mode 100644
index 00000000000..a50d2c8454f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/__dir__.headers
@@ -0,0 +1 @@
+X-Content-Type-Options: nosniff
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/ar-ISO-8859-6-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/ar-ISO-8859-6-late.sub.html
new file mode 100644
index 00000000000..b5d8d50498e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/ar-ISO-8859-6-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ar ISO-8859-6 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> .</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/ar-windows-1256-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/ar-windows-1256-late.sub.html
new file mode 100644
index 00000000000..fd80acd437d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/ar-windows-1256-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ar windows-1256 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> .</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/el-ISO-8859-7-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/el-ISO-8859-7-late.sub.html
new file mode 100644
index 00000000000..26cc057b9ea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/el-ISO-8859-7-late.sub.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>el ISO-8859-7 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> :
+<!-- I needed to work capital alpha with tonos into the test somehow... --></p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/el-windows-1253-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/el-windows-1253-late.sub.html
new file mode 100644
index 00000000000..235c8e06eca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/el-windows-1253-late.sub.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>el windows-1253 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> :
+<!-- I needed to work capital alpha with tonos into the test somehow... --></p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/fa-windows-1256-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/fa-windows-1256-late.sub.html
new file mode 100644
index 00000000000..6cb79b9c366
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/fa-windows-1256-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>fa windows-1256 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>&#1740; &#1740; Ґ&#1740; ǘ .</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/fi-windows-1252-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/fi-windows-1252-late.sub.html
new file mode 100644
index 00000000000..7d99bf3f693
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/fi-windows-1252-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>fi windows-1252 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Tm on merkkikoodaustesti.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/he-ISO-8859-8-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/he-ISO-8859-8-late.sub.html
new file mode 100644
index 00000000000..32aadf0b734
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/he-ISO-8859-8-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>he ISO-8859-8 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>. </p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/he-windows-1255-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/he-windows-1255-late.sub.html
new file mode 100644
index 00000000000..3ded8c05857
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/he-windows-1255-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>he windows-1255 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> .</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/is-windows-1252-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/is-windows-1252-late.sub.html
new file mode 100644
index 00000000000..41654c0c896
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/is-windows-1252-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>is windows-1252 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>etta er kunarprf staf. Fyrir sum tunguml sem nota latneska stafi urfum vi meira inntak til a taka kvrunina.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/ja-EUC-JP-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/ja-EUC-JP-late.sub.html
new file mode 100644
index 00000000000..d957a12c500
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/ja-EUC-JP-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ja EUC-JP late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>ʸ¸Ǥ</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/ja-ISO-2022-JP-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/ja-ISO-2022-JP-late.sub.html
new file mode 100644
index 00000000000..6f6561c50a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/ja-ISO-2022-JP-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ja ISO-2022-JP late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>$B$3$l$OJ8;z<B83$G$9!#(B</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/ja-Shift_JIS-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/ja-Shift_JIS-late.sub.html
new file mode 100644
index 00000000000..c28380fe962
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/ja-Shift_JIS-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ja Shift_JIS late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>͕łB</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/ko-EUC-KR-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/ko-EUC-KR-late.sub.html
new file mode 100644
index 00000000000..58b6f96e613
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/ko-EUC-KR-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ko EUC-KR late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>̰ ڵ ׽ƮԴϴ.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/lt-windows-1257-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/lt-windows-1257-late.sub.html
new file mode 100644
index 00000000000..4957b4563cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/lt-windows-1257-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>lt windows-1257 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Tai simboli kodavimo testas. Kai kurioms kalboms, naudojanioms lotynikus ramenis, mums reikia daugiau informacijos, kad galtume priimti sprendim.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/lv-windows-1257-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/lv-windows-1257-late.sub.html
new file mode 100644
index 00000000000..f258839a818
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/lv-windows-1257-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>lv windows-1257 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>is ir rakstzmju kodanas tests. Das valods, kurs tiek izmantotas latu valodas burti, lmuma pieemanai mums ir nepiecieams vairk ieguldjuma.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/pl-ISO-8859-2-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/pl-ISO-8859-2-late.sub.html
new file mode 100644
index 00000000000..53ec94dc31b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/pl-ISO-8859-2-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>pl ISO-8859-2 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>To jest test kodowania znakw. W przypadku niektrych jzykw, ktre uywaj znakw aciskich, potrzebujemy wicej danych, aby podj decyzj.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/pl-windows-1250-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/pl-windows-1250-late.sub.html
new file mode 100644
index 00000000000..894a065e011
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/pl-windows-1250-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>pl windows-1250 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>To jest test kodowania znakw. W przypadku niektrych jzykw, ktre uywaj znakw aciskich, potrzebujemy wicej danych, aby podj decyzj.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/pt-windows-1252-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/pt-windows-1252-late.sub.html
new file mode 100644
index 00000000000..7a950e48722
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/pt-windows-1252-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>pt windows-1252 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Este um teste de codificao de caracteres.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/ru-IBM866-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/ru-IBM866-late.sub.html
new file mode 100644
index 00000000000..929ce96640e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/ru-IBM866-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ru IBM866 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> ஢ ᨬ.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/ru-ISO-8859-5-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/ru-ISO-8859-5-late.sub.html
new file mode 100644
index 00000000000..7ad29ce34df
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/ru-ISO-8859-5-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ru ISO-8859-5 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> .</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/th-windows-874-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/th-windows-874-late.sub.html
new file mode 100644
index 00000000000..11d569cb71f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/th-windows-874-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>th windows-874 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>͡÷ͺѡ</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/tr-windows-1254-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/tr-windows-1254-late.sub.html
new file mode 100644
index 00000000000..adcf9ccd53d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/tr-windows-1254-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>tr windows-1254 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Bu bir karakter kodlama testidir. Latince karakterleri kullanan baz dillerde karar vermek iin daha fazla girdiye ihtiyacmz var.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/uk-KOI8-U-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/uk-KOI8-U-late.sub.html
new file mode 100644
index 00000000000..3802d0e3f7b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/uk-KOI8-U-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>uk KOI8-U late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> ̦.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/uk-windows-1251-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/uk-windows-1251-late.sub.html
new file mode 100644
index 00000000000..0bd38d93eab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/uk-windows-1251-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>uk windows-1251 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> .</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/vi-windows-1258-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/vi-windows-1258-late.sub.html
new file mode 100644
index 00000000000..9139072035c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/vi-windows-1258-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>vi windows-1258 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>y la mt th nghim ma hoa ky t.</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/yi-windows-1255-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/yi-windows-1255-late.sub.html
new file mode 100644
index 00000000000..2e5adcb31a0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/yi-windows-1255-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>yi windows-1255 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p> .</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/zh-Big5-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/zh-Big5-late.sub.html
new file mode 100644
index 00000000000..517ae19c993
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/zh-Big5-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>zh Big5 late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>oO@ӦrŽsXաC</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/support/zh-GBK-late.sub.html b/tests/wpt/web-platform-tests/encoding-detection/support/zh-GBK-late.sub.html
new file mode 100644
index 00000000000..74e5c131bde
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/support/zh-GBK-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>zh GBK late</title>
+<script>
+onload = function() {
+ opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>һַԡ</p>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/th-windows-874-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/th-windows-874-late.tentative.html
new file mode 100644
index 00000000000..1428ca0a672
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/th-windows-874-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>th windows-874 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-874", 'Expected windows-874');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/th-windows-874-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/th-windows-874.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/th-windows-874.tentative.html
new file mode 100644
index 00000000000..2069360f522
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/th-windows-874.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>th windows-874</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>͡÷ͺѡ</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-874", 'Expected windows-874');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/tr-windows-1254-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/tr-windows-1254-late.tentative.html
new file mode 100644
index 00000000000..bc48d31907d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/tr-windows-1254-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>tr windows-1254 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1254", 'Expected windows-1254');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/tr-windows-1254-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/tr-windows-1254.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/tr-windows-1254.tentative.html
new file mode 100644
index 00000000000..73e888b2017
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/tr-windows-1254.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>tr windows-1254</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Bu bir karakter kodlama testidir. Latince karakterleri kullanan baz dillerde karar vermek iin daha fazla girdiye ihtiyacmz var.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1254", 'Expected windows-1254');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/uk-KOI8-U-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/uk-KOI8-U-late.tentative.html
new file mode 100644
index 00000000000..f82ff24abda
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/uk-KOI8-U-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>uk KOI8-U late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "KOI8-U", 'Expected KOI8-U');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/uk-KOI8-U-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/uk-KOI8-U.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/uk-KOI8-U.tentative.html
new file mode 100644
index 00000000000..9852ae8a012
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/uk-KOI8-U.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>uk KOI8-U</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> ̦.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "KOI8-U", 'Expected KOI8-U');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/uk-windows-1251-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/uk-windows-1251-late.tentative.html
new file mode 100644
index 00000000000..2dc83eecd98
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/uk-windows-1251-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>uk windows-1251 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1251", 'Expected windows-1251');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/uk-windows-1251-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/uk-windows-1251.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/uk-windows-1251.tentative.html
new file mode 100644
index 00000000000..d410eee6228
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/uk-windows-1251.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>uk windows-1251</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> .</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1251", 'Expected windows-1251');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/utf-8.html b/tests/wpt/web-platform-tests/encoding-detection/utf-8.html
new file mode 100644
index 00000000000..a2a5982ef48
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/utf-8.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>UTF-8</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>これは文字実験です。</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_not_equals(document.characterSet.toUpperCase(), "UTF-8", 'Must not detect UTF-8');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/vi-windows-1258-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/vi-windows-1258-late.tentative.html
new file mode 100644
index 00000000000..1a2499cd501
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/vi-windows-1258-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>vi windows-1258 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1258", 'Expected windows-1258');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/vi-windows-1258-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/vi-windows-1258.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/vi-windows-1258.tentative.html
new file mode 100644
index 00000000000..15f3b122f8d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/vi-windows-1258.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>vi windows-1258</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>y la mt th nghim ma hoa ky t.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1258", 'Expected windows-1258');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/yi-windows-1255-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/yi-windows-1255-late.tentative.html
new file mode 100644
index 00000000000..52c3ffe5d68
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/yi-windows-1255-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>yi windows-1255 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "windows-1255", 'Expected windows-1255');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/yi-windows-1255-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/yi-windows-1255.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/yi-windows-1255.tentative.html
new file mode 100644
index 00000000000..b778590cd45
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/yi-windows-1255.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>yi windows-1255</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p> .</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "windows-1255", 'Expected windows-1255');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/zh-Big5-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/zh-Big5-late.tentative.html
new file mode 100644
index 00000000000..7df76aac4e0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/zh-Big5-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>zh Big5 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "Big5", 'Expected Big5');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/zh-Big5-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/zh-Big5.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/zh-Big5.tentative.html
new file mode 100644
index 00000000000..edd8017f491
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/zh-Big5.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>zh Big5</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>oO@ӦrŽsXաC</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "Big5", 'Expected Big5');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/zh-GBK-late.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/zh-GBK-late.tentative.html
new file mode 100644
index 00000000000..83e9b8e2a24
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/zh-GBK-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>zh GBK late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+ test(function() {
+ assert_equals(e.data, "GBK", 'Expected GBK');
+ }, "Check detection result");
+ w.close();
+ done();
+};
+var w = window.open("support/zh-GBK-late.sub.html");
+</script>
diff --git a/tests/wpt/web-platform-tests/encoding-detection/zh-GBK.tentative.html b/tests/wpt/web-platform-tests/encoding-detection/zh-GBK.tentative.html
new file mode 100644
index 00000000000..0b88da6751d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/encoding-detection/zh-GBK.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>zh GBK</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>һַԡ</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+ test(function() {
+ assert_equals(document.characterSet, "GBK", 'Expected GBK');
+ }, "Check detection result");
+ done();
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js b/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js
index c1b6c506e95..a583b1272a1 100644
--- a/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js
+++ b/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js
@@ -4,7 +4,8 @@ self.addEventListener('fetch', function(event) {
event.waitUntil(async function() {
let destination = new URL(url).searchParams.get("dest");
var result = "FAIL";
- if (event.request.destination == destination) {
+ if (event.request.destination == destination ||
+ (event.request.destination == "empty" && destination == "")) {
result = "PASS";
}
let cl = await clients.matchAll({includeUncontrolled: true});
diff --git a/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker.js b/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker.js
index f8e8e2669d0..904009c1721 100644
--- a/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker.js
+++ b/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker.js
@@ -1,7 +1,8 @@
self.addEventListener('fetch', function(event) {
if (event.request.url.includes('dummy')) {
let destination = new URL(event.request.url).searchParams.get("dest");
- if (event.request.destination == destination) {
+ if (event.request.destination == destination ||
+ (event.request.destination == "empty" && destination == "")) {
event.respondWith(fetch(event.request));
} else {
event.respondWith(Response.error());
diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html
index e137a7ea512..806606cf627 100644
--- a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html
+++ b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html
@@ -58,7 +58,7 @@
break;
case "destination":
- defaultValue = "";
+ defaultValue = "empty";
newValue = "worker";
break;
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/download.tentative.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/download.tentative.https.sub.html
new file mode 100644
index 00000000000..6f2a0434d49
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/metadata/download.tentative.https.sub.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+<script src=/fetch/metadata/resources/helper.js></script>
+<script src=/common/utils.js></script>
+<body>
+<script>
+ function create_test(host, expectations) {
+ async_test(t => {
+ let nonce = token();
+ let a = document.createElement('a');
+ a.download = '';
+ a.text = nonce;
+
+ let url = `https://${host}/fetch/metadata/resources/record-header.py?file=download` + nonce;
+ a.href = url;
+ document.body.appendChild(a);
+
+ test_driver.click(a);
+
+ t.step_timeout(_ => {
+ validate_expectations("download" + nonce, expectations, `{{host}} -> ${host} download`);
+ t.done();
+ }, 1000);
+ }, `{{host}} -> ${host} download`);
+ }
+
+ // Only testing same-origin a download because same-site and cross-site is not supported.
+ create_test("{{host}}:{{ports[https][0]}}", {
+ "site": "same-origin",
+ "user": "",
+ "mode": "navigate",
+ "dest": "empty"
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html
index e2715a65854..970eb3373a0 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html
@@ -8,7 +8,7 @@
<script>
"use strict";
let nonce = "{{uuid()}}";
- let expected = {"site": "cross-site", "user": "", "mode": "cors", "dest": ""};
+ let expected = {"site": "cross-site", "user": "", "mode": "cors", "dest": "empty"};
testPrefetch(nonce, "Https downgrade-upgrade", MultipleRedirectTo, expected);
</script>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html
index 37b24151680..907cf5c617d 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/multiple-redirect-https-downgrade-upgrade.tentative.sub.html
@@ -19,9 +19,9 @@
<div id="fontTest">Downgraded then upgraded font</div>
<script>
let nonce = "{{$id}}";
- let expected = {"site": "cross-site", "user": "", "mode": "cors", "dest": ""};
+ let expected = {"site": "cross-site", "user": "", "mode": "cors", "dest": "font"};
- // Validate various scenarios handle a request that redirects from https => http
+ // Validate various scenarios handle a request that redirects from https => http => https
// correctly and avoids disclosure of any Sec- headers.
RunCommonRedirectTests("Https downgrade-upgrade", MultipleRedirectTo, expected);
@@ -54,7 +54,7 @@
"site": "cross-site",
"user": undefined,
"mode": "cors",
- "dest": undefined
+ "dest": "image"
}, "Https downgrade-upgrade image => No headers");
});
}, "Https downgrade-upgrade image => No headers");
@@ -66,7 +66,7 @@
t.add_cleanup(_ => {
header = null;
});
- assert_header_equals(header, {"site": "cross-site", "user": "", "mode": "no-cors", "dest": ""},
+ assert_header_equals(header, {"site": "cross-site", "user": "", "mode": "no-cors", "dest": "script"},
"Https downgrade-upgrade script => No headers");
}, "Https downgrade-upgrade script => No headers");
</script>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html
index 45fd4efaace..c69f0e92592 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade-prefetch.optional.tentative.sub.html
@@ -8,7 +8,7 @@
<script>
"use strict";
let nonce = "{{uuid()}}";
- let expected = {"site": "cross-site", "user": "", "mode": "cors", "dest": ""};
+ let expected = {"site": "cross-site", "user": "", "mode": "cors", "dest": "empty"};
testPrefetch(nonce, "Http upgrade", upgradeRedirectTo, expected);
</script>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html
index c47190651e5..133576cb0d7 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/metadata/redirect/redirect-http-upgrade.tentative.sub.html
@@ -19,7 +19,7 @@
<div id="fontTest">Upgraded font</div>
<script>
let nonce = "{{$id}}";
- let expected = { "site": "cross-site", "user": "", "mode": "cors", "dest": "" };
+ let expected = { "site": "cross-site", "user": "", "mode": "cors", "dest": "font" };
// Validate various scenarios handle a request that redirects from http => https correctly and add the proper Sec- headers.
RunCommonRedirectTests("Http upgrade", upgradeRedirectTo, expected);
@@ -51,7 +51,7 @@
"site": "cross-site",
"user": undefined,
"mode": "cors",
- "dest": undefined,
+ "dest": "image",
}, "Http upgrade image => No headers");
});
}, "Http upgrade image => No headers");
@@ -61,7 +61,7 @@
<script>
test(t => {
t.add_cleanup(_ => { header = null; });
- assert_header_equals(header, { "site": "cross-site", "user": "", "mode": "no-cors", "dest": "" }, "Http upgrade script => No headers");
+ assert_header_equals(header, { "site": "cross-site", "user": "", "mode": "no-cors", "dest": "script" }, "Http upgrade script => No headers");
}, "Http upgrade script => No headers");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js b/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js
index e5547e7ac79..8654356aa96 100644
--- a/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js
+++ b/tests/wpt/web-platform-tests/fetch/metadata/resources/redirectTestHelper.sub.js
@@ -79,6 +79,8 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults
let expectation = { ...expectedResults };
if (expectation['mode'] != '')
expectation['mode'] = 'navigate';
+ if (expectation['dest'] == 'font')
+ expectation['dest'] = 'iframe';
assert_header_equals(e.data, expectation, testNamePrefix + ' iframe');
t.done();
}));
@@ -97,6 +99,8 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults
let expectation = { ...expectedResults };
if (expectation['mode'] != '')
expectation['mode'] = 'navigate';
+ if (expectation['dest'] == 'font')
+ expectation['dest'] = 'document';
assert_header_equals(e.data, expectation, testNamePrefix + ' top level navigation');
t.done();
}));
@@ -111,6 +115,8 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults
let expectation = { ...expectedResults };
if (expectation['mode'] != '')
expectation['mode'] = 'navigate';
+ if (expectation['dest'] == 'font')
+ expectation['dest'] = 'embed';
fetch('/fetch/metadata/resources/record-header.py?retrieve=true&file=' + key)
.then(response => response.text())
.then(t.step_func(text => assert_header_equals(text, expectation, testNamePrefix + ' embed')))
@@ -126,7 +132,7 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults
let expectation = { ...expectedResults };
if (expectation['mode'] != '')
expectation['mode'] = 'cors';
- if (expectation['dest'] == '' && testNamePrefix != "Https downgrade")
+ if (expectation['dest'] == 'font')
expectation['dest'] = 'empty';
return fetch(urlHelperMethod('resources/echo-as-json.py?' + key))
.then(r => r.json())
@@ -142,6 +148,8 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults
let expectation = { ...expectedResults };
if (expectation['mode'] != '')
expectation['mode'] = 'navigate';
+ if (expectation['dest'] == 'font')
+ expectation['dest'] = 'object';
fetch('/fetch/metadata/resources/record-header.py?retrieve=true&file=' + key)
.then(response => response.text())
.then(t.step_func(text => assert_header_equals(text, expectation, testNamePrefix + ' object')))
@@ -182,6 +190,8 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults
let expectation = { ...expectedResults };
if (expectation['mode'] != '')
expectation['mode'] = 'no-cors';
+ if (expectation['dest'] == 'font')
+ expectation['dest'] = 'style';
fetch('/fetch/metadata/resources/record-header.py?retrieve=true&file=' + key)
.then(response => response.text())
.then(t.step_func(text => assert_header_equals(text, expectation, testNamePrefix + ' stylesheet')))
@@ -202,9 +212,11 @@ function RunCommonRedirectTests(testNamePrefix, urlHelperMethod, expectedResults
let expectation = { ...expectedResults };
if (expectation['mode'] != '')
expectation['mode'] = 'cors';
+ if (expectation['dest'] == 'font')
+ expectation['dest'] = 'track';
fetch('/fetch/metadata/resources/record-header.py?retrieve=true&file=' + key)
.then(response => response.text())
- .then(t.step_func(text => assert_header_equals(text, expectedResults, testNamePrefix + ' track')))
+ .then(t.step_func(text => assert_header_equals(text, expectation, testNamePrefix + ' track')))
.then(resolve);
});
video.appendChild(el);
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/meta-http-equiv.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/meta-http-equiv.https.html
new file mode 100644
index 00000000000..d35df3135ac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/meta-http-equiv.https.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta http-equiv="Cross-Origin-Embedder-Policy" content="require-corp"><!-- should not be supported -->
+<title>Cross-Origin-Embedder-Policy in &lt;meta http-equiv></title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+async_test(t => {
+ const frame = document.createElement("iframe");
+ t.add_cleanup(() => frame.remove());
+ frame.src = "/common/blank.html";
+ document.body.append(frame);
+ assert_equals(frame.contentDocument.URL, "about:blank");
+ assert_equals(frame.contentDocument.body.localName, "body");
+ frame.onload = t.step_func_done(() => {
+ assert_equals(frame.contentDocument.URL, `${location.protocol}//${location.host}/common/blank.html`);
+ assert_equals(frame.contentDocument.body.localName, "body");
+ });
+}, `<meta http-equiv="Cross-Origin-Embedder-Policy" content="require-corp"> top-level: navigating a frame to "none" should not fail`);
+</script>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html
index b1bb6fefc6c..f13a7523011 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html
@@ -54,10 +54,17 @@ async_test(t => {
let pageLoaded = false;
const bc = new BroadcastChannel(token());
let finished = false;
+ let doneCheck = _ => {
+ if (finished && pageLoaded) {
+ t.done();
+ }
+ }
bc.onmessage = t.step_func((event) => {
pageLoaded = true;
let payload = event.data;
assert_equals(payload, "loaded");
+
+ doneCheck();
});
const bc2 = new BroadcastChannel(token());
@@ -65,15 +72,11 @@ async_test(t => {
finished = true;
let payload = event.data;
assert_equals(payload, "loaded");
+
+ doneCheck();
});
const win = window.open(`resources/navigate-require-corp.sub.html?channelName=${bc.name}&to=navigate-none.sub.html?channelName=${bc2.name}`, "_blank", "noopener");
assert_equals(win, null);
-
- t.step_timeout(() => {
- assert_true(pageLoaded);
- assert_true(finished);
- t.done();
- }, 500);
}, `"require-corp" top-level noopener popup: navigating to "none" should succeed`);
</script>
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp.https.html
index 446003723a1..49b2eb123b5 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp.https.html
+++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp.https.html
@@ -72,10 +72,6 @@ async_test(t => {
const win = window.open(`resources/navigate-none.sub.html?channelName=${bc.name}&to=/common/blank.html`, "_blank");
t.add_cleanup(() => win.close());
- t.step_timeout(() => {
- assert_equals(pageLoaded, true);
- t.done();
- }, 2000);
}, `"require-corp" top-level: creating a "none" popup should succeed.`);
[
diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js
index c5d3c6c1084..53b80bb6e99 100644
--- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js
+++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js
@@ -26,7 +26,7 @@ function coop_test(t, host, coop, channelName, hasOpener) {
}
function run_coop_tests(documentCOOPValueTitle, testArray) {
- for (const test of tests) {
+ for (const test of testArray) {
async_test(t => {
coop_test(t, test[0], test[1],
`${documentCOOPValueTitle}_to_${test[0].name}_${test[1].replace(/ /g,"-")}`,
diff --git a/tests/wpt/web-platform-tests/html/dom/reflection.js b/tests/wpt/web-platform-tests/html/dom/reflection.js
index fca9e43f245..a5f7b3fd0a0 100644
--- a/tests/wpt/web-platform-tests/html/dom/reflection.js
+++ b/tests/wpt/web-platform-tests/html/dom/reflection.js
@@ -685,10 +685,14 @@ ReflectionTests.reflects = function(data, idlName, idlObj, domName, domObj) {
domTests.push(data.keywords[i].toUpperCase());
idlTests.push(data.keywords[i].toUpperCase());
}
- if (data.keywords[i] != data.keywords[i].replace(/k/g, "\u212A")) {
+ if (data.keywords[i].indexOf("k") != -1) {
domTests.push(data.keywords[i].replace(/k/g, "\u212A"));
idlTests.push(data.keywords[i].replace(/k/g, "\u212A"));
}
+ if (data.keywords[i].indexOf("s") != -1) {
+ domTests.push(data.keywords[i].replace(/s/g, "\u017F"));
+ idlTests.push(data.keywords[i].replace(/s/g, "\u017F"));
+ }
}
// Per spec, the expected DOM values are the same as the value we set
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepdown.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepdown.html
index 9ce5e5e1f45..a970b531f5d 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepdown.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepdown.html
@@ -1,27 +1,18 @@
<!DOCTYPE HTML>
<html>
- <head>
- <title>Forms</title>
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- </head>
- <body>
- <p>
- <h3>input_stepDown</h3>
- </p>
+<title>Forms</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<h3>input_stepDown</h3>
+<input type='number' id='input_number'>
+<input type="number" id="number_input" min="300" step="1" value="200">
+<input type="date" id="date_input" min="2011-02-10" step="1" value="2010-02-10">
+<input type="datetime-local" id="dtl_input" min="2011-02-10T20:13" step="1" value="2010-02-10T20:13">
+<input type="month" id="month_input" min="2011-02" step="1" value="2010-02">
+<input type="time" id="time_input" min="21:13" step="60" value="20:13">
+<input type="week" id="week_input" min="2011-W02" step="1" value="2010-W02">
- <hr>
-
- <div id="log"></div>
-
- <form method="post"
- enctype="application/x-www-form-urlencoded"
- action=""
- name="input_form">
- <p><input type='number' id='input_number'></p>
- </form>
-
- <script>
+<script>
var input_number = document.getElementById("input_number");
input_number.max = "30";
input_number.step = "3";
@@ -38,7 +29,19 @@
});
}
- </script>
+ function testStepDownOverflow(id, value, type) {
+ test(function() {
+ var input = document.getElementById(id);
+ input.stepDown();
+ assert_equals(input.value, value, "value shouldn't change.");
+ }, "Calling stepDown() on input - " + type + " - where value < min should not modify value.");
+ }
- </body>
+ testStepDownOverflow("number_input", "200", "number");
+ testStepDownOverflow("date_input", "2010-02-10", "date");
+ testStepDownOverflow("dtl_input", "2010-02-10T20:13", "datetime-local");
+ testStepDownOverflow("month_input", "2010-02", "month");
+ testStepDownOverflow("time_input", "20:13", "time");
+ testStepDownOverflow("week_input", "2010-W02", "week");
+</script>
</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepup.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepup.html
index 47457066e3c..8f5888a6e4e 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepup.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/input-stepup.html
@@ -1,27 +1,18 @@
<!DOCTYPE HTML>
<html>
- <head>
- <title>Forms</title>
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- </head>
- <body>
- <p>
- <h3>input_stepUp</h3>
- </p>
-
- <hr>
-
- <div id="log"></div>
-
- <form method="post"
- enctype="application/x-www-form-urlencoded"
- action=""
- name="input_form">
- <p><input type='number' id='input_number'></p>
- </form>
-
- <script>
+<title>Forms</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<h3>input_stepUp</h3>
+<input type='number' id='input_number'> <br/>
+<input type="number" id="number_input" max="100" step="1" value="200">
+<input type="date" id="date_input" max="2009-02-10" step="1" value="2010-02-10">
+<input type="datetime-local" id="dtl_input" max="2009-02-10T20:13" step="1" value="2010-02-10T20:13">
+<input type="month" id="month_input" max="2009-02" step="1" value="2010-02">
+<input type="time" id="time_input" max="19:13" step="60" value="20:13">
+<input type="week" id="week_input" max="2009-W02" step="1" value="2010-W02">
+
+<script>
var input_number = document.getElementById("input_number");
input_number.max = "30";
@@ -39,7 +30,19 @@
});
}
- </script>
+ function testStepUpOverflow(id, value, type) {
+ test(function() {
+ var input = document.getElementById(id);
+ input.stepUp();
+ assert_equals(input.value, value, "value shouldn't change.");
+ }, "Calling stepUp() on input -" + type + "- where value > max should not modify value.");
+ }
- </body>
+ testStepUpOverflow("number_input", "200", "number");
+ testStepUpOverflow("date_input", "2010-02-10", "date");
+ testStepUpOverflow("dtl_input", "2010-02-10T20:13", "datetime-local");
+ testStepUpOverflow("month_input", "2010-02", "month");
+ testStepUpOverflow("time_input", "20:13", "time");
+ testStepUpOverflow("week_input", "2010-W02", "week");
+</script>
</html>
diff --git a/tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-creation-offscreen.html b/tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-creation-offscreen.html
index 41cc6dc02a2..05a920cd3e6 100644
--- a/tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-creation-offscreen.html
+++ b/tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-creation-offscreen.html
@@ -3,15 +3,16 @@
<title>Canvas's ImageBitmapRenderingContext test</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#the-imagebitmap-rendering-context">
+ <link rel="help" href="https://html.spec.whatwg.org/multipage/canvas.html#the-imagebitmap-rendering-context">
<script>
-var width = 10;
-var height = 10;
-
test(function() {
- var canvas = new OffscreenCanvas(60,60);
+ var width = 10;
+ var height = 10;
+ var canvas = new OffscreenCanvas(width, height);
var ctx = canvas.getContext('bitmaprenderer');
assert_true(ctx instanceof ImageBitmapRenderingContext);
-}, "Test that canvas.getContext('bitmaprenderer') returns an instance of ImageBitmapRenderingContext");
+ assert_true("canvas" in ctx);
+ assert_object_equals(canvas, ctx.canvas);
+}, "Test that canvas.getContext('bitmaprenderer') returns an instance of ImageBitmapRenderingContext and ctx.canvas on a ImageBitmapRenderingContext returns the original OffscreenCanvas");
</script>
diff --git a/tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-preserves-canvas.html b/tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-preserves-canvas.html
index eca7afe9ddd..9c3a1fb39f2 100644
--- a/tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-preserves-canvas.html
+++ b/tests/wpt/web-platform-tests/imagebitmap-renderingcontext/context-preserves-canvas.html
@@ -3,7 +3,7 @@
<title>Canvas's ImageBitmapRenderingContext test</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<link rel="help" href="https://html.spec.whatwg.org/multipage/scripting.html#the-imagebitmap-rendering-context">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/canvas.html#the-imagebitmap-rendering-context">
<script>
var width = 10;
var height = 10;
@@ -14,6 +14,8 @@ test(function() {
canvas.height = height;
var ctx = canvas.getContext('bitmaprenderer');
var dstCanvas = ctx.canvas;
+ assert_true("canvas" in ctx);
+ assert_object_equals(canvas, ctx.canvas);
assert_equals(dstCanvas.width, width);
assert_equals(dstCanvas.height, height);
}, "Test that ctx.canvas on a ImageBitmapRenderingContext returns the original canvas");
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
index c7b3482c786..d97432ed39c 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPoints.html.ini
@@ -1,3 +1,5 @@
[multiTouchPoints.html]
+ disabled:
+ if product == "chrome" and os != "mac": https://github.com/web-platform-tests/wpt/issues/20838
expected:
if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini
index 68ccafcec2a..3adcbe68856 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseFirstPoint.html.ini
@@ -1,3 +1,5 @@
[multiTouchPointsReleaseFirstPoint.html]
+ disabled:
+ if product == "chrome": https://github.com/web-platform-tests/wpt/issues/20838
expected:
if product == "firefox" or product == "safari": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini
index 5d714dd7773..d01525b3cfa 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsReleaseSecondPoint.html.ini
@@ -1,3 +1,5 @@
[multiTouchPointsReleaseSecondPoint.html]
+ disabled:
+ if product == "chrome": https://github.com/web-platform-tests/wpt/issues/20838
expected:
if product == "firefox" or product == "safari": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini
index 40626b8193e..a87d9f936fd 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsTwoTouchStarts.html.ini
@@ -1,3 +1,5 @@
[multiTouchPointsTwoTouchStarts.html]
- expected:
- if product == "firefox" or product == "safari": ERROR
+ disabled:
+ if product == "chrome" and os != "mac": https://github.com/web-platform-tests/wpt/issues/20838
+ expected:
+ if product == "firefox" or product == "safari": ERROR
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini
index 4f1939a431a..fe1bf469f4f 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/multiTouchPointsWithPause.html.ini
@@ -1,3 +1,5 @@
[multiTouchPointsWithPause.html]
+ disabled:
+ if product == "chrome": https://github.com/web-platform-tests/wpt/issues/20838
expected:
if product == "firefox" or product == "safari": ERROR
diff --git a/tests/wpt/web-platform-tests/interfaces/encrypted-media.idl b/tests/wpt/web-platform-tests/interfaces/encrypted-media.idl
index 26c03f6f24d..5d6bbe36ce3 100644
--- a/tests/wpt/web-platform-tests/interfaces/encrypted-media.idl
+++ b/tests/wpt/web-platform-tests/interfaces/encrypted-media.idl
@@ -25,8 +25,9 @@ dictionary MediaKeySystemConfiguration {
};
dictionary MediaKeySystemMediaCapability {
- DOMString contentType = "";
- DOMString robustness = "";
+ DOMString contentType = "";
+ DOMString? encryptionScheme = null;
+ DOMString robustness = "";
};
[Exposed=Window, SecureContext] interface MediaKeySystemAccess {
@@ -37,7 +38,8 @@ dictionary MediaKeySystemMediaCapability {
enum MediaKeySessionType {
"temporary",
- "persistent-license"
+ "persistent-license",
+ "persistent-usage-record"
};
[Exposed=Window, SecureContext] interface MediaKeys {
diff --git a/tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl b/tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl
index 71c835677a7..c3ee5237e4c 100644
--- a/tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl
+++ b/tests/wpt/web-platform-tests/interfaces/media-playback-quality.idl
@@ -12,4 +12,7 @@ interface VideoPlaybackQuality {
readonly attribute DOMHighResTimeStamp creationTime;
readonly attribute unsigned long droppedVideoFrames;
readonly attribute unsigned long totalVideoFrames;
+
+ // Deprecated!
+ readonly attribute unsigned long corruptedVideoFrames;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/webrtc.idl b/tests/wpt/web-platform-tests/interfaces/webrtc.idl
index 3b2be61cedc..e30fc38fd00 100644
--- a/tests/wpt/web-platform-tests/interfaces/webrtc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/webrtc.idl
@@ -559,12 +559,12 @@ interface RTCDTMFSender : EventTarget {
[Exposed=Window]
interface RTCDTMFToneChangeEvent : Event {
- constructor(DOMString type, RTCDTMFToneChangeEventInit eventInitDict);
+ constructor(DOMString type, optional RTCDTMFToneChangeEventInit eventInitDict = {});
readonly attribute DOMString tone;
};
dictionary RTCDTMFToneChangeEventInit : EventInit {
- required DOMString tone;
+ DOMString tone = "";
};
partial interface RTCPeerConnection {
diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/idlharness.html b/tests/wpt/web-platform-tests/largest-contentful-paint/idlharness.html
index 273fef80ce2..84d1c7ff9ae 100644
--- a/tests/wpt/web-platform-tests/largest-contentful-paint/idlharness.html
+++ b/tests/wpt/web-platform-tests/largest-contentful-paint/idlharness.html
@@ -10,7 +10,7 @@
idl_test(
['largest-contentful-paint'],
- ['performance-timeline', 'dom'],
+ ['performance-timeline', 'dom', 'hr-time'],
async (idl_array, t) => {
idl_array.add_objects({
LargestContentfulPaint: ['lcp']
diff --git a/tests/wpt/web-platform-tests/layout-instability/body-display-change.html b/tests/wpt/web-platform-tests/layout-instability/body-display-change.html
new file mode 100644
index 00000000000..0576bd68650
--- /dev/null
+++ b/tests/wpt/web-platform-tests/layout-instability/body-display-change.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<title>Layout Instability: shift accompanied by body display change</title>
+<link rel="help" href="https://wicg.github.io/layout-instability/" />
+<style>
+
+body { margin: 0; }
+#cont {
+ background: white;
+ width: 300px;
+ height: 200px;
+}
+#ch {
+ background: blue;
+ position: relative;
+ width: 300px;
+ height: 100px;
+ top: 100px;
+}
+
+</style>
+<style id="s"></style>
+<div id="cont">
+ <div id="ch"></div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/util.js"></script>
+<script>
+
+promise_test(async () => {
+ const watcher = new ScoreWatcher;
+ await waitForAnimationFrames(2);
+
+ document.querySelector("#s").innerHTML = `
+ body {
+ display: flex;
+ flex-direction: column;
+ }
+ #ch { top: 0; }
+ `;
+
+ // An element of size (300 x 100) has shifted by 100px.
+ const expectedScore = computeExpectedScore(300 * (100 + 100), 100);
+
+ // Observer fires after the frame is painted.
+ assert_equals(watcher.score, 0);
+ await watcher.promise;
+ assert_equals(watcher.score, expectedScore);
+}, 'Shift accompanied by body display change.');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html
new file mode 100644
index 00000000000..a42b0f6a8ec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<head>
+ <title>Below-viewport loading=lazy images do not block the window load event
+ when scrolled into viewport</title>
+ <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
+ <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="common.js"></script>
+</head>
+
+<body>
+ <!-- When this image loads, we will scroll the below-viewport loading=lazy
+ images into the viewport. This happens before the window load event is
+ fired -->
+ <img id="scroll_trigger"
+ src="resources/image.png?scroll-trigger&pipe=trickle(d1)"
+ onload="scroll_trigger_img.resolve();" onerror="scroll_trigger_img.reject();">
+ <!-- This image blocks the window load event for 2 seconds -->
+ <img src="resources/image.png?window-load-blocking&pipe=trickle(d2)">
+
+ <div style="height:1000vh"></div>
+ <!-- These images must load because they intersect the viewport, but they must
+ not block the window load event, because they are loading=lazy -->
+ <img id="visible"
+ src="resources/image.png?visible&pipe=trickle(d3)" loading="lazy"
+ onload="visible_img.resolve();" onerror="visible_img.reject();">
+ <img id="visibility_hidden" style="visibility:hidden;"
+ src="resources/image.png?visibility_hidden&pipe=trickle(d3)" loading="lazy"
+ onload="visibility_hidden_img.resolve();" onerror="visibility_hidden_img.reject();">
+</body>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+ const scroll_trigger_img = new ElementLoadPromise("visible");
+ const visible_img = new ElementLoadPromise("visible");
+ const visibility_hidden_img = new ElementLoadPromise("visibility_hidden");
+
+ async_test(t => {
+ let has_window_loaded = false;
+
+ scroll_trigger_img.promise
+ .then(t.step_func(() => {
+ assert_false(has_window_loaded,
+ "The scroll_trigger image should load before the window " +
+ "load event fires");
+ visibility_hidden_img.element().scrollIntoView();
+ }))
+ .catch(t.unreached_func("The scroll_trigger image should load"));
+
+ window.addEventListener("load", t.step_func(() => {
+ has_window_loaded = true;
+ }));
+
+ Promise.all([visible_img.promise, visibility_hidden_img.promise])
+ .then(t.step_func_done(() => {
+ assert_true(has_window_loaded,
+ "The window load event should fire before the " +
+ "below-viewport loading=lazy images load");
+ assert_true(visible_img.element().complete,
+ "The below-viewport loading=lazy visible image is complete");
+ assert_true(visibility_hidden_img.element().complete,
+ "The below-viewport loading=lazy visibility:hidden image is complete");
+ }))
+ .catch(t.unreached_func("The images should load successfully"));
+
+ }, "Below-viewport loading=lazy images do not block the window load event when " +
+ "scrolled into viewport");
+</script>
+
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-load-event.tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-load-event.tentative.html
new file mode 100644
index 00000000000..9e56a315095
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-load-event.tentative.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<head>
+ <title>In-viewport loading=lazy images do not block the window load event</title>
+ <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
+ <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="common.js"></script>
+</head>
+
+<body>
+ <!-- This image blocks the window load event for 1 second -->
+ <img src="resources/image.png?window-load-blocking&pipe=trickle(d1)">
+
+ <!-- These images must load because they intersect the viewport, but they must
+ not block the window load event, because they are loading=lazy -->
+ <img id="visible"
+ src="resources/image.png?visible&pipe=trickle(d3)" loading="lazy"
+ onload="visible_img.resolve();" onerror="visible_img.reject();">
+ <img id="visibility_hidden" style="visibility:hidden;"
+ src="resources/image.png?visibility_hidden&pipe=trickle(d3)" loading="lazy"
+ onload="visibility_hidden_img.resolve();" onerror="visibility_hidden_img.reject();">
+</body>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+ const visible_img = new ElementLoadPromise("visible");
+ const visibility_hidden_img = new ElementLoadPromise("visibility_hidden");
+
+ async_test(t => {
+
+ let has_window_loaded = false;
+ window.addEventListener("load", t.step_func(() => {
+ has_window_loaded = true;
+ }));
+
+ Promise.all([visible_img.promise, visibility_hidden_img.promise])
+ .then(t.step_func_done(() => {
+ assert_true(has_window_loaded,
+ "The window load event should fire before the " +
+ "in-viewport loading=lazy images load");
+ assert_true(visible_img.element().complete,
+ "The in-viewport loading=lazy visible image is complete");
+ assert_true(visibility_hidden_img.element().complete,
+ "The in-viewport loading=lazy visibility:hidden image is " +
+ "complete");
+ }))
+ .catch(t.unreached_func("The images should load successfully"));
+
+ }, "In-viewport loading=lazy images do not block the window load event");
+</script>
+
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol-tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol.tentative.html
index eb69d6810d6..eb69d6810d6 100644
--- a/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol-tentative.html
+++ b/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy-multicol.tentative.html
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy.tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy.tentative.html
index e593a58e563..04625e0d7c4 100644
--- a/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy.tentative.html
+++ b/tests/wpt/web-platform-tests/loading/lazyload/image-loading-lazy.tentative.html
@@ -1,11 +1,11 @@
<!DOCTYPE html>
<head>
- <title>Images with loading='lazy' load when in the viewport</title>
+ <title>Images with loading='lazy' load only when in the viewport</title>
<link rel="author" title="Scott Little" href="mailto:sclittle@chromium.org">
+ <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
<link rel="help" href="https://github.com/scott-little/lazyload">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <script src="common.js"></script>
</head>
<!--
@@ -13,43 +13,40 @@ Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
-->
<script>
- const t = async_test("Test that images with loading='lazy' load once they enter the viewport.");
+ const t = async_test("Images with loading='lazy' load only when in the viewport");
let has_in_viewport_loaded = false;
- let has_window_loaded = false;
+ let has_window_load_fired = false;
- const in_viewport_img_onload = t.step_func(function() {
- assert_false(has_in_viewport_loaded, "The in_viewport element should load only once.");
+ const in_viewport_img_onload = t.step_func(() => {
+ assert_false(has_in_viewport_loaded,
+ "The in_viewport element should load only once.");
has_in_viewport_loaded = true;
- });
-
- window.addEventListener("load", t.step_func(function() {
- assert_true(has_in_viewport_loaded, "The in_viewport element should have loaded before window.load().");
assert_true(document.getElementById("in_viewport").complete);
- assert_false(has_window_loaded, "The window.load() event should only fire once.");
- has_window_loaded = true;
document.getElementById("below_viewport").scrollIntoView();
+ });
+
+ window.addEventListener("load", t.step_func(() => {
+ has_window_load_fired = true;
}));
- const below_viewport_img_onload = t.step_func_done(function() {
- assert_true(is_image_fully_loaded(
- document.getElementById("below_viewport"),
- document.getElementById("in_viewport")));
- assert_true(has_window_loaded, "The window.load() event should have fired before below_viewport loaded.");
+ const below_viewport_img_onload = t.step_func_done(() => {
+ assert_true(has_in_viewport_loaded,
+ "The below-viewport image should not load until it has been " +
+ "scrolled into viewport, after the in-viewport image loads");
+ assert_true(has_window_load_fired,
+ "Below-viewport loading=lazy images should not block the " +
+ "window load event from firing");
});
</script>
<body>
- <img id="in_viewport" src="resources/image.png?first" loading="lazy" onload="in_viewport_img_onload();">
- <div style="height:10000px;"></div>
- <img id="below_viewport" src="resources/image.png?second" loading="lazy" onload="below_viewport_img_onload();">
-
- <!--
- This async script loads very slowly in order to ensure that, if the
- below_viewport element has started loading, it has a chance to finish
- loading before window.load() happens, so that the test will dependably fail
- in that case instead of potentially passing depending on how long different
- resource fetches take.
- -->
- <script async src="/common/slow.py"></script>
+ <!-- |in_viewport| takes 2 seconds to load, so that in browsers that don't
+ support lazy loading, |below_viewport| finishes before |in_viewport|, and
+ the test will dependably fail without relying on a timeout. -->
+ <img id="in_viewport" loading="lazy" src="resources/image.png?first&pipe=trickle(d2)"
+ onload="in_viewport_img_onload();">
+ <div style="height:1000vh;"></div>
+ <img id="below_viewport" loading="lazy" src="resources/image.png?second"
+ onload="below_viewport_img_onload();">
</body>
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/invisible-lazy-image.tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/invisible-lazy-image.tentative.html
deleted file mode 100644
index 94f0dbfd6da..00000000000
--- a/tests/wpt/web-platform-tests/loading/lazyload/invisible-lazy-image.tentative.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<head>
- <title>Test behavior of in viewport invisible lazy images</title>
- <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- <script src="common.js"></script>
-</head>
-
-<body>
- <!-- These two images should load, the latter not blocking the window load event -->
- <img id="expected" src='resources/image.png?expected&pipe=trickle(d1)'>
- <img id="visibility_hidden" style="visibility:hidden;"
- src='resources/image.png?visibility_hidden&pipe=trickle(d2)' loading='lazy'
- onload="visibility_hidden_img.resolve();" onerror="visibility_hidden_img.reject();">
-
- <!-- These images should not load at all -->
- <img id="display_none" style="display:none;" src='resources/image.png?display_none'
- loading='lazy'
- onload="display_none_img.resolve();" onerror="display_none_img.reject();">
- <img id="attribute_hidden" hidden src='resources/image.png?attribute_hidden' loading='lazy'
- onload="attribute_hidden_img.resolve();" onerror="attribute_hidden_img.reject();">
- <img id="js_display_none" src='resources/image.png?js_display_none' loading='lazy'
- onload="js_display_none_img.resolve();" onerror="js_display_none_img.reject();">
- <script>
- document.getElementById("js_display_none").style = 'display:none;';
- </script>
-</body>
-
-<!--
-Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
--->
-
-<script>
- const expected = document.getElementById("expected");
- const visibility_hidden_img = new ElementLoadPromise("visibility_hidden");
- const display_none_img = new ElementLoadPromise("display_none");
- const attribute_hidden_img = new ElementLoadPromise("attribute_hidden");
- const js_display_none_img = new ElementLoadPromise("js_display_none");
-
- let has_window_loaded = false;
-
- async_test(t => {
- window.addEventListener("load", t.step_func(() => {
- has_window_loaded = true;
- }));
-
- const unreached_not_rendered_img_func =
- t.unreached_func("The not-rendered in-viewport loading=lazy images " +
- "should not have attempted to load.");
-
- display_none_img.promise
- .then(unreached_not_rendered_img_func)
- .catch(unreached_not_rendered_img_func);
-
- attribute_hidden_img.promise
- .then(unreached_not_rendered_img_func)
- .catch(unreached_not_rendered_img_func);
-
- js_display_none_img.promise
- .then(unreached_not_rendered_img_func)
- .catch(unreached_not_rendered_img_func);
-
- visibility_hidden_img.promise.then(
- t.step_func_done(() => {
- assert_true(is_image_fully_loaded(visibility_hidden_img.element(), expected),
- "The loading=lazy visibility:hidden image is equivalent " +
- "to the expected image.");
- assert_true(has_window_loaded,
- "The loading=lazy visibility:hidden image does not block " +
- "the window load event, and finishes loading after the " +
- "window load event fires.");
- })
- ).catch(t.unreached_func("The loading=lazy visibility:hidden image " +
- "should load successfully."));
- }, "Test behavior of in viewport invisible lazy images");
-</script>
-
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html
new file mode 100644
index 00000000000..0c40d7dbcd8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<head>
+ <title>Below-viewport loading=lazy not-rendered images should never load,
+ even when scrolled into view</title>
+ <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
+ <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="common.js"></script>
+</head>
+
+<body>
+ <!-- These images must not attempt to load when scrolled into the
+ viewport -->
+ <img id="display_none" style="display:none;" src="resources/image.png?2" loading="lazy"
+ onload="display_none_img.resolve();" onerror="display_none_img.reject();">
+ <img id="attribute_hidden" hidden src="resources/image.png?3" loading="lazy"
+ onload="attribute_hidden_img.resolve();" onerror="attribute_hidden_img.reject();">
+ <img id="js_display_none" src="resources/image.png?4" loading="lazy"
+ onload="js_display_none_img.resolve();" onerror="js_display_none_img.reject();">
+ <script>
+ document.getElementById("js_display_none").style = 'display:none;';
+ </script>
+
+ <!-- Later in the test we'll scroll to this div, instead of the above images,
+ since due to them not being rendered, they cannot be scrolled to -->
+ <div id="rendered_div"></div>
+</body>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+ const display_none_img = new ElementLoadPromise("display_none");
+ const attribute_hidden_img = new ElementLoadPromise("attribute_hidden");
+ const js_display_none_img = new ElementLoadPromise("js_display_none");
+ const rendered_div_element = document.querySelector('#rendered_div');
+
+ async_test(t => {
+ window.addEventListener("load", t.step_func(() => {
+ rendered_div.scrollIntoView();
+ }));
+
+ const unreached_not_rendered_img_func =
+ t.unreached_func("The not-rendered below-viewport loading=lazy images " +
+ "should not attempt to load.");
+
+ display_none_img.promise
+ .then(unreached_not_rendered_img_func)
+ .catch(unreached_not_rendered_img_func);
+
+ attribute_hidden_img.promise
+ .then(unreached_not_rendered_img_func)
+ .catch(unreached_not_rendered_img_func);
+
+ js_display_none_img.promise
+ .then(unreached_not_rendered_img_func)
+ .catch(unreached_not_rendered_img_func);
+
+ // If none of the above images load after being scrolled to within the below
+ // timeout, the test passes.
+ t.step_timeout(t.done, 2000);
+ }, "Below-viewport loading=lazy not-rendered images should never load, " +
+ "even when scrolled into view");
+</script>
+
diff --git a/tests/wpt/web-platform-tests/loading/lazyload/not-rendered-image-loading-lazy.tentative.html b/tests/wpt/web-platform-tests/loading/lazyload/not-rendered-image-loading-lazy.tentative.html
new file mode 100644
index 00000000000..fafd668e32a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/loading/lazyload/not-rendered-image-loading-lazy.tentative.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<head>
+ <title>In-viewport loading=lazy not-rendered images should never load</title>
+ <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
+ <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="common.js"></script>
+</head>
+
+<body>
+ <!-- These images must not attempt to load -->
+ <img id="display_none" style="display:none;" src="resources/image.png?2" loading="lazy"
+ onload="display_none_img.resolve();" onerror="display_none_img.reject();">
+ <img id="attribute_hidden" hidden src="resources/image.png?3" loading="lazy"
+ onload="attribute_hidden_img.resolve();" onerror="attribute_hidden_img.reject();">
+ <img id="js_display_none" src="resources/image.png?4" loading="lazy"
+ onload="js_display_none_img.resolve();" onerror="js_display_none_img.reject();">
+ <script>
+ document.getElementById("js_display_none").style = 'display:none;';
+ </script>
+</body>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+ const display_none_img = new ElementLoadPromise("display_none");
+ const attribute_hidden_img = new ElementLoadPromise("attribute_hidden");
+ const js_display_none_img = new ElementLoadPromise("js_display_none");
+
+ async_test(t => {
+ const unreached_not_rendered_img_func =
+ t.unreached_func("The not-rendered in-viewport loading=lazy images " +
+ "should not attempt to load.");
+
+ display_none_img.promise
+ .then(unreached_not_rendered_img_func)
+ .catch(unreached_not_rendered_img_func);
+
+ attribute_hidden_img.promise
+ .then(unreached_not_rendered_img_func)
+ .catch(unreached_not_rendered_img_func);
+
+ js_display_none_img.promise
+ .then(unreached_not_rendered_img_func)
+ .catch(unreached_not_rendered_img_func);
+
+ t.step_timeout(t.done, 2000);
+ }, "In-viewport loading=lazy not-rendered images should never load");
+</script>
+
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords-ref.html
index d24fbf041af..ebb12a6c6c6 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords-ref.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords-ref.html
@@ -5,7 +5,7 @@
<title>mathsize and css keywords</title>
</head>
<body>
- <p>Test passes if you see ten "A" of equal size:</p>
+ <p>Test passes if you see 14 "A" of equal size:</p>
<math>
<mtext>A</mtext>
<mtext>A</mtext>
@@ -17,6 +17,10 @@
<mtext>A</mtext>
<mtext>A</mtext>
<mtext>A</mtext>
+ <mtext>A</mtext>
+ <mtext>A</mtext>
+ <mtext>A</mtext>
+ <mtext>A</mtext>
</math>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords.html
index 6390ebfabaf..84c31d743c9 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/mathsize-attribute-css-keywords.html
@@ -10,7 +10,7 @@
<script src="/mathml/support/feature-detection.js"></script>
</head>
<body>
- <p>Test passes if you see ten "A" of equal size:</p>
+ <p>Test passes if you see 14 "A" of equal size:</p>
<math>
<mtext>A</mtext>
<mtext mathsize="xx-small">A</mtext>
@@ -22,6 +22,10 @@
<mtext mathsize="xx-large">A</mtext>
<mtext mathsize="larger">A</mtext>
<mtext mathsize="smaller">A</mtext>
+ <mtext mathsize="xx-ſmall">A</mtext>
+ <mtext mathsize="x-ſmall">A</mtext>
+ <mtext mathsize="ſmall">A</mtext>
+ <mtext mathsize="ſmaller">A</mtext>
</math>
<script src="/mathml/support/feature-detection.js"></script>
<script>MathMLFeatureDetection.ensure_for_match_reftest("has_mathsize");</script>
diff --git a/tests/wpt/web-platform-tests/portals/portals-focus.sub.html b/tests/wpt/web-platform-tests/portals/portals-focus.sub.html
new file mode 100644
index 00000000000..a05786186e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/portals/portals-focus.sub.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/open-blank-host.js"></script>
+<body>
+<script>
+ async function createPortal(doc, url) {
+ let portal = doc.createElement("portal");
+ portal.src = url;
+ doc.body.appendChild(portal);
+ await new Promise(r => portal.onload = r);
+ return portal;
+ }
+
+ promise_test(async t => {
+ let portal = await createPortal(document, new URL("resources/focus-page-with-button.html", location.href));
+ portal.onmessage = t.step_func(e => {
+ assert_unreached("button inside portal should not be focused");
+ });
+ portal.postMessage("focus", "*");
+ return new Promise(r => t.step_timeout(r, 500));
+ }, "test that an element inside a portal cannot steal focus");
+
+ promise_test(async t => {
+ let portal = await createPortal(document, new URL("resources/focus-page-with-x-origin-iframe.sub.html", location.href));
+ portal.onmessage = t.step_func(e => {
+ assert_unreached("button inside portal should not be focused");
+ });
+ portal.postMessage("focus", "*");
+ return new Promise(r => t.step_timeout(r, 500));
+ }, "test that an element inside a portal's x-origin subframe cannot steal focus");
+
+ promise_test(async t => {
+ let win = await openBlankPortalHost();
+ let doc = win.document;
+
+ let portal = await createPortal(doc, new URL("resources/simple-portal-adopts-predecessor.html", location.href));
+ let button = doc.createElement("button");
+ doc.body.appendChild(button);
+
+ await portal.activate();
+ doc.body.removeChild(portal);
+
+ button.onfocus = t.step_func(() => {
+ assert_unreached("button inside adopted portal should not be focused");
+ });
+ button.focus();
+ return new Promise(r => t.step_timeout(r, 500));
+ }, "test that an element inside an adopted portal cannot steal focus");
+
+ promise_test(async t => {
+ let win = await openBlankPortalHost();
+ let doc = win.document;
+
+ let portal = await createPortal(doc, new URL("resources/simple-portal-adopts-predecessor.html", location.href));
+ let iframe = doc.createElement("iframe");
+ iframe.src = new URL("resources/focus-page-with-button.html",
+ "http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/");
+ doc.body.appendChild(iframe);
+ await new Promise(r => iframe.onload = r);
+
+ await portal.activate();
+ doc.body.removeChild(portal);
+
+ iframe.contentWindow.postMessage("focus", "*");
+ window.onmessage = t.step_func(() => {
+ assert_unreached("button inside x-origin iframe inside a portal should not be focused");
+ });
+ await new Promise(r => t.step_timeout(r, 500));
+ }, "test that a x-origin iframe inside an adopted portal cannot steal focus");
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/portals/resources/focus-page-with-button.html b/tests/wpt/web-platform-tests/portals/resources/focus-page-with-button.html
new file mode 100644
index 00000000000..2b6f0ff7560
--- /dev/null
+++ b/tests/wpt/web-platform-tests/portals/resources/focus-page-with-button.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+ <script>
+ function handleMessage(e) {
+ if (e.data == "focus") {
+ let button = document.querySelector("button");
+ button.onfocus = () => e.source.postMessage({focused: true}, "*");
+ button.focus();
+ }
+ }
+
+ if (window.portalHost)
+ window.portalHost.onmessage = handleMessage;
+
+ window.onmessage = handleMessage;
+
+ window.onportalactivate = e => {
+ let portal = e.adoptPredecessor();
+ document.body.appendChild(portal);
+ portal.onmessage = handleMessage;
+ }
+ </script>
+ <button>A</button>
+</body>
diff --git a/tests/wpt/web-platform-tests/portals/resources/focus-page-with-x-origin-iframe.sub.html b/tests/wpt/web-platform-tests/portals/resources/focus-page-with-x-origin-iframe.sub.html
new file mode 100644
index 00000000000..7c9df9dba64
--- /dev/null
+++ b/tests/wpt/web-platform-tests/portals/resources/focus-page-with-x-origin-iframe.sub.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<body>
+ <script>
+ function handleMessage(e) {
+ if (e.data == "focus") {
+ let iframe = document.querySelector("iframe");
+ iframe.contentWindow.postMessage("focus", "*");
+ }
+ }
+
+ if (window.portalHost)
+ window.portalHost.onmessage = handleMessage;
+
+ window.onportalactivate = e => {
+ var portal = e.adoptPredecessor();
+ document.body.appendChild(portal);
+ portal.onmessage = handleMessage;
+ }
+
+ window.onmessage = e => {
+ if (window.portalHost)
+ window.portalHost.postMessage(e.data, "*");
+ else
+ document.querySelector("portal").postMessage(e.data, "*");
+ }
+ </script>
+ <iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/resources/focus-page-with-button.html"></iframe>
+</body>
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 @@
<!DOCTYPE html>
<script>
-function service_worker_unregister(documentUrl) {
- return navigator.serviceWorker.getRegistration(documentUrl)
- .then(function(registration) {
- if (registration)
- return registration.unregister();
- })
+async function service_worker_unregister(scope) {
+ var absoluteScope = (new URL(scope, window.location).href);
+ const registration = await navigator.serviceWorker.getRegistration(scope);
+ if (registration && registration.scope === absoluteScope)
+ return registration.unregister();
}
-function service_worker_unregister_and_register(url, scope, options = {}) {
+async function service_worker_unregister_and_register(url, scope, options = {}) {
if (!scope || scope.length == 0)
return Promise.reject(new Error('tests must define a scope'));
options.scope = scope;
- return service_worker_unregister(scope)
- .then(function() {
- return navigator.serviceWorker.register(url, options);
- })
+ await service_worker_unregister(scope);
+ return navigator.serviceWorker.register(url, options);
}
-function wait_for_activation_event(worker) {
+function wait_for_state_activated(worker) {
+ if (worker.state === 'activated')
+ return Promise.resolve();
+
+ if (worker.state === 'redundant') {
+ return Promise.reject(new Error('worker is redundant'));
+ }
+
return new Promise(function(resolve) {
- worker.addEventListener('statechange', function(event) {
- if (worker.state == 'activated')
- resolve(true);
- else if (worker.state == 'redundant')
- resolve(false);
+ worker.addEventListener('statechange', function() {
+ if (worker.state === 'activated')
+ resolve();
});
});
}
@@ -33,15 +35,20 @@ function wait_for_activation_event(worker) {
(async () => {
var script = '/resource-timing/resources/sw.js';
var scope = '/resource-timing/resources/';
- await service_worker_unregister_and_register(script, scope)
- .then(function(registration) {
- return wait_for_activation_event(registration.installing);
- })
- .then(function(did_install) {
- if (window.opener) {
- window.opener.postMessage("installed", "*");
- }
- })
+ const registration = await service_worker_unregister_and_register(script, scope);
+ await wait_for_state_activated(registration.installing);
+ const opener = window.opener;
+ if (!opener)
+ return;
+
+ opener.postMessage("installed", "*");
+ async function unregister(e) {
+ if (e.data === "unregister") {
+ await registration.unregister();
+ opener.postMessage("unregistered", "*");
+ }
+ }
+ window.addEventListener("message", e => unregister(e));
})();
</script>
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 @@
<link rel="help" href="https://wicg.github.io/scroll-animations/#current-time-algorithm">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-
+<script src="/web-animations/testcommon.js"></script>
<script src="./resources/scrolltimeline-utils.js"></script>
<body></body>
@@ -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 @@
<link rel="help" href="https://wicg.github.io/scroll-animations/#current-time-algorithm">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-
+<script src="/web-animations/testcommon.js"></script>
<script src="./resources/scrolltimeline-utils.js"></script>
<body></body>
@@ -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 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Setting the current time of an animation</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#setting-the-current-time-of-an-animation">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/web-animations/testcommon.js"></script>
+<style>
+.scroller {
+ overflow: auto;
+ height: 200px;
+ width: 100px;
+}
+.contents {
+ height: 1000px;
+ width: 100%;
+}
+</style>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+ function createScroller(test) {
+ var scroller = createDiv(test);
+ scroller.innerHTML = "<div class='contents'></div>";
+ scroller.classList.add('scroller');
+ return scroller;
+ }
+
+ function createScrollTimeline(test) {
+ return new ScrollTimeline({
+ scrollSource: createScroller(test),
+ timeRange: 1000
+ });
+ }
+
+ function createScrollLinkedAnimation(test, timeline) {
+ if(timeline === undefined)
+ timeline = createScrollTimeline(test);
+ const DURATION = 1000; // ms
+ const KEYFRAMES = { opacity: [1, 0] };
+ return new Animation(
+ new KeyframeEffect(createDiv(test), KEYFRAMES, DURATION), timeline);
+ }
+
+ promise_test(async t => {
+ const animation = createScrollLinkedAnimation(t);
+ const scroller = animation.timeline.scrollSource;
+ const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+ scroller.scrollTop = 0.25 * maxScroll;
+ animation.play();
+
+ await animation.ready;
+
+ assert_throws(new TypeError(), () => {
+ animation.currentTime = null;
+ });
+ }, 'Setting animation current time to null throws TypeError.');
+
+ test(t => {
+ const animation = createScrollLinkedAnimation(t);
+ const scroller = animation.timeline.scrollSource;
+ const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+ scroller.scrollTop = 0.25 * maxScroll;
+
+ animation.currentTime = 333;
+
+ assert_times_equal(
+ animation.currentTime,
+ 333,
+ "Animation current time should be equal to the set value."
+ );
+ }, 'Set animation current time to a valid value without playing.');
+
+ promise_test(async t => {
+ const animation = createScrollLinkedAnimation(t);
+ const scroller = animation.timeline.scrollSource;
+ const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+ scroller.scrollTop = 0.25 * maxScroll;
+ animation.play();
+
+ await animation.ready;
+ animation.currentTime = 333;
+
+ assert_times_equal(
+ animation.currentTime,
+ 333,
+ "Animation current time should be equal to the set value."
+ );
+ }, 'Set animation current time to a valid value while playing.');
+
+ promise_test(async t => {
+ const animation = createScrollLinkedAnimation(t);
+ const scroller = animation.timeline.scrollSource;
+ const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+ const range = animation.timeline.timeRange;
+ scroller.scrollTop = 0.25 * maxScroll;
+ animation.play();
+
+ await animation.ready;
+ const largerThanDuration = animation.effect.getTiming().duration * 2;
+ animation.currentTime = largerThanDuration;
+
+ assert_greater_than_equal(largerThanDuration, range, "Make sure that the" +
+ " test value is after the end of the effect and the timeline");
+ assert_equals(animation.playState, "finished");
+ assert_times_equal(
+ animation.currentTime,
+ largerThanDuration,
+ "Animation current time should be equal to the set value."
+ );
+ }, 'Set animation current time to a value beyond effect end.');
+
+ promise_test(async t => {
+ const animation = createScrollLinkedAnimation(t);
+ const scroller = animation.timeline.scrollSource;
+ const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+ const range = animation.timeline.timeRange;
+ scroller.scrollTop = 0.25 * maxScroll;
+ animation.play();
+
+ await animation.ready;
+ animation.currentTime = -100;
+
+ assert_equals(animation.playState, "running");
+ assert_times_equal(
+ animation.currentTime,
+ -100,
+ "Animation current time should be equal to the set value."
+ );
+ }, 'Set animation current time to a negative value.');
+
+ test(t => {
+ const animation = createScrollLinkedAnimation(t);
+ const scroller = animation.timeline.scrollSource;
+ const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+ scroller.scrollTop = 0.25 * maxScroll;
+ animation.play();
+
+ animation.currentTime = 300;
+
+ assert_equals(animation.playState, "running");
+ assert_true(animation.pending);
+ assert_time_equals_literal(animation.currentTime, 300);
+ }, "Setting current time while play pending overrides the current time");
+
+ promise_test(async t => {
+ const animation = createScrollLinkedAnimation(t);
+ const scroller = animation.timeline.scrollSource;
+ const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+ scroller.scrollTop = 0.25 * maxScroll;
+ animation.play();
+
+ await animation.ready;
+ animation.currentTime = 333;
+
+ assert_times_equal(
+ animation.currentTime,
+ 333,
+ "Animation current time should be equal to the set value."
+ );
+
+ // Cancel the animation and play it again, check that current time has reset
+ // to scroll offset based current time.
+ animation.cancel();
+ animation.play();
+ await animation.ready;
+
+ assert_times_equal(
+ animation.currentTime,
+ animation.timeline.currentTime,
+ "Animation current time should return to a value matching its" +
+ " timeline current time after animation is cancelled and played again."
+ );
+ }, 'Setting animation.currentTime then restarting the animation should' +
+ ' reset the current time.');
+
+ promise_test(async t => {
+ const animation = createScrollLinkedAnimation(t);
+ const scroller = animation.timeline.scrollSource;
+ const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+ scroller.scrollTop = 0.25 * maxScroll;
+ animation.play();
+
+ await animation.ready;
+ const originalCurrentTime = animation.currentTime;
+
+ // Set the current time to something other than where the scroll offset.
+ animation.currentTime = 500;
+
+ // Setting current time is internally setting the start time to
+ // scrollTimeline.currentTime - newAnimationCurrentTime.
+ // Which results in current time of (timeline.currentTime - start_time).
+ // This behavior puts the animation in a strange "out of sync" state between
+ // the scroller and the animation effect, this is currently expected
+ // behavior.
+
+ const expectedStartTime = originalCurrentTime - animation.currentTime;
+ assert_times_equal(
+ animation.startTime,
+ expectedStartTime,
+ "Animation current time should be updated when setting the current time" +
+ " to a time within the range of the animation.");
+
+ scroller.scrollTop = 0.7 * maxScroll;
+
+ assert_times_equal(
+ animation.startTime,
+ expectedStartTime,
+ "Animation start time should remain unchanged when the scroller changes" +
+ " position."
+ );
+ assert_times_equal(
+ animation.currentTime,
+ animation.timeline.currentTime - animation.startTime,
+ "Animation current time should return to a value equal to" +
+ " (timeline.currentTime - animation.startTime) after timeline scroll" +
+ " source has been scrolled."
+ );
+ }, 'Set Animation current time then scroll.');
+</script>
+</body>
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 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Vertical fidelity of &#x3c;image&#x3e; element with fractional width</title>
+ <h:link rel="help" href="https://svgwg.org/svg2-draft/embedded.html#ImageElement"/>
+ <h:link rel="match" href="reference/green-rect-100x100.svg"/>
+ <rect x="95" width="5" height="100" fill="green"/>
+ <rect width="95" height="100" fill="red"/>
+ <g clip-path="url(#c)">
+ <clipPath id="c">
+ <rect width="95" height="100"/>
+ </clipPath>
+ <image href="data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='xMinYMin'%3e
+ %3crect width='100' height='100' fill='green'/%3e%3c/svg%3e"
+ width="101.2" height="100"/>
+ </g>
+</svg>
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 <https://pypi.python.org/pypi/six/>`_. Its bug
+Six can be downloaded on `PyPI <https://pypi.org/project/six/>`_. Its bug
tracker and code hosting is on `GitHub <https://github.com/benjaminp/six>`_.
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
-[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
+[metadata]
+license_file = LICENSE
-[egg_info]
-tag_build =
-tag_date = 0
+[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
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
index ffe2fce4989..ffe2fce4989 100644
--- 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
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 <benjamin@python.org>"
-__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.<locals>.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();
+ 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);
+ });
+ promises.push(promise1);
+ await reader1.scan();
- mockNFC.setReadingMessage(createMessage([createTextRecord(test_text_data)]));
- await new Promise((resolve, reject) => {
- t.step_timeout(resolve, 100);
+ 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);
});
-}, "Test that NDEFReader.onreading should not be fired if the NFC tag does not \
+ 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
@@ -70,6 +70,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');
assert_equals(record.mediaType, null, 'mediaType');
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');
+
</script>
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);