aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2023-02-02 01:51:40 +0000
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2023-02-02 01:55:40 +0000
commitec63c4303029541d3bc776798275b33b9ee4c97e (patch)
treed534c5fad0f3ef20a2e9ee91459f1dbd1398d0f3
parent69b272b4e130e9c488d2e4619027a5e2d4a4bd5d (diff)
downloadservo-ec63c4303029541d3bc776798275b33b9ee4c97e.tar.gz
servo-ec63c4303029541d3bc776798275b33b9ee4c97e.zip
Update web-platform-tests to revision b'd1192ca239e944dc6cdbcd079e1c16227e08e30c'
-rw-r--r--tests/wpt/metadata/MANIFEST.json646
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini3
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini3
-rw-r--r--tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini5
-rw-r--r--tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini3
-rw-r--r--tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-animations/responsive/line-height.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini18
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini100
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini30
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini150
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini159
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini87
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini6
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/content-length/parsing.window.js.ini2
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini3
-rw-r--r--tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini1
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/the-input-element/pattern_attribute.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html.ini15
-rw-r--r--tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini24
-rw-r--r--tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini60
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini2
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini5
-rw-r--r--tests/wpt/metadata/performance-timeline/tentative/include-frames-originA-B.html.ini3
-rw-r--r--tests/wpt/metadata/resource-timing/content-type-parsing.html.ini16
-rw-r--r--tests/wpt/metadata/resource-timing/response-status-code.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini1
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini2
-rw-r--r--tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini2
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini4
-rw-r--r--tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini3
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-connection.window.js9
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-transaction.window.js2
-rw-r--r--tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/responsive/line-height.html45
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-002.tentative.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-003.tentative.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-nesting/cssom.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/crashtests/locked-display-transform-crash.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html2
-rw-r--r--tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js38
-rw-r--r--tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html55
-rw-r--r--tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html9
-rw-r--r--tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html23
-rw-r--r--tests/wpt/web-platform-tests/editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html88
-rw-r--r--tests/wpt/web-platform-tests/editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html87
-rw-r--r--tests/wpt/web-platform-tests/editing/run/backcolor.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/bold.html9
-rw-r--r--tests/wpt/web-platform-tests/editing/run/createlink.html9
-rw-r--r--tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html9
-rw-r--r--tests/wpt/web-platform-tests/editing/run/delete.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/fontname.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/fontsize.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/forecolor.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/formatblock.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/forwarddelete.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/hilitecolor.html9
-rw-r--r--tests/wpt/web-platform-tests/editing/run/indent.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/inserthtml.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/insertimage.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/insertlinebreak.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/insertorderedlist.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/insertparagraph.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/inserttext.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/italic.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/justifycenter.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/justifyfull.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/justifyleft.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/justifyright.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/misc.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/multitest.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/outdent.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/removeformat.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/strikethrough.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/subscript.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/superscript.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/underline.html10
-rw-r--r--tests/wpt/web-platform-tests/editing/run/unlink.html9
-rw-r--r--tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html6
-rw-r--r--tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js4
-rw-r--r--tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js4
-rw-r--r--tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js4
-rw-r--r--tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js5
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js67
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html2
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py31
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py56
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml10
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml10
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml8
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml4
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml2
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html74
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html58
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html9
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html12
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html8
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js49
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/selectmenu_button_icon.svg3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html58
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html112
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html9
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html5
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html12
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html120
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html164
-rw-r--r--tests/wpt/web-platform-tests/interfaces/popover.tentative.idl10
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html1
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html1
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html7
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-not-loaded.html (renamed from tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-not-loaded.html)15
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url-cross-document.html25
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url.html26
-rw-r--r--tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html19
-rw-r--r--tests/wpt/web-platform-tests/notifications/noop-sw.js0
-rw-r--r--tests/wpt/web-platform-tests/notifications/shownotification.https.window.js72
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js2
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js4
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js2
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js2
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js2
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js2
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html2
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html5
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html33
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html33
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html7
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html7
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html34
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html2
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html7
-rw-r--r--tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html8
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js4
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js24
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-range-animation.html2
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html34
-rw-r--r--tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js25
-rw-r--r--tests/wpt/web-platform-tests/svg/struct/reftests/use-a.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/struct/reftests/use-no-tspan.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/struct/reftests/use-switch.svg12
-rw-r--r--tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js4
-rw-r--r--tests/wpt/web-platform-tests/webcodecs/utils.js28
-rw-r--r--tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js56
-rw-r--r--tests/wpt/web-platform-tests/webnn/conv_transpose2d.https.any.js25
-rw-r--r--tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json159
-rw-r--r--tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json142
-rw-r--r--tests/wpt/web-platform-tests/webnn/resources/test_data/conv_transpose2d.json2010
-rw-r--r--tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json8
-rw-r--r--tests/wpt/web-platform-tests/webnn/resources/utils.js31
-rw-r--r--tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html12
-rw-r--r--tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html2
-rw-r--r--tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html41
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html87
233 files changed, 5070 insertions, 1257 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index b0304a0937e..670ce9fadd7 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -3535,6 +3535,13 @@
{}
]
],
+ "locked-display-transform-crash.html": [
+ "0d8b69b079cde8098d17abecdb38e7c32d7ffcb7",
+ [
+ null,
+ {}
+ ]
+ ],
"preserve3d-containing-block-inline-001.html": [
"3be0af34cfa60f9d90a019a4ef7bb4a1bb536d2e",
[
@@ -18780,7 +18787,7 @@
]
],
"local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html": [
- "4641b13a45bd42d64e96a27e92cc7bdc57325965",
+ "0a67f5b26d2b4280f6cf8253d8367fa7e0defef8",
[
null,
{}
@@ -127136,7 +127143,7 @@
},
"css-anchor-position": {
"anchor-position-top-layer-001.html": [
- "c96f6eef558f3c2aa1e7fb4dd084575ac5a036b4",
+ "ffa1c1cbd1eabdf3267bef46a4c42ac63244566c",
[
null,
[
@@ -127149,7 +127156,7 @@
]
],
"anchor-position-top-layer-002.html": [
- "e626e6b93566c730ccf620b4e7724ee6f06b1dd5",
+ "849558f0f8c9e693164d73845c679720825fb8ed",
[
null,
[
@@ -127162,7 +127169,7 @@
]
],
"anchor-position-top-layer-003.html": [
- "39f3c362c7ba11616c3afca91407c66b6fba4b09",
+ "5012b52f5f94537458fdd8afd3944b9fae5eaa8e",
[
null,
[
@@ -127175,7 +127182,7 @@
]
],
"anchor-position-top-layer-004.html": [
- "8e189e0e7b709853f3545db35b750ec286de61e3",
+ "84e9296a1094bd7158da910f3045254d1589c697",
[
null,
[
@@ -127188,7 +127195,7 @@
]
],
"anchor-position-top-layer-005.html": [
- "d9e4fa86e10dcc9812366a949c14738962b6c9dc",
+ "6adf8961a4bdcfc8a593831260fb99fe96cc776f",
[
null,
[
@@ -127201,7 +127208,7 @@
]
],
"anchor-position-top-layer-006.html": [
- "5f5cd67a1d709b7e958cb5d199f42e2011cabe87",
+ "d2a39eae6d66ac8c60d1cd1ff58da9917f94a5ee",
[
null,
[
@@ -144448,6 +144455,45 @@
{}
]
],
+ "repeated-section-in-clipped-overflow-001.tentative.html": [
+ "96cd60286d9aeb37cc607671887b23d9c9815a81",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "repeated-section-in-clipped-overflow-002.tentative.html": [
+ "b55d8a38906e6e431e57fff6aa2abdfd06d563f0",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "repeated-section-in-clipped-overflow-003.tentative.html": [
+ "794a596fdc638e3b9f36e1fa3b5704fdb70ba6fa",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"tall-monolithic-after-repeated-header.tentative.html": [
"8ded5f5f17e38c1e2b56b550fea1d871519a5481",
[
@@ -156156,7 +156202,7 @@
]
],
"content-visibility-with-top-layer-003.html": [
- "b8685954ff83565f06ad4a359c3196b6e126abe1",
+ "7fb1f20b7ecd38b3fbc5df22dacc55a73227a49e",
[
null,
[
@@ -275649,7 +275695,7 @@
]
],
"dialog-in-top-layer-during-transition-new.html": [
- "e84167a24892cbaa33b7190843071b7be9563e3b",
+ "0473209fa9df7867b55b986beeab466b30cd1526",
[
null,
[
@@ -275662,7 +275708,7 @@
]
],
"dialog-in-top-layer-during-transition-old.html": [
- "672295cd3bd7251ffbc7bbf13cf7ea6d4e423155",
+ "3634f65d8c99ae81a3d1bba9f1b6dc16ef400071",
[
null,
[
@@ -283745,7 +283791,7 @@
]
],
"ch-units-vrl-006.html": [
- "cbe1dee6847fb7c4899d0878ac4c52f217f26e1b",
+ "f3297175741be972d9f134f1a87cd5014b1fad85",
[
null,
[
@@ -306722,6 +306768,32 @@
]
},
"the-selectmenu-element": {
+ "selectmenu-marker-part.tentative.html": [
+ "b6e94c947a42730b99c33d6cf2b3b5cf77b601ae",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "selectmenu-marker-slot.tentative.html": [
+ "fff911005d8710b63357e9a3b9dca7c8e6b5043a",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectmenu-option-arbitrary-content-displayed.tentative.html": [
"0fad1a1918f45b8144ec5aa50a7479aa45c0351e",
[
@@ -307324,7 +307396,7 @@
]
],
"backdrop-stacking-order.html": [
- "57cc63aab4802e205944aa455e20149c447513eb",
+ "897f54a53fbaeaa8c3d62da28ed810902193e631",
[
null,
[
@@ -307350,7 +307422,7 @@
]
],
"dont-share-style-to-top-layer.html": [
- "efbbab010a08c55138b6ec4168b5429522e41ad3",
+ "e4f4ce50b3e2fffa9cea11ed5a4b82baa2887bd5",
[
null,
[
@@ -307363,7 +307435,7 @@
]
],
"element-removed-from-top-layer-has-original-position.html": [
- "d78051a9b3eec7a11576673061949ff7a944b1f3",
+ "0dead331636355deb3dc9f610d8edeb3847e2438",
[
null,
[
@@ -307376,7 +307448,7 @@
]
],
"fixed-position-child-with-contain-ancestor.html": [
- "98835cb795fb0e4bce8f68f4f1bdbf5bd39614e8",
+ "5ee64fc1d9e31d76de81e5d4ae8df8139fada7b4",
[
null,
[
@@ -307389,7 +307461,7 @@
]
],
"fixed-position-child-with-fo-ancestor.html": [
- "fe625f1c9bfb4962970fd1852df5ca3b6e9eb7ca",
+ "2bc294be2fae16c02bd6d822c16a5726273e104f",
[
null,
[
@@ -307402,7 +307474,7 @@
]
],
"fixed-position-child-with-transformed-ancestor.html": [
- "58627443dae1941971eb29d8943877419801d783",
+ "527d508252c15d0f1b46580afc0a0ae8bbe625d8",
[
null,
[
@@ -307415,7 +307487,7 @@
]
],
"fixed-position-child-with-will-change-ancestor.html": [
- "14f4391e6bfbc2a3e5817edbd197cfcc4013a1af",
+ "e9db7321cd703d26e90c4a50932892da7d504218",
[
null,
[
@@ -307441,7 +307513,7 @@
]
],
"modal-dialog-backdrop.html": [
- "a18af0d30ea45ac4369031e8499b0a6c58c19f7d",
+ "55d7132f8cefa6be3b2a3133e35e9c9c3cbef603",
[
null,
[
@@ -307467,7 +307539,7 @@
]
],
"modal-dialog-generated-content.html": [
- "86f43e52c2eb095b07de3a7a1fa8b60927bef843",
+ "96b97f8ec3c490532508bfea1a7d3963ec3c0834",
[
null,
[
@@ -307558,7 +307630,7 @@
]
],
"top-layer-containing-block.html": [
- "10f6c69fbe188a541c80f32e4d2df96bee45cedb",
+ "0886c2cd2c2a0cfe6383b6488afa9943e568508f",
[
null,
[
@@ -307571,7 +307643,7 @@
]
],
"top-layer-display-none.html": [
- "5257823eca00c3ce1fdd18db42561bac3dff488a",
+ "ba790c1db9a561498737dee83411c525a8a8c38a",
[
null,
[
@@ -307584,7 +307656,7 @@
]
],
"top-layer-nesting.html": [
- "6397584387fc4b24b0d372bca5060f94c498a340",
+ "9e0616e952033642489edaf1de7bc7f4b09433bf",
[
null,
[
@@ -307597,7 +307669,7 @@
]
],
"top-layer-parent-clip.html": [
- "9a621e7594eb2382be5363203fdd910572f72b08",
+ "6e3c52aa02a50d9e2c4b3f5e4beb74c6ff07a4b0",
[
null,
[
@@ -307610,7 +307682,7 @@
]
],
"top-layer-parent-filter.html": [
- "020d90a0c8121c4b0c06b954eab32d63d5f64ee5",
+ "589d5397791ab426136e1cda2a4f53fbc6ff09c5",
[
null,
[
@@ -307623,7 +307695,7 @@
]
],
"top-layer-parent-mask.html": [
- "daa5ccbbe106dc66e5b688fe55de5b9bc0692259",
+ "8ba3ed47c27750981fb7a7a56f86fe408b780e38",
[
null,
[
@@ -307636,7 +307708,7 @@
]
],
"top-layer-parent-opacity.html": [
- "82aa09d6c5729c07fc483d3473db30add9d0de56",
+ "46c5de2a6dd54a6564abf31f0bdb47e605c8fed0",
[
null,
[
@@ -307649,7 +307721,7 @@
]
],
"top-layer-parent-overflow-clip.html": [
- "86587254cf06034885141223b61cdf8bded2fdee",
+ "d80595496929d0352a874a2dfb825098af7ecd91",
[
null,
[
@@ -307662,7 +307734,7 @@
]
],
"top-layer-parent-overflow-hidden.html": [
- "afcde733d2f64adc649b248204696ba31f520f3f",
+ "f5389ddc09a234dd2725f30791df1e9406a30304",
[
null,
[
@@ -307675,7 +307747,7 @@
]
],
"top-layer-parent-overflow-scroll.html": [
- "dd04c2ed47af56c3be7e0ad1c58760df486be23a",
+ "a230defeeab10dbd84a45677f759a0e33d8634e9",
[
null,
[
@@ -307688,7 +307760,7 @@
]
],
"top-layer-parent-transform.html": [
- "cf35a713f3369596e8e0c7a7addb6f5d4699b2bb",
+ "ac6f3cffc3ccc0d52fcfc31b5d3dd8f1640d19e7",
[
null,
[
@@ -307727,7 +307799,7 @@
]
],
"top-layer-stacking-correct-order-remove-readd.html": [
- "3b3e33689255731475b4ba541f6853ff4d62d9c3",
+ "4fdd28820dbb27af2d397d747573e0bd7cbecf35",
[
null,
[
@@ -307740,7 +307812,7 @@
]
],
"top-layer-stacking-dynamic.html": [
- "8ab7068d306ab9bd377d65f6b0044d6caced49ec",
+ "ebccdc66cf9f6215919eff7769c14debb68b4a99",
[
null,
[
@@ -315244,6 +315316,19 @@
{}
]
],
+ "use-a.svg": [
+ "40d4c83f21faccfddb50c683c2a0b0c42a585935",
+ [
+ null,
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"use-adopted-with-external-resource.tentative.svg": [
"830d4555e5ada27aabb6f3cb128340646000fba9",
[
@@ -315309,6 +315394,19 @@
{}
]
],
+ "use-no-tspan.svg": [
+ "5368ca343c869b0eb3c1cd42a77178df715141d6",
+ [
+ null,
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"use-same-origin.svg": [
"0aa1ec83afd68b3ea6022d33f6ec6f8103d99661",
[
@@ -315348,6 +315446,19 @@
{}
]
],
+ "use-switch.svg": [
+ "6c01c30198024de7a6572d496bb126ccdadb888d",
+ [
+ null,
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"use-symbol-dimensions-override-001.svg": [
"1f8f71414783ec6f46d74d700cd63bdc225607a9",
[
@@ -366468,7 +366579,7 @@
[]
],
"content-with-top-layer-ref.html": [
- "1a3cad327839c303dc2c9da144c572fe3f15965b",
+ "eadc5f65d1e8bd875e271b0fd27540dac8d2ae5f",
[]
],
"inline-container-with-child-ref.html": [
@@ -401488,7 +401599,7 @@
},
"scrolling": {
"scroll_support.js": [
- "de23b6f84ff668c1542bd5210962e8535eae526d",
+ "53482879ea4cd02aa0f81aac8bf5c68b531f4eb1",
[]
]
}
@@ -405267,7 +405378,7 @@
]
},
"local-fs-test-helpers.js": [
- "54961ae54bcb25ce95a461d7ccecfdd1414a6475",
+ "4bb9793085ad8395e603a1b301b72648e841ded5",
[]
],
"opaque-origin-sandbox.html": [
@@ -406549,7 +406660,7 @@
[]
],
"sandboxed-fs-test-helpers.js": [
- "9c93212f49cb3ab21ebc23585b1c22f804e876bf",
+ "400b2c507b7fa3f41e06fb6bf1efc30098e69d25",
[]
],
"sync-access-handle-test.js": [
@@ -406635,7 +406746,7 @@
[]
],
"FileSystemFileHandle-create-sync-access-handle.js": [
- "302d4a5a7afafcd71e1deeea4f973cb663f1e436",
+ "b9eafaf0d8ce7b13d4208c35afab12a57af7e222",
[]
],
"FileSystemFileHandle-getFile.js": [
@@ -406938,7 +407049,7 @@
[]
],
"rc-helper.js": [
- "ef0da2da1ed8f9684637d48991b2ea9abfb986c9",
+ "53bcdccf7c65b0b33cd7150c20e461325a8b6a10",
[]
],
"service-worker.js": [
@@ -410336,11 +410447,11 @@
[]
],
"gentestutils.py": [
- "59fa9e73e51bc19c5c1bcc827684e078ee132058",
+ "ecdc1067498247c6301a462fe6092b22e0e3962a",
[]
],
"gentestutilsunion.py": [
- "3afb54de477e6fbfff4bf5790376153128b79741",
+ "2a9c53e99ac420611526664ebcbeea66065a0940",
[]
],
"name2dir-canvas.yaml": [
@@ -410356,17 +410467,17 @@
[]
],
"templates-new.yaml": [
- "7742db88978dab0406b92db5f2ec3963bd602635",
+ "d8af47d2590aab1055ba9c512a7fc3fde8e07538",
[]
],
"templates.yaml": [
- "f2bc2569f717aa290ff0799f92f7ca4b69fac8a8",
+ "7e96e0707bc20faeada874a390cde2bdcd2cff42",
[]
],
"yaml": {
"element": {
"drawing-text-to-the-canvas.yaml": [
- "880e3fb1a1f396e1ebd472a8d5df46c8d1b45916",
+ "e0de95560cb122a2a2d6ea9ac47fcbf93ad941e0",
[]
],
"fill-and-stroke-styles.yaml": [
@@ -410374,7 +410485,7 @@
[]
],
"meta.yaml": [
- "b8ffbd5075860d9b3600ed2bb794b5da9fa2de5e",
+ "ea78fe302cb420fedd65df5b58fe940eeb38c1a6",
[]
],
"path-objects.yaml": [
@@ -410390,11 +410501,11 @@
[]
],
"text-styles.yaml": [
- "344a5a0752ed991c5525812f22a88a2207d699fc",
+ "407e34621091a6324cbd1ace8510738adaaec967",
[]
],
"the-canvas-element.yaml": [
- "5c07375dd2ac4a6effb8b2e7eb72bb2feca7123e",
+ "d6d8cd801b410909fdee32b7e0c9f903fda469de",
[]
],
"the-canvas-state.yaml": [
@@ -417882,6 +417993,14 @@
]
},
"the-selectmenu-element": {
+ "selectmenu-marker-part-ref.html": [
+ "cec447509eba28a17ca10636744e448ba64c5cb5",
+ []
+ ],
+ "selectmenu-marker-slot-ref.html": [
+ "a35fcd9480067e3121af32cd3b6f895d66b02042",
+ []
+ ],
"selectmenu-option-arbitrary-content-displayed-ref.tentative.html": [
"3933b93894b33762bbaa9e0dd722da6c3d6c7499",
[]
@@ -417894,6 +418013,14 @@
"back.html": [
"0d13a0f3b7c9c759a9a29c0d70a535b398ff108e",
[]
+ ],
+ "fake-selectmenu.js": [
+ "cf3864a29409699fd338ec722e3b05f3cd533dac",
+ []
+ ],
+ "selectmenu_button_icon.svg": [
+ "1a6c0193e819a1480f0a7f85f1fc65fdbd33742d",
+ []
]
}
},
@@ -418087,7 +418214,7 @@
[]
],
"dont-share-style-to-top-layer-ref.html": [
- "535ac935607094ee8c90e075e11263d36094a296",
+ "7e6112b3cee091994f3517271a240d119b704c64",
[]
],
"element-removed-from-top-layer-has-original-position-ref.html": [
@@ -423422,7 +423549,7 @@
[]
],
"popover.tentative.idl": [
- "bf23c7641d94e80567623d2b406cb4f746ddbebd",
+ "4e8c85f7dacb1447719ab4ed4cfc345c4033f467",
[]
],
"portals.idl": [
@@ -426771,6 +426898,10 @@
"ecfa0e3c2d9418253ae48d75fec39e662b6f862f",
[]
],
+ "noop-sw.js": [
+ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
+ []
+ ],
"resources": {
"icon.png": [
"ee919cd512d8ae540d77161e7af1797f684fe014",
@@ -427117,7 +427248,7 @@
[]
],
"include-frames-subframe.html": [
- "b74b1175f8c94a70437c860a5548f9da15dd7100",
+ "73df04b046e16e986466708cc05d11249810f620",
[]
],
"json_resource.json": [
@@ -430455,7 +430586,7 @@
[]
],
"mock-direct-sockets.js": [
- "caab177b9869d88aa00bafc55ca5f36725449bd2",
+ "0752850c8a383353c39320da4dc0d3b3df257129",
[]
],
"mock-facedetection.js": [
@@ -430471,7 +430602,7 @@
[]
],
"mock-imagecapture.js": [
- "5753b7ec502389bcf248ed91ecb4c75d7a975ed3",
+ "8424e1e36c8c6cf5913de38596d8f1e274bf08f6",
[]
],
"mock-managed-config.js": [
@@ -448388,7 +448519,7 @@
[]
],
"utils.js": [
- "aea658d3f2c9b4643bdaeac03b3983aa2acc06f1",
+ "bbb53e70e0dda0e829cd97bb128008756c161188",
[]
],
"video-decoder.crossOriginIsolated.https.any.js.headers": [
@@ -449480,7 +449611,7 @@
[]
],
"batch_normalization.json": [
- "429992c67c6765b31d2be68f01624f498cfb77b9",
+ "19f414bbfea80800c4caad2ceb7c5a83220b7a6e",
[]
],
"ceil.json": [
@@ -449496,7 +449627,11 @@
[]
],
"conv2d.json": [
- "a4b97d3c039d0b34b335dfafe2a98cf36089b4fc",
+ "ca7dc74aa7968f1d03788fe3a9fd7e7931ecb66d",
+ []
+ ],
+ "conv_transpose2d.json": [
+ "311a7d9c78aaca3e1f9be2fdda045bee897ba12e",
[]
],
"cos.json": [
@@ -449580,7 +449715,7 @@
[]
],
"reshape.json": [
- "f04b7b1dbe6500c78527f487034564cdb825539f",
+ "7d48ed3a18f51c175d11b523f43e0652c3a9c17d",
[]
],
"sigmoid.json": [
@@ -449625,7 +449760,7 @@
]
},
"utils.js": [
- "4c7b6bc6ef148e8d4afa3e264c42ca694e6a48a2",
+ "f727d3ffe36fbcc74096d4cbe66358be2402c562",
[]
]
}
@@ -455257,7 +455392,7 @@
]
],
"back-forward-cache-open-connection.window.js": [
- "397eadab8763fe884f877da63b75a06c8dcc023a",
+ "084e7f73b9ed81fabd73d2f1fd938499a9e6058f",
[
"IndexedDB/back-forward-cache-open-connection.window.html",
{
@@ -455291,7 +455426,7 @@
]
],
"back-forward-cache-open-transaction.window.js": [
- "e9511d3806a7415ebcf945bbbbf60b4433deef31",
+ "bee3d017afeedb7fcaab5ce3af3025f3c59769c7",
[
"IndexedDB/back-forward-cache-open-transaction.window.html",
{
@@ -489189,6 +489324,13 @@
null,
{}
]
+ ],
+ "line-height.html": [
+ "63097ac8081785c9fe14b3dcfcf7baccf5b5b63e",
+ [
+ null,
+ {}
+ ]
]
},
"style-animation-parsing.html": [
@@ -491082,7 +491224,7 @@
]
],
"color-invalid-color-function.html": [
- "51f393747c19a257045b2d9f7537ef6c8ff85b11",
+ "82c6fe335809b2ae71de034e5d609f21fc439241",
[
null,
{}
@@ -491826,7 +491968,7 @@
]
],
"custom-property-style-queries.html": [
- "7a11d45c3133f72c9bcff1e724180152a637cfed",
+ "064e73bb25c9fd26b0b50ea9dac75ebd770b7211",
[
null,
{}
@@ -501850,7 +501992,7 @@
},
"css-nesting": {
"cssom.html": [
- "987c31103677ca662b8d2e2c2d14a542a155103a",
+ "b7948f81bc147997d02929b5447765d193920032",
[
null,
{}
@@ -512503,7 +512645,7 @@
},
"declared": {
"append.tentative.html": [
- "2ff92b22c21d6c7547ebce63de93543f9e4acdd3",
+ "b642c0823a25146fc9c21096f4359290e50f3983",
[
null,
{}
@@ -523986,7 +524128,7 @@
]
],
"scrollend-event-fired-after-sequence-of-scrolls.tentative.html": [
- "77bf029ced58c5591c46364af0cd5ddeab054da7",
+ "8c785c2a9756a99466c1f5126f91d22d58cce53e",
[
null,
{
@@ -524004,7 +524146,7 @@
]
],
"scrollend-event-fired-for-mandatory-snap-point-after-load.html": [
- "a51069bc088fa4c8e3d1645e59a00545e95e64ec",
+ "f3791134204497d7c3fdc73da19a55f5cbc3a114",
[
null,
{
@@ -524069,7 +524211,7 @@
]
],
"scrollend-event-for-user-scroll.html": [
- "d51472fcb5127bfb7a51ef9c12a575be0b365afd",
+ "6a699b6f087c896f4d0ae41e82aad7f5ff412b40",
[
null,
{
@@ -526949,6 +527091,54 @@
}
]
],
+ "delete-in-last-definition-list-item-when-parent-list-is-editing-host.html": [
+ "e068f9bcd22a654a4eeed4c59c920c9cc353c70e",
+ [
+ "editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html?action=Backspace",
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ],
+ [
+ "editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html?action=Delete",
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ]
+ ],
+ "delete-in-last-list-item-when-parent-list-is-editing-host.html": [
+ "7d1594393538b201e20b90cd79c5091fc110da07",
+ [
+ "editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html?list=ol&action=Backspace",
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ],
+ [
+ "editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html?list=ol&action=Delete",
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ],
+ [
+ "editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html?list=ul&action=Backspace",
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ],
+ [
+ "editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html?list=ul&action=Delete",
+ {
+ "testdriver": true,
+ "timeout": "long"
+ }
+ ]
+ ],
"delete.html": [
"b9bd1437e3721f1353a9df6bde155f2f2b8ae95a",
[
@@ -529541,7 +529731,7 @@
},
"run": {
"backcolor.html": [
- "5911de309d02193573f58b6257f3fb6dc28f58c7",
+ "5a4c35c34e59ab78e1145c848a9523fd7f34b1d2",
[
null,
{
@@ -529550,7 +529740,7 @@
]
],
"bold.html": [
- "390d6810d857addb514c510086807223ac01e758",
+ "30981f665897e8adb2b21a283322d1ed8b0ae449",
[
"editing/run/bold.html?1-1000",
{
@@ -529605,7 +529795,7 @@
]
],
"createlink.html": [
- "b67357e684a4894abf8d050419d622db658d601b",
+ "21c190703aed27e15eff16283b0c86d4d59ab989",
[
null,
{
@@ -529614,7 +529804,7 @@
]
],
"delete-list-items-in-table-cell.html": [
- "b765bc4b9776dc382b18a618ba003c5e5d31c464",
+ "88f4458987244cf8714ed425c361023070238e86",
[
null,
{
@@ -529623,7 +529813,7 @@
]
],
"delete.html": [
- "2d11f6af26b82fbbb0a0e92d26713396c74ef502",
+ "6a01ffd0441c88d7b89ef1f78b562a6fad9f7a20",
[
"editing/run/delete.html?1-1000",
{
@@ -529674,7 +529864,7 @@
]
],
"fontname.html": [
- "53800c540c4c100aac5758a8a1d48b162b1a1d67",
+ "b9bb3b19f8591cb7499dd1bb8d48509daecb1412",
[
"editing/run/fontname.html?1-1000",
{
@@ -529695,7 +529885,7 @@
]
],
"fontsize.html": [
- "66ae99ebc100eb21219ea7d26fa5ef77ac48bbde",
+ "830a347346e93e212db5835006f5aa8378a0a93e",
[
"editing/run/fontsize.html?1-1000",
{
@@ -529716,7 +529906,7 @@
]
],
"forecolor.html": [
- "8594e061c1452d90b314c4d6d4e4e5836f5998be",
+ "2ab5736b42c7761fe11ceb6d3366ab2614949e9c",
[
"editing/run/forecolor.html?1-1000",
{
@@ -529737,7 +529927,7 @@
]
],
"formatblock.html": [
- "5c97c08e7327cb8b8c00c820b21741c444f19a28",
+ "f15f2c03dacd22e4aa999db055736bdab728fa06",
[
"editing/run/formatblock.html?1-1000",
{
@@ -529770,7 +529960,7 @@
]
],
"forwarddelete.html": [
- "e17190053ac2df075fbcfe37e824b732793907e6",
+ "570da5a183c178d75868357e32181f35925172c5",
[
"editing/run/forwarddelete.html?1-1000",
{
@@ -529815,7 +530005,7 @@
]
],
"hilitecolor.html": [
- "cd9e5528e5613e788d36e926ac41b913ee52b2c6",
+ "1d123b1c10fd3c66748501072cbdd21299b58110",
[
null,
{
@@ -529824,7 +530014,7 @@
]
],
"indent.html": [
- "13e98f5ea647df90245e52e83a32299b1e71beaf",
+ "a4f2de86c1ae1f9c7478e44f22b31046cb27834d",
[
null,
{
@@ -529833,7 +530023,7 @@
]
],
"insert-list-items-in-table-cell.html": [
- "8d08f8c3eb9c434b91d64281e418aedd9877af88",
+ "2d176b567bfc528112461ff25ac52f5df7ed0e68",
[
null,
{
@@ -529842,7 +530032,7 @@
]
],
"inserthorizontalrule.html": [
- "6e3e5490a60324dc060bb81e3be2c1a8217e7acf",
+ "7c570fbcfde74ff2c612404642af6a21986e97d0",
[
null,
{
@@ -529851,7 +530041,7 @@
]
],
"inserthtml.html": [
- "f83102e6a9b37ace62b44fd774d13219ad9d1021",
+ "f27df67b72bf19ce9e460f09c2f7354ed2d28a75",
[
null,
{
@@ -529860,7 +530050,7 @@
]
],
"insertimage.html": [
- "7a1f7b922665cd357418ad2ff343d7559155b7fd",
+ "9987b98b7de50e175b49e64cbf715708c2bbdf80",
[
null,
{
@@ -529869,7 +530059,7 @@
]
],
"insertlinebreak.html": [
- "ddab665084b141561aa319a17f0a8f0aa5f228e4",
+ "4ca86b8b5f86e5e6df3795b2fbe5841a3c94b430",
[
null,
{
@@ -529878,7 +530068,7 @@
]
],
"insertorderedlist.html": [
- "68772355c24d2b8388e9379cf8c0b587b216e233",
+ "06662df7610de97934f8037cfee7eca899dd7606",
[
null,
{
@@ -529887,7 +530077,7 @@
]
],
"insertparagraph.html": [
- "173c5aea40b460594ab0206c1c4400a26f3c219b",
+ "56b5335ea7eb53715b0840286681c2687bb0dd76",
[
"editing/run/insertparagraph.html?1-1000",
{
@@ -529932,7 +530122,7 @@
]
],
"inserttext.html": [
- "a01293fcae034da36beebd4a64f7c29152f1597a",
+ "d0e9d7d625c520f1e1a5a9f844e3a7a6c8ad2ec1",
[
"editing/run/inserttext.html?1-1000",
{
@@ -529953,7 +530143,7 @@
]
],
"insertunorderedlist.html": [
- "b1f636b10959971843ee9c106f7c2ee71f8f1a42",
+ "8df99f8dccdc75d61ec5bad8490a5bd60d00deaa",
[
null,
{
@@ -529962,7 +530152,7 @@
]
],
"italic.html": [
- "6185d553d0218e150795027ca3cabd598c07b7d9",
+ "d31ecf1c162bc8914752c72c40ffbc2124f6f19a",
[
"editing/run/italic.html?1-1000",
{
@@ -529983,7 +530173,7 @@
]
],
"justifycenter.html": [
- "4902a302cca15b24aacdba3473836739186bc0fb",
+ "63f2d56255c69b53d6da022cbeb462f3ca311c1f",
[
"editing/run/justifycenter.html?1-1000",
{
@@ -530028,7 +530218,7 @@
]
],
"justifyfull.html": [
- "c11befaf8939e88877a3011e7c190679a1c97984",
+ "202beea885574f4a29c21ad84891b859b8b155f2",
[
"editing/run/justifyfull.html?1-1000",
{
@@ -530061,7 +530251,7 @@
]
],
"justifyleft.html": [
- "f6b2818538937f2c51b2d55dd4e4013872fb6d13",
+ "31772248ca86fa1e70de9d8f1f8d6b7a529c49dd",
[
"editing/run/justifyleft.html?1-1000",
{
@@ -530082,7 +530272,7 @@
]
],
"justifyright.html": [
- "edd30b7f5f034b9046ab981ef34ffbba7f61fd50",
+ "a8b5bcf5ea9ad9d9872f4dd9c64b14f4386ea0fe",
[
"editing/run/justifyright.html?1-1000",
{
@@ -530115,7 +530305,7 @@
]
],
"misc.html": [
- "5bf52682292c96c50d4c45d4ea4c138a625c99d4",
+ "2bb754277a576133a37cbddc727616c195256cdd",
[
null,
{
@@ -530124,7 +530314,7 @@
]
],
"multitest.html": [
- "813b9edc034addf8f9c2270c567b74dc45263b37",
+ "4213488d77a477f17b19d923aff4a374e70d76e2",
[
"editing/run/multitest.html?1-1000",
{
@@ -530187,7 +530377,7 @@
]
],
"outdent.html": [
- "f1f9fb491aa940b65ce7010370c2b4d3258a9cf4",
+ "04240d9f0ff38ded4b55458f47a4ede3405c2580",
[
"editing/run/outdent.html?1-1000",
{
@@ -530208,7 +530398,7 @@
]
],
"removeformat.html": [
- "0c38ff915fb0e85f8edb2de3581b86ec53c483eb",
+ "3cc695278ec04698a847b87969d79f226ca7484d",
[
null,
{
@@ -530217,7 +530407,7 @@
]
],
"strikethrough.html": [
- "cb06c10d0c26d51f40ff2edcd64d897f618ca890",
+ "d731d3eb8982c9346afb856d7b04bb9273300356",
[
"editing/run/strikethrough.html?1-1000",
{
@@ -530238,7 +530428,7 @@
]
],
"subscript.html": [
- "e0071d7a08043da296cbf2c0b1061fc00de544e0",
+ "24fb79932f28891dec1e7f9705ade6127c4bf507",
[
null,
{
@@ -530247,7 +530437,7 @@
]
],
"superscript.html": [
- "0c3519b288e4ce7524fdce0d432dbf495cbb837b",
+ "de28a9c5365968f46627f870ced67a5c3f521e36",
[
null,
{
@@ -530256,7 +530446,7 @@
]
],
"underline.html": [
- "f53add984bde3e3c9f1846bf656d49627d6220f8",
+ "880b3e20323f48e0d7e9c7d00710ad8733ef5449",
[
"editing/run/underline.html?1-1000",
{
@@ -530293,7 +530483,7 @@
]
],
"unlink.html": [
- "5a623b4a09faf0e84a5c0b9c914c525bf60329c8",
+ "331792f9240b1eafd049a56abcb13f2d5fd14886",
[
null,
{
@@ -557938,7 +558128,7 @@
]
],
"FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js": [
- "aa4d91d15da1cb0cebd4e47ea7300ac6206ced30",
+ "6e20b57cb7b4bfb7556284d983752a2cc55eaf52",
[
"fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.html",
{
@@ -572756,7 +572946,7 @@
]
],
"2d.text.font.parse.size.percentage.html": [
- "92bac8d8cae99e7f87b87fce061cb1367da1bf49",
+ "18476b3b7adb795b27fa87bcdd65b2809b1144e8",
[
null,
{}
@@ -598450,7 +598640,7 @@
]
],
"image-base-url.html": [
- "f8201c4948be8df1132c602afb134b71ebd75768",
+ "932cd92b4151fe61d407e693a52e17dcd0363307",
[
null,
{}
@@ -600502,7 +600692,7 @@
]
],
"pattern_attribute.html": [
- "ef01c29727758db5832aae37040e0b1aa9c0fd26",
+ "546c4b18d7f44875093013a5b36136715a140446",
[
null,
{}
@@ -601481,6 +601671,13 @@
{}
]
],
+ "child-sequential-focus.html": [
+ "1b4dd30230054571e395958820c1c184d8e19659",
+ [
+ null,
+ {}
+ ]
+ ],
"closed-dialog-does-not-block-mouse-events.html": [
"9d9856962d117021a9a87bcbd5423be83dd6c1c7",
[
@@ -601617,7 +601814,7 @@
]
],
"dialog-focus-shadow.html": [
- "e9ea15516e271198c4c1b293ff659d9396705acd",
+ "7e5768542559a89f4a45c7a51072c86fd0a9ebc5",
[
null,
{}
@@ -601638,7 +601835,7 @@
]
],
"dialog-focusing-steps-prevent-autofocus.html": [
- "2e8563f761dd5538185c988dc63008e2ecf25c0c",
+ "4d1e792c1cc9cd1fb69ac886a98b6aa6989404c6",
[
null,
{}
@@ -601698,7 +601895,7 @@
]
],
"dialog-showModal.html": [
- "c511631f9fbb71d8d1ad2c12377833928bae95b6",
+ "5edff18614225d07ca737511c23f04a2ff389583",
[
null,
{}
@@ -601737,7 +601934,7 @@
]
],
"inert-label-focus.html": [
- "05f4069d78f57e5215c2eae8576e0d2c50cb1223",
+ "61e3ddeaf23e6911c89975a9dc12ab952c3bf403",
[
null,
{
@@ -601755,7 +601952,7 @@
]
],
"inert-node-is-unfocusable.html": [
- "56f31f35924974f31b3cae9825846ec01e1a0170",
+ "74379f50e22c70af96bac2ed84de59c6cda59a02",
[
null,
{}
@@ -601856,7 +602053,7 @@
]
],
"show-modal-focusing-steps.html": [
- "164b41459d17605ebcd447f3f879130cbf022d00",
+ "6a2ad8c4a0a4eb6687405a6f267e5838389db1ef",
[
null,
{}
@@ -602145,7 +602342,7 @@
]
],
"idlharness.tentative.html": [
- "d1a258bb4ad3ac3031a882a2b20d58a483cebcf2",
+ "1cab891261cfd46ceb42706c2fe7a9229abcbacf",
[
null,
{}
@@ -602231,7 +602428,7 @@
]
],
"popover-events.tentative.html": [
- "b96a0f5a53f489d8cf8c1bb2008cd4985fdf6c31",
+ "b299424570024c81238ae076fdacbfa2badc83b4",
[
null,
{}
@@ -602360,7 +602557,7 @@
]
],
"toggleevent-interface.tentative.html": [
- "4d437b0c0ad523c8c9837d917f5c3064933de479",
+ "45709458b00c466805c63d1bc4530d37677718a9",
[
null,
{}
@@ -619424,14 +619621,14 @@
]
],
"MediaStreamTrack-applyConstraints-fast.html": [
- "2bc5999544f7c351e172e13aa45fba818f8e80c5",
+ "d80ab67321fe5a238efe5e917aba037d2a406981",
[
null,
{}
]
],
"MediaStreamTrack-applyConstraints-getSettings.https.html": [
- "1309d3bded8f83b51189ff8e0d281f4796244838",
+ "c6401570b8ba3e370be5b8414efb8e8d158c9a4d",
[
null,
{
@@ -619440,7 +619637,7 @@
]
],
"MediaStreamTrack-applyConstraints-reject.https.html": [
- "ac6216ae199f97c3abd8062e3a31a3cc3eb7dec2",
+ "5050ed27dd8e31a84dba7428d6008a3ab7932e45",
[
null,
{
@@ -623149,6 +623346,27 @@
{}
]
],
+ "navigate-history-push-not-loaded.html": [
+ "c1ecdaeeafdfbee3b3a1f25e826e5aa435bbe7b3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "navigate-history-push-same-url-cross-document.html": [
+ "2d07bdcede21ff2b75f0c2292cf454a86816ebf2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "navigate-history-push-same-url.html": [
+ "339e8c3056bb2e6694750c5a190649d4086b20eb",
+ [
+ null,
+ {}
+ ]
+ ],
"navigate-history-state-replace.html": [
"bf0af521da9dd38f3e9650fcf26928c16c8356fe",
[
@@ -623500,20 +623718,6 @@
{}
]
],
- "navigate-push-not-loaded.html": [
- "611db7e2b13e29b32523c245f3ed65f4cebd7114",
- [
- null,
- {}
- ]
- ],
- "navigate-push-same-url.html": [
- "216e94eb1d0789a5a65dd0bb3c94224175a8c43d",
- [
- null,
- {}
- ]
- ],
"navigate-rejection-order-beforeunload-unserializablestate.html": [
"878280a56eb9cf993f9aea9bd00abc745fcd5eff",
[
@@ -625204,6 +625408,24 @@
null,
{}
]
+ ],
+ "shownotification.https.window.js": [
+ "5fcfccff756afb330dd2241f563b0a8fc516205e",
+ [
+ "notifications/shownotification.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/testdriver.js"
+ ],
+ [
+ "script",
+ "/resources/testdriver-vendor.js"
+ ]
+ ]
+ }
+ ]
]
},
"old-tests": {
@@ -627109,7 +627331,7 @@
],
"not-restored-reasons": {
"performance-navigation-timing-attributes.tentative.window.js": [
- "4d403e12aa65e2fe7489f15b9cb63e33718c3e2b",
+ "97bf79f0ef95de8194b93cba8c6adf331d9eaa64",
[
"performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.html",
{
@@ -627151,7 +627373,7 @@
]
],
"performance-navigation-timing-bfcache-reasons-stay.tentative.window.js": [
- "a0f11abc837eef2985e9ed7bf6081083f752f573",
+ "745c167e790067c1df92ecf8bff1cade48fb2f95",
[
"performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.html",
{
@@ -627193,7 +627415,7 @@
]
],
"performance-navigation-timing-bfcache.tentative.window.js": [
- "82c4c9bdd85e40730bbdc0ef7749c23e50bbcf6c",
+ "b5ff4d7cc59b3efdf5376418f7708c73e5de1bbb",
[
"performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.html",
{
@@ -627231,7 +627453,7 @@
]
],
"performance-navigation-timing-cross-origin-bfcache.tentative.window.js": [
- "d1f29eab6fbad770f98a48bfb6118e570cc605f5",
+ "64c0a89c82037628879c0b1d5266386e7fa2a387",
[
"performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.html",
{
@@ -627273,7 +627495,7 @@
]
],
"performance-navigation-timing-not-bfcached.tentative.window.js": [
- "6367f58ce916ac0019a3458e9b042eb4dd73e8ae",
+ "5e94a93089113d35470f6d038fc35833791723a3",
[
"performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.html",
{
@@ -627357,7 +627579,7 @@
]
],
"performance-navigation-timing-same-origin-bfcache.tentative.window.js": [
- "36ec53364b56c386bc59849cd905a1b24069c95a",
+ "858d94b26d61f6d5f2e495327eb512644d00cdf5",
[
"performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.html",
{
@@ -627757,63 +627979,63 @@
],
"tentative": {
"detached-frame.html": [
- "d5753dbcd7bac9907918d3b1deae91d03014dbf8",
+ "70019223a648d95d49925aa6f00a4fac4c53d797",
[
null,
{}
]
],
"include-frames-originA-A-A.html": [
- "0cdcd58115f65ee78070fa72edc9e2b2cab6c34c",
+ "58480c7af1e6494f5b06d65320d8a6eacfc62515",
[
null,
{}
]
],
"include-frames-originA-A.html": [
- "bb4ee9e63abceed35a581004bd6831f269015e55",
+ "277a2376aefbcf697129bf020964e81dbc09efe3",
[
null,
{}
]
],
"include-frames-originA-AA.html": [
- "e4c742a08a2845d1f5b72c54f0552fb6196e1fcf",
+ "485e1d2a115c2d21d5403b55db0ab1bcb90b54c7",
[
null,
{}
]
],
"include-frames-originA-AB.html": [
- "cbd27a0380ca34b816f4c073ce7ad7f75ff6cb98",
+ "7650a61e499d0597e22fa918f0f0a9a0513288b7",
[
null,
{}
]
],
"include-frames-originA-B-A.html": [
- "5e46bc21624acca417a39f12dc93992819857001",
+ "9b873bdde6e18647b6c5fd7d07bc0f7ac7631bac",
[
null,
{}
]
],
"include-frames-originA-B-B.html": [
- "a1c85150e691ea3d8db419df9bba2f1662469d41",
+ "b182931e5dceee014d4122a086954628eac9b122",
[
null,
{}
]
],
"include-frames-originA-B.html": [
- "0373c824d908ab991ca21d4ddf4a6caa0092f2de",
+ "0686c9b1e5876c566897c16bbfff78385319e20d",
[
null,
{}
]
],
"performance-entry-source.html": [
- "5e51ddbbe4493dfdd0de1f9c8f53723d50aae53c",
+ "471a52ab285882aeb0ba21eca5134e335aa2e5db",
[
null,
{}
@@ -647338,7 +647560,7 @@
]
],
"view-timeline-range-animation.html": [
- "dc3785078a60f45c053f5336ea708ec5a2ba5d19",
+ "9f66a5eb835462f5a26de73c4af33d66a5491576",
[
null,
{}
@@ -647618,7 +647840,7 @@
]
],
"view-timeline-range.html": [
- "4123bda47089ff8d3e0d87a8bf79b2f13c15b4b2",
+ "f2a1b3f586d372fca911bc938fc23f6594dde344",
[
null,
{}
@@ -656611,6 +656833,71 @@
]
},
"storage": {
+ "buckets": {
+ "buckets_storage_policy.tentative.https.any.js": [
+ "4aaa02e4be464a34ff02294ba2f6d5898b5904e2",
+ [
+ "storage/buckets/buckets_storage_policy.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Buckets API: Tests for bucket storage policies."
+ ],
+ [
+ "global",
+ "window,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "storage/buckets/buckets_storage_policy.tentative.https.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Buckets API: Tests for bucket storage policies."
+ ],
+ [
+ "global",
+ "window,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "storage/buckets/buckets_storage_policy.tentative.https.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Buckets API: Tests for bucket storage policies."
+ ],
+ [
+ "global",
+ "window,worker"
+ ]
+ ]
+ }
+ ],
+ [
+ "storage/buckets/buckets_storage_policy.tentative.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Buckets API: Tests for bucket storage policies."
+ ],
+ [
+ "global",
+ "window,worker"
+ ]
+ ]
+ }
+ ]
+ ]
+ },
"estimate-indexeddb.https.any.js": [
"b0c6b944dd6ff83a00b38cac6d6c4e3ea8424979",
[
@@ -679648,7 +679935,7 @@
]
],
"reconfiguring-encoder.https.any.js": [
- "7bc7402b0119e4984260a880861f1e854a8756aa",
+ "bc7e9b74fb917639b581b72096741395df1b9198",
[
"webcodecs/reconfiguring-encoder.https.any.html?av1",
{
@@ -681098,7 +681385,7 @@
]
],
"videoFrame-createImageBitmap.any.js": [
- "2923427b181011c61e67b1aaf1b25d17ad2efe43",
+ "836971362382f876d7e3b1c26f3124721806264a",
[
"webcodecs/videoFrame-createImageBitmap.any.html",
{
@@ -683352,6 +683639,57 @@
}
]
],
+ "conv_transpose2d.https.any.js": [
+ "8a1f30d5272d44266d562d4db70ba71f1e3c4d52",
+ [
+ "webnn/conv_transpose2d.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API convTranspose2d operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "script",
+ "./resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conv_transpose2d.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API convTranspose2d operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "script",
+ "./resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"elementwise_binary.https.any.js": [
"06c2404f95489da2c2558639d9b631c8c2124295",
[
@@ -684974,7 +685312,7 @@
]
],
"RTCRtpSender-replaceTrack.https.html": [
- "a370b6c059a52479cdb62a52adf1e4ab5a5f6b77",
+ "bec44c53e467102fe55b86ab450c97c295213c99",
[
null,
{
@@ -685741,7 +686079,7 @@
]
],
"RTCRtpParameters-adaptivePtime.html": [
- "a0cc989c13da0b6533faadfa3ac123e6df898862",
+ "8a7a8b6ba689c2b671e22d91a371777fde581f3a",
[
null,
{}
@@ -685860,7 +686198,7 @@
]
],
"RTCRtpParameters-encodings.html": [
- "37c1b919b417fa03b2c9566839b529a3c0aae07c",
+ "1519ee84f736c1a4be4e87834fcf069c7c80ac7b",
[
null,
{}
@@ -685965,7 +686303,7 @@
]
],
"RTCRtpParameters-scalability.html": [
- "d8b1c6e1350601c45b0eee62ebce7ca7ea6e9c08",
+ "ff28c2b5e95636708568cdc20c5da5fc2db0dcba",
[
null,
{
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
deleted file mode 100644
index 665ec4646cb..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[hit-test-floats-003.html]
- [Miss float below something else]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini
new file mode 100644
index 00000000000..147f062e548
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini
@@ -0,0 +1,3 @@
+[hit-test-floats-005.html]
+ [Miss clipped float]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
index 5e3a96e5999..a057f038339 100644
--- a/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
+++ b/tests/wpt/metadata/css/CSS2/linebox/inline-negative-margin-001.html.ini
@@ -8,5 +8,8 @@
[[data-expected-height\] 3]
expected: FAIL
- [[data-expected-height\] 4]
+ [[data-expected-height\] 1]
+ expected: FAIL
+
+ [[data-expected-height\] 2]
expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini
index 51432362d66..ee34bc91078 100644
--- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini
+++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini
@@ -1,3 +1,6 @@
[block-in-inline-hittest-002.html]
[elementsFromPoint]
expected: FAIL
+
+ [elementFromPoint]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini
index f9e216a8cfc..cdd8b55f192 100644
--- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini
+++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-relpos-zindex.html.ini
@@ -1,6 +1,3 @@
[block-in-inline-hittest-relpos-zindex.html]
[position: relative; z-index: -1;]
expected: FAIL
-
- [block-in-inline-hittest-relpos-zindex]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-animations/responsive/line-height.html.ini b/tests/wpt/metadata/css/css-animations/responsive/line-height.html.ini
new file mode 100644
index 00000000000..56ece55d951
--- /dev/null
+++ b/tests/wpt/metadata/css/css-animations/responsive/line-height.html.ini
@@ -0,0 +1,3 @@
+[line-height.html]
+ [line-height responds to inherited changes]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini b/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini
deleted file mode 100644
index 304b1579ca4..00000000000
--- a/tests/wpt/metadata/css/css-color/animation/opacity-animation-ending-correctly-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[opacity-animation-ending-correctly-001.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini b/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini
new file mode 100644
index 00000000000..d23a84f1d48
--- /dev/null
+++ b/tests/wpt/metadata/css/css-color/parsing/color-invalid-color-function.html.ini
@@ -0,0 +1,2 @@
+[color-invalid-color-function.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
index 1507cf615a4..a2e051e8061 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
@@ -155,9 +155,6 @@
[Matching font-weight: '400' should prefer '400' over '450 460']
expected: FAIL
- [Matching font-style: 'italic' should prefer 'normal' over 'oblique 0deg']
- expected: FAIL
-
[Matching font-style: 'oblique -20deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
expected: FAIL
@@ -319,3 +316,18 @@
[Matching font-style: 'oblique -20deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
expected: FAIL
+
+ [Matching font-style: 'oblique 20deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique 40deg 50deg' over 'italic']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini
new file mode 100644
index 00000000000..b9463b3ee1e
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-005.html.ini
@@ -0,0 +1,2 @@
+[trailing-other-space-separators-break-spaces-005.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini
new file mode 100644
index 00000000000..98f844212dd
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-007.html.ini
@@ -0,0 +1,2 @@
+[trailing-other-space-separators-break-spaces-007.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
index 3f9c5003739..4a1232b3c22 100644
--- a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
@@ -1,3 +1,6 @@
[transform-scale-hittest.html]
[Hit test intersecting scaled box]
expected: FAIL
+
+ [Hit test within unscaled box]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
index 027bd2fcf75..3094ea29f3c 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-001.html.ini
@@ -53,152 +53,152 @@
[background-position length(px) / events]
expected: FAIL
- [color color(rgba) / values]
+ [padding-bottom length(ex) / values]
expected: FAIL
- [text-shadow shadow(shadow) / values]
+ [padding-bottom length(mm) / values]
expected: FAIL
- [font-size length(pt) / values]
+ [padding-bottom length(cm) / values]
expected: FAIL
- [font-size length(pc) / values]
+ [padding-bottom length(in) / values]
expected: FAIL
- [font-size length(px) / values]
+ [padding-left length(pt) / values]
expected: FAIL
- [font-size length(em) / values]
+ [padding-left length(pc) / values]
expected: FAIL
- [font-size length(ex) / values]
+ [padding-left length(px) / values]
expected: FAIL
- [font-size length(mm) / values]
+ [padding-left length(em) / values]
expected: FAIL
- [font-size length(cm) / values]
+ [padding-left length(ex) / values]
expected: FAIL
- [font-size length(in) / values]
+ [padding-left length(mm) / values]
expected: FAIL
- [font-size percentage(%) / values]
+ [padding-left length(cm) / values]
expected: FAIL
- [font-weight font-weight(keyword) / values]
+ [padding-left length(in) / values]
expected: FAIL
- [font-weight font-weight(numeric) / values]
+ [padding-right length(pt) / values]
expected: FAIL
- [line-height number(integer) / values]
+ [padding-right length(pc) / values]
expected: FAIL
- [line-height number(decimal) / values]
+ [padding-right length(px) / values]
expected: FAIL
- [line-height length(pt) / values]
+ [padding-right length(em) / values]
expected: FAIL
- [line-height length(pc) / values]
+ [padding-right length(ex) / values]
expected: FAIL
- [line-height length(px) / values]
+ [padding-right length(mm) / values]
expected: FAIL
- [line-height length(em) / values]
+ [padding-right length(cm) / values]
expected: FAIL
- [line-height length(ex) / values]
+ [padding-right length(in) / values]
expected: FAIL
- [line-height length(mm) / values]
+ [padding-top length(pt) / values]
expected: FAIL
- [line-height length(cm) / values]
+ [padding-top length(pc) / values]
expected: FAIL
- [line-height length(in) / values]
+ [padding-top length(px) / values]
expected: FAIL
- [line-height percentage(%) / values]
+ [padding-top length(em) / values]
expected: FAIL
- [letter-spacing length(pt) / values]
+ [padding-top length(ex) / values]
expected: FAIL
- [letter-spacing length(pc) / values]
+ [padding-top length(mm) / values]
expected: FAIL
- [letter-spacing length(px) / values]
+ [padding-top length(cm) / values]
expected: FAIL
- [letter-spacing length(em) / values]
+ [padding-top length(in) / values]
expected: FAIL
- [letter-spacing length(ex) / values]
+ [margin-bottom length(pt) / values]
expected: FAIL
- [letter-spacing length(mm) / values]
+ [margin-bottom length(pc) / values]
expected: FAIL
- [letter-spacing length(cm) / values]
+ [margin-bottom length(px) / values]
expected: FAIL
- [letter-spacing length(in) / values]
+ [margin-bottom length(em) / values]
expected: FAIL
- [word-spacing length(pt) / values]
+ [margin-bottom length(ex) / values]
expected: FAIL
- [word-spacing length(pc) / values]
+ [margin-bottom length(mm) / values]
expected: FAIL
- [word-spacing length(px) / values]
+ [margin-bottom length(cm) / values]
expected: FAIL
- [word-spacing length(em) / values]
+ [margin-bottom length(in) / values]
expected: FAIL
- [word-spacing length(ex) / values]
+ [margin-left length(pt) / values]
expected: FAIL
- [word-spacing length(mm) / values]
+ [margin-left length(pc) / values]
expected: FAIL
- [word-spacing length(cm) / values]
+ [margin-left length(px) / values]
expected: FAIL
- [word-spacing length(in) / values]
+ [margin-left length(em) / values]
expected: FAIL
- [word-spacing percentage(%) / values]
+ [margin-left length(ex) / values]
expected: FAIL
- [text-indent length(pt) / values]
+ [margin-left length(mm) / values]
expected: FAIL
- [text-indent length(pc) / values]
+ [margin-left length(cm) / values]
expected: FAIL
- [text-indent length(px) / values]
+ [margin-left length(in) / values]
expected: FAIL
- [text-indent length(em) / values]
+ [margin-right length(pt) / values]
expected: FAIL
- [text-indent length(ex) / values]
+ [margin-right length(pc) / values]
expected: FAIL
- [text-indent length(mm) / values]
+ [margin-right length(px) / values]
expected: FAIL
- [text-indent length(cm) / values]
+ [margin-right length(em) / values]
expected: FAIL
- [text-indent length(in) / values]
+ [margin-right length(ex) / values]
expected: FAIL
- [text-indent percentage(%) / values]
+ [margin-right length(mm) / values]
expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini
index 371e4c602b7..5349706e4ad 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini
@@ -490,3 +490,33 @@
[object-view-box object-view-box(xywh) / events]
expected: FAIL
+
+ [border-top-left-radius border-radius(px) / values]
+ expected: FAIL
+
+ [border-top-left-radius border-radius(px-px) / values]
+ expected: FAIL
+
+ [border-top-right-radius border-radius(px) / values]
+ expected: FAIL
+
+ [border-top-right-radius border-radius(px-px) / values]
+ expected: FAIL
+
+ [border-bottom-left-radius border-radius(px) / values]
+ expected: FAIL
+
+ [border-bottom-left-radius border-radius(px-px) / values]
+ expected: FAIL
+
+ [border-bottom-right-radius border-radius(px) / values]
+ expected: FAIL
+
+ [border-bottom-right-radius border-radius(px-px) / values]
+ expected: FAIL
+
+ [box-shadow box-shadow(shadow) / values]
+ expected: FAIL
+
+ [font-stretch font-stretch(keyword) / values]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
index 8484f4b2b02..27baba66d9a 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-001.html.ini
@@ -505,3 +505,153 @@
[text-shadow shadow(shadow) / events]
expected: FAIL
+
+ [max-height length(ex) / events]
+ expected: FAIL
+
+ [max-height length(mm) / events]
+ expected: FAIL
+
+ [max-height length(cm) / events]
+ expected: FAIL
+
+ [max-height length(in) / events]
+ expected: FAIL
+
+ [max-height percentage(%) / events]
+ expected: FAIL
+
+ [max-width length(pt) / events]
+ expected: FAIL
+
+ [max-width length(pc) / events]
+ expected: FAIL
+
+ [max-width length(px) / events]
+ expected: FAIL
+
+ [max-width length(em) / events]
+ expected: FAIL
+
+ [max-width length(ex) / events]
+ expected: FAIL
+
+ [max-width length(mm) / events]
+ expected: FAIL
+
+ [max-width length(cm) / events]
+ expected: FAIL
+
+ [max-width length(in) / events]
+ expected: FAIL
+
+ [max-width percentage(%) / events]
+ expected: FAIL
+
+ [top length(pt) / events]
+ expected: FAIL
+
+ [top length(pc) / events]
+ expected: FAIL
+
+ [top length(px) / events]
+ expected: FAIL
+
+ [top length(em) / events]
+ expected: FAIL
+
+ [top length(ex) / events]
+ expected: FAIL
+
+ [top length(mm) / events]
+ expected: FAIL
+
+ [top length(cm) / events]
+ expected: FAIL
+
+ [top length(in) / events]
+ expected: FAIL
+
+ [top percentage(%) / events]
+ expected: FAIL
+
+ [right length(pt) / events]
+ expected: FAIL
+
+ [right length(pc) / events]
+ expected: FAIL
+
+ [right length(px) / events]
+ expected: FAIL
+
+ [right length(em) / events]
+ expected: FAIL
+
+ [right length(ex) / events]
+ expected: FAIL
+
+ [right length(mm) / events]
+ expected: FAIL
+
+ [right length(cm) / events]
+ expected: FAIL
+
+ [right length(in) / events]
+ expected: FAIL
+
+ [right percentage(%) / events]
+ expected: FAIL
+
+ [bottom length(pt) / events]
+ expected: FAIL
+
+ [bottom length(pc) / events]
+ expected: FAIL
+
+ [bottom length(px) / events]
+ expected: FAIL
+
+ [bottom length(em) / events]
+ expected: FAIL
+
+ [bottom length(ex) / events]
+ expected: FAIL
+
+ [bottom length(mm) / events]
+ expected: FAIL
+
+ [bottom length(cm) / events]
+ expected: FAIL
+
+ [bottom length(in) / events]
+ expected: FAIL
+
+ [bottom percentage(%) / events]
+ expected: FAIL
+
+ [left length(pt) / events]
+ expected: FAIL
+
+ [left length(pc) / events]
+ expected: FAIL
+
+ [left length(px) / events]
+ expected: FAIL
+
+ [left length(em) / events]
+ expected: FAIL
+
+ [left length(ex) / events]
+ expected: FAIL
+
+ [left length(mm) / events]
+ expected: FAIL
+
+ [left length(cm) / events]
+ expected: FAIL
+
+ [left length(in) / events]
+ expected: FAIL
+
+ [left percentage(%) / events]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
index 242ba44bbca..df31829ebc5 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-002.html.ini
@@ -52,3 +52,162 @@
[background-position length(px) / events]
expected: FAIL
+
+ [background-color color(rgba) / values]
+ expected: FAIL
+
+ [border-top-width length(pt) / values]
+ expected: FAIL
+
+ [border-top-width length(pc) / values]
+ expected: FAIL
+
+ [border-top-width length(px) / values]
+ expected: FAIL
+
+ [border-top-width length(em) / values]
+ expected: FAIL
+
+ [border-top-width length(ex) / values]
+ expected: FAIL
+
+ [border-top-width length(mm) / values]
+ expected: FAIL
+
+ [border-top-width length(cm) / values]
+ expected: FAIL
+
+ [border-top-width length(in) / values]
+ expected: FAIL
+
+ [border-right-width length(pt) / values]
+ expected: FAIL
+
+ [border-right-width length(pc) / values]
+ expected: FAIL
+
+ [border-right-width length(px) / values]
+ expected: FAIL
+
+ [border-right-width length(em) / values]
+ expected: FAIL
+
+ [border-right-width length(ex) / values]
+ expected: FAIL
+
+ [border-right-width length(mm) / values]
+ expected: FAIL
+
+ [border-right-width length(cm) / values]
+ expected: FAIL
+
+ [border-right-width length(in) / values]
+ expected: FAIL
+
+ [border-bottom-width length(pt) / values]
+ expected: FAIL
+
+ [border-bottom-width length(pc) / values]
+ expected: FAIL
+
+ [border-bottom-width length(px) / values]
+ expected: FAIL
+
+ [border-bottom-width length(em) / values]
+ expected: FAIL
+
+ [border-bottom-width length(ex) / values]
+ expected: FAIL
+
+ [border-bottom-width length(mm) / values]
+ expected: FAIL
+
+ [border-bottom-width length(cm) / values]
+ expected: FAIL
+
+ [border-bottom-width length(in) / values]
+ expected: FAIL
+
+ [border-left-width length(pt) / values]
+ expected: FAIL
+
+ [border-left-width length(pc) / values]
+ expected: FAIL
+
+ [border-left-width length(px) / values]
+ expected: FAIL
+
+ [border-left-width length(em) / values]
+ expected: FAIL
+
+ [border-left-width length(ex) / values]
+ expected: FAIL
+
+ [border-left-width length(mm) / values]
+ expected: FAIL
+
+ [border-left-width length(cm) / values]
+ expected: FAIL
+
+ [border-left-width length(in) / values]
+ expected: FAIL
+
+ [border-top-color color(rgba) / values]
+ expected: FAIL
+
+ [border-right-color color(rgba) / values]
+ expected: FAIL
+
+ [border-bottom-color color(rgba) / values]
+ expected: FAIL
+
+ [border-left-color color(rgba) / values]
+ expected: FAIL
+
+ [padding-bottom length(pt) / values]
+ expected: FAIL
+
+ [padding-bottom length(pc) / values]
+ expected: FAIL
+
+ [padding-bottom length(px) / values]
+ expected: FAIL
+
+ [padding-bottom length(em) / values]
+ expected: FAIL
+
+ [padding-left length(pt) / values]
+ expected: FAIL
+
+ [padding-left length(px) / values]
+ expected: FAIL
+
+ [padding-right length(pt) / values]
+ expected: FAIL
+
+ [padding-right length(px) / values]
+ expected: FAIL
+
+ [padding-top length(pt) / values]
+ expected: FAIL
+
+ [padding-top length(px) / values]
+ expected: FAIL
+
+ [margin-bottom length(pt) / values]
+ expected: FAIL
+
+ [margin-bottom length(px) / values]
+ expected: FAIL
+
+ [margin-left length(pt) / values]
+ expected: FAIL
+
+ [margin-left length(px) / values]
+ expected: FAIL
+
+ [margin-right length(pt) / values]
+ expected: FAIL
+
+ [margin-right length(px) / values]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini
index 0734ab0db2c..2b8affa2206 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-inherit-003.html.ini
@@ -4,3 +4,90 @@
[background-position length-em(em) / values]
expected: FAIL
+
+ [border-top-width length-em(em) / events]
+ expected: FAIL
+
+ [border-right-width length-em(em) / events]
+ expected: FAIL
+
+ [border-bottom-width length-em(em) / events]
+ expected: FAIL
+
+ [border-left-width length-em(em) / events]
+ expected: FAIL
+
+ [padding-bottom length-em(em) / events]
+ expected: FAIL
+
+ [padding-left length-em(em) / events]
+ expected: FAIL
+
+ [padding-right length-em(em) / events]
+ expected: FAIL
+
+ [padding-top length-em(em) / events]
+ expected: FAIL
+
+ [margin-bottom length-em(em) / events]
+ expected: FAIL
+
+ [margin-left length-em(em) / events]
+ expected: FAIL
+
+ [margin-right length-em(em) / events]
+ expected: FAIL
+
+ [margin-top length-em(em) / events]
+ expected: FAIL
+
+ [height length-em(em) / events]
+ expected: FAIL
+
+ [width length-em(em) / events]
+ expected: FAIL
+
+ [min-height length-em(em) / events]
+ expected: FAIL
+
+ [min-width length-em(em) / events]
+ expected: FAIL
+
+ [max-height length-em(em) / events]
+ expected: FAIL
+
+ [max-width length-em(em) / events]
+ expected: FAIL
+
+ [top length-em(em) / events]
+ expected: FAIL
+
+ [right length-em(em) / events]
+ expected: FAIL
+
+ [bottom length-em(em) / events]
+ expected: FAIL
+
+ [left length-em(em) / events]
+ expected: FAIL
+
+ [line-height length-em(em) / events]
+ expected: FAIL
+
+ [letter-spacing length-em(em) / events]
+ expected: FAIL
+
+ [word-spacing length-em(em) / events]
+ expected: FAIL
+
+ [text-indent length-em(em) / events]
+ expected: FAIL
+
+ [outline-offset length-em(em) / events]
+ expected: FAIL
+
+ [outline-width length-em(em) / events]
+ expected: FAIL
+
+ [vertical-align length-em(em) / events]
+ 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 18789696fd2..00000000000
--- a/tests/wpt/metadata/css/cssom-view/MediaQueryListEvent.html.ini
+++ /dev/null
@@ -1,3 +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 72b09371038..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[elementFromPoint-001.html]
- [CSSOM View - 5 - extensions to the Document interface]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini
deleted file mode 100644
index cf67b5d03dd..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[elementFromPoint-dynamic-anon-box.html]
- [Link should be clickable after hiding a scrollbox with an anonymous table inside]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini
deleted file mode 100644
index b905fe70fcb..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[elementFromPoint-ellipsis-in-inline-box.html]
- [elementFromPoint-ellipsis-in-inline-box]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini
deleted file mode 100644
index db065588308..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[elementFromPoint-float-in-table.html]
- [float-in-div]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
index cb46964f2de..8ae9bae3500 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini
@@ -13,9 +13,3 @@
[<li>Outside 3</li>]
expected: FAIL
-
- [<li>Image Inside 2</li>]
- expected: FAIL
-
- [<li>Image Inside 1</li>]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
index ceb43099040..898f39c4330 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
@@ -17,3 +17,6 @@
[test some point of the element: bottom right corner]
expected: FAIL
+
+ [test the top of layer]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
deleted file mode 100644
index a3496a40d07..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[elementsFromPoint-invalid-cases.html]
- [The root element is the last element returned for otherwise empty queries within the viewport]
- expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini
index e8237fbb8f9..fc21a631bdd 100644
--- a/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-length/parsing.window.js.ini
@@ -77,5 +77,5 @@
[Input: "Content-Length: ". Expected: 42.]
expected: FAIL
- [Input: "Content-Length: 42,42". Expected: 42.]
+ [Input: "Content-Length: 30". Expected: 30.]
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 be7494e9c52..d77a92f76a2 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -52,6 +52,3 @@
[combined text/javascript ]
expected: FAIL
-
- [separate text/javascript x/x]
- expected: FAIL
diff --git a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
index f9de5391ad6..36a410bfecb 100644
--- a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
+++ b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini
@@ -146,3 +146,6 @@
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
+
+ [border-image sec-fetch-site - HTTPS downgrade (header not sent)]
+ 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 ba47e36f3af..736ff6130a5 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -7,6 +7,3 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
-
- [X-Content-Type-Options%3A%20%2Cnosniff]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
index b8fd22e2b81..149bcb4ff8c 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
@@ -10,6 +10,3 @@
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
expected: FAIL
-
- [load & pageshow events do not fire on contentWindow of <iframe> element created with src='']
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini
index 5aef7ce66ce..324db3d9b35 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini
@@ -10,6 +10,3 @@
[load event does not fire on window.open('about:blank?foo')]
expected: FAIL
-
- [load event does not fire on window.open('about:blank')]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini
new file mode 100644
index 00000000000..3956f08d5bb
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-load-as-html.xhtml.ini
@@ -0,0 +1,4 @@
+[javascript-url-load-as-html.xhtml]
+ expected: TIMEOUT
+ [javascript: URL navigation to a string must create a HTML document using the correct properties]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
index 4b89cb499f8..78240a2f463 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini
@@ -13,3 +13,6 @@
[0080 00FF 0100 set in href="" targeting a frame and clicked]
expected: FAIL
+
+ [D83D DE0D set in href="" targeting a frame and clicked]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
index 24d2f8ac554..27889a98fb5 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigate-to-unparseable-url.html.ini
@@ -1,3 +1,6 @@
[navigate-to-unparseable-url.html]
[location.href setter throws a SyntaxError DOMException for unparseable URLs]
expected: FAIL
+
+ [<a> tag navigate fails for unparseable URLs]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini
new file mode 100644
index 00000000000..4ecd6d9f753
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.js.ini
@@ -0,0 +1,3 @@
+[navigation-unload-cross-origin.sub.window.html]
+ [Cross-origin navigation started from unload handler must be ignored]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
deleted file mode 100644
index 7dc346632a4..00000000000
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[navigation-unload-same-origin.window.html]
- [Same-origin navigation started from unload handler must be ignored]
- expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini
new file mode 100644
index 00000000000..f49298fea1f
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini
@@ -0,0 +1,4 @@
+[pageload-image-in-popup.html]
+ expected: TIMEOUT
+ [The document for a standalone media file should have one child in the body.]
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..ba0aed26689
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,3 @@
+[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/open-close/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini
new file mode 100644
index 00000000000..4b4820d1729
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini
@@ -0,0 +1,3 @@
+[creating_browsing_context_test_01.html]
+ [first argument: absolute url]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini b/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
index 2a54f2f8814..5cdcce07c65 100644
--- a/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
+++ b/tests/wpt/metadata/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
@@ -1,2 +1,2 @@
[canvas.2d.disconnected.html]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index 841bafc6eca..26704422bbe 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,3 +1,4 @@
[iframe_sandbox_popups_escaping-2.html]
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 6f7461b9472..f9138fb999a 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
index ff0e825b9a1..6bec7a732b8 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
@@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-2.html]
type: testharness
- expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index d5fd800f09d..ff6467094b8 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,4 +1,3 @@
[iframe_sandbox_popups_nonescaping-3.html]
- expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
index 4eaef655d86..cd81ad754ac 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/multipart-formdata.window.js.ini
@@ -122,9 +122,6 @@
[multipart/form-data: single quote in value (normal form)]
expected: FAIL
- [multipart/form-data: single quote in value (formdata event)]
- expected: FAIL
-
[multipart/form-data: single quote in filename (normal form)]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
index f523b37700a..b79f98f20d2 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/text-plain.window.js.ini
@@ -175,3 +175,6 @@
[text/plain: 0x00 in name (formdata event)]
expected: FAIL
+
+ [text/plain: Basic File test (formdata event)]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/the-input-element/pattern_attribute.html.ini b/tests/wpt/metadata/html/semantics/forms/the-input-element/pattern_attribute.html.ini
new file mode 100644
index 00000000000..8a12e91e3e8
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/the-input-element/pattern_attribute.html.ini
@@ -0,0 +1,3 @@
+[pattern_attribute.html]
+ [pattern attribute support on input element]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html.ini b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html.ini
new file mode 100644
index 00000000000..1296af3eb70
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html.ini
@@ -0,0 +1,2 @@
+[selectmenu-marker-part.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html.ini b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html.ini
new file mode 100644
index 00000000000..46aeed63957
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html.ini
@@ -0,0 +1,2 @@
+[selectmenu-marker-slot.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html.ini
new file mode 100644
index 00000000000..63611fdd244
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html.ini
@@ -0,0 +1,15 @@
+[child-sequential-focus.html]
+ [dialog element with autofocus should get initial focus.]
+ expected: FAIL
+
+ [Only keyboard-focusable elements should get dialog initial focus.]
+ expected: FAIL
+
+ [Autofocus takes precedence over keyboard-focusable requirement.]
+ expected: FAIL
+
+ [Only keyboard-focusable elements should get dialog initial focus including in subtrees.]
+ expected: FAIL
+
+ [Only keyboard-focusable elements should get dialog initial focus including in nested buttons.]
+ 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 cc18f512574..73807cb3cc1 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
@@ -1,5 +1,6 @@
[htmlanchorelement_noopener.html]
type: testharness
+ expected: TIMEOUT
[Check that targeting of rel=noopener with a given name ignores an existing window with that name]
expected: NOTRUN
@@ -13,4 +14,4 @@
expected: FAIL
[Check that rel=noopener with target=_self does a normal load]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini b/tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini
index 24fd1c2bdf0..e7654ffc8df 100644
--- a/tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini
+++ b/tests/wpt/metadata/html/semantics/popovers/idlharness.tentative.html.ini
@@ -301,3 +301,27 @@
[PopoverToggleEvent interface: attribute newState]
expected: FAIL
+
+ [ToggleEvent interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ToggleEvent interface object length]
+ expected: FAIL
+
+ [ToggleEvent interface object name]
+ expected: FAIL
+
+ [ToggleEvent interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [ToggleEvent interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [ToggleEvent interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [ToggleEvent interface: attribute oldState]
+ expected: FAIL
+
+ [ToggleEvent interface: attribute newState]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini b/tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini
index 4b460fa9032..2c0e7af939f 100644
--- a/tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini
+++ b/tests/wpt/metadata/html/semantics/popovers/popover-events.tentative.html.ini
@@ -40,3 +40,6 @@
[The "beforetoggle" event is not fired for element removal]
expected: FAIL
+
+ [The "toggle" event is coalesced]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini b/tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini
index 59d720df5f8..7b3c01dfbbd 100644
--- a/tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini
+++ b/tests/wpt/metadata/html/semantics/popovers/toggleevent-interface.tentative.html.ini
@@ -133,3 +133,63 @@
[PopoverToggleEventInit properties set value 4]
expected: FAIL
+
+ [the event is an instance of ToggleEvent]
+ expected: FAIL
+
+ [oldState has default value of empty string]
+ expected: FAIL
+
+ [oldState is readonly]
+ expected: FAIL
+
+ [ToggleEventInit argument is null]
+ expected: FAIL
+
+ [ToggleEventInit argument is undefined]
+ expected: FAIL
+
+ [ToggleEventInit argument is empty dictionary]
+ expected: FAIL
+
+ [oldState set to 'sample']
+ expected: FAIL
+
+ [oldState set to undefined]
+ expected: FAIL
+
+ [oldState set to null]
+ expected: FAIL
+
+ [oldState set to false]
+ expected: FAIL
+
+ [oldState set to true]
+ expected: FAIL
+
+ [oldState set to a number]
+ expected: FAIL
+
+ [oldState set to [\]]
+ expected: FAIL
+
+ [oldState set to [1, 2, 3\]]
+ expected: FAIL
+
+ [oldState set to an object]
+ expected: FAIL
+
+ [oldState set to an object with a valueOf function]
+ expected: FAIL
+
+ [ToggleEventInit properties set value]
+ expected: FAIL
+
+ [ToggleEventInit properties set value 2]
+ expected: FAIL
+
+ [ToggleEventInit properties set value 3]
+ expected: FAIL
+
+ [ToggleEventInit properties set value 4]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
new file mode 100644
index 00000000000..fc0233f5241
--- /dev/null
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini
@@ -0,0 +1,3 @@
+[module-delayed.html]
+ [async document.write in a module]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini
new file mode 100644
index 00000000000..f9a4f08cd70
--- /dev/null
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini
@@ -0,0 +1,3 @@
+[module-tla-delayed.html]
+ [document.write in an imported module]
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index e55f8f2ce3c..7d4c3a1b06d 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -5,4 +5,4 @@
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
index 8bcf3a07de4..31bfd644df0 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
@@ -1,10 +1,9 @@
[promise-job-entry.html]
- expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
- expected: TIMEOUT
+ expected: FAIL
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@@ -16,4 +15,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/performance-timeline/tentative/include-frames-originA-B.html.ini b/tests/wpt/metadata/performance-timeline/tentative/include-frames-originA-B.html.ini
new file mode 100644
index 00000000000..dcb0f7e436e
--- /dev/null
+++ b/tests/wpt/metadata/performance-timeline/tentative/include-frames-originA-B.html.ini
@@ -0,0 +1,3 @@
+[include-frames-originA-B.html]
+ [GetEntries of a parent Frame of origin A and its child frame of origin B]
+ expected: FAIL
diff --git a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
index f7bc47e5724..d8855aa5584 100644
--- a/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
+++ b/tests/wpt/metadata/resource-timing/content-type-parsing.html.ini
@@ -19,28 +19,28 @@
expected: FAIL
[content-type 6 : text/plain;charset=gbk,text/plain;charset=windows-1252]
- expected: FAIL
+ expected: TIMEOUT
[content-type 7 : text/html;charset=gbk,text/html;x=",text/plain]
- expected: FAIL
+ expected: NOTRUN
[content-type 8 : text/plain;charset=gbk;x=foo,text/plain]
- expected: FAIL
+ expected: NOTRUN
[content-type 9 : text/html;charset=gbk,text/plain,text/html]
- expected: FAIL
+ expected: NOTRUN
[content-type 10 : text/plain,*/*]
- expected: FAIL
+ expected: NOTRUN
[content-type 11 : text/html,*/*]
- expected: FAIL
+ expected: NOTRUN
[content-type 12 : */*,text/html]
- expected: FAIL
+ expected: NOTRUN
[content-type 13 : text/plain,*/*;charset=gbk]
- expected: TIMEOUT
+ expected: NOTRUN
[content-type 14 : text/html,*/*;charset=gbk]
expected: NOTRUN
diff --git a/tests/wpt/metadata/resource-timing/response-status-code.html.ini b/tests/wpt/metadata/resource-timing/response-status-code.html.ini
index 38df5f01300..b84e3cf7b11 100644
--- a/tests/wpt/metadata/resource-timing/response-status-code.html.ini
+++ b/tests/wpt/metadata/resource-timing/response-status-code.html.ini
@@ -265,10 +265,10 @@
expected: FAIL
[This test validates the response status of resources. 88]
- expected: FAIL
+ expected: TIMEOUT
[This test validates the response status of resources. 89]
- expected: TIMEOUT
+ expected: NOTRUN
[This test validates the response status of resources. 90]
expected: NOTRUN
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
index eed03df37f3..b7537329068 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html.ini
@@ -1,4 +1,5 @@
[audiocontext-not-fully-active.html]
+ expected: TIMEOUT
[frame in navigated remote-site frame]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini
index 37dd5b66269..e86d0df261e 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini
@@ -1,5 +1,5 @@
[audiocontextoptions.html]
- expected: TIMEOUT
+ expected: CRASH
[X context = new AudioContext({sampleRate: 1}) did not throw an exception.]
expected: FAIL
diff --git a/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini b/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
index 04c2032c723..39d039a0132 100644
--- a/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
+++ b/tests/wpt/metadata/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
@@ -1,5 +1,5 @@
[cross-partition.https.tentative.html]
- expected: TIMEOUT
+ expected: CRASH
[BroadcastChannel messages aren't received from a cross-partition iframe]
expected: FAIL
diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
deleted file mode 100644
index c7946fc91b4..00000000000
--- a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[017.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, about:blank]
- expected: TIMEOUT
diff --git a/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini b/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
deleted file mode 100644
index f78f699f620..00000000000
--- a/tests/wpt/mozilla/meta/mozilla/scrollBy.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[scrollBy.html]
- [Ensure that the window.scrollBy function affects scroll position as expected]
- expected: FAIL
diff --git a/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-connection.window.js b/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-connection.window.js
index 397eadab876..084e7f73b9e 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-connection.window.js
+++ b/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-connection.window.js
@@ -15,7 +15,7 @@ promise_test(async t => {
/*config=*/ null, /*options=*/ {features: 'noopener'});
await createIndexedDBForTesting(rc1, 'test_idb', 1);
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true);
// The page is ensured to be eligible for BFCache even with open connection,
// otherwise the previous assertion will fail with PRECONDITION_FAILED.
@@ -26,6 +26,9 @@ promise_test(async t => {
// Create an IndexedDB database with higher version.
await createIndexedDBForTesting(rc2, 'test_idb_2', 2);
await rc2.historyBack();
- // The previous page receiving versionchange event should be evicted.
- await assert_not_bfcached(rc1);
+ // The previous page receiving versionchange event should be evicted with the
+ // correct reason.
+ // `kIgnoreEventAndEvict` will be reported as "Internal error".
+ // See `NotRestoredReasonToReportString()`.
+ await assertNotRestoredFromBFCache(rc1, ['Internal error']);
});
diff --git a/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-transaction.window.js b/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-transaction.window.js
index e9511d3806a..bee3d017afe 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-transaction.window.js
+++ b/tests/wpt/web-platform-tests/IndexedDB/back-forward-cache-open-transaction.window.js
@@ -37,5 +37,5 @@ promise_test(async t => {
});
});
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true);
});
diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html
index c96f6eef558..ffa1c1cbd1e 100644
--- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html
+++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-001.html
@@ -22,6 +22,7 @@
height: 100px;
background: lime;
anchor-scroll: --a;
+ outline: none;
}
body {
diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html
index e626e6b9356..849558f0f8c 100644
--- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html
+++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-002.html
@@ -22,6 +22,7 @@
height: 100px;
background: lime;
anchor-scroll: --a;
+ outline: none;
}
body {
diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html
index 39f3c362c7b..5012b52f5f9 100644
--- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html
+++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-003.html
@@ -22,6 +22,7 @@
height: 100px;
background: lime;
anchor-scroll: --a;
+ outline: none;
}
body {
diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html
index 8e189e0e7b7..84e9296a109 100644
--- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html
+++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-004.html
@@ -22,6 +22,7 @@
height: 100px;
background: lime;
anchor-scroll: --a;
+ outline: none;
}
body {
diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html
index d9e4fa86e10..6adf8961a4b 100644
--- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html
+++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-005.html
@@ -35,6 +35,7 @@ dialog {
border: 0;
padding: 0;
inset: auto;
+ outline: none;
}
dialog::backdrop {
diff --git a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html
index 5f5cd67a1d7..d2a39eae6d6 100644
--- a/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html
+++ b/tests/wpt/web-platform-tests/css/css-anchor-position/anchor-position-top-layer-006.html
@@ -34,6 +34,7 @@ dialog {
margin: 0;
border: 0;
padding: 0;
+ outline: none;
}
dialog::backdrop {
diff --git a/tests/wpt/web-platform-tests/css/css-animations/responsive/line-height.html b/tests/wpt/web-platform-tests/css/css-animations/responsive/line-height.html
new file mode 100644
index 00000000000..63097ac8081
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-animations/responsive/line-height.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Animations: line-height animations respond to style changes</title>
+<link rel="help" href="https://drafts.csswg.org/css-inline/#line-height-property">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ #target {
+ animation-name: line-height-animation;
+ animation-duration: 4s;
+ animation-timing-function: linear;
+ animation-delay: -2s;
+ animation-play-state: paused;
+ }
+ @keyframes line-height-animation {
+ from { line-height: inherit; }
+ to { line-height: 20px; }
+ }
+</style>
+</head>
+<body>
+<div id="container">
+ <div id="target"></div>
+</div>
+<script>
+'use strict';
+const container = document.getElementById('container');
+const target = document.getElementById('target');
+
+test(() => {
+ container.style.lineHeight = '100px';
+ assert_equals(getComputedStyle(target).lineHeight, '60px');
+
+ container.style.lineHeight = '50px';
+ assert_equals(getComputedStyle(target).lineHeight, '35px');
+
+ container.style.lineHeight = '100px';
+ assert_equals(getComputedStyle(target).lineHeight, '60px');
+}, 'line-height responds to inherited changes');
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html
new file mode 100644
index 00000000000..96cd60286d9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-001.tentative.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="height:400px; overflow:clip;">
+ <div style="display:table; width:100%;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:25px; background:green;"></div>
+ </div>
+ <div style="height:500px; background:green;"></div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-002.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-002.tentative.html
new file mode 100644
index 00000000000..b55d8a38906
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-002.tentative.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="height:400px; overflow:clip;">
+ <div style="display:table; width:100%;">
+ <div style="height:500px; background:green;"></div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="height:25px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-003.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-003.tentative.html
new file mode 100644
index 00000000000..794a596fdc6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/table/repeated-section/repeated-section-in-clipped-overflow-003.tentative.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1410896">
+<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="columns:4; gap:0; column-fill:auto; width:100px; height:100px; background:red;">
+ <div style="height:400px; overflow:clip;">
+ <div style="display:table; width:100%;">
+ <div style="display:table-header-group; break-inside:avoid;">
+ <div style="height:25px; background:green;"></div>
+ </div>
+ <div style="height:500px; background:green;"></div>
+ <div style="display:table-footer-group; break-inside:avoid;">
+ <div style="height:25px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html
index 51f393747c1..82c6fe33580 100644
--- a/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html
+++ b/tests/wpt/web-platform-tests/css/css-color/parsing/color-invalid-color-function.html
@@ -50,6 +50,10 @@ test_invalid_value("color", "color()"); // Empty
test_invalid_value("color", "color(banana 1 1 1)"); // Bad color space
test_invalid_value("color", "color(displayp3 1 1 1)"); // Bad Display P3 color space
test_invalid_value("color", "color(1 1 1)"); // No color space
+test_invalid_value("color", "color(srgb 1 1)", "color(srgb 1 1 0)"); // One missing component
+test_invalid_value("color", "color(srgb 1)", "color(srgb 1 0 0)"); // Two missing components
+test_invalid_value("color", "color(srgb)", "color(srgb 0 0 0)"); // All components missing
+
test_invalid_value("color", "color(srgb 1 1 1 1)"); // Too many parameters
test_invalid_value("color", "color(srgb 1 1 1 1 1)"); // Way too many parameters
test_invalid_value("color", "color(srgb 1 eggs 1)"); // Bad parameters
diff --git a/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html b/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html
index 7a11d45c313..064e73bb25c 100644
--- a/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html
+++ b/tests/wpt/web-platform-tests/css/css-contain/container-queries/custom-property-style-queries.html
@@ -281,6 +281,9 @@
@container style(--reg-length: 10px) {
#reg-px { color: green; }
}
+ @container style(--reg-length: initial) {
+ #reg-px-initial { color: green; }
+ }
#reg-container-font-relative {
--reg-length: 10px;
@@ -303,10 +306,21 @@
@container style(--reg-length: 50cqi) {
#reg-container-relative { color: green; }
}
+
+ #reg-container-initial {
+ --reg-length: 10px;
+ }
+ @container style(--reg-length: 10px) {
+ #reg-initial-value { color: green; }
+ }
+ @container style(--reg-length: initial) {
+ #reg-initial-keyword { color: green; }
+ }
</style>
<div id="registered">
<div id="reg-container-px">
<div id="reg-px"></div>
+ <div id="reg-px-initial"></div>
</div>
<div id="reg-container-font-relative">
<div id="reg-font-relative"></div>
@@ -317,6 +331,10 @@
<div id="reg-container-container-relative">
<div id="reg-container-relative"></div>
</div>
+ <div id="reg-container-initial">
+ <div id="reg-initial-value"></div>
+ <div id="reg-initial-keyword"></div>
+ </div>
</div>
<script>
test(() => {
@@ -324,6 +342,10 @@
}, "Match registered <length> custom property with px.");
test(() => {
+ assert_equals(getComputedStyle(document.querySelector("#reg-px-initial")).color, green);
+ }, "Match registered <length> custom property with px via initial keyword.");
+
+ test(() => {
assert_equals(getComputedStyle(document.querySelector("#reg-font-relative")).color, green);
}, "Match registered <length> custom property with em in query.");
@@ -334,4 +356,12 @@
test(() => {
assert_equals(getComputedStyle(document.querySelector("#reg-container-relative")).color, green);
}, "Match registered <length> custom property with cqi unit.");
+
+ test(() => {
+ assert_equals(getComputedStyle(document.querySelector("#reg-initial-value")).color, green);
+ }, "Match registered <length> custom property with initial value.");
+
+ test(() => {
+ assert_equals(getComputedStyle(document.querySelector("#reg-initial-keyword")).color, green);
+ }, "Match registered <length> custom property with initial value via initial keyword.");
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html
index b8685954ff8..7fb1f20b7ec 100644
--- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html
+++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-with-top-layer-003.html
@@ -12,6 +12,7 @@
<style>
.box { width: 100px; height: 100px; border: 1px solid black; }
.hidden { content-visibility: hidden }
+#dialog { outline: none; }
</style>
<div id=container class=box>
diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html
index 1a3cad32783..eadc5f65d1e 100644
--- a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-with-top-layer-ref.html
@@ -4,6 +4,7 @@
<style>
.box { width: 100px; height: 100px; border: 1px solid black; }
+dialog { outline: none; }
</style>
<div id=container class=box>
diff --git a/tests/wpt/web-platform-tests/css/css-nesting/cssom.html b/tests/wpt/web-platform-tests/css/css-nesting/cssom.html
index 987c3110367..b7948f81bc1 100644
--- a/tests/wpt/web-platform-tests/css/css-nesting/cssom.html
+++ b/tests/wpt/web-platform-tests/css/css-nesting/cssom.html
@@ -142,4 +142,16 @@
.c div.b &, div & { color: blue; }
}`, 'one rule is kept unchanged, the other is changed');
});
+
+ // Rules that are dropped in forgiving parsing but that contain &,
+ // must still be serialized out as they were.
+ test(() => {
+ const text = '.a { :is(!& .foo, .b) { color: green; } }';
+ document.getElementById('ss').innerHTML = text;
+ let [ss] = document.styleSheets;
+ assert_equals(ss.cssRules[0].cssText,
+`.a {
+ :is(!& .foo, .b) { color: green; }
+}`, 'invalid rule containing ampersand is kept in serialization');
+ });
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/crashtests/locked-display-transform-crash.html b/tests/wpt/web-platform-tests/css/css-transforms/crashtests/locked-display-transform-crash.html
new file mode 100644
index 00000000000..0d8b69b079c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/crashtests/locked-display-transform-crash.html
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML>
+<html class=test-wait>
+<style type="text/css">
+</style>
+<div id="container">
+ <div id="div" style="transform:translateX(100px);"></div>
+</div>
+<script>
+ function runTest() {
+ document.getElementById('div').style = 'transform:translateX(200px)';
+ var forceLayout = document.body.offsetWidth;
+ document.getElementById('container').style = 'content-visibility: hidden;';
+ requestAnimationFrame(function() {
+ requestAnimationFrame(function() {
+ document.documentElement.classList.remove('test-wait');
+ });
+ });
+ }
+ onload = runTest;
+</script>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html
index 2ff92b22c21..b642c0823a2 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/append.tentative.html
@@ -66,4 +66,9 @@ test(t => {
assert_throws_js(TypeError, () => styleMap.append('transition-duration', CSS.s(1)));
}, 'Appending to a list containing a variable reference should throw');
+test(t => {
+ let styleMap = createDeclaredStyleMap(t, 'transition: var(--a)');
+ assert_throws_js(TypeError, () => styleMap.append('transition-duration', CSS.s(1)));
+}, 'Appending to a longhand list containing a variable reference should throw');
+
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html b/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html
index e84167a2489..0473209fa9d 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-new.html
@@ -18,6 +18,8 @@
view-transition-name: dialog;
contain: layout;
+
+ outline: none;
}
#target::backdrop {
diff --git a/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html b/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html
index 672295cd3bd..3634f65d8c9 100644
--- a/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html
+++ b/tests/wpt/web-platform-tests/css/css-view-transitions/dialog-in-top-layer-during-transition-old.html
@@ -18,6 +18,8 @@
view-transition-name: dialog;
contain: layout;
+
+ outline: none;
}
#target::backdrop {
diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html b/tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html
index cbe1dee6847..f3297175741 100644
--- a/tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html
+++ b/tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html
@@ -44,7 +44,7 @@ div:nth-of-type(2) {
width: 5ch;
}
div:nth-of-type(1) {
- background: orange;
+ background: blue;
height: 5ch;
display: inline-block; /* shrinkwrap */
}
diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js b/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js
index de23b6f84ff..53482879ea4 100644
--- a/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js
+++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js
@@ -1,15 +1,41 @@
-async function waitForScrollendEvent(test, target, timeoutMs = 500) {
+async function waitForEvent(eventName, test, target, timeoutMs = 500) {
return new Promise((resolve, reject) => {
const timeoutCallback = test.step_timeout(() => {
- reject(`No Scrollend event received for target ${target}`);
+ reject(`No ${eventName} event received for target ${target}`);
}, timeoutMs);
- target.addEventListener('scrollend', (evt) => {
+ target.addEventListener(eventName, (evt) => {
clearTimeout(timeoutCallback);
resolve(evt);
}, { once: true });
});
}
+async function waitForScrollendEvent(test, target, timeoutMs = 500) {
+ return waitForEvent("scrollend", test, target, timeoutMs);
+}
+
+async function waitForPointercancelEvent(test, target, timeoutMs = 500) {
+ return waitForEvent("pointercancel", test, target, timeoutMs);
+}
+
+async function createScrollendPromiseForTarget(test,
+ target_div,
+ timeoutMs = 500) {
+ return waitForScrollendEvent(test, target_div, timeoutMs).then(evt => {
+ assert_false(evt.cancelable, 'Event is not cancelable');
+ assert_false(evt.bubbles, 'Event targeting element does not bubble');
+ });
+}
+
+function verifyNoScrollendOnDocument(test) {
+ const callback =
+ test.unreached_func("window got unexpected scrollend event.");
+ window.addEventListener('scrollend', callback);
+ test.add_cleanup(() => {
+ window.removeEventListener('scrollend', callback);
+ });
+}
+
async function verifyScrollStopped(test, target_div) {
const unscaled_pause_time_in_ms = 100;
const x = target_div.scrollLeft;
@@ -107,6 +133,10 @@ function waitForAnimationEnd(getValue) {
}
// Scrolls in target according to move_path with pauses in between
+// The move_path should contains coordinates that are within target boundaries.
+// Keep in mind that 0,0 is the center of the target element and is also
+// the pointerDown position.
+// pointerUp() is fired after sequence of moves.
function touchScrollInTargetSequentiallyWithPause(target, move_path, pause_time_in_ms = 100) {
const test_driver_actions = new test_driver.Actions()
.addPointer("pointer1", "touch")
@@ -125,7 +155,7 @@ function touchScrollInTargetSequentiallyWithPause(target, move_path, pause_time_
y += step_y;
test_driver_actions.pointerMove(x, y, {origin: target});
}
- test_driver_actions.pause(pause_time_in_ms);
+ test_driver_actions.pause(pause_time_in_ms); // To prevent inertial scroll
}
return test_driver_actions.pointerUp().send();
diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html
index 77bf029ced5..8c785c2a975 100644
--- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html
+++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-after-sequence-of-scrolls.tentative.html
@@ -28,36 +28,47 @@
<script>
const target_div = document.getElementById('targetDiv');
-let scrollend_arrived = false;
-let scrollend_event_count = 0;
-
-function onScrollEnd(event) {
- assert_false(event.cancelable);
- assert_false(event.bubbles);
- scrollend_arrived = true;
- scrollend_event_count += 1;
-}
function runTest() {
promise_test (async (t) => {
- // Make sure that no scrollend event is sent to document.
- document.addEventListener("scrollend",
- t.unreached_func("document got unexpected scrollend event."));
- await waitForCompositorCommit();
+ // Skip the test on a Mac as they do not support touch screens.
+ const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;
+ if (isMac)
+ return;
+
+ verifyNoScrollendOnDocument(t);
+ await waitForCompositorReady();
+
+ let scrollend_count = 0;
+ const scrollend_listener = () => { scrollend_count += 1; };
+ target_div.addEventListener("scrollend", scrollend_listener);
+ t.add_cleanup(() => { target_div.removeEventListener('scrollend', scrollend_listener); });
+
+ const pointercancel_listener = () => {
+ assert_equals(scrollend_count, 0, 'scrollend should happen after pointercancel.');
+ };
+ target_div.addEventListener("pointercancel", pointercancel_listener);
+ t.add_cleanup(() => { target_div.removeEventListener('pointercancel', pointercancel_listener); });
+
+ // Because we have several pointer moves, we choose bigger timeout.
+ const timeoutMs = 1000;
+ const targetPointercancelPromise = waitForPointercancelEvent(t, target_div, timeoutMs);
+ const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div, timeoutMs);
// Scroll down & up & down on target div and wait for the target_div to get scrollend event.
- target_div.addEventListener("scrollend", onScrollEnd);
const move_path = [
- { x: 0, y: -300}, // down
- { x: 0, y: -100}, // up
- { x: 0, y: -400}, // down
- { x: 0, y: -200}, // up
+ { x: 0, y: -80 }, // Scroll down
+ { x: 0, y: -40 }, // Scroll up
+ { x: 0, y: -80 }, // Scroll down
];
- await touchScrollInTargetSequentiallyWithPause(target_div, move_path, 150);
+ await touchScrollInTargetSequentiallyWithPause(target_div, move_path);
- await waitFor(() => {return scrollend_arrived;},
- 'target_div did not receive scrollend event after sequence of scrolls on target.');
- assert_equals(scrollend_event_count, 1);
+ // Because we start scrolling after pointerdown, there is no pointerup, instead the target
+ // will receive a pointercancel, so we wait for pointercancel, and then continue.
+ await targetPointercancelPromise;
+ await targetScrollendPromise;
+ await verifyScrollStopped(t, target_div);
+ assert_equals(scrollend_count, 1, 'Only one scrollend event should be fired');
}, "Move down, up and down again, receive scrollend event only once");
}
</script>
diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html
index a51069bc088..f3791134204 100644
--- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html
+++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-fired-for-mandatory-snap-point-after-load.html
@@ -70,15 +70,8 @@
function runTests() {
const root_div = document.getElementById("root");
- async function createScrollendPromise(test) {
- return waitForScrollendEvent(test, root_div).then(evt => {
- assert_false(evt.cancelable, 'Event is not cancelable');
- assert_false(evt.bubbles, 'Event targeting element does not bubble');
- });
- }
-
promise_test(async (t) => {
- const targetScrollendPromise = createScrollendPromise(t);
+ const targetScrollendPromise = createScrollendPromiseForTarget(t, root_div);
await waitForNextFrame();
root_div.classList.remove("hidden");
diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html
index d51472fcb51..6a699b6f087 100644
--- a/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html
+++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scrollend-event-for-user-scroll.html
@@ -39,19 +39,6 @@ async function resetTargetScrollState(test) {
}
}
-async function verifyNoScrollendOnDocument(test) {
- const callback =
- test.unreached_func("window got unexpected scrollend event.");
- window.addEventListener('scrollend', callback);
-}
-
-async function createScrollendPromise(test, timeoutMs = 500) {
- return waitForScrollendEvent(test, target_div, timeoutMs).then(evt => {
- assert_false(evt.cancelable, 'Event is not cancelable');
- assert_false(evt.bubbles, 'Event targeting element does not bubble');
- });
-}
-
function runTest() {
promise_test(async (t) => {
// Skip the test on a Mac as they do not support touch screens.
@@ -63,7 +50,7 @@ function runTest() {
await waitForCompositorReady();
const timeout = 1000; // Because we have two pauses we need longer timeout
- const targetScrollendPromise = createScrollendPromise(t, timeout);
+ const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div, timeout);
verifyNoScrollendOnDocument(t);
let scrollend_count = 0;
@@ -108,7 +95,7 @@ function runTest() {
await resetTargetScrollState(t);
await waitForCompositorReady();
- const targetScrollendPromise = createScrollendPromise(t);
+ const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div);
verifyNoScrollendOnDocument(t);
const bounds = target_div.getBoundingClientRect();
@@ -139,7 +126,7 @@ function runTest() {
await resetTargetScrollState(t);
await waitForCompositorReady();
- const targetScrollendPromise = createScrollendPromise(t);
+ const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div);
verifyNoScrollendOnDocument(t);
const bounds = target_div.getBoundingClientRect();
@@ -165,7 +152,7 @@ function runTest() {
await resetTargetScrollState(t);
await waitForCompositorReady();
- const targetScrollendPromise = createScrollendPromise(t);
+ const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div);
verifyNoScrollendOnDocument(t);
const x = 0;
@@ -188,7 +175,7 @@ function runTest() {
await waitForCompositorReady();
verifyNoScrollendOnDocument(t);
- const targetScrollendPromise = createScrollendPromise(t);
+ const targetScrollendPromise = createScrollendPromiseForTarget(t, target_div);
target_div.focus();
window.test_driver.send_keys(target_div, '\ue015');
diff --git a/tests/wpt/web-platform-tests/editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html b/tests/wpt/web-platform-tests/editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html
new file mode 100644
index 00000000000..e068f9bcd22
--- /dev/null
+++ b/tests/wpt/web-platform-tests/editing/other/delete-in-last-definition-list-item-when-parent-list-is-editing-host.html
@@ -0,0 +1,88 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="timeout" content="long">
+<meta name="variant" content="?action=Backspace">
+<meta name="variant" content="?action=Delete">
+<title>Delete in last list item should not delete parent list if it's editing host</title>
+<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="/resources/testdriver-actions.js"></script>
+<script src="../include/editor-test-utils.js"></script>
+<script>
+"use strict";
+
+const params = new URLSearchParams(location.search.substring(1));
+const backspace = params.get("action") == "Backspace";
+
+addEventListener("load", () => {
+ document.body.innerHTML ="<dl contenteditable></dl>";
+ const editingHost = document.querySelector("dl[contenteditable]");
+ const utils = new EditorTestUtils(editingHost);
+
+ function addPromiseTest(aTest) {
+ promise_test(async () => {
+ editingHost.focus();
+ utils.setupEditingHost(aTest.innerHTML);
+ await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey());
+ utils.normalizeStyleAttributeValues();
+ if (Array.isArray(aTest.expectedResult)) {
+ assert_in_array(editingHost.innerHTML, aTest.expectedResult);
+ } else {
+ assert_equals(editingHost.innerHTML, aTest.expectedResult);
+ }
+ assert_equals(
+ document.body.childNodes.length,
+ 1,
+ `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")`
+ );
+ assert_equals(
+ document.body.firstChild,
+ editingHost,
+ `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")`
+ );
+ }, `${backspace ? "Backspace" : "Delete"} in "<dl contenteditable>${aTest.innerHTML}</dl>"`);
+ }
+
+ addPromiseTest({
+ innerHTML: "<dt>{}</dt>",
+ expectedResult: ["<dt></dt>", "<dt><br></dt>"],
+ });
+ addPromiseTest({
+ innerHTML: "<dd>{}</dd>",
+ expectedResult: ["<dd></dd>", "<dd><br></dd>"],
+ });
+ addPromiseTest({
+ innerHTML: "<dd><ul><li>{}</li></ul></dd>",
+ expectedResult: ["<dd></dd>", "<dd><br></dd>"],
+ });
+ addPromiseTest({
+ innerHTML: "<dd><ol><li>{}</li></ol></dd>",
+ expectedResult: ["<dd></dd>", "<dd><br></dd>"],
+ });
+ // If only sub-list in the editing host list element, the sub-list should be
+ // replaced with a list item.
+ addPromiseTest({
+ innerHTML: "<ul><li>{}</li></ul>",
+ expectedResult: ["<dd></dd>", "<dd><br></dd>"],
+ });
+ addPromiseTest({
+ innerHTML: "<ol><li>{}</li></ol>",
+ expectedResult: ["<dd></dd>", "<dd><br></dd>"],
+ });
+ addPromiseTest({
+ innerHTML: "<dl><dt>{}</dt></dl>",
+ expectedResult: ["<dd></dd>", "<dd><br></dd>"],
+ });
+ addPromiseTest({
+ innerHTML: "<dl><dd>{}</dd></dl>",
+ expectedResult: ["<dd></dd>", "<dd><br></dd>"],
+ });
+}, {once:true});
+</script>
+</head>
+<body></body>
+</html>
diff --git a/tests/wpt/web-platform-tests/editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html b/tests/wpt/web-platform-tests/editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html
new file mode 100644
index 00000000000..7d159439353
--- /dev/null
+++ b/tests/wpt/web-platform-tests/editing/other/delete-in-last-list-item-when-parent-list-is-editing-host.html
@@ -0,0 +1,87 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="timeout" content="long">
+<meta name="variant" content="?list=ul&action=Backspace">
+<meta name="variant" content="?list=ul&action=Delete">
+<meta name="variant" content="?list=ol&action=Backspace">
+<meta name="variant" content="?list=ol&action=Delete">
+<title>Delete in last list item should not delete parent list if it's editing host</title>
+<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="/resources/testdriver-actions.js"></script>
+<script src="../include/editor-test-utils.js"></script>
+<script>
+"use strict";
+
+const params = new URLSearchParams(location.search.substring(1));
+const backspace = params.get("action") == "Backspace";
+const list = params.get("list");
+
+addEventListener("load", () => {
+ document.body.innerHTML =`<${list} contenteditable></${list}>`;
+ const editingHost = document.querySelector("[contenteditable]");
+ const utils = new EditorTestUtils(editingHost);
+
+ function addPromiseTest(aTest) {
+ promise_test(async () => {
+ editingHost.focus();
+ utils.setupEditingHost(aTest.innerHTML);
+ await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey());
+ utils.normalizeStyleAttributeValues();
+ if (Array.isArray(aTest.expectedResult)) {
+ assert_in_array(editingHost.innerHTML, aTest.expectedResult);
+ } else {
+ assert_equals(editingHost.innerHTML, aTest.expectedResult);
+ }
+ assert_equals(
+ document.body.childNodes.length,
+ 1,
+ `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")`
+ );
+ assert_equals(
+ document.body.firstChild,
+ editingHost,
+ `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")`
+ );
+ }, `${backspace ? "Backspace" : "Delete"} in "<${list} contenteditable>${aTest.innerHTML}</${list}>"`);
+ }
+
+ addPromiseTest({
+ innerHTML: "<li>{}</li>",
+ expectedResult: ["<li></li>", "<li><br></li>"],
+ });
+ addPromiseTest({
+ innerHTML: "<li><ul><li>{}</li></ul></li>",
+ expectedResult: ["<li></li>", "<li><br></li>"],
+ });
+ addPromiseTest({
+ innerHTML: "<li><ol><li>{}</li></ol></li>",
+ expectedResult: ["<li></li>", "<li><br></li>"],
+ });
+ // If only sub-list in the editing host list element, the sub-list should be
+ // replaced with a list item.
+ addPromiseTest({
+ innerHTML: "<ul><li>{}</li></ul>",
+ expectedResult: ["<li></li>", "<li><br></li>"],
+ });
+ addPromiseTest({
+ innerHTML: "<ol><li>{}</li></ol>",
+ expectedResult: ["<li></li>", "<li><br></li>"],
+ });
+ addPromiseTest({
+ innerHTML: "<dl><dt>{}</dt></dl>",
+ expectedResult: ["<li></li>", "<li><br></li>"],
+ });
+ addPromiseTest({
+ innerHTML: "<dl><dd>{}</dd></dl>",
+ expectedResult: ["<li></li>", "<li><br></li>"],
+ });
+}, {once:true});
+</script>
+</head>
+<body></body>
+</html>
diff --git a/tests/wpt/web-platform-tests/editing/run/backcolor.html b/tests/wpt/web-platform-tests/editing/run/backcolor.html
index 5911de309d0..5a4c35c34e5 100644
--- a/tests/wpt/web-platform-tests/editing/run/backcolor.html
+++ b/tests/wpt/web-platform-tests/editing/run/backcolor.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>backcolor - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/bold.html b/tests/wpt/web-platform-tests/editing/run/bold.html
index 390d6810d85..30981f66589 100644
--- a/tests/wpt/web-platform-tests/editing/run/bold.html
+++ b/tests/wpt/web-platform-tests/editing/run/bold.html
@@ -8,8 +8,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>bold - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -25,8 +23,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -48,10 +44,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/createlink.html b/tests/wpt/web-platform-tests/editing/run/createlink.html
index b67357e684a..21c190703ae 100644
--- a/tests/wpt/web-platform-tests/editing/run/createlink.html
+++ b/tests/wpt/web-platform-tests/editing/run/createlink.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>createlink - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -44,10 +40,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html b/tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html
index b765bc4b977..88f44589872 100644
--- a/tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html
+++ b/tests/wpt/web-platform-tests/editing/run/delete-list-items-in-table-cell.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>delete list items in table cells - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -44,10 +40,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/delete.html b/tests/wpt/web-platform-tests/editing/run/delete.html
index 2d11f6af26b..6a01ffd0441 100644
--- a/tests/wpt/web-platform-tests/editing/run/delete.html
+++ b/tests/wpt/web-platform-tests/editing/run/delete.html
@@ -12,8 +12,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>delete - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -29,8 +27,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -51,11 +47,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/fontname.html b/tests/wpt/web-platform-tests/editing/run/fontname.html
index 53800c540c4..b9bb3b19f85 100644
--- a/tests/wpt/web-platform-tests/editing/run/fontname.html
+++ b/tests/wpt/web-platform-tests/editing/run/fontname.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>fontname - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/fontsize.html b/tests/wpt/web-platform-tests/editing/run/fontsize.html
index 66ae99ebc10..830a347346e 100644
--- a/tests/wpt/web-platform-tests/editing/run/fontsize.html
+++ b/tests/wpt/web-platform-tests/editing/run/fontsize.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>fontsize - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/forecolor.html b/tests/wpt/web-platform-tests/editing/run/forecolor.html
index 8594e061c14..2ab5736b42c 100644
--- a/tests/wpt/web-platform-tests/editing/run/forecolor.html
+++ b/tests/wpt/web-platform-tests/editing/run/forecolor.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>forecolor - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/formatblock.html b/tests/wpt/web-platform-tests/editing/run/formatblock.html
index 5c97c08e732..f15f2c03dac 100644
--- a/tests/wpt/web-platform-tests/editing/run/formatblock.html
+++ b/tests/wpt/web-platform-tests/editing/run/formatblock.html
@@ -9,8 +9,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>formatblock - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -26,8 +24,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -48,11 +44,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/forwarddelete.html b/tests/wpt/web-platform-tests/editing/run/forwarddelete.html
index e17190053ac..570da5a183c 100644
--- a/tests/wpt/web-platform-tests/editing/run/forwarddelete.html
+++ b/tests/wpt/web-platform-tests/editing/run/forwarddelete.html
@@ -11,8 +11,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>forwarddelete - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -28,8 +26,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -50,11 +46,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/hilitecolor.html b/tests/wpt/web-platform-tests/editing/run/hilitecolor.html
index cd9e5528e56..1d123b1c10f 100644
--- a/tests/wpt/web-platform-tests/editing/run/hilitecolor.html
+++ b/tests/wpt/web-platform-tests/editing/run/hilitecolor.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>hilitecolor - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -44,10 +40,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/indent.html b/tests/wpt/web-platform-tests/editing/run/indent.html
index 13e98f5ea64..a4f2de86c1a 100644
--- a/tests/wpt/web-platform-tests/editing/run/indent.html
+++ b/tests/wpt/web-platform-tests/editing/run/indent.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>indent - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html b/tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html
index 8d08f8c3eb9..2d176b567bf 100644
--- a/tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html
+++ b/tests/wpt/web-platform-tests/editing/run/insert-list-items-in-table-cell.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>Insert list items in table cells - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html b/tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html
index 6e3e5490a60..7c570fbcfde 100644
--- a/tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html
+++ b/tests/wpt/web-platform-tests/editing/run/inserthorizontalrule.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>inserthorizontalrule - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/inserthtml.html b/tests/wpt/web-platform-tests/editing/run/inserthtml.html
index f83102e6a9b..f27df67b72b 100644
--- a/tests/wpt/web-platform-tests/editing/run/inserthtml.html
+++ b/tests/wpt/web-platform-tests/editing/run/inserthtml.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>inserthtml - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/insertimage.html b/tests/wpt/web-platform-tests/editing/run/insertimage.html
index 7a1f7b92266..9987b98b7de 100644
--- a/tests/wpt/web-platform-tests/editing/run/insertimage.html
+++ b/tests/wpt/web-platform-tests/editing/run/insertimage.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>insertimage - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/insertlinebreak.html b/tests/wpt/web-platform-tests/editing/run/insertlinebreak.html
index ddab665084b..4ca86b8b5f8 100644
--- a/tests/wpt/web-platform-tests/editing/run/insertlinebreak.html
+++ b/tests/wpt/web-platform-tests/editing/run/insertlinebreak.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>insertlinebreak - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html b/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html
index 68772355c24..06662df7610 100644
--- a/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html
+++ b/tests/wpt/web-platform-tests/editing/run/insertorderedlist.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>insertorderedlist - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/insertparagraph.html b/tests/wpt/web-platform-tests/editing/run/insertparagraph.html
index 173c5aea40b..56b5335ea7e 100644
--- a/tests/wpt/web-platform-tests/editing/run/insertparagraph.html
+++ b/tests/wpt/web-platform-tests/editing/run/insertparagraph.html
@@ -11,8 +11,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>insertparagraph - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -28,8 +26,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -50,11 +46,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/inserttext.html b/tests/wpt/web-platform-tests/editing/run/inserttext.html
index a01293fcae0..d0e9d7d625c 100644
--- a/tests/wpt/web-platform-tests/editing/run/inserttext.html
+++ b/tests/wpt/web-platform-tests/editing/run/inserttext.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>inserttext - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html b/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html
index b1f636b1095..8df99f8dccd 100644
--- a/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html
+++ b/tests/wpt/web-platform-tests/editing/run/insertunorderedlist.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>insertunorderedlist - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/italic.html b/tests/wpt/web-platform-tests/editing/run/italic.html
index 6185d553d02..d31ecf1c162 100644
--- a/tests/wpt/web-platform-tests/editing/run/italic.html
+++ b/tests/wpt/web-platform-tests/editing/run/italic.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>italic - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/justifycenter.html b/tests/wpt/web-platform-tests/editing/run/justifycenter.html
index 4902a302cca..63f2d56255c 100644
--- a/tests/wpt/web-platform-tests/editing/run/justifycenter.html
+++ b/tests/wpt/web-platform-tests/editing/run/justifycenter.html
@@ -11,8 +11,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>justifycenter - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -28,8 +26,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -50,11 +46,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/justifyfull.html b/tests/wpt/web-platform-tests/editing/run/justifyfull.html
index c11befaf893..202beea8855 100644
--- a/tests/wpt/web-platform-tests/editing/run/justifyfull.html
+++ b/tests/wpt/web-platform-tests/editing/run/justifyfull.html
@@ -9,8 +9,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>justifyfull - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -26,8 +24,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -48,11 +44,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/justifyleft.html b/tests/wpt/web-platform-tests/editing/run/justifyleft.html
index f6b28185389..31772248ca8 100644
--- a/tests/wpt/web-platform-tests/editing/run/justifyleft.html
+++ b/tests/wpt/web-platform-tests/editing/run/justifyleft.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>justifyleft - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/justifyright.html b/tests/wpt/web-platform-tests/editing/run/justifyright.html
index edd30b7f5f0..a8b5bcf5ea9 100644
--- a/tests/wpt/web-platform-tests/editing/run/justifyright.html
+++ b/tests/wpt/web-platform-tests/editing/run/justifyright.html
@@ -9,8 +9,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>justifyright - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -26,8 +24,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -48,11 +44,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/misc.html b/tests/wpt/web-platform-tests/editing/run/misc.html
index 5bf52682292..2bb754277a5 100644
--- a/tests/wpt/web-platform-tests/editing/run/misc.html
+++ b/tests/wpt/web-platform-tests/editing/run/misc.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>misc - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/multitest.html b/tests/wpt/web-platform-tests/editing/run/multitest.html
index 813b9edc034..4213488d77a 100644
--- a/tests/wpt/web-platform-tests/editing/run/multitest.html
+++ b/tests/wpt/web-platform-tests/editing/run/multitest.html
@@ -14,8 +14,6 @@
<meta name="timeout" content="long">
<title>multitest - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -31,8 +29,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -53,11 +49,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/outdent.html b/tests/wpt/web-platform-tests/editing/run/outdent.html
index f1f9fb491aa..04240d9f0ff 100644
--- a/tests/wpt/web-platform-tests/editing/run/outdent.html
+++ b/tests/wpt/web-platform-tests/editing/run/outdent.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>outdent - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/removeformat.html b/tests/wpt/web-platform-tests/editing/run/removeformat.html
index 0c38ff915fb..3cc695278ec 100644
--- a/tests/wpt/web-platform-tests/editing/run/removeformat.html
+++ b/tests/wpt/web-platform-tests/editing/run/removeformat.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>removeformat - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/strikethrough.html b/tests/wpt/web-platform-tests/editing/run/strikethrough.html
index cb06c10d0c2..d731d3eb898 100644
--- a/tests/wpt/web-platform-tests/editing/run/strikethrough.html
+++ b/tests/wpt/web-platform-tests/editing/run/strikethrough.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>strikethrough - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/subscript.html b/tests/wpt/web-platform-tests/editing/run/subscript.html
index e0071d7a080..24fb79932f2 100644
--- a/tests/wpt/web-platform-tests/editing/run/subscript.html
+++ b/tests/wpt/web-platform-tests/editing/run/subscript.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>subscript - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/superscript.html b/tests/wpt/web-platform-tests/editing/run/superscript.html
index 0c3519b288e..de28a9c5365 100644
--- a/tests/wpt/web-platform-tests/editing/run/superscript.html
+++ b/tests/wpt/web-platform-tests/editing/run/superscript.html
@@ -4,8 +4,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>superscript - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -21,8 +19,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -43,11 +39,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/underline.html b/tests/wpt/web-platform-tests/editing/run/underline.html
index f53add984bd..880b3e20323 100644
--- a/tests/wpt/web-platform-tests/editing/run/underline.html
+++ b/tests/wpt/web-platform-tests/editing/run/underline.html
@@ -7,8 +7,6 @@
<link rel=stylesheet href=../include/reset.css>
<title>underline - HTML editing conformance tests</title>
-<p id=timing></p>
-
<div id=log></div>
<div id=test-container></div>
@@ -24,8 +22,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -46,11 +42,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/editing/run/unlink.html b/tests/wpt/web-platform-tests/editing/run/unlink.html
index 5a623b4a09f..331792f9240 100644
--- a/tests/wpt/web-platform-tests/editing/run/unlink.html
+++ b/tests/wpt/web-platform-tests/editing/run/unlink.html
@@ -8,7 +8,6 @@
font-weight: bold;
}
</style>
-<p id=timing></p>
<div id=log></div>
@@ -25,8 +24,6 @@
"use strict";
(function() {
- var startTime = Date.now();
-
// Make document.body.innerHTML more tidy by removing unnecessary things.
[].forEach.call(document.querySelectorAll("script"), function(node) {
node.parentNode.removeChild(node);
@@ -47,11 +44,5 @@
document.getElementById("test-container").parentNode
.removeChild(document.getElementById("test-container"));
-
- var elapsed = Math.round(Date.now() - startTime)/1000;
- document.getElementById("timing").textContent =
- "Time elapsed: " + Math.floor(elapsed/60) + ":"
- + ((elapsed % 60) < 10 ? "0" : "")
- + (elapsed % 60).toFixed(3) + " min.";
})();
</script>
diff --git a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html
index 4641b13a45b..0a67f5b26d2 100644
--- a/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html
+++ b/tests/wpt/web-platform-tests/file-system-access/local_FileSystemFileHandle-create-sync-access-handle-manual.https.tentative.html
@@ -9,9 +9,3 @@
<script src="resources/local-fs-test-helpers.js"></script>
<script src="resources/messaging-helpers.js"></script>
<script src="../fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js"></script>
-
-<script>
- //This variable allows the test to differentiate between local and sandboxed
- //file systems, since createSyncAccessHandle() behavior is different each one.
- const file_system_type = "local";
-</script>
diff --git a/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js b/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js
index 54961ae54bc..4bb9793085a 100644
--- a/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js
+++ b/tests/wpt/web-platform-tests/file-system-access/resources/local-fs-test-helpers.js
@@ -7,6 +7,10 @@
// fs/resources/sandboxed-fs-test-helpers.js, where that version uses the
// sandboxed file system instead.
+function getFileSystemType() {
+ return 'local';
+}
+
const directory_promise = (async () => {
await new Promise(resolve => {
window.addEventListener('DOMContentLoaded', resolve);
diff --git a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js
index aa4d91d15da..6e20b57cb7b 100644
--- a/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js
+++ b/tests/wpt/web-platform-tests/fs/FileSystemFileHandle-create-sync-access-handle.https.tentative.window.js
@@ -2,7 +2,3 @@
// META: script=resources/sandboxed-fs-test-helpers.js
// META: script=resources/messaging-helpers.js
// META: script=script-tests/FileSystemFileHandle-create-sync-access-handle.js
-
-// This variable allows the test to differentiate between local and sandboxed
-// file systems, since createSyncAccessHandle() behavior is different each one.
-const file_system_type = 'sandboxed';
diff --git a/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js b/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js
index 9c93212f49c..400b2c507b7 100644
--- a/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js
+++ b/tests/wpt/web-platform-tests/fs/resources/sandboxed-fs-test-helpers.js
@@ -7,6 +7,10 @@
// file-system-access/local-fs-test-helpers.js, where that version uses the
// local file system instead.
+function getFileSystemType() {
+ return 'sandboxed';
+}
+
async function cleanupSandboxedFileSystem() {
const dir = await navigator.storage.getDirectory();
for await (let entry of dir.values())
diff --git a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js
index 302d4a5a7af..b9eafaf0d8c 100644
--- a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js
+++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemFileHandle-create-sync-access-handle.js
@@ -5,10 +5,11 @@
// /fs/resources/test-helpers.js
directory_test(async (t, root_dir) => {
+ const fileSystemType = getFileSystemType();
assert_true(
- file_system_type == 'sandboxed' || file_system_type == 'local',
+ fileSystemType == 'sandboxed' || fileSystemType == 'local',
'File system type should be sandboxed or local.');
- const expect_success = file_system_type == 'sandboxed';
+ const expect_success = fileSystemType == 'sandboxed';
const dedicated_worker =
create_dedicated_worker(t, kDedicatedWorkerMessageTarget);
diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js
index ef0da2da1ed..53bcdccf7c6 100644
--- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js
+++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/back-forward-cache/resources/rc-helper.js
@@ -20,31 +20,84 @@ async function getBeforeBFCache(remoteContextHelper) {
// If the value in window is set to true, this means that the page was reloaded,
// i.e., the page was restored from BFCache.
// Call `prepareForBFCache()` before navigating away to call this function.
-async function assert_implements_bfcache(remoteContextHelper) {
+async function assertImplementsBFCacheOptional(remoteContextHelper) {
var beforeBFCache = await getBeforeBFCache(remoteContextHelper);
assert_implements_optional(beforeBFCache == true, 'BFCache not supported.');
}
-// If the value in window is undefined, this means that the page was reloaded,
-// i.e., the page was not restored from BFCache.
+// A helper function to assert that the page is not restored from BFCache by
+// checking whether the `beforeBFCache` value from `window` is undefined
+// due to page reload.
+// This function also takes an optional `notRestoredReasons` list which
+// indicates the set of expected reasons that make the page not restored.
+// If the reasons list is undefined, the check will be skipped. Otherwise
+// this check will use the `notRestoredReasons` API, to obtain the reasons
+// in a tree structure, and flatten the reasons before making the order-
+// insensitive comparison.
+// If the API is not available, the function will terminate instead of marking
+// the assertion failed.
// Call `prepareForBFCache()` before navigating away to call this function.
-async function assert_not_bfcached(remoteContextHelper) {
+async function assertNotRestoredFromBFCache(
+ remoteContextHelper, notRestoredReasons) {
var beforeBFCache = await getBeforeBFCache(remoteContextHelper);
assert_equals(beforeBFCache, undefined);
+
+ // The reason is optional, so skip the remaining test if the
+ // `notRestoredReasons` is not set.
+ if (notRestoredReasons === undefined) {
+ return;
+ }
+
+ let isFeatureEnabled = await remoteContextHelper.executeScript(() => {
+ return 'notRestoredReasons' in performance.getEntriesByType('navigation')[0];
+ });
+
+ // Return if the `notRestoredReasons` API is not available.
+ if (!isFeatureEnabled) {
+ return;
+ }
+
+ let result = await remoteContextHelper.executeScript(() => {
+ return performance.getEntriesByType('navigation')[0].notRestoredReasons;
+ });
+
+ let expectedNotRestoredReasonsSet = new Set(notRestoredReasons);
+ let notRestoredReasonsSet = new Set();
+
+ // Flatten the reasons from the main frame and all the child frames.
+ const collectReason = (node) => {
+ for (let reason of node.reasons) {
+ notRestoredReasonsSet.add(reason);
+ }
+ for (let child of node.children) {
+ collectReason(child);
+ }
+ }
+ collectReason(result);
+
+ assert_equals(notRestoredReasonsSet.length,
+ expectedNotRestoredReasonsSet.length);
+
+ for (let reason of expectedNotRestoredReasonsSet) {
+ assert_true(notRestoredReasonsSet.has(reason));
+ }
}
// A helper function that combines the steps of setting window property,
// navigating away and back, and making assertion on whether BFCache is
// supported.
-async function assertBFCache(remoteContextHelper, shouldRestoreFromBFCache) {
+// This function can be used to check if the current page is eligible for
+// BFCache.
+async function assertBFCacheEligibility(
+ remoteContextHelper, shouldRestoreFromBFCache) {
await prepareForBFCache(remoteContextHelper);
// Navigate away and back.
const newRemoteContextHelper = await remoteContextHelper.navigateToNew();
await newRemoteContextHelper.historyBack();
if (shouldRestoreFromBFCache) {
- await assert_implements_bfcache(remoteContextHelper);
+ await assertImplementsBFCacheOptional(remoteContextHelper);
} else {
- await assert_not_bfcached(remoteContextHelper);
+ await assertNotRestoredFromBFCache(remoteContextHelper);
}
}
diff --git a/tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html b/tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html
index 92bac8d8cae..18476b3b7ad 100644
--- a/tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html
+++ b/tests/wpt/web-platform-tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html
@@ -12,7 +12,7 @@
<p class="output">Actual output:</p>
-<canvas id="c" class="output" style="font-size: 144px" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+<canvas id="c" class="output" width="100" height="50" style="font-size: 144px"><p class="fallback">FAIL (fallback content)</p></canvas>
<ul id="d"></ul>
<script>
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py
index 59fa9e73e51..ecdc1067498 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutils.py
@@ -175,6 +175,21 @@ def _expand_test_code(code: str) -> str:
return code
+_CANVAS_SIZE_REGEX = re.compile(r'(?P<width>.*), (?P<height>.*)',
+ re.MULTILINE | re.DOTALL)
+
+
+def _get_canvas_size(test: Mapping[str, str]):
+ size = test.get('size', '100, 50')
+ match = _CANVAS_SIZE_REGEX.match(size)
+ if not match:
+ raise InvalidTestDefinitionError(
+ 'Invalid canvas size "%s" in test %s. Expected a string matching '
+ 'this pattern: "%%s, %%s" %% (width, height)' %
+ (size, test['name']))
+ return match.group('width'), match.group('height')
+
+
def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
sub_dir: str, test_output_dir: str, image_output_dir: str,
is_offscreen_canvas: bool):
@@ -214,16 +229,15 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
'<img src="%s" class="output expected" id="expected" '
'alt="">' % expected_img)
- canvas = test.get('canvas', 'width="100" height="50"')
+ canvas = ' ' + test['canvas'] if 'canvas' in test else ''
+ width, height = _get_canvas_size(test)
notes = '<p class="notes">%s' % test['notes'] if 'notes' in test else ''
timeout = ('\n<meta name="timeout" content="%s">' %
test['timeout'] if 'timeout' in test else '')
-
- scripts = ''
- for s in test.get('scripts', []):
- scripts += '<script src="%s"></script>\n' % (s)
+ timeout_js = ('// META: timeout=%s\n' % test['timeout']
+ if 'timeout' in test else '')
images = ''
for src in test.get('images', []):
@@ -273,10 +287,12 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
'fonts': fonts,
'fonthack': fonthack,
'timeout': timeout,
+ 'timeout_js': timeout_js,
'canvas': canvas,
+ 'width': width,
+ 'height': height,
'expected': expectation_html,
'code': code,
- 'scripts': scripts,
'fallback': fallback,
'attributes': attributes,
'context_args': context_args
@@ -289,9 +305,6 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
if is_offscreen_canvas:
pathlib.Path(f'{test_path}.html').write_text(
templates['w3coffscreencanvas'] % template_params, 'utf-8')
- timeout = ('// META: timeout=%s\n' %
- test['timeout'] if 'timeout' in test else '')
- template_params['timeout'] = timeout
pathlib.Path(f'{test_path}.worker.js').write_text(
templates['w3cworker'] % template_params, 'utf-8')
else:
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py
index 3afb54de477..2a9c53e99ac 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/gentestutilsunion.py
@@ -194,6 +194,21 @@ class TestConfig:
enabled: bool
+_CANVAS_SIZE_REGEX = re.compile(r'(?P<width>.*), (?P<height>.*)',
+ re.MULTILINE | re.DOTALL)
+
+
+def _get_canvas_size(test: Mapping[str, str]):
+ size = test.get('size', '100, 50')
+ match = _CANVAS_SIZE_REGEX.match(size)
+ if not match:
+ raise InvalidTestDefinitionError(
+ 'Invalid canvas size "%s" in test %s. Expected a string matching '
+ 'this pattern: "%%s, %%s" %% (width, height)' %
+ (size, test['name']))
+ return match.group('width'), match.group('height')
+
+
def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
sub_dir: str, html_canvas_cfg: TestConfig,
offscreen_canvas_cfg: TestConfig) -> None:
@@ -241,16 +256,15 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
'<img src="%s" class="output expected" id="expected" '
'alt="">' % expected_img)
- canvas = test.get('canvas', 'width="100" height="50"')
+ canvas = ' ' + test['canvas'] if 'canvas' in test else ''
+ width, height = _get_canvas_size(test)
notes = '<p class="notes">%s' % test['notes'] if 'notes' in test else ''
timeout = ('\n<meta name="timeout" content="%s">' %
test['timeout'] if 'timeout' in test else '')
-
- scripts = ''
- for s in test.get('scripts', []):
- scripts += '<script src="%s"></script>\n' % (s)
+ timeout_js = ('// META: timeout=%s\n' % test['timeout']
+ if 'timeout' in test else '')
images = ''
for src in test.get('images', []):
@@ -300,10 +314,12 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
'fonts': fonts,
'fonthack': fonthack,
'timeout': timeout,
+ 'timeout_js': timeout_js,
'canvas': canvas,
+ 'width': width,
+ 'height': height,
'expected': expectation_html,
'code': code_canvas,
- 'scripts': scripts,
'fallback': fallback,
'attributes': attributes,
'context_args': context_args
@@ -319,26 +335,18 @@ def _generate_test(test: Mapping[str, str], templates: Mapping[str, str],
if html_canvas_cfg.enabled:
pathlib.Path(f'{canvas_path}.html').write_text(
templates['w3ccanvas'] % template_params, 'utf-8')
+
if offscreen_canvas_cfg.enabled:
+ offscreen_template = templates['w3coffscreencanvas']
+ worker_template = templates['w3cworker']
if ('then(t_pass, t_fail);' in code_canvas):
- temp_offscreen = templates['w3coffscreencanvas'].replace(
- 't.done();\n', '')
- temp_worker = templates['w3cworker'].replace('t.done();\n', '')
- pathlib.Path(f'{offscreen_path}.html').write_text(
- temp_offscreen % template_params, 'utf-8')
- timeout = ('// META: timeout=%s\n' %
- test['timeout'] if 'timeout' in test else '')
- template_params['timeout'] = timeout
- pathlib.Path(f'{offscreen_path}.worker.js').write_text(
- temp_worker % template_params, 'utf-8')
- else:
- pathlib.Path(f'{offscreen_path}.html').write_text(
- templates['w3coffscreencanvas'] % template_params, 'utf-8')
- timeout = ('// META: timeout=%s\n' %
- test['timeout'] if 'timeout' in test else '')
- template_params['timeout'] = timeout
- pathlib.Path(f'{offscreen_path}.worker.js').write_text(
- templates['w3cworker'] % template_params, 'utf-8')
+ offscreen_template = offscreen_template.replace('t.done();\n', '')
+ worker_template = worker_template.replace('t.done();\n', '')
+
+ pathlib.Path(f'{offscreen_path}.html').write_text(
+ offscreen_template % template_params, 'utf-8')
+ pathlib.Path(f'{offscreen_path}.worker.js').write_text(
+ worker_template % template_params, 'utf-8')
def genTestUtils_union(TEMPLATEFILE: str, NAME2DIRFILE: str) -> None:
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml
index 7742db88978..d8af47d2590 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/templates-new.yaml
@@ -18,7 +18,7 @@ w3coffscreencanvas: |
});
t.step(function() {
- var canvas = new OffscreenCanvas(100, 50);
+ var canvas = new OffscreenCanvas(%(width)s, %(height)s);
var ctx = canvas.getContext(%(context_args)s);
%(code)s
@@ -29,7 +29,7 @@ w3coffscreencanvas: |
w3cworker: |
- %(timeout)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
+ %(timeout_js)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:%(name)s
// Description:%(desc)s
// Note:%(notes)s
@@ -44,7 +44,7 @@ w3cworker: |
});
t.step(function() {
- var canvas = new OffscreenCanvas(100, 50);
+ var canvas = new OffscreenCanvas(%(width)s, %(height)s);
var ctx = canvas.getContext(%(context_args)s);
%(code)s
@@ -69,7 +69,7 @@ w3ccanvas: |
%(notes)s
%(fonthack)s<p class="output">Actual output:</p>
- <canvas id="c" class="output" %(canvas)s>%(fallback)s</canvas>
+ <canvas id="c" class="output" width="%(width)s" height="%(height)s"%(canvas)s>%(fallback)s</canvas>
%(expected)s
<ul id="d"></ul>
<script>
@@ -81,4 +81,4 @@ w3ccanvas: |
}%(attributes)s);
</script>
- %(scripts)s%(images)s
+ %(images)s
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml
index f2bc2569f71..7e96e0707bc 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/templates.yaml
@@ -18,7 +18,7 @@ w3coffscreencanvas: |
});
t.step(function() {
- var canvas = new OffscreenCanvas(100, 50);
+ var canvas = new OffscreenCanvas(%(width)s, %(height)s);
var ctx = canvas.getContext(%(context_args)s);
%(code)s
@@ -27,7 +27,7 @@ w3coffscreencanvas: |
w3cworker: |
- %(timeout)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
+ %(timeout_js)s// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:%(name)s
// Description:%(desc)s
// Note:%(notes)s
@@ -42,7 +42,7 @@ w3cworker: |
});
t.step(function() {
- var canvas = new OffscreenCanvas(100, 50);
+ var canvas = new OffscreenCanvas(%(width)s, %(height)s);
var ctx = canvas.getContext(%(context_args)s);
%(code)s
@@ -65,7 +65,7 @@ w3ccanvas: |
%(notes)s
%(fonthack)s<p class="output">Actual output:</p>
- <canvas id="c" class="output" %(canvas)s>%(fallback)s</canvas>
+ <canvas id="c" class="output" width="%(width)s" height="%(height)s"%(canvas)s>%(fallback)s</canvas>
%(expected)s
<ul id="d"></ul>
<script>
@@ -76,4 +76,4 @@ w3ccanvas: |
}%(attributes)s);
</script>
- %(scripts)s%(images)s
+ %(images)s
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml
index 880e3fb1a1f..e0de95560cb 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml
@@ -332,7 +332,7 @@
desc: textAlign start with ltr is the left edge
fonts:
- CanvasTest
- canvas: width="100" height="50" dir="ltr"
+ canvas: dir="ltr"
code: |
ctx.font = '50px CanvasTest';
deferTest();
@@ -355,7 +355,7 @@
desc: textAlign start with rtl is the right edge
fonts:
- CanvasTest
- canvas: width="100" height="50" dir="rtl"
+ canvas: dir="rtl"
code: |
ctx.font = '50px CanvasTest';
deferTest();
@@ -378,7 +378,7 @@
desc: textAlign end with ltr is the right edge
fonts:
- CanvasTest
- canvas: width="100" height="50" dir="ltr"
+ canvas: dir="ltr"
code: |
ctx.font = '50px CanvasTest';
deferTest();
@@ -401,7 +401,7 @@
desc: textAlign end with rtl is the left edge
fonts:
- CanvasTest
- canvas: width="100" height="50" dir="rtl"
+ canvas: dir="rtl"
code: |
ctx.font = '50px CanvasTest';
deferTest();
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml
index b8ffbd50758..ea78fe302cb 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/meta.yaml
@@ -44,7 +44,7 @@
tests.append( {
"name": "size.attributes.parse.%s" % name,
"desc": "Parsing of non-negative integers",
- "canvas": 'width="%s" height="%s"' % (htmlString, htmlString),
+ "size": '%s, %s' % (htmlString, htmlString),
"code": code,
"expected": expected
} )
@@ -55,7 +55,7 @@
tests.append( {
"name": "size.attributes.setAttribute.%s" % name,
"desc": "Parsing of non-negative integers in setAttribute",
- "canvas": 'width="50" height="50"',
+ "size": '50, 50',
"code": code,
"expected": expected
} )
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml
index 344a5a0752e..407e3462109 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/text-styles.yaml
@@ -32,7 +32,7 @@
# in cm mm pt pc
- name: 2d.text.font.parse.size.percentage
- canvas: 'style="font-size: 144px" width="100" height="50"'
+ canvas: 'style="font-size: 144px"'
code: |
ctx.font = '50% serif';
@assert ctx.font === '72px serif'; @moz-todo
diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
index 5c07375dd2a..d6d8cd801b4 100644
--- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
+++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml/element/the-canvas-element.yaml
@@ -104,7 +104,8 @@
- name: 2d.scaled
desc: CSS-scaled canvases get drawn correctly
- canvas: 'width="50" height="25" style="width: 100px; height: 50px"'
+ size: 50, 25
+ canvas: 'style="width: 100px; height: 50px"'
manual:
code: |
ctx.fillStyle = '#00f';
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html
index f8201c4948b..932cd92b415 100644
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-base-url.html
@@ -7,24 +7,64 @@
</head>
<body>
-<img id="img">
<script>
-const t = async_test("An image request's parsed URL should be affected by a " +
- "dynamically-inserted <base>, if it was inserted before " +
- "the image request microtask runs");
-
-t.step(() => {
- const elm = document.getElementById('img');
- elm.src = 'resources/image.png';
- elm.onload = t.unreached_func("The image should have failed to load, as " +
- "the request URL should be affected by the " +
- "<base> element");
- elm.onerror = t.step_func_done();
-
- const base = document.createElement("base");
- base.setAttribute("href", "bogus/");
- document.head.appendChild(base);
-});
+// See https://github.com/whatwg/html/issues/7383 and
+// https://chromium-review.googlesource.com/c/chromium/src/+/3311225.
+// This test asserts two things:
+// 1.) That Document base URL modifications that take place in between an
+// image loading microtask being scheduled and executed are reflected in
+// the final image request
+// 2.) That subsequent changes to a Document's base URL before an image is
+// inserted into the DOM do not lead to the image being refetched when it
+// is inserted asynchronously later. This is because image insertion is
+// not a relevant mutation
+// (https://html.spec.whatwg.org/#relevant-mutations).
+promise_test(async t => {
+ const image = new Image();
+ image.src = 'green.png';
+
+ // Dynamically insert a <base> tag that should influence the above image
+ // request because the above code triggers a microtask to continue fetching
+ // the image, which will run while we await `loadPromise` below.
+ const base = document.createElement('base');
+ base.setAttribute('href', 'resources/');
+ document.head.append(base);
+
+ const loadPromise = new Promise((resolve, reject) => {
+ image.addEventListener('load', e => {
+ resolve();
+ }, {once: true});
+
+ image.addEventListener('error', e => {
+ reject('The image must load');
+ }, {once: true});
+ });
+
+ // The image should load successfully, since its request was influenced by the
+ // <base> element which points the request to the right directory.
+ await loadPromise;
+
+ // Now manipulate the <base> element to point to a bogus directory.
+ base.setAttribute('href', 'bogus/');
+ document.body.append(image);
+
+ const timeoutPromise = new Promise(resolve => t.step_timeout(resolve, 1500));
+ const imageErrorPromise = new Promise((resolve, reject) => {
+ image.addEventListener('load', e => {
+ reject('The image should not be refetched upon insertion and load, ' +
+ 'because (1) insertion is not a relevant mutation, and (2) the ' +
+ 'new relative URL should not resolve to a real resource');
+ }, {once: true});
+
+ image.addEventListener('error', e => {
+ reject('The image should not be refetched upon insertion, because ' +
+ 'insertion is not a relevant mutation');
+ }, {once: true});
+ });
+
+ await Promise.race([timeoutPromise, imageErrorPromise]);
+}, "An image should not be refetched upon insertion asynchronously after its " +
+ "Document's base URL changes");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html
index ef01c297277..546c4b18d7f 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/pattern_attribute.html
@@ -1,34 +1,26 @@
<!DOCTYPE html>
-<html>
-
- <head>
- <title>Pattern Attribute</title>
- <meta name=viewport content="width=device-width, maximum-scale=1.0, user-scalable=no" />
- <link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com">
- <link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
- <link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-pattern">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- </head>
-
- <body>
-
-
- <h1>Pattern Attribute</h1>
- <div style="display: none">
- <input pattern="[a-z]{3}" value="abcd" title="three letters max"/>
- </div>
-
- <div id="log">
- </div>
-
- <script type="text/javascript">
-
-
- test(function() {assert_equals(document.getElementsByTagName("input")[0].getAttribute("pattern"), "[a-z]{3}")}, "pattern attribute support on input element");
-
- </script>
-
- </body>
-
-</html>
+<title>pattern attribute</title>
+<meta name=viewport content="width=device-width">
+<link rel="author" title="Fabrice Clari" href="mailto:f.clari@inno-group.com">
+<link rel="author" title="Dimitri Bocquet" href="mailto:Dimitri.Bocquet@mosquito-fp7.eu">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-input-pattern">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<h1><code>pattern</code> attribute</h1>
+<div style="display: none">
+ <input pattern="[a-z]{3}" value="abcd" title="three letters max">
+</div>
+<div id="log"></div>
+<script>
+ test(function() {
+ const input = document.querySelector("input");
+
+ assert_idl_attribute(input, "pattern");
+ assert_equals(input.pattern, "[a-z]{3}");
+
+ assert_inherits(input, "validity");
+ assert_false(input.validity.valid);
+
+ assert_true(input.matches(":invalid"));
+ }, "pattern attribute support on input element");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html
new file mode 100644
index 00000000000..cec447509eb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<script src="support/fake-selectmenu.js"></script>
+<body>
+<script>
+ const selectmenu = createFakeSelectmenu('hello world');
+ document.body.appendChild(selectmenu);
+ selectmenu.querySelector('.fake-selectmenu-internal-selectmenu-button-icon')
+ .style.backgroundColor = 'red';
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html
new file mode 100644
index 00000000000..b6e94c947a4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-part.tentative.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=match href="selectmenu-marker-part-ref.html">
+
+<style>
+selectmenu::part(marker) {
+ background-color: red;
+}
+</style>
+<selectmenu>
+ <option>hello world</option>
+</selectmenu>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html
new file mode 100644
index 00000000000..a35fcd94800
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<script src="support/fake-selectmenu.js"></script>
+<body>
+<script>
+ const selectmenu = createFakeSelectmenu('hello world');
+ document.body.appendChild(selectmenu);
+
+ const oldMarker = selectmenu.querySelector('.fake-selectmenu-internal-selectmenu-button-icon');
+ const newMarker = document.createElement('div');
+ newMarker.textContent = 'marker';
+
+ const button = selectmenu.querySelector('.fake-selectmenu-internal-selectmenu-button');
+ button.replaceChild(newMarker, oldMarker);
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html
new file mode 100644
index 00000000000..fff911005d8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot.tentative.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=match href="selectmenu-marker-slot-ref.html">
+
+<selectmenu>
+ <div slot=marker>marker</div>
+ <option>hello world</option>
+</selectmenu>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js
new file mode 100644
index 00000000000..cf3864a2940
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js
@@ -0,0 +1,49 @@
+function createFakeSelectmenu(selectedValueText) {
+ const selectmenu = document.createElement('div');
+ selectmenu.classList.add('fake-selectmenu');
+
+ selectmenu.innerHTML = `
+ <button class="fake-selectmenu-internal-selectmenu-button">
+ <div class="fake-selectmenu-selected-value"></div>
+ <div class="fake-selectmenu-internal-selectmenu-button-icon"></div>
+ </button>
+ <style>
+ .fake-selectmenu {
+ display: inline-block;
+ }
+
+ .fake-selectmenu-internal-selectmenu-button {
+ display: inline-flex;
+ align-items: center;
+ background-color: #ffffff;
+ padding: 0 0 0 3px;
+ border: 1px solid #767676;
+ border-radius: 2px;
+ cursor: default;
+ appearance: none;
+ }
+
+ .fake-selectmenu-internal-selectmenu-button-icon {
+ background-image: url(support/selectmenu_button_icon.svg);
+ background-origin: content-box;
+ background-repeat: no-repeat;
+ background-size: contain;
+ height: 1.0em;
+ margin-inline-start: 4px;
+ opacity: 1;
+ outline: none;
+ padding-bottom: 2px;
+ padding-inline-start: 3px;
+ padding-inline-end: 3px;
+ padding-top: 2px;
+ width: 1.2em;
+ }
+ </style>
+ `;
+
+ if (selectedValueText) {
+ selectmenu.querySelector('.fake-selectmenu-selected-value').textContent = selectedValueText;
+ }
+
+ return selectmenu;
+}
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/selectmenu_button_icon.svg b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/selectmenu_button_icon.svg
new file mode 100644
index 00000000000..1a6c0193e81
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/support/selectmenu_button_icon.svg
@@ -0,0 +1,3 @@
+<svg width="20" height="14" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg">\
+ <path d="M4 6 L10 12 L 16 6" stroke="WindowText" stroke-width="3" stroke-linejoin="round"/>\
+</svg> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html
index 57cc63aab48..897f54a53fb 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/backdrop-stacking-order.html
@@ -6,6 +6,7 @@ dialog {
padding: 0px;
border: none;
margin: 0px;
+ outline: none;
}
#bottom::backdrop {
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html
new file mode 100644
index 00000000000..1b4dd302300
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=help href="https://github.com/whatwg/html/pull/8199">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<dialog autofocus id=autofocusdialog data-description="dialog element with autofocus should get initial focus.">
+ <button>focusable button</button>
+ <button autofocus class=target>autofocusable button</button>
+</dialog>
+
+<dialog id=keyboardfocusdialog data-description="Only keyboard-focusable elements should get dialog initial focus.">
+ <button tabindex="-1">mouse focusable button</button>
+ <button class=target>keyboard focusable button</button>
+</dialog>
+
+<dialog id=autofocuswithoutkeyboarddialog data-description="Autofocus takes precedence over keyboard-focusable requirement.">
+ <button>keyboard focusable button</button>
+ <button tabindex="-1" autofocus class=target>mouse focusable autofocus button</button>
+</dialog>
+
+<dialog id=subtree data-description="Only keyboard-focusable elements should get dialog initial focus including in subtrees.">
+ <div>
+ <button tabindex="-1">mouse focusable button</button>
+ <button class=target>keyboard focusable button</button>
+ </div>
+</dialog>
+
+<dialog id=nestedbuttons data-description="Only keyboard-focusable elements should get dialog initial focus including in nested buttons.">
+ <button tabindex="-1">
+ <span>mouse focusable button</span>
+ <button tabindex="-1">nested mouse focusable button</button>
+ </button>
+ <button class=target>keyboard focusable button</button>
+</dialog>
+
+<script>
+document.querySelectorAll('dialog').forEach(dialog => {
+ test(t => {
+ const target = dialog.querySelector('.target');
+ t.add_cleanup
+ t.add_cleanup(() => {
+ if (dialog.open)
+ dialog.close();
+ });
+
+ dialog.showModal();
+ assert_equals(document.activeElement,
+ dialog.hasAttribute('autofocus') ? dialog : target,
+ 'showModal: the target element did not receive initial focus.');
+ dialog.close();
+
+ dialog.show();
+ assert_equals(document.activeElement, target, 'show: the target element did not receive initial focus.');
+ dialog.close();
+ }, dialog.dataset.description);
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html
index e9ea15516e2..7e576854255 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focus-shadow.html
@@ -9,21 +9,21 @@
We focus this one between each test, to ensure that for non-modal dialogs,
if there is no focus delegate, it stays focused (instead of causing focus to reset to the body).
-->
-<button tabindex="-1" id="focus-between-tests">Focus between tests</button>
+<button id="focus-between-tests">Focus between tests</button>
<dialog data-description="No autofocus, no delegatesFocus, no siblings">
<template class="turn-into-shadow-tree">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="No autofocus, no delegatesFocus, sibling before">
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<template class="turn-into-shadow-tree">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
@@ -31,25 +31,25 @@
<dialog data-description="No autofocus, no delegatesFocus, sibling after">
<template class="turn-into-shadow-tree">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
</dialog>
<dialog data-description="No autofocus, yes delegatesFocus, no siblings">
<template class="turn-into-shadow-tree delegates-focus">
<button disabled>Non-focusable</button>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="No autofocus, yes delegatesFocus, sibling before">
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<template class="turn-into-shadow-tree delegates-focus">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
@@ -57,26 +57,26 @@
<dialog data-description="No autofocus, yes delegatesFocus, sibling after">
<template class="turn-into-shadow-tree delegates-focus">
<button disabled>Non-focusable</button>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<button disabled>Non-focusable</button>
</template>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
</dialog>
<dialog data-description="Autofocus before, no delegatesFocus">
- <button tabindex="-1" autofocus class="focus-me">Focusable</button>
+ <button autofocus class="focus-me">Focusable</button>
<template class="turn-into-shadow-tree">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="Autofocus before, yes delegatesFocus">
- <button tabindex="-1" autofocus class="focus-me">Focusable</button>
+ <button autofocus class="focus-me">Focusable</button>
<template class="turn-into-shadow-tree delegates-focus">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
@@ -84,34 +84,34 @@
<dialog data-description="Autofocus after, no delegatesFocus">
<template class="turn-into-shadow-tree">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
- <button tabindex="-1" autofocus class="focus-me">Focusable</button>
+ <button autofocus class="focus-me">Focusable</button>
</dialog>
<dialog data-description="Autofocus after, yes delegatesFocus">
<template class="turn-into-shadow-tree delegates-focus">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
- <button tabindex="-1" autofocus class="focus-me">Focusable</button>
+ <button autofocus class="focus-me">Focusable</button>
</dialog>
<dialog data-description="Autofocus on shadow host, yes delegatesFocus, no siblings">
<template class="turn-into-shadow-tree delegates-focus autofocus">
<button disabled>Non-focusable</button>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="Autofocus on shadow host, yes delegatesFocus, sibling before">
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<template class="turn-into-shadow-tree delegates-focus autofocus">
<button disabled>Non-focusable</button>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
@@ -119,25 +119,25 @@
<dialog data-description="Autofocus on shadow host, yes delegatesFocus, sibling after">
<template class="turn-into-shadow-tree delegates-focus autofocus">
<button disabled>Non-focusable</button>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<button disabled>Non-focusable</button>
</template>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
</dialog>
<dialog data-description="Autofocus on shadow host, no delegatesFocus, no siblings">
<template class="turn-into-shadow-tree autofocus">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="Autofocus on shadow host, no delegatesFocus, sibling before">
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<template class="turn-into-shadow-tree autofocus">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
@@ -145,91 +145,91 @@
<dialog data-description="Autofocus on shadow host, no delegatesFocus, sibling after">
<template class="turn-into-shadow-tree autofocus">
<button disabled>Non-focusable</button>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<button disabled>Non-focusable</button>
</template>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
</dialog>
<dialog data-description="Autofocus inside shadow tree, yes delegatesFocus, no siblings">
<template class="turn-into-shadow-tree delegates-focus">
- <button tabindex="-1">Focusable</button>
- <button tabindex="-1" autofocus class="focus-me">Focusable</button>
+ <button>Focusable</button>
+ <button autofocus class="focus-me">Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="Autofocus inside shadow tree, yes delegatesFocus, sibling before">
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<template class="turn-into-shadow-tree delegates-focus">
- <button tabindex="-1">Focusable</button>
- <button tabindex="-1" autofocus>Focusable</button>
+ <button>Focusable</button>
+ <button autofocus>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="Autofocus inside shadow tree, yes delegatesFocus, sibling after">
<template class="turn-into-shadow-tree delegates-focus">
- <button tabindex="-1">Focusable</button>
- <button tabindex="-1" autofocus class="focus-me">Focusable</button>
+ <button>Focusable</button>
+ <button autofocus class="focus-me">Focusable</button>
<button disabled>Non-focusable</button>
</template>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
</dialog>
<dialog data-description="Autofocus inside shadow tree, no delegatesFocus, no siblings">
<template class="turn-into-shadow-tree">
- <button tabindex="-1">Focusable</button>
- <button tabindex="-1" autofocus>Focusable</button>
+ <button>Focusable</button>
+ <button autofocus>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="Autofocus inside shadow tree, no delegatesFocus, sibling before">
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<template class="turn-into-shadow-tree">
- <button tabindex="-1">Focusable</button>
- <button tabindex="-1" autofocus>Focusable</button>
+ <button>Focusable</button>
+ <button autofocus>Focusable</button>
<button disabled>Non-focusable</button>
</template>
</dialog>
<dialog data-description="Autofocus inside shadow tree, no delegatesFocus, sibling after">
<template class="turn-into-shadow-tree">
- <button tabindex="-1">Focusable</button>
- <button tabindex="-1" autofocus>Focusable</button>
+ <button>Focusable</button>
+ <button autofocus>Focusable</button>
<button disabled>Non-focusable</button>
</template>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
</dialog>
<dialog data-description="Two shadow trees, both delegatesFocus, first tree doesn't have autofocus element, second does">
<template class="turn-into-shadow-tree delegates-focus">
<button disabled>Non-focusable</button>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
<button disabled>Non-focusable</button>
</template>
<template class="turn-into-shadow-tree delegates-focus">
- <button tabindex="-1" autofocus>Focusable</button>
+ <button autofocus>Focusable</button>
</template>
</dialog>
<dialog data-description="No autofocus, no delegatesFocus, slotted target">
<template class="turn-into-shadow-tree">
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
<slot></slot>
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
</template>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
</dialog>
<dialog data-description="Shadowroot on child, no autofocus, no delegatesFocus">
<div>
<template class="turn-into-shadow-tree">
- <button tabindex="-1">Focusable</button>
+ <button>Focusable</button>
</template>
</div>
- <button tabindex="-1" class="focus-me">Focusable</button>
+ <button class="focus-me">Focusable</button>
</dialog>
<script>
@@ -264,12 +264,8 @@ for (const dialog of document.querySelectorAll("dialog")) {
assert_equals(document.activeElement, shadowHost);
assert_equals(shadowHost.shadowRoot.activeElement, expectedFocusInsideShadowTree);
} else {
- // There is no focus delegate. Expected result depends on show() vs. showModal().
- if (method === "show") {
- assert_equals(document.activeElement, focusBetweenTests);
- } else {
- assert_equals(document.activeElement, document.body);
- }
+ // There is no focus delegate. The dialog element should be focused.
+ assert_equals(document.activeElement, dialog);
}
}
}, `${method}: ${dialog.dataset.description}`);
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html
index 2e8563f761d..4d1e792c1cc 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-focusing-steps-prevent-autofocus.html
@@ -14,7 +14,7 @@ promise_test(async () => {
input.autofocus = true;
document.body.insertBefore(input, dialog);
await waitUntilStableAutofocusState();
- assert_equals(document.activeElement, document.body,
+ assert_not_equals(document.activeElement, input,
'Non-dialog autofocus processing should be skipped.');
}, 'After showing a dialog, non-dialog autofocus processing won\'t work.');
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
index c511631f9fb..5edff186142 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html
@@ -116,7 +116,7 @@
d6.showModal();
this.add_cleanup(function() { d6.close(); });
assert_true(d6.open);
- assert_equals(document.activeElement, document.body);
+ assert_equals(document.activeElement, d6);
}, "opening dialog without focusable children");
test(function(){
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html
index 535ac935607..7e6112b3cee 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer-ref.html
@@ -1,5 +1,8 @@
<!doctype html>
<style>
+dialog {
+ outline: none;
+}
#non-modal {
position: static;
}
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html
index efbbab010a0..e4f4ce50b3e 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dont-share-style-to-top-layer.html
@@ -5,6 +5,9 @@
dialog {
position: static;
}
+#modal {
+ outline: none;
+}
</style>
<p>Test that a non-top layer element doesn't share style with a top layer
element. The test passes if you see two boxes.</p>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html
index d78051a9b3e..0dead331636 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/element-removed-from-top-layer-has-original-position.html
@@ -14,6 +14,7 @@
border: none;
padding: 0;
margin: 0;
+ outline: none;
}
</style>
</head>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html
index 98835cb795f..5ee64fc1d9e 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-contain-ancestor.html
@@ -8,6 +8,9 @@
::backdrop {
display: none;
}
+#dialog {
+ outline: none;
+}
</style>
</head>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html
index fe625f1c9bf..2bc294be2fa 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-fo-ancestor.html
@@ -8,6 +8,9 @@
::backdrop {
display: none;
}
+#dialog {
+ outline: none;
+}
</style>
</head>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html
index 58627443dae..527d508252c 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-transformed-ancestor.html
@@ -8,6 +8,9 @@
::backdrop {
display: none;
}
+#dialog {
+ outline: none;
+}
</style>
</head>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html
index 14f4391e6bf..e9db7321cd7 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/fixed-position-child-with-will-change-ancestor.html
@@ -8,6 +8,9 @@
::backdrop {
display: none;
}
+#dialog {
+ outline: none;
+}
</style>
</head>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html
index 05f4069d78f..61e3ddeaf23 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-label-focus.html
@@ -39,12 +39,15 @@ promise_test(async () => {
document.querySelector('#text').focus();
label = document.querySelector('label');
+ submit = document.querySelector('#submit');
label.focus();
- assert_equals(document.activeElement, document.querySelector('#submit'),
+ assert_equals(document.activeElement, submit,
'label.focus() should send focus to the target.');
await clickOn(label);
- assert_equals(document.activeElement, document.body,
- 'Clicking the label should be the same as clicking the document body.');
+ assert_not_equals(document.activeElement, label,
+ 'Clicking the label should not focus the label.');
+ assert_not_equals(document.activeElement, submit,
+ 'Clicking the label should not focus the submit input.');
}, 'Tests focusing of an inert label for a non-inert target.');
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html
index 56f31f35924..74379f50e22 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/inert-node-is-unfocusable.html
@@ -7,6 +7,11 @@
<script src="/resources/testharnessreport.js"></script>
</head>
<body id="body" tabindex="1">
+<style>
+dialog {
+ outline: none;
+}
+</style>
<dialog id="top-dialog" tabindex="1" style="width: 100px; top: 30px"><button id="top-dialog-button">I get focus</button></dialog>
<dialog id="bottom-dialog" tabindex="-1" style="width: 100px; bottom: 30px"><button id="bottom-dialog-button">I don't get focus.</button></dialog>
<div id="container">
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html
index a18af0d30ea..55d7132f8ce 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-backdrop.html
@@ -7,6 +7,7 @@ dialog {
height: 100px;
width: 100px;
background: green;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html
index 86f43e52c2e..96b97f8ec3c 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/modal-dialog-generated-content.html
@@ -11,6 +11,7 @@ dialog {
height: 100px;
width: 100px;
background: green;
+ outline: none;
}
dialog::before {
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html
index 164b41459d1..6a2ad8c4a0a 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/show-modal-focusing-steps.html
@@ -10,10 +10,10 @@ promise_test(() => {
outerButton = document.getElementById('outer-button');
assert_equals(document.activeElement, outerButton);
- // Test that focus goes to body if the dialog has no focusable elements, including itself
+ // Test that focus goes to the dialog if the dialog has no focusable elements
var outerDialog = document.getElementById('outer-dialog');
outerDialog.showModal();
- assert_equals(document.activeElement, document.body);
+ assert_equals(document.activeElement, outerDialog);
// Test that an autofocus element in the dialog gets focus.
var dialog = document.getElementById('dialog');
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html
index 10f6c69fbe1..0886c2cd2c2 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-containing-block.html
@@ -14,7 +14,7 @@
This tests that a modal dialog's containing block is in the initial containing block and that it is unaffected by
ancestor elements with overflow or opacity.
<div style="position: absolute; top: 400px; opacity: 0.3">
- <dialog id="opaqueDialog" style="position: absolute; top: 250px; left: 0px; background-color: magenta">
+ <dialog id="opaqueDialog" style="position: absolute; top: 250px; left: 0px; background-color: magenta; outline: none">
This dialog should be unaffected by its ancestor with opacity.
</dialog>
</div>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html
index 5257823eca0..ba790c1db9a 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-display-none.html
@@ -7,6 +7,7 @@
dialog {
height: 150px;
width: 150px;
+ outline: none;
}
::backdrop {
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html
index 6397584387f..9e0616e9520 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-nesting.html
@@ -7,6 +7,7 @@
dialog {
height: 150px;
width: 150px;
+ outline: none;
}
::backdrop {
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html
index 9a621e7594e..6e3c52aa02a 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-clip.html
@@ -15,6 +15,7 @@ body { background: red; }
dialog::backdrop,
dialog {
background: green;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html
index 020d90a0c81..589d5397791 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-filter.html
@@ -16,6 +16,7 @@ dialog::backdrop,
dialog {
background: green;
position: absolute;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html
index daa5ccbbe10..8ba3ed47c27 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-mask.html
@@ -16,6 +16,7 @@ body { background: red; }
dialog::backdrop,
dialog {
background: green;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html
index 82aa09d6c57..46c5de2a6dd 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-opacity.html
@@ -16,6 +16,7 @@ body { background: red; }
dialog::backdrop,
dialog {
background: green;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html
index 86587254cf0..d8059549692 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-clip.html
@@ -21,6 +21,7 @@ dialog::backdrop,
dialog {
background: green;
position: absolute;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html
index afcde733d2f..f5389ddc09a 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-hidden.html
@@ -20,6 +20,7 @@ body { background: red; }
dialog::backdrop,
dialog {
background: green;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html
index dd04c2ed47a..a230defeeab 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-overflow-scroll.html
@@ -21,6 +21,7 @@ dialog::backdrop,
dialog {
background: green;
position: absolute;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html
index cf35a713f33..ac6f3cffc3c 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-parent-transform.html
@@ -15,6 +15,7 @@ body { background: red; }
dialog::backdrop,
dialog {
background: green;
+ outline: none;
}
</style>
<body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html
index 3b3e3368925..4fdd28820db 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-correct-order-remove-readd.html
@@ -8,6 +8,7 @@
dialog {
height: 100px;
width: 100px;
+ outline: none;
}
::backdrop {
diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html
index 8ab7068d306..ebccdc66cf9 100644
--- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html
+++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/top-layer-stacking-dynamic.html
@@ -8,6 +8,7 @@
dialog {
height: 150px;
width: 150px;
+ outline: none;
}
::backdrop {
diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html
index d1a258bb4ad..1cab891261c 100644
--- a/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html
+++ b/tests/wpt/web-platform-tests/html/semantics/popovers/idlharness.tentative.html
@@ -41,12 +41,12 @@ idl_test(
'document.getElementById("b3")',
],
BeforeToggleEvent: [
- 'new PopoverToggleEvent("beforetoggle")',
- 'new PopoverToggleEvent("beforetoggle", {currentState: "open"})',
- 'new PopoverToggleEvent("beforetoggle", {currentState: "open",newState: "open"})',
- 'new PopoverToggleEvent("aftertoggle")',
- 'new PopoverToggleEvent("aftertoggle", {currentState: "open"})',
- 'new PopoverToggleEvent("aftertoggle", {currentState: "open",newState: "open"})',
+ 'new ToggleEvent("beforetoggle")',
+ 'new ToggleEvent("beforetoggle", {oldState: "open"})',
+ 'new ToggleEvent("beforetoggle", {oldState: "open",newState: "open"})',
+ 'new ToggleEvent("toggle")',
+ 'new ToggleEvent("toggle", {oldState: "open"})',
+ 'new ToggleEvent("toggle", {oldState: "open",newState: "open"})',
],
});
}
diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html
index b96a0f5a53f..b2994245700 100644
--- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html
+++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-events.tentative.html
@@ -10,6 +10,13 @@
<div popover>Popover</div>
<script>
+function getPopoverAndSignal(t) {
+ const popover = document.querySelector('[popover]');
+ const controller = new AbortController();
+ const signal = controller.signal;
+ t.add_cleanup(() => controller.abort());
+ return {popover, signal};
+}
window.onload = () => {
for(const method of ["listener","attribute"]) {
promise_test(async t => {
@@ -22,52 +29,48 @@ window.onload = () => {
function listener(e) {
if (e.type === "beforetoggle") {
if (e.newState === "open") {
- assert_equals(e.currentState,"closed",'The "beforetoggle" event should be fired before the popover is open');
+ ++showCount;
+ assert_equals(e.oldState,"closed",'The "beforetoggle" event should be fired before the popover is open');
assert_true(e.target.matches(':closed'),'The popover should be in the :closed state when the opening event fires.');
assert_false(e.target.matches(':open'),'The popover should *not* be in the :open state when the opening event fires.');
- ++showCount;
} else {
+ ++hideCount;
assert_equals(e.newState,"closed",'Popover toggleevent states should be "open" and "closed"');
- assert_equals(e.currentState,"open",'The "beforetoggle" event should be fired before the popover is closed')
+ assert_equals(e.oldState,"open",'The "beforetoggle" event should be fired before the popover is closed')
assert_true(e.target.matches(':open'),'The popover should be in the :open state when the hiding event fires.');
assert_false(e.target.matches(':closed'),'The popover should *not* be in the :closed state when the hiding event fires.');
- ++hideCount;
}
} else {
- assert_equals(e.type,"aftertoggle",'Popover events should be "beforetoggle" and "aftertoggle"')
+ assert_equals(e.type,"toggle",'Popover events should be "beforetoggle" and "toggle"')
if (e.newState === "open") {
- assert_equals(e.currentState,"open",'Aftertoggle should be fired after the popover is open');
+ ++afterShowCount;
if (document.body.contains(e.target)) {
assert_true(e.target.matches(':open'),'The popover should be in the :open state when the after opening event fires.');
assert_false(e.target.matches(':closed'),'The popover should *not* be in the :closed state when the after opening event fires.');
}
- ++afterShowCount;
} else {
+ ++afterHideCount;
assert_equals(e.newState,"closed",'Popover toggleevent states should be "open" and "closed"');
- assert_equals(e.currentState,"closed",'Aftertoggle should be fired after the popover is closed');
assert_true(e.target.matches(':closed'),'The popover should be in the :closed state when the after hiding event fires.');
assert_false(e.target.matches(':open'),'The popover should *not* be in the :open state when the after hiding event fires.');
- ++afterHideCount;
}
- e.preventDefault(); // "aftertoggle" should not be cancelable.
+ e.preventDefault(); // "toggle" should not be cancelable.
}
};
switch (method) {
case "listener":
- const controller = new AbortController();
- const signal = controller.signal;
- t.add_cleanup(() => controller.abort());
+ const {signal} = getPopoverAndSignal(t);
// These events bubble.
document.addEventListener('beforetoggle', listener, {signal});
- document.addEventListener('aftertoggle', listener, {signal});
+ document.addEventListener('toggle', listener, {signal});
break;
case "attribute":
assert_false(popover.hasAttribute('onbeforetoggle'));
t.add_cleanup(() => popover.removeAttribute('onbeforetoggle'));
popover.onbeforetoggle = listener;
- assert_false(popover.hasAttribute('onaftertoggle'));
- t.add_cleanup(() => popover.removeAttribute('onaftertoggle'));
- popover.onaftertoggle = listener;
+ assert_false(popover.hasAttribute('ontoggle'));
+ t.add_cleanup(() => popover.removeAttribute('ontoggle'));
+ popover.ontoggle = listener;
break;
default: assert_unreached();
}
@@ -82,7 +85,7 @@ window.onload = () => {
assert_equals(0,afterShowCount);
assert_equals(0,afterHideCount);
await waitForRender();
- assert_equals(1,afterShowCount,'aftertoggle show is fired asynchronously');
+ assert_equals(1,afterShowCount,'toggle show is fired asynchronously');
assert_equals(0,afterHideCount);
assert_true(popover.matches(':open'));
popover.hidePopover();
@@ -93,7 +96,7 @@ window.onload = () => {
assert_equals(0,afterHideCount);
await waitForRender();
assert_equals(1,afterShowCount);
- assert_equals(1,afterHideCount,'aftertoggle hide is fired asynchronously');
+ assert_equals(1,afterHideCount,'toggle hide is fired asynchronously');
// No additional events
await waitForRender();
await waitForRender();
@@ -106,10 +109,7 @@ window.onload = () => {
}
promise_test(async t => {
- const popover = document.querySelector('[popover]');
- const controller = new AbortController();
- const signal = controller.signal;
- t.add_cleanup(() => controller.abort());
+ const {popover,signal} = getPopoverAndSignal(t);
let cancel = true;
popover.addEventListener('beforetoggle',(e) => {
if (e.newState !== "open")
@@ -128,10 +128,7 @@ window.onload = () => {
}, 'The "beforetoggle" event is cancelable for the "opening" transition');
promise_test(async t => {
- const popover = document.querySelector('[popover]');
- const controller = new AbortController();
- const signal = controller.signal;
- t.add_cleanup(() => {controller.abort();});
+ const {popover,signal} = getPopoverAndSignal(t);
popover.addEventListener('beforetoggle',(e) => {
assert_not_equals(e.newState,"closed",'The "beforetoggle" event was fired for the closing transition');
}, {signal});
@@ -144,5 +141,74 @@ window.onload = () => {
await waitForRender(); // Check for async events also
assert_false(popover.matches(':open'));
}, 'The "beforetoggle" event is not fired for element removal');
+
+ promise_test(async t => {
+ const {popover,signal} = getPopoverAndSignal(t);
+ let events;
+ function resetEvents() {
+ events = {
+ singleShow: false,
+ singleHide: false,
+ coalescedShow: false,
+ coalescedHide: false,
+ };
+ }
+ function setEvent(type) {
+ assert_equals(events[type],false,'event repeated');
+ events[type] = true;
+ }
+ function assertOnly(type,msg) {
+ Object.keys(events).forEach(val => {
+ assert_equals(events[val],val===type,`${msg} (${val})`);
+ });
+ }
+ popover.addEventListener('toggle',(e) => {
+ switch (e.newState) {
+ case "open":
+ switch (e.oldState) {
+ case "open": setEvent('coalescedShow'); break;
+ case "closed": setEvent('singleShow'); break;
+ default: assert_unreached();
+ }
+ break;
+ case "closed":
+ switch (e.oldState) {
+ case "closed": setEvent('coalescedHide'); break;
+ case "open": setEvent('singleHide'); break;
+ default: assert_unreached();
+ }
+ break;
+ default: assert_unreached();
+ }
+ }, {signal});
+
+ resetEvents();
+ assertOnly('none');
+ assert_false(popover.matches(':open'));
+ popover.showPopover();
+ await waitForRender();
+ assert_true(popover.matches(':open'));
+ assertOnly('singleShow','Single event should have been fired, which is a "show"');
+
+ resetEvents();
+ popover.hidePopover();
+ popover.showPopover(); // Immediate re-show
+ await waitForRender();
+ assert_true(popover.matches(':open'));
+ assertOnly('coalescedShow','Single coalesced event should have been fired, which is a "show"');
+
+ resetEvents();
+ popover.hidePopover();
+ await waitForRender();
+ assertOnly('singleHide','Single event should have been fired, which is a "hide"');
+ assert_false(popover.matches(':open'));
+
+ resetEvents();
+ popover.showPopover();
+ popover.hidePopover(); // Immediate re-hide
+ await waitForRender();
+ assertOnly('coalescedHide','Single coalesced event should have been fired, which is a "hide"');
+ assert_false(popover.matches(':open'));
+ }, 'The "toggle" event is coalesced');
};
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html b/tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html
index 4d437b0c0ad..45709458b00 100644
--- a/tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html
+++ b/tests/wpt/web-platform-tests/html/semantics/popovers/toggleevent-interface.tentative.html
@@ -7,200 +7,200 @@
<script>
test(function() {
- var event = new PopoverToggleEvent("");
- assert_true(event instanceof window.PopoverToggleEvent);
-}, "the event is an instance of PopoverToggleEvent");
+ var event = new ToggleEvent("");
+ assert_true(event instanceof window.ToggleEvent);
+}, "the event is an instance of ToggleEvent");
test(function() {
- var event = new PopoverToggleEvent("");
+ var event = new ToggleEvent("");
assert_true(event instanceof window.Event);
}, "the event inherts from Event");
test(function() {
assert_throws_js(TypeError, function() {
- new PopoverToggleEvent();
+ new ToggleEvent();
}, 'First argument (type) is required, so was expecting a TypeError.');
}, 'Missing type argument');
test(function() {
- var event = new PopoverToggleEvent("test");
+ var event = new ToggleEvent("test");
assert_equals(event.type, "test");
}, "type argument is string");
test(function() {
- var event = new PopoverToggleEvent(null);
+ var event = new ToggleEvent(null);
assert_equals(event.type, "null");
}, "type argument is null");
test(function() {
- var event = new PopoverToggleEvent(undefined);
+ var event = new ToggleEvent(undefined);
assert_equals(event.type, "undefined");
}, "event type set to undefined");
test(function() {
- var event = new PopoverToggleEvent("test");
- assert_equals(event.currentState, "");
-}, "currentState has default value of empty string");
+ var event = new ToggleEvent("test");
+ assert_equals(event.oldState, "");
+}, "oldState has default value of empty string");
test(function() {
- var event = new PopoverToggleEvent("test");
- assert_readonly(event, "currentState", "readonly attribute value");
-}, "currentState is readonly");
+ var event = new ToggleEvent("test");
+ assert_readonly(event, "oldState", "readonly attribute value");
+}, "oldState is readonly");
test(function() {
- var event = new PopoverToggleEvent("test");
+ var event = new ToggleEvent("test");
assert_equals(event.newState, "");
}, "newState has default value of empty string");
test(function() {
- var event = new PopoverToggleEvent("test");
+ var event = new ToggleEvent("test");
assert_readonly(event, "newState", "readonly attribute value");
}, "newState is readonly");
test(function() {
- var event = new PopoverToggleEvent("test", null);
- assert_equals(event.currentState, "");
+ var event = new ToggleEvent("test", null);
+ assert_equals(event.oldState, "");
assert_equals(event.newState, "");
-}, "PopoverToggleEventInit argument is null");
+}, "ToggleEventInit argument is null");
test(function() {
- var event = new PopoverToggleEvent("test", undefined);
- assert_equals(event.currentState, "");
+ var event = new ToggleEvent("test", undefined);
+ assert_equals(event.oldState, "");
assert_equals(event.newState, "");
-}, "PopoverToggleEventInit argument is undefined");
+}, "ToggleEventInit argument is undefined");
test(function() {
- var event = new PopoverToggleEvent("test", {});
- assert_equals(event.currentState, "");
+ var event = new ToggleEvent("test", {});
+ assert_equals(event.oldState, "");
assert_equals(event.newState, "");
-}, "PopoverToggleEventInit argument is empty dictionary");
+}, "ToggleEventInit argument is empty dictionary");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: "sample"});
- assert_equals(event.currentState, "sample");
-}, "currentState set to 'sample'");
+ var event = new ToggleEvent("test", {oldState: "sample"});
+ assert_equals(event.oldState, "sample");
+}, "oldState set to 'sample'");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: undefined});
- assert_equals(event.currentState, "");
-}, "currentState set to undefined");
+ var event = new ToggleEvent("test", {oldState: undefined});
+ assert_equals(event.oldState, "");
+}, "oldState set to undefined");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: null});
- assert_equals(event.currentState, "null");
-}, "currentState set to null");
+ var event = new ToggleEvent("test", {oldState: null});
+ assert_equals(event.oldState, "null");
+}, "oldState set to null");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: false});
- assert_equals(event.currentState, "false");
-}, "currentState set to false");
+ var event = new ToggleEvent("test", {oldState: false});
+ assert_equals(event.oldState, "false");
+}, "oldState set to false");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: true});
- assert_equals(event.currentState, "true");
-}, "currentState set to true");
+ var event = new ToggleEvent("test", {oldState: true});
+ assert_equals(event.oldState, "true");
+}, "oldState set to true");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: 0.5});
- assert_equals(event.currentState, "0.5");
-}, "currentState set to a number");
+ var event = new ToggleEvent("test", {oldState: 0.5});
+ assert_equals(event.oldState, "0.5");
+}, "oldState set to a number");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: []});
- assert_equals(event.currentState, "");
-}, "currentState set to []");
+ var event = new ToggleEvent("test", {oldState: []});
+ assert_equals(event.oldState, "");
+}, "oldState set to []");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: [1, 2, 3]});
- assert_equals(event.currentState, "1,2,3");
-}, "currentState set to [1, 2, 3]");
+ var event = new ToggleEvent("test", {oldState: [1, 2, 3]});
+ assert_equals(event.oldState, "1,2,3");
+}, "oldState set to [1, 2, 3]");
test(function() {
- var event = new PopoverToggleEvent("test", {currentState: {sample: 0.5}});
- assert_equals(event.currentState, "[object Object]");
-}, "currentState set to an object");
+ var event = new ToggleEvent("test", {oldState: {sample: 0.5}});
+ assert_equals(event.oldState, "[object Object]");
+}, "oldState set to an object");
test(function() {
- var event = new PopoverToggleEvent("test",
- {currentState: {valueOf: function () { return 'sample'; }}});
- assert_equals(event.currentState, "[object Object]");
-}, "currentState set to an object with a valueOf function");
+ var event = new ToggleEvent("test",
+ {oldState: {valueOf: function () { return 'sample'; }}});
+ assert_equals(event.oldState, "[object Object]");
+}, "oldState set to an object with a valueOf function");
test(function() {
- var eventInit = {currentState: "sample",newState: "sample2"};
- var event = new PopoverToggleEvent("test", eventInit);
- assert_equals(event.currentState, "sample");
+ var eventInit = {oldState: "sample",newState: "sample2"};
+ var event = new ToggleEvent("test", eventInit);
+ assert_equals(event.oldState, "sample");
assert_equals(event.newState, "sample2");
-}, "PopoverToggleEventInit properties set value");
+}, "ToggleEventInit properties set value");
test(function() {
- var eventInit = {currentState: "open",newState: "closed"};
- var event = new PopoverToggleEvent("beforetoggle", eventInit);
- assert_equals(event.currentState, "open");
+ var eventInit = {oldState: "open",newState: "closed"};
+ var event = new ToggleEvent("beforetoggle", eventInit);
+ assert_equals(event.oldState, "open");
assert_equals(event.newState, "closed");
-}, "PopoverToggleEventInit properties set value 2");
+}, "ToggleEventInit properties set value 2");
test(function() {
- var eventInit = {currentState: "closed",newState: "open"};
- var event = new PopoverToggleEvent("aftertoggle", eventInit);
- assert_equals(event.currentState, "closed");
+ var eventInit = {oldState: "closed",newState: "open"};
+ var event = new ToggleEvent("toggle", eventInit);
+ assert_equals(event.oldState, "closed");
assert_equals(event.newState, "open");
-}, "PopoverToggleEventInit properties set value 3");
+}, "ToggleEventInit properties set value 3");
test(function() {
- var eventInit = {currentState: "open",newState: "open"};
- var event = new PopoverToggleEvent("beforetoggle", eventInit);
- assert_equals(event.currentState, "open");
+ var eventInit = {oldState: "open",newState: "open"};
+ var event = new ToggleEvent("beforetoggle", eventInit);
+ assert_equals(event.oldState, "open");
assert_equals(event.newState, "open");
-}, "PopoverToggleEventInit properties set value 4");
+}, "ToggleEventInit properties set value 4");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: "sample"});
+ var event = new ToggleEvent("test", {newState: "sample"});
assert_equals(event.newState, "sample");
}, "newState set to 'sample'");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: undefined});
+ var event = new ToggleEvent("test", {newState: undefined});
assert_equals(event.newState, "");
}, "newState set to undefined");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: null});
+ var event = new ToggleEvent("test", {newState: null});
assert_equals(event.newState, "null");
}, "newState set to null");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: false});
+ var event = new ToggleEvent("test", {newState: false});
assert_equals(event.newState, "false");
}, "newState set to false");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: true});
+ var event = new ToggleEvent("test", {newState: true});
assert_equals(event.newState, "true");
}, "newState set to true");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: 0.5});
+ var event = new ToggleEvent("test", {newState: 0.5});
assert_equals(event.newState, "0.5");
}, "newState set to a number");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: []});
+ var event = new ToggleEvent("test", {newState: []});
assert_equals(event.newState, "");
}, "newState set to []");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: [1, 2, 3]});
+ var event = new ToggleEvent("test", {newState: [1, 2, 3]});
assert_equals(event.newState, "1,2,3");
}, "newState set to [1, 2, 3]");
test(function() {
- var event = new PopoverToggleEvent("test", {newState: {sample: 0.5}});
+ var event = new ToggleEvent("test", {newState: {sample: 0.5}});
assert_equals(event.newState, "[object Object]");
}, "newState set to an object");
test(function() {
- var event = new PopoverToggleEvent("test",
+ var event = new ToggleEvent("test",
{newState: {valueOf: function () { return 'sample'; }}});
assert_equals(event.newState, "[object Object]");
}, "newState set to an object with a valueOf function");
diff --git a/tests/wpt/web-platform-tests/interfaces/popover.tentative.idl b/tests/wpt/web-platform-tests/interfaces/popover.tentative.idl
index bf23c7641d9..4e8c85f7dac 100644
--- a/tests/wpt/web-platform-tests/interfaces/popover.tentative.idl
+++ b/tests/wpt/web-platform-tests/interfaces/popover.tentative.idl
@@ -13,13 +13,13 @@ interface mixin PopoverTargetElement {
HTMLInputElement includes PopoverTargetElement;
HTMLButtonElement includes PopoverTargetElement;
-interface PopoverToggleEvent : Event {
- constructor(DOMString type, optional PopoverToggleEventInit eventInitDict = {});
- readonly attribute DOMString currentState;
+interface ToggleEvent : Event {
+ constructor(DOMString type, optional ToggleEventInit eventInitDict = {});
+ readonly attribute DOMString oldState;
readonly attribute DOMString newState;
};
-dictionary PopoverToggleEventInit : EventInit {
- DOMString currentState = "";
+dictionary ToggleEventInit : EventInit {
+ DOMString oldState = "";
DOMString newState = "";
};
diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html
index 2bc5999544f..d80ab67321f 100644
--- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html
+++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-fast.html
@@ -58,6 +58,7 @@ promise_test(async function(t) {
await videoTrack.applyConstraints({advanced : [ {torch : true} ]});
} catch (error) {
assert_equals(error.name, 'OverconstrainedError');
+ assert_equals(error.constraint, 'torch');
return;
}
assert_unreached('expected applyConstraints to reject');
diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html
index 1309d3bded8..c6401570b8b 100644
--- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html
+++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.https.html
@@ -107,6 +107,7 @@ image_capture_test(async t => {
await videoTrack.applyConstraints({ advanced: [constraint] });
} catch (error) {
assert_equals(error.name, 'OverconstrainedError');
+ assert_equals(error.constraint, Object.keys(constraint)[0]);
return;
}
assert_unreached(
diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html
index ac6216ae199..5050ed27dd8 100644
--- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html
+++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-reject.https.html
@@ -18,15 +18,14 @@ var makePromiseTest = function(getConstraint) {
let stream = await navigator.mediaDevices.getUserMedia({video: true});
let videoTrack = stream.getVideoTracks()[0];
+ const constraint = getConstraint(imageCaptureTest.mockImageCapture().state());
try {
- const constraints = {
- advanced : [ getConstraint(imageCaptureTest.mockImageCapture().state()) ]
- };
-
+ const constraints = { advanced : [constraint] };
await videoTrack.applyConstraints(constraints);
assert_unreached('expected applyConstraints to reject');
} catch (error) {
assert_equals(error.name, 'OverconstrainedError');
+ assert_equals(error.constraint, Object.keys(constraint)[0]);
}
});
};
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-not-loaded.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-not-loaded.html
index 611db7e2b13..c1ecdaeeafd 100644
--- a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-not-loaded.html
+++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-not-loaded.html
@@ -6,14 +6,15 @@
<script>
promise_test(async t => {
// Purposefully do not wait until after the load event (unlike some sibling tests).
-
- navigation.onnavigate = t.unreached_func("onnavigate should not be called");
- navigation.onnavigatesuccess = t.unreached_func("onnavigatesuccess should not be called");
- navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called");
-
+ assert_equals(navigation.entries().length, 1);
assert_equals(document.readyState, "loading", "Document must not have loaded yet");
- const result = navigation.navigate("#1", { history: "push" });
- await assertBothRejectDOM(t, result, "NotSupportedError");
+ let navigateEventType;
+ navigation.onnavigate = e => navigateEventType = e.navigationType;
+
+ await navigation.navigate("#1", { history: "push" }).finished;
+ assert_equals(navigateEventType, "push");
+ assert_equals(navigation.entries().length, 2);
+ assert_equals(navigation.currentEntry.index, 1);
}, "navigate() with history: 'push' in a document that has not yet had its load event");
</script>
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url-cross-document.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url-cross-document.html
new file mode 100644
index 00000000000..2d07bdcede2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url-cross-document.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/helpers.js"></script>
+<iframe id="i" src="/common/blank.html"></iframe>
+<script>
+promise_test(async t => {
+ // Wait for after the load event so that the navigation doesn't get converted
+ // into a replace navigation due to onload not having completed.
+ await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
+ assert_equals(i.contentWindow.navigation.entries().length, 1);
+
+ i.contentWindow.navigation.onnavigatesuccess = t.unreached_func("onnavigatesuccess should not be called");
+ i.contentWindow.navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called");
+
+ let navigateEventType;
+ i.contentWindow.navigation.onnavigate = e => navigateEventType = e.navigationType;
+
+ i.contentWindow.navigation.navigate(i.contentWindow.location, { history: "push" });
+ await new Promise(resolve => i.onload = resolve);
+ assert_equals(navigateEventType, "push");
+ assert_equals(i.contentWindow.navigation.entries().length, 2);
+ assert_equals(i.contentWindow.navigation.currentEntry.index, 1);
+}, "navigate() to the current URL with history: 'push' and allow it to go cross document");
+</script>
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url.html
new file mode 100644
index 00000000000..339e8c3056b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-same-url.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/helpers.js"></script>
+
+<script>
+promise_test(async t => {
+ // Wait for after the load event so that the navigation doesn't get converted
+ // into a replace navigation due to onload not having completed.
+ await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
+ assert_equals(navigation.entries().length, 1);
+
+
+ let navigateEventType;
+ navigation.onnavigate = e => {
+ navigateEventType = e.navigationType;
+ e.intercept();
+ }
+ navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called");
+
+ await navigation.navigate(location.href, { history: "push" }).finished;
+ assert_equals(navigateEventType, "push");
+ assert_equals(navigation.entries().length, 2);
+ assert_equals(navigation.currentEntry.index, 1);
+}, "navigate() to the current URL with history: 'push' and intercept so it remains same-document");
+</script>
diff --git a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html b/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html
deleted file mode 100644
index 216e94eb1d0..00000000000
--- a/tests/wpt/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-same-url.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/helpers.js"></script>
-
-<script>
-promise_test(async t => {
- // Wait for after the load event so that we are definitely testing the
- // same URL as the cause of the rejections.
- await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
-
- navigation.onnavigate = t.unreached_func("onnavigate should not be called");
- navigation.onnavigatesuccess = t.unreached_func("onnavigatesuccess should not be called");
- navigation.onnavigateerror = t.unreached_func("onnavigateerror should not be called");
-
- const result = navigation.navigate(location.href, { history: "push" });
- await assertBothRejectDOM(t, result, "NotSupportedError");
-}, "navigate() to a the current URL");
-</script>
diff --git a/tests/wpt/web-platform-tests/notifications/noop-sw.js b/tests/wpt/web-platform-tests/notifications/noop-sw.js
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/notifications/noop-sw.js
diff --git a/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js b/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js
new file mode 100644
index 00000000000..5fcfccff756
--- /dev/null
+++ b/tests/wpt/web-platform-tests/notifications/shownotification.https.window.js
@@ -0,0 +1,72 @@
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+
+"use strict";
+
+/** @type {ServiceWorkerRegistration} */
+let registration;
+
+function reset() {
+ return navigator.serviceWorker.getRegistrations().then(registrations => {
+ return Promise.all(registrations.map(r => r.unregister()));
+ });
+}
+
+async function registerSw() {
+ await reset();
+ const reg = await navigator.serviceWorker.register("noop-sw.js");
+ await navigator.serviceWorker.ready;
+ return reg;
+}
+
+async function cleanup() {
+ for (const n of await registration.getNotifications()) {
+ n.close();
+ }
+}
+
+promise_setup(async () => {
+ await test_driver.set_permission({ name: "notifications" }, "granted");
+ registration = await registerSw();
+});
+
+promise_test(async () => {
+ const notifications = await registration.getNotifications();
+ assert_equals(notifications.length, 0, "Should return zero notification");
+}, "fetching no notifications");
+
+promise_test(async t => {
+ t.add_cleanup(cleanup);
+ await registration.showNotification("");
+ const notifications = await registration.getNotifications();
+ assert_equals(notifications.length, 1, "Should return one notification");
+ assert_equals(notifications[0].title, "", "Should return an empty title");
+}, "fetching notification with an empty title");
+
+promise_test(async t => {
+ t.add_cleanup(cleanup);
+ await Promise.all([
+ registration.showNotification("thunder", { tag: "fire" }),
+ registration.showNotification("bird", { tag: "fox" }),
+ registration.showNotification("supernova", { tag: "quantum" }),
+ ]);
+ const notifications = await registration.getNotifications({ tag: "quantum" });
+ assert_equals(
+ notifications.length,
+ 1,
+ "Should return only the matching notification"
+ );
+ assert_equals(notifications[0].title, "supernova", "title should match");
+ assert_equals(notifications[0].tag, "quantum", "tag should match");
+}, "fetching notification by tag filter");
+
+promise_test(async t => {
+ t.add_cleanup(cleanup);
+ await Promise.all([
+ registration.showNotification("thunder"),
+ registration.showNotification("bird"),
+ registration.showNotification("supernova"),
+ ]);
+ const notifications = await registration.getNotifications();
+ assert_equals(notifications.length, 3, "Should return three notifications");
+}, "fetching multiple notifications");
diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js
index 4d403e12aa6..97bf79f0ef9 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js
+++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-attributes.tentative.window.js
@@ -34,7 +34,7 @@ promise_test(async t => {
return location.href;
});
// Check the BFCache result and the reported reasons.
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false);
await assertNotRestoredReasonsEquals(
rc1,
/*blocked=*/ true,
diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js
index a0f11abc837..745c167e790 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js
+++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache-reasons-stay.tentative.window.js
@@ -22,7 +22,7 @@ promise_test(async t => {
});
// Check the BFCache result and the reported reasons.
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false);
await assertNotRestoredReasonsEquals(
rc1,
/*blocked=*/ true,
@@ -35,7 +35,7 @@ promise_test(async t => {
// This time no blocking feature is used, so the page is restored
// from BFCache. Ensure that the previous reasons stay there.
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true);
await assertNotRestoredReasonsEquals(
rc1,
/*blocked=*/ true,
diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js
index 82c4c9bdd85..b5ff4d7cc59 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js
+++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-bfcache.tentative.window.js
@@ -18,7 +18,7 @@ promise_test(async t => {
// Check the BFCache result and verify that no reasons are recorded
// for successful restore.
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ true);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ true);
assert_true(await rc1.executeScript(() => {
let reasons =
performance.getEntriesByType('navigation')[0].notRestoredReasons;
diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js
index d1f29eab6fb..64c0a89c820 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js
+++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-cross-origin-bfcache.tentative.window.js
@@ -40,7 +40,7 @@ promise_test(async t => {
});
// Check the BFCache result and the reported reasons.
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false);
await assertNotRestoredReasonsEquals(
rc1,
/*blocked=*/ false,
diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js
index 6367f58ce91..5e94a930891 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js
+++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-not-bfcached.tentative.window.js
@@ -23,7 +23,7 @@ promise_test(async t => {
});
// Check the BFCache result and the reported reasons.
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false);
await assertNotRestoredReasonsEquals(
rc1,
/*blocked=*/ true,
diff --git a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js
index 36ec53364b5..858d94b26d6 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js
+++ b/tests/wpt/web-platform-tests/performance-timeline/not-restored-reasons/performance-navigation-timing-same-origin-bfcache.tentative.window.js
@@ -33,7 +33,7 @@ promise_test(async t => {
});
// Check the BFCache result and the reported reasons.
- await assertBFCache(rc1, /*shouldRestoreFromBFCache=*/ false);
+ await assertBFCacheEligibility(rc1, /*shouldRestoreFromBFCache=*/ false);
await assertNotRestoredReasonsEquals(
rc1,
/*blocked=*/ false,
diff --git a/tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html b/tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html
index b74b1175f8c..73df04b046e 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/resources/include-frames-subframe.html
@@ -29,7 +29,7 @@
const childFrame = document.createElement('iframe');
childFrame.addEventListener('load', async () => {
- const entries = performance.getEntries(true);
+ const entries = performance.getEntries({ includeChildFrames: true });
// Report number of performance entries to the parent.
window.parent.postMessage(entries.length, "*");
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html
index d5753dbcd7b..70019223a64 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/detached-frame.html
@@ -21,8 +21,7 @@ promise_test(async () => {
// Detach the child frame
document.body.removeChild(childFrame);
- const entries = childWindow.performance.getEntries(true);
- const parent_entries = performance.getEntries(true);
+ const entries = childWindow.performance.getEntries({ includeChildFrames: true });
+ const parent_entries = performance.getEntries({ includeChildFrames: true });
}, "GetEntries of a detached parent frame does not crash");
</script>
-
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html
index 0cdcd58115f..58480c7af1e 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A-A.html
@@ -32,12 +32,12 @@
// Verify the number of performance entries in the child frame.
assert_equals(childFrameEntrySize, 6, 'Child Frame should have 6 entries.');
- const entries = performance.getEntries(true);
+ const entries = performance.getEntries({ includeChildFrames: true });
- const navigationEntries = performance.getEntriesByType('navigation', true);
-
- const markedEntries = performance.getEntriesByName('entry-name', undefined, true);
+ const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true });
+ const markedEntries = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: true });
// 3 entries for parent, 4 for child, 2 for grandchild.
assert_equals(entries.length, 9, 'Total entries should be 9.');
@@ -48,6 +48,31 @@
// 1 entry for child, 1 for grandchild.
assert_equals(markedEntries.length, 2, 'Mark entries should be 2.');
+ // Test cases where includeChildFrames is false.
+ const entriesWithNoFitlerOptions = performance.getEntries();
+
+ const entriesWithoutIncludingChildFrames = performance.getEntries({ includeChildFrames: false });
+
+ const navigationEntriesWithoutIncludingChildFrames = performance.getEntries({ entryType: "navigation", includeChildFrames: false });
+
+ const markedEntriesWithoutIncludingChildFrames = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: false });
+
+ // 3 entries for parent.
+ assert_equals(entriesWithNoFitlerOptions.length, 3,
+ 'Total entries without filter options should be 3 without filter options.');
+
+ assert_equals(entriesWithoutIncludingChildFrames.length, 3,
+ 'Total entries with includeChildFrame being false should be 3.');
+
+ // 1 entry for parent.
+ assert_equals(navigationEntriesWithoutIncludingChildFrames.length, 1,
+ 'Navigation entries with includeChildFrame being false should be 1.');
+
+ // 0 entry for child.
+ assert_equals(markedEntriesWithoutIncludingChildFrames.length, 0,
+ 'Mark entries with includeChildFrame being false should be 0.');
+
}, 'GetEntries of a document of origin A, its child frame of origin B and \
its grandchild frame of origin A.');
</script>
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html
index bb4ee9e63ab..277a2376aef 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-A.html
@@ -28,11 +28,12 @@
// Load a child frame.
await loadSameOriginChildFrame();
- const entries = performance.getEntries(true);
+ const entries = performance.getEntries({ includeChildFrames: true });
- const navigationEntries = performance.getEntriesByType('navigation', true);
+ const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true });
- const markedEntries = performance.getEntriesByName('entry-name', undefined, true);
+ const markedEntries = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: true });
// 3 entries for parent, 2 for child.
assert_equals(entries.length, 5, 'Total entries should be 5.');
@@ -42,6 +43,32 @@
// 1 entry for child.
assert_equals(markedEntries.length, 1, 'Mark entries should be 1.');
+
+ // Test cases where includeChildFrames is false.
+ const entriesWithNoFitlerOptions = performance.getEntries();
+
+ const entriesWithoutIncludingChildFrames = performance.getEntries({ includeChildFrames: false });
+
+ const navigationEntriesWithoutIncludingChildFrames = performance.getEntries({ entryType: "navigation", includeChildFrames: false });
+
+ const markedEntriesWithoutIncludingChildFrames = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: false });
+
+ // 3 entries for parent.
+ assert_equals(entriesWithNoFitlerOptions.length, 3,
+ 'Total entries without filter options should be 3 without filter options.');
+
+ assert_equals(entriesWithoutIncludingChildFrames.length, 3,
+ 'Total entries with includeChildFrame being false should be 3.');
+
+ // 1 entry for parent.
+ assert_equals(navigationEntriesWithoutIncludingChildFrames.length, 1,
+ 'Navigation entries with includeChildFrame being false should be 1.');
+
+ // 0 entry for child.
+ assert_equals(markedEntriesWithoutIncludingChildFrames.length, 0,
+ 'Mark entries with includeChildFrame being false should be 0.');
+
}, 'GetEntries of a document of origin A and its child frame of origin A.');
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html
index e4c742a08a2..485e1d2a115 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AA.html
@@ -9,11 +9,12 @@
<body>
<script>
const verifyPerformanceEntries = () => {
- const entries = performance.getEntries(true);
+ const entries = performance.getEntries({ includeChildFrames: true });
- const navigationEntries = performance.getEntriesByType( 'navigation', true);
+ const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true });
- const markedEntries = performance.getEntriesByName('entry-name', undefined, true );
+ const markedEntries = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: true });
// 4 entries for parent, 2 for each child
assert_equals(entries.length, 8,'Total entries should be 8.');
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html
index cbd27a0380c..7650a61e499 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-AB.html
@@ -23,11 +23,12 @@
}
const verifyPerformanceEntries = () => {
- const entries = performance.getEntries(true);
+ const entries = performance.getEntries({ includeChildFrames: true });
- const navigationEntries = performance.getEntriesByType('navigation', true);
+ const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true });
- const markedEntries = performance.getEntriesByName('entry-name', undefined, true);
+ const markedEntries = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: true });
// 4 entries for parent, 2 for local child, 0 for remote child.
assert_equals(entries.length, 6, 'Total entries should 6.');
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html
index 5e46bc21624..9b873bdde6e 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-A.html
@@ -36,12 +36,12 @@
// Verify the number of performance entries in the child frame.
assert_equals(childFrameEntrySize, 4, 'Child frame entries should be 4.');
- const entries = performance.getEntries(true);
+ const entries = performance.getEntries({ includeChildFrames: true });
- const navigationEntries = performance.getEntriesByType(
- 'navigation', true);
+ const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true });
- const markedEntries = performance.getEntriesByName('entry-name', undefined, true);
+ const markedEntries = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: true });
// 3 entries for parent, 0 for child, 2 for grandchild.
assert_equals(entries.length, 5, 'Total entries should be 5.');
@@ -51,6 +51,32 @@
// 1 entry for grandchild.
assert_equals(markedEntries.length, 1, 'Mark entries should be 1.');
+
+ // Test cases where includeChildFrames is false.
+ const entriesWithNoFitlerOptions = performance.getEntries();
+
+ const entriesWithoutIncludingChildFrames = performance.getEntries({ includeChildFrames: false });
+
+ const navigationEntriesWithoutIncludingChildFrames = performance.getEntries({ entryType: "navigation", includeChildFrames: false });
+
+ const markedEntriesWithoutIncludingChildFrames = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: false });
+
+ // 3 entries for parent.
+ assert_equals(entriesWithNoFitlerOptions.length, 3,
+ 'Total entries without filter options should be 3 without filter options.');
+
+ assert_equals(entriesWithoutIncludingChildFrames.length, 3,
+ 'Total entries with includeChildFrame being false should be 3.');
+
+ // 1 entry for parent.
+ assert_equals(navigationEntriesWithoutIncludingChildFrames.length, 1,
+ 'Navigation entries with includeChildFrame being false should be 1.');
+
+ // 1 entry for child.
+ assert_equals(markedEntriesWithoutIncludingChildFrames.length, 0,
+ 'Mark entries with includeChildFrame being false should be 0.');
+
}, 'GetEntries of a document of origin A, its child frame of origin B and \
its grandchild frame of origin A.');
</script>
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html
index a1c85150e69..b182931e5dc 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B-B.html
@@ -35,7 +35,7 @@
// 4 for child, 2 for grandchild.
assert_equals(childFrameEntrySize, 6, 'Child frame entries should be 6.');
- const entries = performance.getEntries(true);
+ const entries = performance.getEntries({ includeChildFrames: true });
// 3 entries for parent, 0 for child, 0 for grandchild.
assert_equals(entries.length, 3, 'Total entries should be 3.');
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html
index 0373c824d90..0686c9b1e58 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/include-frames-originA-B.html
@@ -28,11 +28,12 @@
await loadCrossOriginChildFrame();
- const entries = performance.getEntries(true);
+ const entries = performance.getEntries({ includeChildFrames: true });
- const navigationEntries = performance.getEntriesByType("navigation", true);
+ const navigationEntries = performance.getEntries({ entryType: "navigation", includeChildFrames: true });
- const markedEntries = performance.getEntriesByName('entry-name', undefined, true);
+ const markedEntries = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: true });
// 3 entries for parent, 0 for child.
assert_equals(entries.length, 3, 'Total entries should be 3.');
diff --git a/tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html b/tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html
index 5e51ddbbe44..471a52ab285 100644
--- a/tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html
+++ b/tests/wpt/web-platform-tests/performance-timeline/tentative/performance-entry-source.html
@@ -8,7 +8,7 @@
<script>
promise_test(() => {
return new Promise(resolve => {
- const navigationEntries = performance.getEntriesByType("navigation")
+ const navigationEntries = performance.getEntries({ type: 'navigation' })
const parentEntry = navigationEntries[0]
// Parent NavigationTiming source is current window.
@@ -20,7 +20,9 @@ promise_test(() => {
document.body.appendChild(childFrame)
childFrame.addEventListener('load', () => {
- const markedEntries = performance.getEntriesByName("entry-name", undefined, true)
+ const markedEntries = performance.getEntries(
+ { name: 'entry-name', includeChildFrames: true });
+
const childEntry = markedEntries[0]
// Child PerformanceMark source is the child's Window.
@@ -30,4 +32,4 @@ promise_test(() => {
})
})
}, "PerformanceEntry source is equal to its respective Window")
-</script> \ No newline at end of file
+</script>
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js b/tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js
index caab177b986..0752850c8a3 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-direct-sockets.js
@@ -19,7 +19,7 @@ self.DirectSocketsServiceTest = (() => {
this.interceptor_.stop();
}
- openTcpSocket(
+ openTCPSocket(
options,
receiver,
observer) {
@@ -29,7 +29,7 @@ self.DirectSocketsServiceTest = (() => {
});
}
- openUdpSocket(
+ openUDPSocket(
options,
receiver,
listener) {
diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js
index 5753b7ec502..8424e1e36c8 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js
@@ -1,4 +1,4 @@
-import {FillLightMode, ImageCapture, ImageCaptureReceiver, MeteringMode, RedEyeReduction} from '/gen/media/capture/mojom/image_capture.mojom.m.js';
+import {BackgroundBlurMode, FillLightMode, ImageCapture, ImageCaptureReceiver, MeteringMode, RedEyeReduction} from '/gen/media/capture/mojom/image_capture.mojom.m.js';
self.ImageCaptureTest = (() => {
// Class that mocks ImageCapture interface defined in
@@ -129,6 +129,12 @@ self.ImageCaptureTest = (() => {
step: 3.0
},
fillLightMode: [FillLightMode.AUTO, FillLightMode.FLASH],
+
+ supportedBackgroundBlurModes: [
+ BackgroundBlurMode.OFF,
+ BackgroundBlurMode.BLUR
+ ],
+ backgroundBlurMode: BackgroundBlurMode.OFF,
}
};
this.panTiltZoomPermissionStatus_ = null;
@@ -217,6 +223,9 @@ self.ImageCaptureTest = (() => {
if (settings.hasTorch)
this.state_.state.torch = settings.torch;
+ if (settings.hasBackgroundBlurMode)
+ this.state_.state.backgroundBlurMode = [settings.backgroundBlurMode];
+
return Promise.resolve({
success: true
});
@@ -245,6 +254,19 @@ self.ImageCaptureTest = (() => {
return this.state_.state;
}
+ turnOffBackgroundBlurMode() {
+ this.state_.state.backgroundBlurMode = BackgroundBlurMode.OFF;
+ }
+ turnOnBackgroundBlurMode() {
+ this.state_.state.backgroundBlurMode = BackgroundBlurMode.BLUR;
+ }
+ turnOffSupportedBackgroundBlurModes() {
+ this.state_.state.supportedBackgroundBlurModes = [BackgroundBlurMode.OFF];
+ }
+ turnOnSupportedBackgroundBlurModes() {
+ this.state_.state.supportedBackgroundBlurModes = [BackgroundBlurMode.BLUR];
+ }
+
options() {
return this.settings_;
}
diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-range-animation.html b/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-range-animation.html
index dc3785078a6..9f66a5eb835 100644
--- a/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-range-animation.html
+++ b/tests/wpt/web-platform-tests/scroll-animations/css/view-timeline-range-animation.html
@@ -179,7 +179,7 @@
endOffset: 790
});
- test_animation_delay({
+ test_animation_delay({
rangeStart: 'exit 2em',
rangeEnd: 'exit 8em',
startOffset: 820,
diff --git a/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html b/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html
index 4123bda4708..f2a1b3f586d 100644
--- a/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html
+++ b/tests/wpt/web-platform-tests/scroll-animations/view-timelines/view-timeline-range.html
@@ -31,6 +31,7 @@
height: 100px;
width: 100px;
display: inline-block;
+ font-size: 10px;
}
</style>
<body>
@@ -149,4 +150,37 @@
});
}, 'View timeline with range as <name> <percent+px> pair.' );
+
+ promise_test(async t => {
+ await runTimelineRangeTest(t, {
+ rangeStart: "contain -50%",
+ rangeEnd: "enter 200%",
+ startOffset: 650,
+ endOffset: 800
+ });
+
+ await runTimelineRangeTest(t, {
+ rangeStart: "contain 20px",
+ rangeEnd: "contain 100px",
+ startOffset: 720,
+ endOffset: 800
+ });
+
+ await runTimelineRangeTest(t, {
+ rangeStart: "contain calc(0% + 20px)",
+ rangeEnd: "contain calc(100% - 10px)",
+ startOffset: 720,
+ endOffset: 790
+ });
+
+ await runTimelineRangeTest(t, {
+ rangeStart: "exit 2em",
+ rangeEnd: "exit 8em",
+ startOffset: 820,
+ endOffset: 880
+ });
+
+
+ }, 'View timeline with range as strings.');
+
</script>
diff --git a/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js b/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js
new file mode 100644
index 00000000000..4aaa02e4be4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js
@@ -0,0 +1,25 @@
+// META: title=Buckets API: Tests for bucket storage policies.
+// META: global=window,worker
+
+'use strict';
+
+promise_test(async testCase => {
+ testCase.add_cleanup(async () => {
+ const bucketNames = await navigator.storageBuckets.keys();
+ for (const bucketName of bucketNames) {
+ await navigator.storageBuckets.delete(bucketName);
+ }
+ });
+
+ await promise_rejects_js(
+ testCase, TypeError,
+ navigator.storageBuckets.open('negative', {quota: -1}));
+
+ await promise_rejects_js(
+ testCase, TypeError, navigator.storageBuckets.open('zero', {quota: 0}));
+
+ await promise_rejects_js(
+ testCase, TypeError,
+ navigator.storageBuckets.open(
+ 'above_max', {quota: Number.MAX_SAFE_INTEGER + 1}));
+}, 'The open promise should reject with a TypeError when quota is requested outside the range of 1 to Number.MAX_SAFE_INTEGER.');
diff --git a/tests/wpt/web-platform-tests/svg/struct/reftests/use-a.svg b/tests/wpt/web-platform-tests/svg/struct/reftests/use-a.svg
new file mode 100644
index 00000000000..40d4c83f21f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/struct/reftests/use-a.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Testing that 'use' can target 'a' elements</title>
+ <h:link rel="match" href="reference/green-100x100.svg"/>
+ <defs>
+ <a id="a">
+ <rect width="100" height="100" fill="green"/>
+ </a>
+ </defs>
+ <rect x="10" y="10" width="80" height="80" fill="red"/>
+
+ <use href="#a"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/struct/reftests/use-no-tspan.svg b/tests/wpt/web-platform-tests/svg/struct/reftests/use-no-tspan.svg
new file mode 100644
index 00000000000..5368ca343c8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/struct/reftests/use-no-tspan.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Testing that 'use' cannot make 'tspan' elements visible</title>
+ <h:link rel="match" href="reference/green-100x100.svg"/>
+ <defs>
+ <text><tspan id="t" x="20" y="100" fill="red" font-size="36">Should not see this</tspan></text>
+ </defs>
+ <rect width="100" height="100" fill="green"/>
+
+ <use href="#t"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/struct/reftests/use-switch.svg b/tests/wpt/web-platform-tests/svg/struct/reftests/use-switch.svg
new file mode 100644
index 00000000000..6c01c301980
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/struct/reftests/use-switch.svg
@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+ <title>Testing that 'use' can target 'switch' elements</title>
+ <h:link rel="match" href="reference/green-100x100.svg"/>
+ <defs>
+ <switch id="s">
+ <rect width="100" height="100" fill="green"/>
+ </switch>
+ </defs>
+ <rect x="10" y="10" width="80" height="80" fill="red"/>
+
+ <use href="#s"/>
+</svg>
diff --git a/tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js b/tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js
index 7bc7402b011..bc7e9b74fb9 100644
--- a/tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js
+++ b/tests/wpt/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.js
@@ -14,8 +14,8 @@ promise_setup(async () => {
'?vp8': {codec: 'vp8'},
'?vp9_p0': {codec: 'vp09.00.10.08'},
'?vp9_p2': {codec: 'vp09.02.10.10'},
- '?h264_avc': {codec: 'avc1.42001E', avc: {format: 'avc'}},
- '?h264_annexb': {codec: 'avc1.42001E', avc: {format: 'annexb'}}
+ '?h264_avc': {codec: 'avc1.42001F', avc: {format: 'avc'}},
+ '?h264_annexb': {codec: 'avc1.42001F', avc: {format: 'annexb'}}
}[location.search];
config.hardwareAcceleration = 'prefer-software';
config.bitrateMode = "constant";
diff --git a/tests/wpt/web-platform-tests/webcodecs/utils.js b/tests/wpt/web-platform-tests/webcodecs/utils.js
index aea658d3f2c..bbb53e70e0d 100644
--- a/tests/wpt/web-platform-tests/webcodecs/utils.js
+++ b/tests/wpt/web-platform-tests/webcodecs/utils.js
@@ -1,5 +1,4 @@
function make_audio_data(timestamp, channels, sampleRate, frames) {
-
let data = new Float32Array(frames*channels);
// This generates samples in a planar format.
@@ -207,3 +206,30 @@ function isFrameClosed(frame) {
frame.displayHeight == 0 && frame.codedRect == null &&
frame.visibleRect == null;
}
+
+function testImageBitmapToAndFromVideoFrame(
+ width, height, expectedPixel, canvasOptions, imageBitmapOptions,
+ imageSetting) {
+ let canvas = new OffscreenCanvas(width, height);
+ let ctx = canvas.getContext('2d', canvasOptions);
+ ctx.fillStyle = 'rgb(50, 100, 150)';
+ ctx.fillRect(0, 0, width, height);
+ testCanvas(ctx, width, height, expectedPixel, imageSetting, assert_equals);
+
+ return createImageBitmap(canvas, imageBitmapOptions)
+ .then((fromImageBitmap) => {
+ let videoFrame = new VideoFrame(fromImageBitmap, {timestamp: 0});
+ return createImageBitmap(videoFrame, imageBitmapOptions);
+ })
+ .then((toImageBitmap) => {
+ let myCanvas = new OffscreenCanvas(width, height);
+ let myCtx = myCanvas.getContext('2d', canvasOptions);
+ myCtx.drawImage(toImageBitmap, 0, 0);
+ let tolerance = 2;
+ testCanvas(
+ myCtx, width, height, expectedPixel, imageSetting,
+ (actual, expected) => {
+ assert_approx_equals(actual, expected, tolerance);
+ });
+ });
+}
diff --git a/tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js b/tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js
index 2923427b181..83697136238 100644
--- a/tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js
+++ b/tests/wpt/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any.js
@@ -1,32 +1,6 @@
// META: global=window,dedicatedworker
// META: script=/webcodecs/utils.js
-function testImageBitmapToAndFromVideoFrame(width, height, expectedPixel,
- canvasOptions, imageBitmapOptions, imageSetting) {
- let canvas = new OffscreenCanvas(width, height);
- let ctx = canvas.getContext('2d', canvasOptions);
- ctx.fillStyle = 'rgb(50, 100, 150)';
- ctx.fillRect(0, 0, width, height);
- testCanvas(ctx, width, height, expectedPixel, imageSetting, assert_equals);
-
- return createImageBitmap(canvas, imageBitmapOptions)
- .then((fromImageBitmap) => {
- let videoFrame = new VideoFrame(fromImageBitmap, {
- timestamp: 0
- });
- return createImageBitmap(videoFrame, imageBitmapOptions);
- })
- .then((toImageBitmap) => {
- let myCanvas = new OffscreenCanvas(width, height);
- let myCtx = myCanvas.getContext('2d', canvasOptions);
- myCtx.drawImage(toImageBitmap, 0, 0);
- let tolerance = 2;
- testCanvas(myCtx, width, height, expectedPixel, imageSetting, (actual, expected) => {
- assert_approx_equals(actual, expected, tolerance);
- });
- });
-}
-
promise_test(() => {
return testImageBitmapToAndFromVideoFrame(48, 36, kSRGBPixel);
}, 'ImageBitmap<->VideoFrame with canvas(48x36 srgb uint8).');
@@ -35,34 +9,6 @@ promise_test(() => {
return testImageBitmapToAndFromVideoFrame(480, 360, kSRGBPixel);
}, 'ImageBitmap<->VideoFrame with canvas(480x360 srgb uint8).');
-promise_test(() => {
- return testImageBitmapToAndFromVideoFrame(48, 36, kP3Pixel,
- kCanvasOptionsP3Uint8, {
- colorSpaceConversion: "none"
- }, kImageSettingOptionsP3Uint8);
-}, 'ImageBitmap<->VideoFrame with canvas(48x36 display-p3 uint8).');
-
-promise_test(() => {
- return testImageBitmapToAndFromVideoFrame(480, 360, kP3Pixel,
- kCanvasOptionsP3Uint8, {
- colorSpaceConversion: "none"
- }, kImageSettingOptionsP3Uint8);
-}, 'ImageBitmap<->VideoFrame with canvas(480x360 display-p3 uint8).');
-
-promise_test(() => {
- return testImageBitmapToAndFromVideoFrame(48, 36, kRec2020Pixel,
- kCanvasOptionsRec2020Uint8, {
- colorSpaceConversion: "none"
- }, kImageSettingOptionsRec2020Uint8);
-}, 'ImageBitmap<->VideoFrame with canvas(48x36 rec2020 uint8).');
-
-promise_test(() => {
- return testImageBitmapToAndFromVideoFrame(480, 360, kRec2020Pixel,
- kCanvasOptionsRec2020Uint8, {
- colorSpaceConversion: "none"
- }, kImageSettingOptionsRec2020Uint8);
-}, 'ImageBitmap<->VideoFrame with canvas(480x360 rec2020 uint8).');
-
promise_test(async () => {
const width = 128;
const height = 128;
@@ -79,4 +25,4 @@ promise_test(async () => {
assert_equals(bitmap.width, width / 2);
assert_equals(bitmap.height, height / 2);
bitmap.close();
-}, 'createImageBitmap uses frame display size'); \ No newline at end of file
+}, 'createImageBitmap uses frame display size');
diff --git a/tests/wpt/web-platform-tests/webnn/conv_transpose2d.https.any.js b/tests/wpt/web-platform-tests/webnn/conv_transpose2d.https.any.js
new file mode 100644
index 00000000000..8a1f30d5272
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webnn/conv_transpose2d.https.any.js
@@ -0,0 +1,25 @@
+// META: title=test WebNN API convTranspose2d operation
+// META: global=window,dedicatedworker
+// META: script=./resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-convtranspose2d
+
+const buildConvTranspose2d = (operationName, builder, resources) => {
+ // MLOperand convTranspose2d(MLOperand input, MLOperand filter, optional MLConvTranspose2dOptions options = {});
+ const namedOutputOperand = {};
+ const [inputOperand, filterOperand] = createMultiInputOperands(builder, resources);
+ let convTranspose2dOptions = {...resources.options};
+ if (convTranspose2dOptions.bias) {
+ convTranspose2dOptions.bias = createConstantOperand(builder, convTranspose2dOptions.bias);
+ }
+ if (convTranspose2dOptions.activation) {
+ convTranspose2dOptions.activation = builder[convTranspose2dOptions.activation]();
+ }
+ namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, filterOperand, convTranspose2dOptions);
+ return namedOutputOperand;
+};
+
+testWebNNOperation('convTranspose2d', buildConvTranspose2d); \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json
index 429992c67c6..19f414bbfea 100644
--- a/tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json
+++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/batch_normalization.json
@@ -1,7 +1,7 @@
{
"tests": [
{
- "name": "batchNormalization float32 2D tensor default options",
+ "name": "batchNormalization float32 2D tensor (mean and variance are non-constant) default options",
"inputs": {
"input": {
"shape": [4, 6],
@@ -90,6 +90,97 @@
}
},
{
+ "name": "batchNormalization float32 2D tensor default options",
+ "inputs": {
+ "input": {
+ "shape": [4, 6],
+ "data": [
+ -41.30732967168238,
+ 64.08864045143429,
+ -63.376671841233104,
+ -46.7903680211994,
+ 83.0222726565018,
+ -80.08049213079853,
+ -62.144380499565784,
+ -0.10012771650340824,
+ -40.902161220312074,
+ 56.963061967558474,
+ 37.37249789808206,
+ 57.04647733193906,
+ 82.05679802728304,
+ -86.11642850667623,
+ 76.88317547014259,
+ 97.03362133579051,
+ -21.35103988063949,
+ -96.93823797160586,
+ -9.359310262561493,
+ 80.2082435478892,
+ -85.36802529512583,
+ 62.35185227095363,
+ -68.4724340974042,
+ -12.107167478351585
+ ],
+ "type": "float32"
+ },
+ "mean": {
+ "shape": [6],
+ "data": [
+ -7.814267643537363,
+ -95.6412954353084,
+ 38.154405424391285,
+ -55.9520351570133,
+ -87.8650062484926,
+ -41.636455304505525
+ ],
+ "type": "float32",
+ "constant": true
+ },
+ "variance": {
+ "shape": [6],
+ "data": [
+ 60.311864286118144,
+ 26.432604504927436,
+ 53.275636661772396,
+ 40.146120500534074,
+ 59.41098289103077,
+ 35.99981828466932
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "expected": {
+ "shape": [4, 6],
+ "data": [
+ -4.312741756439209,
+ 31.068212509155273,
+ -13.910240173339844,
+ 1.4459478855133057,
+ 22.170541763305664,
+ -6.407354354858398,
+ -6.995829105377197,
+ 18.583200454711914,
+ -10.831125259399414,
+ 17.820920944213867,
+ 16.2480411529541,
+ 16.447195053100586,
+ 11.57226848602295,
+ 1.8526301383972168,
+ 5.306026458740234,
+ 24.145092010498047,
+ 8.629376411437988,
+ -9.216986656188965,
+ -0.1989477425813675,
+ 34.203548431396484,
+ -16.923160552978516,
+ 18.671411514282227,
+ 2.5159497261047363,
+ 4.921559810638428
+ ],
+ "type": "float32"
+ }
+ },
+ {
"name": "batchNormalization float32 3D tensor default options",
"inputs": {
"input": {
@@ -129,7 +220,8 @@
63.13715247590298,
-61.6298331266107
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -138,7 +230,8 @@
41.847234441124506,
16.128282835364406
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"expected": {
@@ -212,7 +305,8 @@
99.36075401019252,
-96.14736495234415
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -221,7 +315,8 @@
86.36218998771075,
73.88454888724165
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"expected": {
@@ -293,14 +388,16 @@
"data": [
35.407824570198215
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [1],
"data": [
40.931099315280846
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"expected": {
@@ -374,7 +471,8 @@
99.36075401019252,
-96.14736495234415
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -383,7 +481,8 @@
86.36218998771075,
73.88454888724165
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -460,7 +559,8 @@
99.36075401019252,
-96.14736495234415
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -469,7 +569,8 @@
86.36218998771075,
73.88454888724165
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -546,7 +647,8 @@
99.36075401019252,
-96.14736495234415
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -555,7 +657,8 @@
86.36218998771075,
73.88454888724165
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -566,7 +669,8 @@
-71.00757080938772,
-5.569730877611249
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"expected": {
@@ -640,7 +744,8 @@
99.36075401019252,
-96.14736495234415
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -649,7 +754,8 @@
86.36218998771075,
73.88454888724165
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -660,7 +766,8 @@
75.28591851497856,
-84.57243127763437
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"expected": {
@@ -734,7 +841,8 @@
99.36075401019252,
-96.14736495234415
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -743,7 +851,8 @@
86.36218998771075,
73.88454888724165
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -820,7 +929,8 @@
99.36075401019252,
-96.14736495234415
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -829,7 +939,8 @@
86.36218998771075,
73.88454888724165
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -906,7 +1017,8 @@
99.36075401019252,
-96.14736495234415
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
},
"variance": {
"shape": [3],
@@ -915,7 +1027,8 @@
86.36218998771075,
73.88454888724165
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json
index a4b97d3c039..ca7dc74aa79 100644
--- a/tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json
+++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/conv2d.json
@@ -1,7 +1,7 @@
{
"tests": [
{
- "name": "conv2d float32 4D input and filter tensors default options",
+ "name": "conv2d float32 4D input and filter(non-constant) tensors default options",
"inputs": {
"input": {
"shape": [1, 1, 5, 5],
@@ -68,7 +68,7 @@
}
},
{
- "name": "conv2d float32 4D input and filter tensors options.padding",
+ "name": "conv2d float32 4D input and filter tensors default options",
"inputs": {
"input": {
"shape": [1, 1, 5, 5],
@@ -114,7 +114,76 @@
91.71009194525874,
-45.17980970346187
],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "expected": {
+ "name": "output",
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 2908.13525390625,
+ -11333.4560546875,
+ 5481.1240234375,
+ -1681.341796875,
+ 17408.30078125,
+ -18923.2109375,
+ 6809.322265625,
+ -3083.824951171875,
+ -836.0403442382812
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "conv2d float32 4D input and filter tensors options.padding",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 5, 5],
+ "data": [
+ -36.64786517159748,
+ -11.288432057442094,
+ -76.58016110067685,
+ 27.405805828795508,
+ -80.47998789027426,
+ 76.04182611584571,
+ 72.35851634441039,
+ 96.98349851260227,
+ -27.84947185731808,
+ 50.58418221559799,
+ -32.43859311335213,
+ 23.48380170680882,
+ -85.38685191828938,
+ -73.94300271939952,
+ -15.851227160619004,
+ 31.57834732127077,
+ 0.42632253229469086,
+ -49.37459452307884,
+ -38.32858663836096,
+ 95.58856379258197,
+ -38.56091554697314,
+ -79.08006476009297,
+ -24.02026158435868,
+ 81.30008164674476,
+ 16.073515803100065
+ ],
"type": "float32"
+ },
+ "filter": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ -38.07863707159655,
+ 54.79507725238136,
+ -88.91290358136841,
+ 71.58386890759388,
+ -97.45390798644782,
+ -69.46620941454853,
+ 72.25696967588178,
+ 91.71009194525874,
+ -45.17980970346187
+ ],
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -200,7 +269,8 @@
91.71009194525874,
-45.17980970346187
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -265,7 +335,8 @@
91.71009194525874,
-45.17980970346187
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -327,7 +398,8 @@
91.71009194525874,
-45.17980970346187
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -405,7 +477,8 @@
91.71009194525874,
-45.17980970346187
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -462,7 +535,8 @@
91.71009194525874,
-45.17980970346187
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -529,7 +603,8 @@
91.71009194525874,
-45.17980970346187
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -600,7 +675,8 @@
91.71009194525874,
-45.17980970346187
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -670,7 +746,8 @@
88.16357174255782,
27.032330434044923
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -731,7 +808,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -812,7 +890,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -893,7 +972,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -974,7 +1054,8 @@
-25.359619829289443,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1055,7 +1136,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1136,7 +1218,8 @@
-25.359619829289443,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1217,7 +1300,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1299,7 +1383,8 @@
-25.359619829289443,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1381,7 +1466,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1463,7 +1549,8 @@
-25.359619829289443,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1545,7 +1632,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1634,7 +1722,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1715,7 +1804,8 @@
67.67284398422174,
-70.88191146932456
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1832,7 +1922,8 @@
4.087872503607585,
-16.408531598421618
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
@@ -1925,7 +2016,8 @@
69.12384362305653,
-61.16795516567643
],
- "type": "float32"
+ "type": "float32",
+ "constant": true
}
},
"options": {
diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/conv_transpose2d.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/conv_transpose2d.json
new file mode 100644
index 00000000000..311a7d9c78a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/conv_transpose2d.json
@@ -0,0 +1,2010 @@
+{
+ "tests": [
+ {
+ "name": "convTranspose2d float32 4D input and filter(non-constant) tensors default options",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ -76.02988383382066,
+ -71.32389057460688,
+ -2.085512195999769,
+ -76.10441972856492
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ 63.98739089703227,
+ -97.92857637226295,
+ -87.83247798464106,
+ -19.121183948450366
+ ],
+ "type": "float32"
+ }
+ },
+ "expected": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ -4864.9541015625,
+ 2881.66845703125,
+ 6984.64697265625,
+ 6544.44677734375,
+ 3052.84326171875,
+ 8816.5947265625,
+ 183.1757049560547,
+ 6724.31787109375,
+ 1455.2066650390625
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors default options",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ -76.02988383382066,
+ -71.32389057460688,
+ -2.085512195999769,
+ -76.10441972856492
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ 63.98739089703227,
+ -97.92857637226295,
+ -87.83247798464106,
+ -19.121183948450366
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "expected": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ -4864.9541015625,
+ 2881.66845703125,
+ 6984.64697265625,
+ 6544.44677734375,
+ 3052.84326171875,
+ 8816.5947265625,
+ 183.1757049560547,
+ 6724.31787109375,
+ 1455.2066650390625
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.padding",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ -76.02988383382066,
+ -71.32389057460688,
+ -2.085512195999769,
+ -76.10441972856492
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ 63.98739089703227,
+ -97.92857637226295,
+ -87.83247798464106,
+ -19.121183948450366
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "padding": [1, 1, 1, 1]
+ },
+ "expected": {
+ "shape": [1, 1, 1, 1],
+ "data": [
+ 3052.84326171875
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.strides",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "strides": [3, 2]
+ },
+ "expected": {
+ "shape": [1, 2, 9, 7],
+ "data": [
+ 405.32861328125,
+ -913.3131713867188,
+ 4430.83203125,
+ -7908.716796875,
+ 8961.7705078125,
+ -2223.964599609375,
+ 2242.54052734375,
+ -240.20901489257812,
+ 405.3154602050781,
+ -1450.89501953125,
+ 3509.776611328125,
+ 4863.240234375,
+ 986.9640502929688,
+ 1532.0460205078125,
+ 659.1137084960938,
+ 378.6374816894531,
+ 6058.3203125,
+ 3278.76220703125,
+ 4642.77734375,
+ 922.0017700195312,
+ 854.2426147460938,
+ 527.3759765625,
+ -1188.318359375,
+ 2518.74560546875,
+ -2975.44140625,
+ 1424.842529296875,
+ 3549.911376953125,
+ -3579.562255859375,
+ -312.5376892089844,
+ 527.35888671875,
+ 36.043426513671875,
+ 1320.4588623046875,
+ 2983.38037109375,
+ -1575.4005126953125,
+ -2445.465087890625,
+ 857.5775756835938,
+ 492.6479797363281,
+ 2603.7392578125,
+ 1233.5458984375,
+ -1418.9852294921875,
+ -1471.7071533203125,
+ -1363.5494384765625,
+ -2803.186279296875,
+ 6316.32421875,
+ -10309.48828125,
+ 8878.783203125,
+ -9393.546875,
+ 992.7969360351562,
+ -1001.08935546875,
+ 1661.2462158203125,
+ -2803.095458984375,
+ -2015.9989013671875,
+ -3940.2783203125,
+ -5855.30712890625,
+ -440.5892333984375,
+ -683.9185180664062,
+ -4558.322265625,
+ -2618.594970703125,
+ -8833.7314453125,
+ -3680.927978515625,
+ -4126.88671875,
+ -411.5895080566406,
+ -381.3412780761719,
+ -500.290283203125,
+ -945.930908203125,
+ -4479.54248046875,
+ -8191.166015625,
+ -2494.13671875,
+ -2303.390625,
+ -358.7896423339844,
+ -858.2017822265625,
+ 707.0885009765625,
+ -8207.9921875,
+ 6122.94091796875,
+ -8813.81640625,
+ 1721.796875,
+ -1890.8314208984375,
+ 23.423524856567383,
+ 23.942028045654297,
+ 779.2853393554688,
+ 207.3228759765625,
+ 5048.751953125,
+ 58.300071716308594,
+ 1403.691162109375,
+ -650.9312744140625,
+ -1230.757568359375,
+ -1821.5830078125,
+ -3081.70556640625,
+ 1464.52880859375,
+ 3676.69189453125,
+ 572.703125,
+ -1116.612548828125,
+ 919.9979248046875,
+ -3806.2138671875,
+ 2303.591552734375,
+ 805.9589233398438,
+ -2748.346923828125,
+ 3018.161376953125,
+ 30.476518630981445,
+ 31.151145935058594,
+ 826.3367919921875,
+ 77.99964904785156,
+ 1786.9542236328125,
+ -93.05907440185547,
+ -2240.583984375,
+ 3459.92578125,
+ 6541.9033203125,
+ 5882.58203125,
+ 9195.876953125,
+ 1976.2332763671875,
+ 1028.2532958984375,
+ 160.16677856445312,
+ 5935.18310546875,
+ -4890.1083984375,
+ 13713.203125,
+ -6873.9677734375,
+ 8481.697265625,
+ -768.6249389648438,
+ 844.0834350585938,
+ -161.99327087402344,
+ -165.5791473388672,
+ -4214.3623046875,
+ -232.75265502929688,
+ -5629.44921875,
+ -26.025653839111328,
+ -626.6198120117188
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.dilations",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ -23.303862322607927,
+ -60.660800814902856,
+ -45.27723579857441,
+ 79.39347194577522,
+ 16.536097856789752,
+ -46.916933052373636,
+ -47.06090492120389,
+ 82.67905506257102,
+ -6.757763278948744
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ 80.87123567764502,
+ -18.78697954458781,
+ -66.28471209276029,
+ -25.946448546240262
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "dilations": [2, 2]
+ },
+ "expected": {
+ "shape": [1, 1, 5, 5],
+ "data": [
+ -1884.6121826171875,
+ -4905.71435546875,
+ -3223.817138671875,
+ 1139.6331787109375,
+ 850.62255859375,
+ 6420.6484375,
+ 1337.2947998046875,
+ -5285.7939453125,
+ -310.6633605957031,
+ 881.4274291992188,
+ -2261.183837890625,
+ 10707.2412109375,
+ 3943.46484375,
+ 20.642683029174805,
+ 1301.741455078125,
+ -5262.5732421875,
+ -1096.090576171875,
+ 1049.896728515625,
+ -429.05303955078125,
+ 1217.3277587890625,
+ 3119.418701171875,
+ -5480.357421875,
+ 1668.999755859375,
+ -2145.227783203125,
+ 175.3399658203125
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.outputPadding",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "strides": [3, 2],
+ "outputPadding": [1, 1]
+ },
+ "expected": {
+ "shape": [1, 2, 10, 8],
+ "data": [
+ 405.32861328125,
+ -913.3131713867188,
+ 4430.83203125,
+ -7908.716796875,
+ 8961.7705078125,
+ -2223.964599609375,
+ 2242.54052734375,
+ 0,
+ -240.20901489257812,
+ 405.3154602050781,
+ -1450.89501953125,
+ 3509.776611328125,
+ 4863.240234375,
+ 986.9640502929688,
+ 1532.0460205078125,
+ 0,
+ 659.1137084960938,
+ 378.6374816894531,
+ 6058.3203125,
+ 3278.76220703125,
+ 4642.77734375,
+ 922.0017700195312,
+ 854.2426147460938,
+ 0,
+ 527.3759765625,
+ -1188.318359375,
+ 2518.74560546875,
+ -2975.44140625,
+ 1424.842529296875,
+ 3549.911376953125,
+ -3579.562255859375,
+ 0,
+ -312.5376892089844,
+ 527.35888671875,
+ 36.043426513671875,
+ 1320.4588623046875,
+ 2983.38037109375,
+ -1575.4005126953125,
+ -2445.465087890625,
+ 0,
+ 857.5775756835938,
+ 492.6479797363281,
+ 2603.7392578125,
+ 1233.5458984375,
+ -1418.9852294921875,
+ -1471.7071533203125,
+ -1363.5494384765625,
+ 0,
+ -2803.186279296875,
+ 6316.32421875,
+ -10309.48828125,
+ 8878.783203125,
+ -9393.546875,
+ 992.7969360351562,
+ -1001.08935546875,
+ 0,
+ 1661.2462158203125,
+ -2803.095458984375,
+ -2015.9989013671875,
+ -3940.2783203125,
+ -5855.30712890625,
+ -440.5892333984375,
+ -683.9185180664062,
+ 0,
+ -4558.322265625,
+ -2618.594970703125,
+ -8833.7314453125,
+ -3680.927978515625,
+ -4126.88671875,
+ -411.5895080566406,
+ -381.3412780761719,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -500.290283203125,
+ -945.930908203125,
+ -4479.54248046875,
+ -8191.166015625,
+ -2494.13671875,
+ -2303.390625,
+ -358.7896423339844,
+ 0,
+ -858.2017822265625,
+ 707.0885009765625,
+ -8207.9921875,
+ 6122.94091796875,
+ -8813.81640625,
+ 1721.796875,
+ -1890.8314208984375,
+ 0,
+ 23.423524856567383,
+ 23.942028045654297,
+ 779.2853393554688,
+ 207.3228759765625,
+ 5048.751953125,
+ 58.300071716308594,
+ 1403.691162109375,
+ 0,
+ -650.9312744140625,
+ -1230.757568359375,
+ -1821.5830078125,
+ -3081.70556640625,
+ 1464.52880859375,
+ 3676.69189453125,
+ 572.703125,
+ 0,
+ -1116.612548828125,
+ 919.9979248046875,
+ -3806.2138671875,
+ 2303.591552734375,
+ 805.9589233398438,
+ -2748.346923828125,
+ 3018.161376953125,
+ 0,
+ 30.476518630981445,
+ 31.151145935058594,
+ 826.3367919921875,
+ 77.99964904785156,
+ 1786.9542236328125,
+ -93.05907440185547,
+ -2240.583984375,
+ 0,
+ 3459.92578125,
+ 6541.9033203125,
+ 5882.58203125,
+ 9195.876953125,
+ 1976.2332763671875,
+ 1028.2532958984375,
+ 160.16677856445312,
+ 0,
+ 5935.18310546875,
+ -4890.1083984375,
+ 13713.203125,
+ -6873.9677734375,
+ 8481.697265625,
+ -768.6249389648438,
+ 844.0834350585938,
+ 0,
+ -161.99327087402344,
+ -165.5791473388672,
+ -4214.3623046875,
+ -232.75265502929688,
+ -5629.44921875,
+ -26.025653839111328,
+ -626.6198120117188,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.outputSizes",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "strides": [3, 2],
+ "outputSizes": [10, 8]
+ },
+ "expected": {
+ "shape": [1, 2, 10, 8],
+ "data": [
+ 405.32861328125,
+ -913.3131713867188,
+ 4430.83203125,
+ -7908.716796875,
+ 8961.7705078125,
+ -2223.964599609375,
+ 2242.54052734375,
+ 0,
+ -240.20901489257812,
+ 405.3154602050781,
+ -1450.89501953125,
+ 3509.776611328125,
+ 4863.240234375,
+ 986.9640502929688,
+ 1532.0460205078125,
+ 0,
+ 659.1137084960938,
+ 378.6374816894531,
+ 6058.3203125,
+ 3278.76220703125,
+ 4642.77734375,
+ 922.0017700195312,
+ 854.2426147460938,
+ 0,
+ 527.3759765625,
+ -1188.318359375,
+ 2518.74560546875,
+ -2975.44140625,
+ 1424.842529296875,
+ 3549.911376953125,
+ -3579.562255859375,
+ 0,
+ -312.5376892089844,
+ 527.35888671875,
+ 36.043426513671875,
+ 1320.4588623046875,
+ 2983.38037109375,
+ -1575.4005126953125,
+ -2445.465087890625,
+ 0,
+ 857.5775756835938,
+ 492.6479797363281,
+ 2603.7392578125,
+ 1233.5458984375,
+ -1418.9852294921875,
+ -1471.7071533203125,
+ -1363.5494384765625,
+ 0,
+ -2803.186279296875,
+ 6316.32421875,
+ -10309.48828125,
+ 8878.783203125,
+ -9393.546875,
+ 992.7969360351562,
+ -1001.08935546875,
+ 0,
+ 1661.2462158203125,
+ -2803.095458984375,
+ -2015.9989013671875,
+ -3940.2783203125,
+ -5855.30712890625,
+ -440.5892333984375,
+ -683.9185180664062,
+ 0,
+ -4558.322265625,
+ -2618.594970703125,
+ -8833.7314453125,
+ -3680.927978515625,
+ -4126.88671875,
+ -411.5895080566406,
+ -381.3412780761719,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -500.290283203125,
+ -945.930908203125,
+ -4479.54248046875,
+ -8191.166015625,
+ -2494.13671875,
+ -2303.390625,
+ -358.7896423339844,
+ 0,
+ -858.2017822265625,
+ 707.0885009765625,
+ -8207.9921875,
+ 6122.94091796875,
+ -8813.81640625,
+ 1721.796875,
+ -1890.8314208984375,
+ 0,
+ 23.423524856567383,
+ 23.942028045654297,
+ 779.2853393554688,
+ 207.3228759765625,
+ 5048.751953125,
+ 58.300071716308594,
+ 1403.691162109375,
+ 0,
+ -650.9312744140625,
+ -1230.757568359375,
+ -1821.5830078125,
+ -3081.70556640625,
+ 1464.52880859375,
+ 3676.69189453125,
+ 572.703125,
+ 0,
+ -1116.612548828125,
+ 919.9979248046875,
+ -3806.2138671875,
+ 2303.591552734375,
+ 805.9589233398438,
+ -2748.346923828125,
+ 3018.161376953125,
+ 0,
+ 30.476518630981445,
+ 31.151145935058594,
+ 826.3367919921875,
+ 77.99964904785156,
+ 1786.9542236328125,
+ -93.05907440185547,
+ -2240.583984375,
+ 0,
+ 3459.92578125,
+ 6541.9033203125,
+ 5882.58203125,
+ 9195.876953125,
+ 1976.2332763671875,
+ 1028.2532958984375,
+ 160.16677856445312,
+ 0,
+ 5935.18310546875,
+ -4890.1083984375,
+ 13713.203125,
+ -6873.9677734375,
+ 8481.697265625,
+ -768.6249389648438,
+ 844.0834350585938,
+ 0,
+ -161.99327087402344,
+ -165.5791473388672,
+ -4214.3623046875,
+ -232.75265502929688,
+ -5629.44921875,
+ -26.025653839111328,
+ -626.6198120117188,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=explicit options.padding",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ -76.02988383382066,
+ -71.32389057460688,
+ -2.085512195999769,
+ -76.10441972856492
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 1, 2, 2],
+ "data": [
+ 63.98739089703227,
+ -97.92857637226295,
+ -87.83247798464106,
+ -19.121183948450366
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "padding": [1, 1, 1, 1],
+ "autoPad": "explicit"
+ },
+ "expected": {
+ "shape": [1, 1, 1, 1],
+ "data": [
+ 3052.84326171875
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=same-upper",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "strides": [2, 2],
+ "autoPad": "same-upper"
+ },
+ "expected": {
+ "shape": [1, 2, 6, 6],
+ "data": [
+ 405.32861328125,
+ -913.3131713867188,
+ 4430.83203125,
+ -7908.716796875,
+ 8961.7705078125,
+ -2223.964599609375,
+ -240.20901489257812,
+ 405.3154602050781,
+ -1450.89501953125,
+ 3509.776611328125,
+ 4863.240234375,
+ 986.9640502929688,
+ 1186.4896240234375,
+ -809.680908203125,
+ 8577.0654296875,
+ 303.3206481933594,
+ 6067.6201171875,
+ 4471.9130859375,
+ -312.5376892089844,
+ 527.35888671875,
+ 36.043426513671875,
+ 1320.4588623046875,
+ 2983.38037109375,
+ -1575.4005126953125,
+ -1945.608642578125,
+ 6808.97216796875,
+ -7705.7490234375,
+ 10112.3291015625,
+ -10812.5322265625,
+ -478.9102478027344,
+ 1661.2462158203125,
+ -2803.095458984375,
+ -2015.9989013671875,
+ -3940.2783203125,
+ -5855.30712890625,
+ -440.5892333984375,
+ -500.290283203125,
+ -945.930908203125,
+ -4479.54248046875,
+ -8191.166015625,
+ -2494.13671875,
+ -2303.390625,
+ -858.2017822265625,
+ 707.0885009765625,
+ -8207.9921875,
+ 6122.94091796875,
+ -8813.81640625,
+ 1721.796875,
+ -627.5077514648438,
+ -1206.8155517578125,
+ -1042.297607421875,
+ -2874.382568359375,
+ 6513.28076171875,
+ 3734.991943359375,
+ -1116.612548828125,
+ 919.9979248046875,
+ -3806.2138671875,
+ 2303.591552734375,
+ 805.9589233398438,
+ -2748.346923828125,
+ 3490.402099609375,
+ 6573.0546875,
+ 6708.9189453125,
+ 9273.876953125,
+ 3763.1875,
+ 935.1942749023438,
+ 5935.18310546875,
+ -4890.1083984375,
+ 13713.203125,
+ -6873.9677734375,
+ 8481.697265625,
+ -768.6249389648438
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=same-upper ignored options.padding",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "padding": [1, 1, 1, 1],
+ "strides": [2, 2],
+ "autoPad": "same-upper"
+ },
+ "expected": {
+ "shape": [1, 2, 6, 6],
+ "data": [
+ 405.32861328125,
+ -913.3131713867188,
+ 4430.83203125,
+ -7908.716796875,
+ 8961.7705078125,
+ -2223.964599609375,
+ -240.20901489257812,
+ 405.3154602050781,
+ -1450.89501953125,
+ 3509.776611328125,
+ 4863.240234375,
+ 986.9640502929688,
+ 1186.4896240234375,
+ -809.680908203125,
+ 8577.0654296875,
+ 303.3206481933594,
+ 6067.6201171875,
+ 4471.9130859375,
+ -312.5376892089844,
+ 527.35888671875,
+ 36.043426513671875,
+ 1320.4588623046875,
+ 2983.38037109375,
+ -1575.4005126953125,
+ -1945.608642578125,
+ 6808.97216796875,
+ -7705.7490234375,
+ 10112.3291015625,
+ -10812.5322265625,
+ -478.9102478027344,
+ 1661.2462158203125,
+ -2803.095458984375,
+ -2015.9989013671875,
+ -3940.2783203125,
+ -5855.30712890625,
+ -440.5892333984375,
+ -500.290283203125,
+ -945.930908203125,
+ -4479.54248046875,
+ -8191.166015625,
+ -2494.13671875,
+ -2303.390625,
+ -858.2017822265625,
+ 707.0885009765625,
+ -8207.9921875,
+ 6122.94091796875,
+ -8813.81640625,
+ 1721.796875,
+ -627.5077514648438,
+ -1206.8155517578125,
+ -1042.297607421875,
+ -2874.382568359375,
+ 6513.28076171875,
+ 3734.991943359375,
+ -1116.612548828125,
+ 919.9979248046875,
+ -3806.2138671875,
+ 2303.591552734375,
+ 805.9589233398438,
+ -2748.346923828125,
+ 3490.402099609375,
+ 6573.0546875,
+ 6708.9189453125,
+ 9273.876953125,
+ 3763.1875,
+ 935.1942749023438,
+ 5935.18310546875,
+ -4890.1083984375,
+ 13713.203125,
+ -6873.9677734375,
+ 8481.697265625,
+ -768.6249389648438
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=same-lower",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "strides": [2, 2],
+ "autoPad": "same-lower"
+ },
+ "expected": {
+ "shape": [1, 2, 6, 6],
+ "data": [
+ 405.3154602050781,
+ -1450.89501953125,
+ 3509.776611328125,
+ 4863.240234375,
+ 986.9640502929688,
+ 1532.0460205078125,
+ -809.680908203125,
+ 8577.0654296875,
+ 303.3206481933594,
+ 6067.6201171875,
+ 4471.9130859375,
+ -2725.319580078125,
+ 527.35888671875,
+ 36.043426513671875,
+ 1320.4588623046875,
+ 2983.38037109375,
+ -1575.4005126953125,
+ -2445.465087890625,
+ 6808.97216796875,
+ -7705.7490234375,
+ 10112.3291015625,
+ -10812.5322265625,
+ -478.9102478027344,
+ -2364.638671875,
+ -2803.095458984375,
+ -2015.9989013671875,
+ -3940.2783203125,
+ -5855.30712890625,
+ -440.5892333984375,
+ -683.9185180664062,
+ -2618.594970703125,
+ -8833.7314453125,
+ -3680.927978515625,
+ -4126.88671875,
+ -411.5895080566406,
+ -381.3412780761719,
+ 707.0885009765625,
+ -8207.9921875,
+ 6122.94091796875,
+ -8813.81640625,
+ 1721.796875,
+ -1890.8314208984375,
+ -1206.8155517578125,
+ -1042.297607421875,
+ -2874.382568359375,
+ 6513.28076171875,
+ 3734.991943359375,
+ 1976.394287109375,
+ 919.9979248046875,
+ -3806.2138671875,
+ 2303.591552734375,
+ 805.9589233398438,
+ -2748.346923828125,
+ 3018.161376953125,
+ 6573.0546875,
+ 6708.9189453125,
+ 9273.876953125,
+ 3763.1875,
+ 935.1942749023438,
+ -2080.417236328125,
+ -4890.1083984375,
+ 13713.203125,
+ -6873.9677734375,
+ 8481.697265625,
+ -768.6249389648438,
+ 844.0834350585938,
+ -165.5791473388672,
+ -4214.3623046875,
+ -232.75265502929688,
+ -5629.44921875,
+ -26.025653839111328,
+ -626.6198120117188
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.autoPad=same-lower ignored options.padding",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "padding": [1, 1, 1, 1],
+ "strides": [2, 2],
+ "autoPad": "same-lower"
+ },
+ "expected": {
+ "shape": [1, 2, 6, 6],
+ "data": [
+ 405.3154602050781,
+ -1450.89501953125,
+ 3509.776611328125,
+ 4863.240234375,
+ 986.9640502929688,
+ 1532.0460205078125,
+ -809.680908203125,
+ 8577.0654296875,
+ 303.3206481933594,
+ 6067.6201171875,
+ 4471.9130859375,
+ -2725.319580078125,
+ 527.35888671875,
+ 36.043426513671875,
+ 1320.4588623046875,
+ 2983.38037109375,
+ -1575.4005126953125,
+ -2445.465087890625,
+ 6808.97216796875,
+ -7705.7490234375,
+ 10112.3291015625,
+ -10812.5322265625,
+ -478.9102478027344,
+ -2364.638671875,
+ -2803.095458984375,
+ -2015.9989013671875,
+ -3940.2783203125,
+ -5855.30712890625,
+ -440.5892333984375,
+ -683.9185180664062,
+ -2618.594970703125,
+ -8833.7314453125,
+ -3680.927978515625,
+ -4126.88671875,
+ -411.5895080566406,
+ -381.3412780761719,
+ 707.0885009765625,
+ -8207.9921875,
+ 6122.94091796875,
+ -8813.81640625,
+ 1721.796875,
+ -1890.8314208984375,
+ -1206.8155517578125,
+ -1042.297607421875,
+ -2874.382568359375,
+ 6513.28076171875,
+ 3734.991943359375,
+ 1976.394287109375,
+ 919.9979248046875,
+ -3806.2138671875,
+ 2303.591552734375,
+ 805.9589233398438,
+ -2748.346923828125,
+ 3018.161376953125,
+ 6573.0546875,
+ 6708.9189453125,
+ 9273.876953125,
+ 3763.1875,
+ 935.1942749023438,
+ -2080.417236328125,
+ -4890.1083984375,
+ 13713.203125,
+ -6873.9677734375,
+ 8481.697265625,
+ -768.6249389648438,
+ 844.0834350585938,
+ -165.5791473388672,
+ -4214.3623046875,
+ -232.75265502929688,
+ -5629.44921875,
+ -26.025653839111328,
+ -626.6198120117188
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nchw",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "inputLayout": "nchw"
+ },
+ "expected": {
+ "shape": [1, 2, 5, 5],
+ "data": [
+ 405.32861328125,
+ 2596.5771484375,
+ -6000.77880859375,
+ 5750.810546875,
+ 2242.54052734375,
+ 287.1669616699219,
+ -1542.5599365234375,
+ 201.3699493408203,
+ 12985.3310546875,
+ -2047.5162353515625,
+ -2456.6103515625,
+ 8206.8583984375,
+ 10376.37109375,
+ -3526.02001953125,
+ -2592.311767578125,
+ 2518.82373046875,
+ 2172.04345703125,
+ -8902.2451171875,
+ -6885.82666015625,
+ -2047.468017578125,
+ -4558.322265625,
+ -9026.1748046875,
+ -6823.5537109375,
+ -3822.001220703125,
+ -381.3412780761719,
+ -500.290283203125,
+ -5278.12939453125,
+ -9556.7421875,
+ -3579.294677734375,
+ -358.7896423339844,
+ -1509.133056640625,
+ -9585.0283203125,
+ 1927.8074951171875,
+ -1805.5863037109375,
+ -1318.1282958984375,
+ 2366.736572265625,
+ 9756.3564453125,
+ 16228.5,
+ 2232.58203125,
+ 4582.01953125,
+ 5965.65966796875,
+ 3560.370361328125,
+ 166.09043884277344,
+ 8565.1220703125,
+ -1396.5006103515625,
+ -161.99327087402344,
+ -393.29119873046875,
+ -4244.86474609375,
+ -5630.01318359375,
+ -626.6198120117188
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc",
+ "inputs": {
+ "input": {
+ "shape": [1, 3, 3, 1],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "inputLayout": "nhwc"
+ },
+ "expected": {
+ "shape": [1, 5, 5, 2],
+ "data": [
+ 405.32861328125,
+ -500.290283203125,
+ 2596.5771484375,
+ -5278.12939453125,
+ -6000.77880859375,
+ -9556.7421875,
+ 5750.810546875,
+ -3579.294677734375,
+ 2242.54052734375,
+ -358.7896423339844,
+ 287.1669616699219,
+ -1509.133056640625,
+ -1542.5599365234375,
+ -9585.0283203125,
+ 201.3699493408203,
+ 1927.8074951171875,
+ 12985.3310546875,
+ -1805.5863037109375,
+ -2047.5162353515625,
+ -1318.1282958984375,
+ -2456.6103515625,
+ 2366.736572265625,
+ 8206.8583984375,
+ 9756.3564453125,
+ 10376.37109375,
+ 16228.5,
+ -3526.02001953125,
+ 2232.58203125,
+ -2592.311767578125,
+ 4582.01953125,
+ 2518.82373046875,
+ 5965.65966796875,
+ 2172.04345703125,
+ 3560.370361328125,
+ -8902.2451171875,
+ 166.09043884277344,
+ -6885.82666015625,
+ 8565.1220703125,
+ -2047.468017578125,
+ -1396.5006103515625,
+ -4558.322265625,
+ -161.99327087402344,
+ -9026.1748046875,
+ -393.29119873046875,
+ -6823.5537109375,
+ -4244.86474609375,
+ -3822.001220703125,
+ -5630.01318359375,
+ -381.3412780761719,
+ -626.6198120117188
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=iohw",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 2, 3, 3],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "filterLayout": "iohw"
+ },
+ "expected": {
+ "shape": [1, 2, 5, 5],
+ "data": [
+ 405.32861328125,
+ 2596.5771484375,
+ -6000.77880859375,
+ 5750.810546875,
+ 2242.54052734375,
+ 287.1669616699219,
+ -1542.5599365234375,
+ 201.3699493408203,
+ 12985.3310546875,
+ -2047.5162353515625,
+ -2456.6103515625,
+ 8206.8583984375,
+ 10376.37109375,
+ -3526.02001953125,
+ -2592.311767578125,
+ 2518.82373046875,
+ 2172.04345703125,
+ -8902.2451171875,
+ -6885.82666015625,
+ -2047.468017578125,
+ -4558.322265625,
+ -9026.1748046875,
+ -6823.5537109375,
+ -3822.001220703125,
+ -381.3412780761719,
+ -500.290283203125,
+ -5278.12939453125,
+ -9556.7421875,
+ -3579.294677734375,
+ -358.7896423339844,
+ -1509.133056640625,
+ -9585.0283203125,
+ 1927.8074951171875,
+ -1805.5863037109375,
+ -1318.1282958984375,
+ 2366.736572265625,
+ 9756.3564453125,
+ 16228.5,
+ 2232.58203125,
+ 4582.01953125,
+ 5965.65966796875,
+ 3560.370361328125,
+ 166.09043884277344,
+ 8565.1220703125,
+ -1396.5006103515625,
+ -161.99327087402344,
+ -393.29119873046875,
+ -4244.86474609375,
+ -5630.01318359375,
+ -626.6198120117188
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=hwoi",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [3, 3, 2, 1],
+ "data": [
+ 40.96311950512268,
+ -50.56008968241721,
+ -92.30080102023575,
+ -95.59720535330331,
+ 93.07175377236138,
+ -14.890781966723395,
+ -24.275884210454365,
+ -86.73116027713128,
+ 40.96179340360786,
+ 71.45942817317783,
+ 63.58423287755542,
+ -78.4748360510919,
+ 66.61102029547635,
+ 2.367216720219375,
+ 38.26567426829985,
+ 2.41961735973382,
+ 35.453481305983416,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "filterLayout": "hwoi"
+ },
+ "expected": {
+ "shape": [1, 2, 5, 5],
+ "data": [
+ 405.32861328125,
+ 2596.5771484375,
+ -6000.77880859375,
+ 5750.810546875,
+ 2242.54052734375,
+ 287.1669616699219,
+ -1542.5599365234375,
+ 201.3699493408203,
+ 12985.3310546875,
+ -2047.5162353515625,
+ -2456.6103515625,
+ 8206.8583984375,
+ 10376.37109375,
+ -3526.02001953125,
+ -2592.311767578125,
+ 2518.82373046875,
+ 2172.04345703125,
+ -8902.2451171875,
+ -6885.82666015625,
+ -2047.468017578125,
+ -4558.322265625,
+ -9026.1748046875,
+ -6823.5537109375,
+ -3822.001220703125,
+ -381.3412780761719,
+ -500.290283203125,
+ -5278.12939453125,
+ -9556.7421875,
+ -3579.294677734375,
+ -358.7896423339844,
+ -1509.133056640625,
+ -9585.0283203125,
+ 1927.8074951171875,
+ -1805.5863037109375,
+ -1318.1282958984375,
+ 2366.736572265625,
+ 9756.3564453125,
+ 16228.5,
+ 2232.58203125,
+ 4582.01953125,
+ 5965.65966796875,
+ 3560.370361328125,
+ 166.09043884277344,
+ 8565.1220703125,
+ -1396.5006103515625,
+ -161.99327087402344,
+ -393.29119873046875,
+ -4244.86474609375,
+ -5630.01318359375,
+ -626.6198120117188
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=ohwi",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 9.894964540954291,
+ 85.68415702346587,
+ 24.094748480252548,
+ 12.874409836228523,
+ 32.236353301686904,
+ -38.46024349445712,
+ -68.43195409231569,
+ -96.19399584390335,
+ -10.756102339485494
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [2, 3, 3, 1],
+ "data": [
+ 40.96311950512268,
+ -92.30080102023575,
+ 93.07175377236138,
+ -24.275884210454365,
+ 40.96179340360786,
+ 63.58423287755542,
+ 66.61102029547635,
+ 38.26567426829985,
+ 35.453481305983416,
+ -50.56008968241721,
+ -95.59720535330331,
+ -14.890781966723395,
+ -86.73116027713128,
+ 71.45942817317783,
+ -78.4748360510919,
+ 2.367216720219375,
+ 2.41961735973382,
+ 58.25714567285877
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "filterLayout": "ohwi"
+ },
+ "expected": {
+ "shape": [1, 2, 5, 5],
+ "data": [
+ 405.32861328125,
+ 2596.5771484375,
+ -6000.77880859375,
+ 5750.810546875,
+ 2242.54052734375,
+ 287.1669616699219,
+ -1542.5599365234375,
+ 201.3699493408203,
+ 12985.3310546875,
+ -2047.5162353515625,
+ -2456.6103515625,
+ 8206.8583984375,
+ 10376.37109375,
+ -3526.02001953125,
+ -2592.311767578125,
+ 2518.82373046875,
+ 2172.04345703125,
+ -8902.2451171875,
+ -6885.82666015625,
+ -2047.468017578125,
+ -4558.322265625,
+ -9026.1748046875,
+ -6823.5537109375,
+ -3822.001220703125,
+ -381.3412780761719,
+ -500.290283203125,
+ -5278.12939453125,
+ -9556.7421875,
+ -3579.294677734375,
+ -358.7896423339844,
+ -1509.133056640625,
+ -9585.0283203125,
+ 1927.8074951171875,
+ -1805.5863037109375,
+ -1318.1282958984375,
+ 2366.736572265625,
+ 9756.3564453125,
+ 16228.5,
+ 2232.58203125,
+ 4582.01953125,
+ 5965.65966796875,
+ 3560.370361328125,
+ 166.09043884277344,
+ 8565.1220703125,
+ -1396.5006103515625,
+ -161.99327087402344,
+ -393.29119873046875,
+ -4244.86474609375,
+ -5630.01318359375,
+ -626.6198120117188
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.bias",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ -35.50202479799816,
+ -65.90990648626578,
+ -66.672293514068,
+ 80.32994045387008,
+ -89.53493227053441,
+ -52.51627346126466,
+ -99.28214091000234,
+ -13.35498515563036,
+ -46.226616683751544
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 64.41018509298152,
+ 2.8492947110761833,
+ -74.475134769611,
+ 45.144679656015455,
+ 66.50646443100189,
+ -59.3402779768406,
+ 50.17738650272881,
+ -72.58010817012352,
+ 48.844270540309566
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "bias": {
+ "shape": [1],
+ "data": [
+ 3.3796334459218684
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "expected": {
+ "shape": [1, 1, 5, 5],
+ "data": [
+ -2283.3125,
+ -4343.04541015625,
+ -1834.77392578125,
+ 4722.0595703125,
+ 4968.8076171875,
+ 3574.718505859375,
+ -10871.2939453125,
+ -14903.5322265625,
+ 5998.84521484375,
+ 7870.888671875,
+ -4546.3310546875,
+ -569.7133178710938,
+ -9006.1337890625,
+ 4306.3984375,
+ 3305.884033203125,
+ -447.93438720703125,
+ -17525.416015625,
+ 10706.7138671875,
+ -2840.132080078125,
+ 181.3609161376953,
+ -4978.3388671875,
+ 6539.169921875,
+ -6196.20849609375,
+ 2706.197998046875,
+ -2254.525634765625
+ ],
+ "type": "float32"
+ }
+ },
+ {
+ "name": "convTranspose2d float32 4D input and filter tensors options.activation=relu",
+ "inputs": {
+ "input": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ -35.50202479799816,
+ -65.90990648626578,
+ -66.672293514068,
+ 80.32994045387008,
+ -89.53493227053441,
+ -52.51627346126466,
+ -99.28214091000234,
+ -13.35498515563036,
+ -46.226616683751544
+ ],
+ "type": "float32"
+ },
+ "filter": {
+ "shape": [1, 1, 3, 3],
+ "data": [
+ 64.41018509298152,
+ 2.8492947110761833,
+ -74.475134769611,
+ 45.144679656015455,
+ 66.50646443100189,
+ -59.3402779768406,
+ 50.17738650272881,
+ -72.58010817012352,
+ 48.844270540309566
+ ],
+ "type": "float32",
+ "constant": true
+ }
+ },
+ "options": {
+ "activation": "relu" // relu operator
+ },
+ "expected": {
+ "shape": [1, 1, 5, 5],
+ "data": [
+ 0,
+ 0,
+ 0,
+ 4718.68017578125,
+ 4965.42822265625,
+ 3571.3388671875,
+ 0,
+ 0,
+ 5995.4658203125,
+ 7867.50927734375,
+ 0,
+ 0,
+ 0,
+ 4303.01904296875,
+ 3302.50439453125,
+ 0,
+ 0,
+ 10703.3349609375,
+ 0,
+ 177.98129272460938,
+ 0,
+ 6535.79052734375,
+ 0,
+ 2702.818359375,
+ 0
+ ],
+ "type": "float32"
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json b/tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json
index f04b7b1dbe6..7d48ed3a18f 100644
--- a/tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json
+++ b/tests/wpt/web-platform-tests/webnn/resources/test_data/reshape.json
@@ -202,7 +202,7 @@
}
},
{
- "name": "reshape float32 tensor to a new shape (one dimension being the special value -1)",
+ "name": "reshape float32 tensor to a new shape (one dimension being the special value of null)",
"inputs": {
"input": {
"shape": [3, 2, 2, 2],
@@ -235,7 +235,7 @@
"type": "float32"
}
},
- "newShape": [4, -1, 3, 1],
+ "newShape": [4, null, 3, 1],
"expected": {
"name": "output",
"shape": [4, 2, 3, 1],
@@ -336,7 +336,7 @@
}
},
{
- "name": "reshape float32 tensor to 1D tensor newShape=[-1]",
+ "name": "reshape float32 tensor to 1D tensor newShape=[null]",
"inputs": {
"input": {
"shape": [3, 2, 2, 2],
@@ -369,7 +369,7 @@
"type": "float32"
}
},
- "newShape": [-1],
+ "newShape": [null],
"expected": {
"name": "output",
"shape": [24],
diff --git a/tests/wpt/web-platform-tests/webnn/resources/utils.js b/tests/wpt/web-platform-tests/webnn/resources/utils.js
index 4c7b6bc6ef1..f727d3ffe36 100644
--- a/tests/wpt/web-platform-tests/webnn/resources/utils.js
+++ b/tests/wpt/web-platform-tests/webnn/resources/utils.js
@@ -68,7 +68,7 @@ const getExpectedDataAndType = (resources, outputName) => {
};
/**
- * Get ULP tolerance of conv2d operation.
+ * Get ULP tolerance of conv2d/convTranspose2d operation.
* @param {Object} resources - Resources used for building a graph
* @param {String} operationName - An operation name
* @returns {Number} A tolerance number
@@ -81,7 +81,8 @@ const getConv2dPrecisionTolerance = (resources, operationName) => {
const options = resources.options;
let groups = 1;
let inputChannels = inputShape[1]; // default nchw inputLayout
- let filterWidth = filterShape[3]; // default oihw filterLayout
+ // default oihw filterLayout for conv2d or default iohw filterLayout for convTranspose2d
+ let filterWidth = filterShape[3];
let filterHeight = filterShape[2];
if (options) {
if (options.groups) {
@@ -94,14 +95,20 @@ const getConv2dPrecisionTolerance = (resources, operationName) => {
inputChannels = options.inputLayout === 'nchw' ? inputChannels : inputShape[3];
}
if (options.filterLayout) {
- if (!['oihw', 'hwio', 'ohwi', 'ihwo'].includes(options.filterLayout)) {
+ let filterLayouts = ['oihw', 'hwio', 'ohwi', 'ihwo']; // default for conv2d
+ if (operationName === 'convTranspose2d') {
+ filterLayouts = ['iohw', 'hwoi', 'ohwi'];
+ }
+ if (!filterLayouts.includes(options.filterLayout)) {
throw new Error(`Unsupported filterLayout ${options.filterLayout}`);
}
switch (options.filterLayout) {
case 'oihw':
+ case 'iohw':
// Just use the existing filterWidth and filterHeight above.
break;
case 'hwio':
+ case 'hwoi':
filterWidth = filterShape[1];
filterHeight = filterShape[0];
break;
@@ -240,6 +247,7 @@ const PrecisionMetrics = {
clamp: {ULP: {float32: 0, float16: 0}},
concat: {ULP: {float32: 0, float16: 0}},
conv2d: {ULP: {float32: getConv2dPrecisionTolerance, float16: getConv2dPrecisionTolerance}},
+ convTranspose2d: {ULP: {float32: getConv2dPrecisionTolerance, float16: getConv2dPrecisionTolerance}},
// Begin Element-wise binary operations
add: {ULP: {float32: 1, float16: 1}},
sub: {ULP: {float32: 1, float16: 1}},
@@ -445,8 +453,13 @@ const createMultiInputOperands = (builder, resources) => {
let inputOperands = [];
const inputOperandNameArray = Object.keys(resources.inputs);
inputOperandNameArray.forEach(inputOperandName => {
- const inputOperand = createSingleInputOperand(builder, resources, inputOperandName);
- inputOperands.push(inputOperand);
+ let operand;
+ if (resources.inputs[inputOperandName].hasOwnProperty('constant') && resources.inputs[inputOperandName]['constant']) {
+ operand = createConstantOperand(builder, resources.inputs[inputOperandName]);
+ } else {
+ operand = createSingleInputOperand(builder, resources, inputOperandName);
+ }
+ inputOperands.push(operand);
});
return inputOperands;
};
@@ -498,12 +511,16 @@ const buildGraph = (operationName, builder, resources, buildFunc) => {
if (Array.isArray(resources.inputs)) {
// the inputs of concat() is a sequence
for (let subInput of resources.inputs) {
- inputs[subInput.name] = new TypedArrayDict[subInput.type](subInput.data);
+ if (!subInput.hasOwnProperty('constant') || !subInput.constant) {
+ inputs[subInput.name] = new TypedArrayDict[subInput.type](subInput.data);
+ }
}
} else {
for (let inputName in resources.inputs) {
const subTestByName = resources.inputs[inputName];
- inputs[inputName] = new TypedArrayDict[subTestByName.type](subTestByName.data);
+ if (!subTestByName.hasOwnProperty('constant') || !subTestByName.constant) {
+ inputs[inputName] = new TypedArrayDict[subTestByName.type](subTestByName.data);
+ }
}
}
let outputs = {};
diff --git a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html
index a0cc989c13d..8a7a8b6ba68 100644
--- a/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html
+++ b/tests/wpt/web-platform-tests/webrtc-extensions/RTCRtpParameters-adaptivePtime.html
@@ -6,12 +6,6 @@
<script>
'use strict';
- function getFirstEncoding(param) {
- const { encodings } = param;
- assert_equals(encodings.length, 1);
- return encodings[0];
- }
-
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
@@ -20,14 +14,14 @@
});
let param = sender.getParameters();
- let encoding = getFirstEncoding(param);
+ let encoding = param.encodings[0];
assert_true(encoding.adaptivePtime);
encoding.adaptivePtime = false;
await sender.setParameters(param);
param = sender.getParameters();
- encoding = getFirstEncoding(param);
+ encoding = param.encodings[0];
assert_false(encoding.adaptivePtime);
@@ -39,7 +33,7 @@
const { sender } = pc.addTransceiver('audio', { sendEncodings: [{}] });
const param = sender.getParameters();
- const encoding = getFirstEncoding(param);
+ const encoding = param.encodings[0];
assert_false(encoding.adaptivePtime);
diff --git a/tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html b/tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html
index 37c1b919b41..1519ee84f73 100644
--- a/tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html
+++ b/tests/wpt/web-platform-tests/webrtc-priority/RTCRtpParameters-encodings.html
@@ -25,7 +25,7 @@
const param = sender.getParameters();
validateSenderRtpParameters(param);
- const encoding = getFirstEncoding(param);
+ const encoding = param.encodings[0];
assert_equals(encoding.active, false);
assert_equals(encoding.priority, 'low');
diff --git a/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html b/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html
index d8b1c6e1350..ff28c2b5e95 100644
--- a/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html
+++ b/tests/wpt/web-platform-tests/webrtc-svc/RTCRtpParameters-scalability.html
@@ -21,7 +21,7 @@
});
const param = sender.getParameters();
- const encoding = getFirstEncoding(param);
+ const encoding = param.encodings[0];
assert_equals(encoding.scalabilityMode, 'L1T3');
@@ -29,28 +29,18 @@
await sender.setParameters(param);
const updatedParam = sender.getParameters();
- const updatedEncoding = getFirstEncoding(updatedParam);
+ const updatedEncoding = updatedParam.encodings[0];
assert_equals(updatedEncoding.scalabilityMode, 'L1T2');
}, `Setting and updating scalabilityMode to a legal value should be accepted`);
promise_test(async t => {
- const capabilities = RTCRtpSender.getCapabilities('video');
- var svcSupported = false;
- for (const codec of capabilities.codecs) {
- if ('scalabilityModes' in codec && codec.scalabilityModes.length > 0) {
- svcSupported = true;
- }
- }
- assert_true(svcSupported);
- }, `Sender capabilities should include at least some scalability modes`);
-
- promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('video');
const param = sender.getParameters();
- assert_equals(param.encodings.length, 0);
+ const encoding = param.encodings[0];
+ assert_true(!('scalabilityMode' in encoding));
}, 'Not setting sendEncodings results in no mode info before negotiation');
promise_test(async t => {
@@ -60,30 +50,11 @@
sendEncodings: [{}],
});
const param = sender.getParameters();
- const encoding = getFirstEncoding(param);
-
+ const encoding = param.encodings[0];
assert_true(!('scalabilityMode' in encoding));
}, 'Not setting a scalability mode results in no mode set before negotiation');
promise_test(async t => {
- const pc1 = new RTCPeerConnection();
- const pc2 = new RTCPeerConnection();
- t.add_cleanup(() => pc1.close());
- t.add_cleanup(() => pc2.close());
- const { sender } = pc1.addTransceiver('video', {
- sendEncodings: [{}],
- });
- const param = sender.getParameters();
- const encoding = getFirstEncoding(param);
-
- exchangeIceCandidates(pc1, pc2);
- await exchangeOfferAnswer(pc1, pc2);
- const param2 = sender.getParameters();
- const encoding2 = getFirstEncoding(param);
- assert_true('scalabilityMode' in encoding2);
- }, 'Not setting a scalability mode results in some mode set after negotiation');
-
- promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
assert_throws_dom('OperationError', () => {
@@ -105,7 +76,7 @@
});
// Before negotiation, the mode should be preserved.
const param = transceiver.sender.getParameters();
- const encoding = getFirstEncoding(param);
+ const encoding = param.encodings[0];
assert_true('scalabilityMode' in encoding);
// If L3T3 is not supported at all, abort test.
assert_implements_optional(encoding.scalabilityMode === 'L3T3');
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html
index a370b6c059a..bec44c53e46 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html
@@ -275,33 +275,64 @@
1. If connection's [[isClosed]] slot is true, abort these steps.
*/
-promise_test(async t => {
- const v = document.createElement('video');
- v.autoplay = true;
- const pc1 = new RTCPeerConnection();
- t.add_cleanup(() => pc1.close());
- const pc2 = new RTCPeerConnection();
- t.add_cleanup(() => pc2.close());
- const stream1 = await getNoiseStream({video: {signal: 20}});
- t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop()));
- const [track1] = stream1.getTracks();
- const stream2 = await getNoiseStream({video: {signal: 250}});
- t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop()));
- const [track2] = stream2.getTracks();
- const sender = pc1.addTrack(track1);
- pc2.ontrack = (e) => {
- v.srcObject = new MediaStream([e.track]);
- };
- const metadataToBeLoaded = new Promise((resolve) => {
- v.addEventListener('loadedmetadata', () => {
- resolve();
+ promise_test(async t => {
+ const v = document.createElement('video');
+ v.autoplay = true;
+ const pc1 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc2.close());
+ const stream1 = await getNoiseStream({video: {signal: 20}});
+ t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop()));
+ const [track1] = stream1.getTracks();
+ const stream2 = await getNoiseStream({video: {signal: 250}});
+ t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop()));
+ const [track2] = stream2.getTracks();
+ const sender = pc1.addTrack(track1);
+ pc2.ontrack = (e) => {
+ v.srcObject = new MediaStream([e.track]);
+ };
+ const metadataToBeLoaded = new Promise((resolve) => {
+ v.addEventListener('loadedmetadata', () => {
+ resolve();
+ });
+ });
+ exchangeIceCandidates(pc1, pc2);
+ exchangeOfferAnswer(pc1, pc2);
+ await metadataToBeLoaded;
+ await detectSignal(t, v, 20);
+ await sender.replaceTrack(track2);
+ await detectSignal(t, v, 250);
+ }, 'ReplaceTrack transmits the new track not the old track');
+
+ promise_test(async t => {
+ const v = document.createElement('video');
+ v.autoplay = true;
+ const pc1 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc2.close());
+ const stream1 = await getNoiseStream({video: {signal: 20}});
+ t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop()));
+ const [track1] = stream1.getTracks();
+ const stream2 = await getNoiseStream({video: {signal: 250}});
+ t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop()));
+ const [track2] = stream2.getTracks();
+ const sender = pc1.addTrack(track1);
+ pc2.ontrack = (e) => {
+ v.srcObject = new MediaStream([e.track]);
+ };
+ const metadataToBeLoaded = new Promise((resolve) => {
+ v.addEventListener('loadedmetadata', () => {
+ resolve();
+ });
});
- });
- exchangeIceCandidates(pc1, pc2);
- exchangeOfferAnswer(pc1, pc2);
- await metadataToBeLoaded;
- await detectSignal(t, v, 20);
- await sender.replaceTrack(track2);
- await detectSignal(t, v, 250);
-}, 'ReplaceTrack transmits the new track not the old track');
+ exchangeIceCandidates(pc1, pc2);
+ exchangeOfferAnswer(pc1, pc2);
+ await metadataToBeLoaded;
+ await detectSignal(t, v, 20);
+ await sender.replaceTrack(null);
+ await sender.replaceTrack(track2);
+ await detectSignal(t, v, 250);
+ }, 'ReplaceTrack null -> new track transmits the new track');
</script>