aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json2071
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/zero-width-floats-positioning.tentative.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/gap-shorthand.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/place-content-shorthand.html.ini30
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/place-items-shorthand.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-align/parsing/place-self-shorthand.html.ini24
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/border-image-width-computed.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-flexbox/percentage-heights-003.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-shorthand.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini1
-rw-r--r--tests/wpt/metadata/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini13
-rw-r--r--tests/wpt/metadata/css/css-values/clamp-length-serialize.html.ini7
-rw-r--r--tests/wpt/metadata/css/css-values/min-max-percentage-length-interpolation.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini2
-rw-r--r--tests/wpt/metadata/css/mediaqueries/aspect-ratio-serialization.html.ini4
-rw-r--r--tests/wpt/metadata/css/mediaqueries/navigation-controls.tentative.html.ini22
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini17
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini6
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini)2
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini19
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini34
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini28
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini34
-rw-r--r--tests/wpt/metadata/html/rendering/non-replaced-elements/tables/table-column-width.html.ini2
-rw-r--r--tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/srcset/avoid-reload-on-resize.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini4
-rw-r--r--tests/wpt/metadata/permissions/permissions-query-feature-policy-attribute.https.sub.html.ini4
-rw-r--r--tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini9
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html.ini19
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini14
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontextoptions.html.ini19
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html.ini22
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/adding-events.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html.ini31
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/automation-rate.html.ini10
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-delay.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html.ini1
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html.ini19
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html.ini34
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/baseaudiocontext-audioworklet.https.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/simple-input-output.https.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html.ini28
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html.ini19
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-disconnect.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini7
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolution-mono-mono.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-cascade.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-channels.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini16
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini16
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini19
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini43
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/ctor-delay.html.ini28
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-nondefault-delay.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelay.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html.ini10
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-scheduling.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html.ini10
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html.ini28
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html.ini10
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html.ini31
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html.ini37
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse.html.ini10
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini51
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/ctor-mediastreamaudiodestination.html.ini19
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/automation-changes.html.ini19
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html.ini49
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html.ini16
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper.html.ini28
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html.ini21
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/silent-inputs.html.ini10
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-copy-curve.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-limits.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-simple.html.ini4
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper.html.ini4
-rw-r--r--tests/wpt/metadata/webxr/gamepads-module/idlharness.https.window.js.ini4
-rw-r--r--tests/wpt/metadata/webxr/xrWebGLLayer_constructor.https.html.ini3
-rw-r--r--tests/wpt/metadata/workers/semantics/interface-objects/003.any.js.ini4
-rw-r--r--tests/wpt/metadata/workers/semantics/interface-objects/004.any.js.ini4
-rw-r--r--tests/wpt/mozilla/meta/mozilla/xmlhttprequest_url.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/.github/workflows/pull_request.yml2
-rw-r--r--tests/wpt/web-platform-tests/.github/workflows/push-build-publish-documentation-website.yml2
-rw-r--r--tests/wpt/web-platform-tests/.github/workflows/push-build-release-manifest.yml2
-rw-r--r--tests/wpt/web-platform-tests/.taskcluster.yml3
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html37
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html66
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/fire-success-event-exception.html31
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html47
-rw-r--r--tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js5
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats/negative-margin-float-positioning.html9
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html9
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats/new-fc-beside-float-with-margin.html9
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats-positioning.tentative.html (renamed from tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats-positioning.html)2
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-direction-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-duration-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-fill-mode-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-invalid.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-iteration-count-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-play-state-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-shorthand.html48
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/parsing/animation-valid.html38
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-shorthand.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-shorthand.sub.html55
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-computed.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-shorthand.html61
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-shorthand.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-shorthand.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-box/parsing/margin-shorthand.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-box/parsing/padding-shorthand.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-cascade/all-prop-initial-visited-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-cascade/all-prop-initial-visited.html9
-rw-r--r--tests/wpt/web-platform-tests/css/css-content/inheritance.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-height-flex-items-019.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-flow-shorthand.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-shorthand.html51
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-003.html9
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-011.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-012.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-013.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-014.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-003.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-004.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-007.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-008.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-011.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-012.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-013.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-014.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/parsing/grid-area-shorthand.html99
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-columns-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-rows-invalid.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-valid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-valid.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-shorthand.html62
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/parsing/list-style-shorthand.sub.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-logical/parsing/inset-shorthand.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/parsing/text-decoration-shorthand.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html9
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-delay-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-duration-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-invalid.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-property-invalid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-shorthand.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-invalid.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-valid.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-valid.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-delay-000-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-delay-000.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-delay-002-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-delay-002.html)3
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-delay-003-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-delay-003.html)3
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-duration-002-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-duration-002.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-duration-003-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-duration-003.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-duration-004-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-duration-004.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-003-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-003.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-004-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-004.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-005-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-005.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-006-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-006.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-007-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-007.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-008-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-008.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-009-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-009.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-010-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-010.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-011-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-011.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-012-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-012.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-013-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-013.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-014-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-014.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-015-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-015.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-016-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-016.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-017-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-017.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-018-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-018.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-019-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-019.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-020-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-020.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-021-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-021.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-022-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-022.html)2
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-023-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-023.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-024-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-024.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-025-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-025.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-026-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-026.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-027-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-027.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-028-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-028.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-029-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-029.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-030-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-030.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-031-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-031.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-032-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-032.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-033-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-033.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-034-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-034.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-035-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-035.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-036-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-036.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-037-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-037.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-038-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-038.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-039-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-039.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-040-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-040.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-041-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-041.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-042-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-042.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-043-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-043.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-044-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-044.html)2
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-property-045-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-property-045.html)2
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html94
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-002-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-002.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-003-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-003.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-004-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-004.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-005-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-005.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-006-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-006.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-007.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-008.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-009.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-010-manual.html (renamed from tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-010.html)1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-011.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-012.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-013.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-ui/parsing/outline-shorthand.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/clamp-length-computed.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/clamp-length-invalid.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/clamp-length-serialize.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/min-max-percentage-length-interpolation.html33
-rw-r--r--tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-serialization.html13
-rw-r--r--tests/wpt/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html22
-rw-r--r--tests/wpt/web-platform-tests/css/motion/animation/offset-interpolation.html12
-rw-r--r--tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html11
-rw-r--r--tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js36
-rw-r--r--tests/wpt/web-platform-tests/css/support/shorthand-testcommon.js39
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-008-ref.html4
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/MutationObserver-sanity.html95
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/clearkey-update-non-ascii-input.js22
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js13
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/invalid-license.js21
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js16
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/setmediakeys.js3
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/syntax-mediakeysession.js9
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/temporary-license-type.js2
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/update-disallowed-input.js8
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/util/utils.js42
-rw-r--r--tests/wpt/web-platform-tests/fetch/sec-metadata/portal.tentative.https.sub.html48
-rw-r--r--tests/wpt/web-platform-tests/fetch/sec-metadata/resources/post-to-owner.py2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html26
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/table-column-width-ref.html2
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/table-column-width.html10
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html30
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html34
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html39
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-different-load.html44
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/expected-fail/unhandled-rejection.html8
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/unhandled-rejection.html.ini4
-rw-r--r--tests/wpt/web-platform-tests/interfaces/IndexedDB.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/WebIDL.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/cookie-store.idl8
-rw-r--r--tests/wpt/web-platform-tests/interfaces/css-masking.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/feature-policy.idl1
-rw-r--r--tests/wpt/web-platform-tests/interfaces/fetch.idl20
-rw-r--r--tests/wpt/web-platform-tests/interfaces/gamepad.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/generic-sensor.idl4
-rw-r--r--tests/wpt/web-platform-tests/interfaces/magnetometer.idl6
-rw-r--r--tests/wpt/web-platform-tests/interfaces/notifications.idl10
-rw-r--r--tests/wpt/web-platform-tests/interfaces/orientation-event.idl10
-rw-r--r--tests/wpt/web-platform-tests/interfaces/orientation-sensor.idl6
-rw-r--r--tests/wpt/web-platform-tests/interfaces/payment-handler.idl6
-rw-r--r--tests/wpt/web-platform-tests/interfaces/proximity.idl2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/touch-events.idl64
-rw-r--r--tests/wpt/web-platform-tests/interfaces/url.idl10
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl21
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr-gamepads-module.idl14
-rw-r--r--tests/wpt/web-platform-tests/intersection-observer/resources/cross-origin-child-iframe.sub.html7
-rw-r--r--tests/wpt/web-platform-tests/intersection-observer/resources/same-origin-grand-child-iframe.html8
-rw-r--r--tests/wpt/web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub.html24
-rw-r--r--tests/wpt/web-platform-tests/intersection-observer/v2/delay-test.html21
-rw-r--r--tests/wpt/web-platform-tests/lint.whitelist5
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html3
-rw-r--r--tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html3
-rw-r--r--tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js42
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.https.window.js76
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.https.window.js106
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.https.window.js111
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getDirectory.tentative.https.manual.window.js4
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.js4
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-removeEntry.tentative.https.manual.window.js4
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/native_FileSystemWriter.tentative.https.manual.window.js4
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/resources/native-fs-test-helpers.js49
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/resources/sandboxed-fs-test-helpers.js25
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js112
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getDirectory.js111
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getFile.js100
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-removeEntry.js69
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemWriter.js (renamed from tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.https.window.js)178
-rw-r--r--tests/wpt/web-platform-tests/permissions/feature-policy-permissions-query.html11
-rw-r--r--tests/wpt/web-platform-tests/permissions/permissions-query-feature-policy-attribute.https.sub.html75
-rw-r--r--tests/wpt/web-platform-tests/portals/portals-repeated-activate.html10
-rw-r--r--tests/wpt/web-platform-tests/portals/resources/portal-repeated-activate-window.html20
-rw-r--r--tests/wpt/web-platform-tests/portals/resources/simple-portal-adopts-and-activates-predecessor.html6
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/status-codes-create-entry.html2
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js2
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js4
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/unit/throwing-assertions.html268
-rw-r--r--tests/wpt/web-platform-tests/resources/testharness.js335
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html4
-rw-r--r--tests/wpt/web-platform-tests/shadow-dom/focus/focus-selector-delegatesFocus.html72
-rw-r--r--tests/wpt/web-platform-tests/shadow-dom/focus/resources/shadow-utils.js5
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/README.md2
-rw-r--r--tests/wpt/web-platform-tests/storage-access-api/hasStorageAccess.sub.window.js9
-rw-r--r--tests/wpt/web-platform-tests/storage/opaque-origin.https.window.js23
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/keysplines-x-limits.html42
-rw-r--r--tests/wpt/web-platform-tests/svg/animations/scripted/onhover-syncbases.html14
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/tcdownload.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/lint/lint.py5
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html29
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html2
-rw-r--r--tests/wpt/web-platform-tests/webaudio/resources/audit.js16
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html78
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html198
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html182
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html94
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html62
-rw-r--r--tests/wpt/web-platform-tests/webxr/ar-module/idlharness.https.window.js16
-rw-r--r--tests/wpt/web-platform-tests/webxr/gamepads-module/idlharness.https.window.js16
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html10
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrWebGLLayer_constructor.https.html7
-rw-r--r--tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.any.js83
-rw-r--r--tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.html19
-rw-r--r--tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.js82
-rw-r--r--tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.any.js46
-rw-r--r--tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.html19
-rw-r--r--tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.js45
-rw-r--r--tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html2
389 files changed, 7781 insertions, 2435 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index 76b398963ae..a9e46713244 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 6a3af4e2ece..947e223fb28 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -14,9 +14,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
- [Revoke blob URL after calling fetch, fetch should succeed]
- expected: FAIL
-
[url-with-fetch.any.html]
[Untitled]
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 69b95ee43d7..fe2077f0d1f 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -9103,369 +9103,333 @@
{}
]
],
- "css/css-transitions/transition-delay-000.html": [
+ "css/css-transitions/transition-delay-000-manual.html": [
[
- "css/css-transitions/transition-delay-000.html",
+ "css/css-transitions/transition-delay-000-manual.html",
{}
]
],
- "css/css-transitions/transition-delay-002.html": [
+ "css/css-transitions/transition-delay-002-manual.html": [
[
- "css/css-transitions/transition-delay-002.html",
+ "css/css-transitions/transition-delay-002-manual.html",
{}
]
],
- "css/css-transitions/transition-delay-003.html": [
+ "css/css-transitions/transition-delay-003-manual.html": [
[
- "css/css-transitions/transition-delay-003.html",
+ "css/css-transitions/transition-delay-003-manual.html",
{}
]
],
- "css/css-transitions/transition-duration-002.html": [
+ "css/css-transitions/transition-duration-002-manual.html": [
[
- "css/css-transitions/transition-duration-002.html",
+ "css/css-transitions/transition-duration-002-manual.html",
{}
]
],
- "css/css-transitions/transition-duration-003.html": [
+ "css/css-transitions/transition-duration-003-manual.html": [
[
- "css/css-transitions/transition-duration-003.html",
+ "css/css-transitions/transition-duration-003-manual.html",
{}
]
],
- "css/css-transitions/transition-duration-004.html": [
+ "css/css-transitions/transition-duration-004-manual.html": [
[
- "css/css-transitions/transition-duration-004.html",
+ "css/css-transitions/transition-duration-004-manual.html",
{}
]
],
- "css/css-transitions/transition-property-003.html": [
+ "css/css-transitions/transition-property-003-manual.html": [
[
- "css/css-transitions/transition-property-003.html",
+ "css/css-transitions/transition-property-003-manual.html",
{}
]
],
- "css/css-transitions/transition-property-004.html": [
+ "css/css-transitions/transition-property-004-manual.html": [
[
- "css/css-transitions/transition-property-004.html",
+ "css/css-transitions/transition-property-004-manual.html",
{}
]
],
- "css/css-transitions/transition-property-005.html": [
+ "css/css-transitions/transition-property-005-manual.html": [
[
- "css/css-transitions/transition-property-005.html",
+ "css/css-transitions/transition-property-005-manual.html",
{}
]
],
- "css/css-transitions/transition-property-006.html": [
+ "css/css-transitions/transition-property-006-manual.html": [
[
- "css/css-transitions/transition-property-006.html",
+ "css/css-transitions/transition-property-006-manual.html",
{}
]
],
- "css/css-transitions/transition-property-007.html": [
+ "css/css-transitions/transition-property-007-manual.html": [
[
- "css/css-transitions/transition-property-007.html",
+ "css/css-transitions/transition-property-007-manual.html",
{}
]
],
- "css/css-transitions/transition-property-008.html": [
+ "css/css-transitions/transition-property-008-manual.html": [
[
- "css/css-transitions/transition-property-008.html",
+ "css/css-transitions/transition-property-008-manual.html",
{}
]
],
- "css/css-transitions/transition-property-009.html": [
+ "css/css-transitions/transition-property-009-manual.html": [
[
- "css/css-transitions/transition-property-009.html",
+ "css/css-transitions/transition-property-009-manual.html",
{}
]
],
- "css/css-transitions/transition-property-010.html": [
+ "css/css-transitions/transition-property-010-manual.html": [
[
- "css/css-transitions/transition-property-010.html",
+ "css/css-transitions/transition-property-010-manual.html",
{}
]
],
- "css/css-transitions/transition-property-011.html": [
+ "css/css-transitions/transition-property-011-manual.html": [
[
- "css/css-transitions/transition-property-011.html",
+ "css/css-transitions/transition-property-011-manual.html",
{}
]
],
- "css/css-transitions/transition-property-012.html": [
+ "css/css-transitions/transition-property-012-manual.html": [
[
- "css/css-transitions/transition-property-012.html",
+ "css/css-transitions/transition-property-012-manual.html",
{}
]
],
- "css/css-transitions/transition-property-013.html": [
+ "css/css-transitions/transition-property-013-manual.html": [
[
- "css/css-transitions/transition-property-013.html",
+ "css/css-transitions/transition-property-013-manual.html",
{}
]
],
- "css/css-transitions/transition-property-014.html": [
+ "css/css-transitions/transition-property-014-manual.html": [
[
- "css/css-transitions/transition-property-014.html",
+ "css/css-transitions/transition-property-014-manual.html",
{}
]
],
- "css/css-transitions/transition-property-015.html": [
+ "css/css-transitions/transition-property-015-manual.html": [
[
- "css/css-transitions/transition-property-015.html",
+ "css/css-transitions/transition-property-015-manual.html",
{}
]
],
- "css/css-transitions/transition-property-016.html": [
+ "css/css-transitions/transition-property-016-manual.html": [
[
- "css/css-transitions/transition-property-016.html",
+ "css/css-transitions/transition-property-016-manual.html",
{}
]
],
- "css/css-transitions/transition-property-017.html": [
+ "css/css-transitions/transition-property-017-manual.html": [
[
- "css/css-transitions/transition-property-017.html",
+ "css/css-transitions/transition-property-017-manual.html",
{}
]
],
- "css/css-transitions/transition-property-018.html": [
+ "css/css-transitions/transition-property-018-manual.html": [
[
- "css/css-transitions/transition-property-018.html",
+ "css/css-transitions/transition-property-018-manual.html",
{}
]
],
- "css/css-transitions/transition-property-019.html": [
+ "css/css-transitions/transition-property-019-manual.html": [
[
- "css/css-transitions/transition-property-019.html",
+ "css/css-transitions/transition-property-019-manual.html",
{}
]
],
- "css/css-transitions/transition-property-020.html": [
+ "css/css-transitions/transition-property-020-manual.html": [
[
- "css/css-transitions/transition-property-020.html",
+ "css/css-transitions/transition-property-020-manual.html",
{}
]
],
- "css/css-transitions/transition-property-021.html": [
+ "css/css-transitions/transition-property-021-manual.html": [
[
- "css/css-transitions/transition-property-021.html",
+ "css/css-transitions/transition-property-021-manual.html",
{}
]
],
- "css/css-transitions/transition-property-022.html": [
+ "css/css-transitions/transition-property-022-manual.html": [
[
- "css/css-transitions/transition-property-022.html",
+ "css/css-transitions/transition-property-022-manual.html",
{}
]
],
- "css/css-transitions/transition-property-023.html": [
+ "css/css-transitions/transition-property-023-manual.html": [
[
- "css/css-transitions/transition-property-023.html",
+ "css/css-transitions/transition-property-023-manual.html",
{}
]
],
- "css/css-transitions/transition-property-024.html": [
+ "css/css-transitions/transition-property-024-manual.html": [
[
- "css/css-transitions/transition-property-024.html",
+ "css/css-transitions/transition-property-024-manual.html",
{}
]
],
- "css/css-transitions/transition-property-025.html": [
+ "css/css-transitions/transition-property-025-manual.html": [
[
- "css/css-transitions/transition-property-025.html",
+ "css/css-transitions/transition-property-025-manual.html",
{}
]
],
- "css/css-transitions/transition-property-026.html": [
+ "css/css-transitions/transition-property-026-manual.html": [
[
- "css/css-transitions/transition-property-026.html",
+ "css/css-transitions/transition-property-026-manual.html",
{}
]
],
- "css/css-transitions/transition-property-027.html": [
+ "css/css-transitions/transition-property-027-manual.html": [
[
- "css/css-transitions/transition-property-027.html",
+ "css/css-transitions/transition-property-027-manual.html",
{}
]
],
- "css/css-transitions/transition-property-028.html": [
+ "css/css-transitions/transition-property-028-manual.html": [
[
- "css/css-transitions/transition-property-028.html",
+ "css/css-transitions/transition-property-028-manual.html",
{}
]
],
- "css/css-transitions/transition-property-029.html": [
+ "css/css-transitions/transition-property-029-manual.html": [
[
- "css/css-transitions/transition-property-029.html",
+ "css/css-transitions/transition-property-029-manual.html",
{}
]
],
- "css/css-transitions/transition-property-030.html": [
+ "css/css-transitions/transition-property-030-manual.html": [
[
- "css/css-transitions/transition-property-030.html",
+ "css/css-transitions/transition-property-030-manual.html",
{}
]
],
- "css/css-transitions/transition-property-031.html": [
+ "css/css-transitions/transition-property-031-manual.html": [
[
- "css/css-transitions/transition-property-031.html",
+ "css/css-transitions/transition-property-031-manual.html",
{}
]
],
- "css/css-transitions/transition-property-032.html": [
+ "css/css-transitions/transition-property-032-manual.html": [
[
- "css/css-transitions/transition-property-032.html",
+ "css/css-transitions/transition-property-032-manual.html",
{}
]
],
- "css/css-transitions/transition-property-033.html": [
+ "css/css-transitions/transition-property-033-manual.html": [
[
- "css/css-transitions/transition-property-033.html",
+ "css/css-transitions/transition-property-033-manual.html",
{}
]
],
- "css/css-transitions/transition-property-034.html": [
+ "css/css-transitions/transition-property-034-manual.html": [
[
- "css/css-transitions/transition-property-034.html",
+ "css/css-transitions/transition-property-034-manual.html",
{}
]
],
- "css/css-transitions/transition-property-035.html": [
+ "css/css-transitions/transition-property-035-manual.html": [
[
- "css/css-transitions/transition-property-035.html",
+ "css/css-transitions/transition-property-035-manual.html",
{}
]
],
- "css/css-transitions/transition-property-036.html": [
+ "css/css-transitions/transition-property-036-manual.html": [
[
- "css/css-transitions/transition-property-036.html",
+ "css/css-transitions/transition-property-036-manual.html",
{}
]
],
- "css/css-transitions/transition-property-037.html": [
+ "css/css-transitions/transition-property-037-manual.html": [
[
- "css/css-transitions/transition-property-037.html",
+ "css/css-transitions/transition-property-037-manual.html",
{}
]
],
- "css/css-transitions/transition-property-038.html": [
+ "css/css-transitions/transition-property-038-manual.html": [
[
- "css/css-transitions/transition-property-038.html",
+ "css/css-transitions/transition-property-038-manual.html",
{}
]
],
- "css/css-transitions/transition-property-039.html": [
+ "css/css-transitions/transition-property-039-manual.html": [
[
- "css/css-transitions/transition-property-039.html",
+ "css/css-transitions/transition-property-039-manual.html",
{}
]
],
- "css/css-transitions/transition-property-040.html": [
+ "css/css-transitions/transition-property-040-manual.html": [
[
- "css/css-transitions/transition-property-040.html",
+ "css/css-transitions/transition-property-040-manual.html",
{}
]
],
- "css/css-transitions/transition-property-041.html": [
+ "css/css-transitions/transition-property-041-manual.html": [
[
- "css/css-transitions/transition-property-041.html",
+ "css/css-transitions/transition-property-041-manual.html",
{}
]
],
- "css/css-transitions/transition-property-042.html": [
+ "css/css-transitions/transition-property-042-manual.html": [
[
- "css/css-transitions/transition-property-042.html",
+ "css/css-transitions/transition-property-042-manual.html",
{}
]
],
- "css/css-transitions/transition-property-043.html": [
+ "css/css-transitions/transition-property-043-manual.html": [
[
- "css/css-transitions/transition-property-043.html",
+ "css/css-transitions/transition-property-043-manual.html",
{}
]
],
- "css/css-transitions/transition-property-044.html": [
+ "css/css-transitions/transition-property-044-manual.html": [
[
- "css/css-transitions/transition-property-044.html",
+ "css/css-transitions/transition-property-044-manual.html",
{}
]
],
- "css/css-transitions/transition-property-045.html": [
+ "css/css-transitions/transition-property-045-manual.html": [
[
- "css/css-transitions/transition-property-045.html",
+ "css/css-transitions/transition-property-045-manual.html",
{}
]
],
- "css/css-transitions/transition-timing-function-002.html": [
+ "css/css-transitions/transition-timing-function-002-manual.html": [
[
- "css/css-transitions/transition-timing-function-002.html",
+ "css/css-transitions/transition-timing-function-002-manual.html",
{}
]
],
- "css/css-transitions/transition-timing-function-003.html": [
+ "css/css-transitions/transition-timing-function-003-manual.html": [
[
- "css/css-transitions/transition-timing-function-003.html",
+ "css/css-transitions/transition-timing-function-003-manual.html",
{}
]
],
- "css/css-transitions/transition-timing-function-004.html": [
+ "css/css-transitions/transition-timing-function-004-manual.html": [
[
- "css/css-transitions/transition-timing-function-004.html",
+ "css/css-transitions/transition-timing-function-004-manual.html",
{}
]
],
- "css/css-transitions/transition-timing-function-005.html": [
+ "css/css-transitions/transition-timing-function-005-manual.html": [
[
- "css/css-transitions/transition-timing-function-005.html",
+ "css/css-transitions/transition-timing-function-005-manual.html",
{}
]
],
- "css/css-transitions/transition-timing-function-006.html": [
+ "css/css-transitions/transition-timing-function-006-manual.html": [
[
- "css/css-transitions/transition-timing-function-006.html",
+ "css/css-transitions/transition-timing-function-006-manual.html",
{}
]
],
- "css/css-transitions/transition-timing-function-007.html": [
+ "css/css-transitions/transition-timing-function-010-manual.html": [
[
- "css/css-transitions/transition-timing-function-007.html",
- {}
- ]
- ],
- "css/css-transitions/transition-timing-function-008.html": [
- [
- "css/css-transitions/transition-timing-function-008.html",
- {}
- ]
- ],
- "css/css-transitions/transition-timing-function-009.html": [
- [
- "css/css-transitions/transition-timing-function-009.html",
- {}
- ]
- ],
- "css/css-transitions/transition-timing-function-010.html": [
- [
- "css/css-transitions/transition-timing-function-010.html",
- {}
- ]
- ],
- "css/css-transitions/transition-timing-function-011.html": [
- [
- "css/css-transitions/transition-timing-function-011.html",
- {}
- ]
- ],
- "css/css-transitions/transition-timing-function-012.html": [
- [
- "css/css-transitions/transition-timing-function-012.html",
- {}
- ]
- ],
- "css/css-transitions/transition-timing-function-013.html": [
- [
- "css/css-transitions/transition-timing-function-013.html",
+ "css/css-transitions/transition-timing-function-010-manual.html",
{}
]
],
@@ -49533,6 +49497,18 @@
{}
]
],
+ "css/CSS2/floats/negative-margin-float-positioning.html": [
+ [
+ "css/CSS2/floats/negative-margin-float-positioning.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/CSS2/floats/new-fc-beside-adjoining-float-2.html": [
[
"css/CSS2/floats/new-fc-beside-adjoining-float-2.html",
@@ -49557,6 +49533,30 @@
{}
]
],
+ "css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html": [
+ [
+ "css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/CSS2/floats/new-fc-beside-float-with-margin.html": [
+ [
+ "css/CSS2/floats/new-fc-beside-float-with-margin.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/CSS2/floats/new-fc-relayout.html": [
[
"css/CSS2/floats/new-fc-relayout.html",
@@ -49641,9 +49641,9 @@
{}
]
],
- "css/CSS2/floats/zero-width-floats-positioning.html": [
+ "css/CSS2/floats/zero-width-floats-positioning.tentative.html": [
[
- "css/CSS2/floats/zero-width-floats-positioning.html",
+ "css/CSS2/floats/zero-width-floats-positioning.tentative.html",
[
[
"/css/reference/ref-filled-green-100px-square-only.html",
@@ -110169,6 +110169,18 @@
{}
]
],
+ "css/css-cascade/all-prop-initial-visited.html": [
+ [
+ "css/css-cascade/all-prop-initial-visited.html",
+ [
+ [
+ "/css/css-cascade/all-prop-initial-visited-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-cascade/important-prop.html": [
[
"css/css-cascade/important-prop.html",
@@ -118821,6 +118833,18 @@
{}
]
],
+ "css/css-flexbox/flex-minimum-height-flex-items-019.html": [
+ [
+ "css/css-flexbox/flex-minimum-height-flex-items-019.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-flexbox/flex-minimum-width-flex-items-001.xht": [
[
"css/css-flexbox/flex-minimum-width-flex-items-001.xht",
@@ -126043,6 +126067,294 @@
{}
]
],
+ "css/css-grid/grid-items/grid-items-percentage-margins-003.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-003.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-004.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-004.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-005.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-005.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-006.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-006.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-007.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-007.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-008.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-008.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-009.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-009.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-010.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-010.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-011.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-011.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-012.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-012.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-013.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-013.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-014.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-margins-014.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-003.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-003.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-004.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-004.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-005.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-005.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-006.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-006.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-007.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-007.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-008.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-008.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-009.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-009.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-010.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-010.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-011.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-011.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-012.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-012.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-013.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-013.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-014.html": [
+ [
+ "css/css-grid/grid-items/grid-items-percentage-paddings-014.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-grid/grid-items/grid-items-sizing-alignment-001.html": [
[
"css/css-grid/grid-items/grid-items-sizing-alignment-001.html",
@@ -164779,6 +165091,18 @@
{}
]
],
+ "css/css-values/min-max-percentage-length-interpolation.html": [
+ [
+ "css/css-values/min-max-percentage-length-interpolation.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-values/q-unit-case-insensitivity-001.html": [
[
"css/css-values/q-unit-case-insensitivity-001.html",
@@ -199601,6 +199925,18 @@
{}
]
],
+ "html/rendering/non-replaced-elements/tables/table-column-width.html": [
+ [
+ "html/rendering/non-replaced-elements/tables/table-column-width.html",
+ [
+ [
+ "/html/rendering/non-replaced-elements/tables/table-column-width-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"html/rendering/non-replaced-elements/tables/table-direction.html": [
[
"html/rendering/non-replaced-elements/tables/table-direction.html",
@@ -242631,6 +242967,9 @@
"css/css-cascade/all-prop-001-ref.html": [
[]
],
+ "css/css-cascade/all-prop-initial-visited-ref.html": [
+ []
+ ],
"css/css-cascade/important-prop-ref.html": [
[]
],
@@ -270114,6 +270453,9 @@
"html/rendering/non-replaced-elements/tables/table-cell-width-ref.html": [
[]
],
+ "html/rendering/non-replaced-elements/tables/table-column-width-ref.html": [
+ []
+ ],
"html/rendering/non-replaced-elements/tables/table-direction-ref.html": [
[]
],
@@ -272736,6 +273078,9 @@
"infrastructure/metadata/infrastructure/expected-fail/uncaught-exception.html.ini": [
[]
],
+ "infrastructure/metadata/infrastructure/expected-fail/unhandled-rejection.html.ini": [
+ []
+ ],
"infrastructure/metadata/infrastructure/reftest/reftest_and_fail.html.ini": [
[]
],
@@ -273285,6 +273630,12 @@
"interfaces/webvtt.idl": [
[]
],
+ "interfaces/webxr-ar-module.idl": [
+ []
+ ],
+ "interfaces/webxr-gamepads-module.idl": [
+ []
+ ],
"interfaces/webxr.idl": [
[]
],
@@ -273303,6 +273654,9 @@
"intersection-observer/observer-in-iframe.html": [
[]
],
+ "intersection-observer/resources/cross-origin-child-iframe.sub.html": [
+ []
+ ],
"intersection-observer/resources/cross-origin-subframe.html": [
[]
],
@@ -273315,6 +273669,9 @@
"intersection-observer/resources/observer-in-iframe-subframe.html": [
[]
],
+ "intersection-observer/resources/same-origin-grand-child-iframe.html": [
+ []
+ ],
"intersection-observer/resources/scaled-target-subframe.html": [
[]
],
@@ -274785,9 +275142,27 @@
"native-file-system/README.md": [
[]
],
+ "native-file-system/resources/native-fs-test-helpers.js": [
+ []
+ ],
+ "native-file-system/resources/sandboxed-fs-test-helpers.js": [
+ []
+ ],
"native-file-system/resources/test-helpers.js": [
[]
],
+ "native-file-system/script-tests/FileSystemDirectoryHandle-getDirectory.js": [
+ []
+ ],
+ "native-file-system/script-tests/FileSystemDirectoryHandle-getFile.js": [
+ []
+ ],
+ "native-file-system/script-tests/FileSystemDirectoryHandle-removeEntry.js": [
+ []
+ ],
+ "native-file-system/script-tests/FileSystemWriter.js": [
+ []
+ ],
"navigation-timing/META.yml": [
[]
],
@@ -275118,6 +275493,9 @@
"permissions/META.yml": [
[]
],
+ "permissions/feature-policy-permissions-query.html": [
+ []
+ ],
"picture-in-picture/META.yml": [
[]
],
@@ -275238,6 +275616,9 @@
"portals/resources/portal-post-message-portal.html": [
[]
],
+ "portals/resources/portal-repeated-activate-window.html": [
+ []
+ ],
"portals/resources/portals-adopt-predecessor-portal.html": [
[]
],
@@ -275253,6 +275634,9 @@
"portals/resources/postmessage-referrer.sub.html": [
[]
],
+ "portals/resources/simple-portal-adopts-and-activates-predecessor.html": [
+ []
+ ],
"portals/resources/simple-portal-adopts-predecessor.html": [
[]
],
@@ -278052,6 +278436,9 @@
"resources/test/tests/unit/test-return-restrictions.html": [
[]
],
+ "resources/test/tests/unit/throwing-assertions.html": [
+ []
+ ],
"resources/test/tests/unit/unpaired-surrogates.html": [
[]
],
@@ -288510,12 +288897,6 @@
"workers/semantics/encodings/004.js": [
[]
],
- "workers/semantics/interface-objects/003.js": [
- []
- ],
- "workers/semantics/interface-objects/004.js": [
- []
- ],
"workers/semantics/multiple-workers/001.js": [
[]
],
@@ -312557,6 +312938,12 @@
{}
]
],
+ "css/css-animations/parsing/animation-invalid.html": [
+ [
+ "css/css-animations/parsing/animation-invalid.html",
+ {}
+ ]
+ ],
"css/css-animations/parsing/animation-iteration-count-computed.html": [
[
"css/css-animations/parsing/animation-iteration-count-computed.html",
@@ -312611,6 +312998,12 @@
{}
]
],
+ "css/css-animations/parsing/animation-shorthand.html": [
+ [
+ "css/css-animations/parsing/animation-shorthand.html",
+ {}
+ ]
+ ],
"css/css-animations/parsing/animation-timing-function-computed.html": [
[
"css/css-animations/parsing/animation-timing-function-computed.html",
@@ -312629,6 +313022,12 @@
{}
]
],
+ "css/css-animations/parsing/animation-valid.html": [
+ [
+ "css/css-animations/parsing/animation-valid.html",
+ {}
+ ]
+ ],
"css/css-animations/pending-style-changes-001.html": [
[
"css/css-animations/pending-style-changes-001.html",
@@ -312995,6 +313394,12 @@
{}
]
],
+ "css/css-backgrounds/parsing/border-color-shorthand.html": [
+ [
+ "css/css-backgrounds/parsing/border-color-shorthand.html",
+ {}
+ ]
+ ],
"css/css-backgrounds/parsing/border-color-valid.html": [
[
"css/css-backgrounds/parsing/border-color-valid.html",
@@ -313043,6 +313448,12 @@
{}
]
],
+ "css/css-backgrounds/parsing/border-image-shorthand.sub.html": [
+ [
+ "css/css-backgrounds/parsing/border-image-shorthand.sub.html",
+ {}
+ ]
+ ],
"css/css-backgrounds/parsing/border-image-slice-computed.html": [
[
"css/css-backgrounds/parsing/border-image-slice-computed.html",
@@ -313127,6 +313538,12 @@
{}
]
],
+ "css/css-backgrounds/parsing/border-shorthand.html": [
+ [
+ "css/css-backgrounds/parsing/border-shorthand.html",
+ {}
+ ]
+ ],
"css/css-backgrounds/parsing/border-style-computed.html": [
[
"css/css-backgrounds/parsing/border-style-computed.html",
@@ -313139,6 +313556,12 @@
{}
]
],
+ "css/css-backgrounds/parsing/border-style-shorthand.html": [
+ [
+ "css/css-backgrounds/parsing/border-style-shorthand.html",
+ {}
+ ]
+ ],
"css/css-backgrounds/parsing/border-style-valid.html": [
[
"css/css-backgrounds/parsing/border-style-valid.html",
@@ -313163,6 +313586,12 @@
{}
]
],
+ "css/css-backgrounds/parsing/border-width-shorthand.html": [
+ [
+ "css/css-backgrounds/parsing/border-width-shorthand.html",
+ {}
+ ]
+ ],
"css/css-backgrounds/parsing/border-width-valid.html": [
[
"css/css-backgrounds/parsing/border-width-valid.html",
@@ -313265,6 +313694,12 @@
{}
]
],
+ "css/css-box/parsing/margin-shorthand.html": [
+ [
+ "css/css-box/parsing/margin-shorthand.html",
+ {}
+ ]
+ ],
"css/css-box/parsing/margin-valid.html": [
[
"css/css-box/parsing/margin-valid.html",
@@ -313343,6 +313778,12 @@
{}
]
],
+ "css/css-box/parsing/padding-shorthand.html": [
+ [
+ "css/css-box/parsing/padding-shorthand.html",
+ {}
+ ]
+ ],
"css/css-box/parsing/padding-valid.html": [
[
"css/css-box/parsing/padding-valid.html",
@@ -313723,6 +314164,12 @@
{}
]
],
+ "css/css-content/inheritance.html": [
+ [
+ "css/css-content/inheritance.html",
+ {}
+ ]
+ ],
"css/css-counter-styles/idlharness.html": [
[
"css/css-counter-styles/idlharness.html",
@@ -314521,6 +314968,12 @@
{}
]
],
+ "css/css-flexbox/parsing/flex-flow-shorthand.html": [
+ [
+ "css/css-flexbox/parsing/flex-flow-shorthand.html",
+ {}
+ ]
+ ],
"css/css-flexbox/parsing/flex-flow-valid.html": [
[
"css/css-flexbox/parsing/flex-flow-valid.html",
@@ -314551,6 +315004,12 @@
{}
]
],
+ "css/css-flexbox/parsing/flex-shorthand.html": [
+ [
+ "css/css-flexbox/parsing/flex-shorthand.html",
+ {}
+ ]
+ ],
"css/css-flexbox/parsing/flex-shrink-computed.html": [
[
"css/css-flexbox/parsing/flex-shrink-computed.html",
@@ -316859,6 +317318,12 @@
{}
]
],
+ "css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html": [
+ [
+ "css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html",
+ {}
+ ]
+ ],
"css/css-grid/grid-items/grid-item-min-auto-size-001.html": [
[
"css/css-grid/grid-items/grid-item-min-auto-size-001.html",
@@ -317171,6 +317636,12 @@
{}
]
],
+ "css/css-grid/parsing/grid-area-shorthand.html": [
+ [
+ "css/css-grid/parsing/grid-area-shorthand.html",
+ {}
+ ]
+ ],
"css/css-grid/parsing/grid-area-valid.html": [
[
"css/css-grid/parsing/grid-area-valid.html",
@@ -317273,6 +317744,12 @@
{}
]
],
+ "css/css-grid/parsing/grid-template-shorthand.html": [
+ [
+ "css/css-grid/parsing/grid-template-shorthand.html",
+ {}
+ ]
+ ],
"css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html": [
[
"css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html",
@@ -317675,6 +318152,12 @@
{}
]
],
+ "css/css-lists/parsing/list-style-shorthand.sub.html": [
+ [
+ "css/css-lists/parsing/list-style-shorthand.sub.html",
+ {}
+ ]
+ ],
"css/css-lists/parsing/list-style-type-computed.html": [
[
"css/css-lists/parsing/list-style-type-computed.html",
@@ -318011,6 +318494,12 @@
{}
]
],
+ "css/css-logical/parsing/inset-shorthand.html": [
+ [
+ "css/css-logical/parsing/inset-shorthand.html",
+ {}
+ ]
+ ],
"css/css-logical/parsing/inset-valid.html": [
[
"css/css-logical/parsing/inset-valid.html",
@@ -321851,6 +322340,12 @@
{}
]
],
+ "css/css-text-decor/parsing/text-decoration-shorthand.html": [
+ [
+ "css/css-text-decor/parsing/text-decoration-shorthand.html",
+ {}
+ ]
+ ],
"css/css-text-decor/parsing/text-decoration-skip-ink-computed.html": [
[
"css/css-text-decor/parsing/text-decoration-skip-ink-computed.html",
@@ -324245,6 +324740,12 @@
{}
]
],
+ "css/css-transitions/parsing/transition-invalid.html": [
+ [
+ "css/css-transitions/parsing/transition-invalid.html",
+ {}
+ ]
+ ],
"css/css-transitions/parsing/transition-property-computed.html": [
[
"css/css-transitions/parsing/transition-property-computed.html",
@@ -324263,6 +324764,12 @@
{}
]
],
+ "css/css-transitions/parsing/transition-shorthand.html": [
+ [
+ "css/css-transitions/parsing/transition-shorthand.html",
+ {}
+ ]
+ ],
"css/css-transitions/parsing/transition-timing-function-computed.html": [
[
"css/css-transitions/parsing/transition-timing-function-computed.html",
@@ -324281,6 +324788,12 @@
{}
]
],
+ "css/css-transitions/parsing/transition-valid.html": [
+ [
+ "css/css-transitions/parsing/transition-valid.html",
+ {}
+ ]
+ ],
"css/css-transitions/properties-value-001.html": [
[
"css/css-transitions/properties-value-001.html",
@@ -324399,12 +324912,6 @@
{}
]
],
- "css/css-transitions/transition-timing-function-001.html": [
- [
- "css/css-transitions/transition-timing-function-001.html",
- {}
- ]
- ],
"css/css-transitions/transitioncancel-001.html": [
[
"css/css-transitions/transitioncancel-001.html",
@@ -326639,6 +327146,12 @@
{}
]
],
+ "css/css-ui/parsing/outline-shorthand.html": [
+ [
+ "css/css-ui/parsing/outline-shorthand.html",
+ {}
+ ]
+ ],
"css/css-ui/parsing/outline-style-computed.html": [
[
"css/css-ui/parsing/outline-style-computed.html",
@@ -326885,6 +327398,24 @@
{}
]
],
+ "css/css-values/clamp-length-computed.html": [
+ [
+ "css/css-values/clamp-length-computed.html",
+ {}
+ ]
+ ],
+ "css/css-values/clamp-length-invalid.html": [
+ [
+ "css/css-values/clamp-length-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-values/clamp-length-serialize.html": [
+ [
+ "css/css-values/clamp-length-serialize.html",
+ {}
+ ]
+ ],
"css/css-values/getComputedStyle-border-radius-001.html": [
[
"css/css-values/getComputedStyle-border-radius-001.html",
@@ -329337,12 +329868,24 @@
{}
]
],
+ "css/mediaqueries/aspect-ratio-serialization.html": [
+ [
+ "css/mediaqueries/aspect-ratio-serialization.html",
+ {}
+ ]
+ ],
"css/mediaqueries/forced-colors.html": [
[
"css/mediaqueries/forced-colors.html",
{}
]
],
+ "css/mediaqueries/navigation-controls.tentative.html": [
+ [
+ "css/mediaqueries/navigation-controls.tentative.html",
+ {}
+ ]
+ ],
"css/mediaqueries/prefers-color-scheme.html": [
[
"css/mediaqueries/prefers-color-scheme.html",
@@ -331994,6 +332537,12 @@
{}
]
],
+ "dom/nodes/MutationObserver-sanity.html": [
+ [
+ "dom/nodes/MutationObserver-sanity.html",
+ {}
+ ]
+ ],
"dom/nodes/MutationObserver-takeRecords.html": [
[
"dom/nodes/MutationObserver-takeRecords.html",
@@ -347579,6 +348128,14 @@
{}
]
],
+ "fetch/sec-metadata/portal.tentative.https.sub.html": [
+ [
+ "fetch/sec-metadata/portal.tentative.https.sub.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"fetch/sec-metadata/prefetch.tentative.https.sub.html": [
[
"fetch/sec-metadata/prefetch.tentative.https.sub.html",
@@ -352169,6 +352726,12 @@
{}
]
],
+ "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html": [
+ [
+ "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html",
+ {}
+ ]
+ ],
"html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html": [
[
"html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html",
@@ -352187,6 +352750,12 @@
{}
]
],
+ "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html": [
+ [
+ "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html",
+ {}
+ ]
+ ],
"html/rendering/replaced-elements/svg-embedded-sizing/svg-in-iframe-auto.html": [
[
"html/rendering/replaced-elements/svg-embedded-sizing/svg-in-iframe-auto.html",
@@ -353475,6 +354044,12 @@
{}
]
],
+ "html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-different-load.html": [
+ [
+ "html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-different-load.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-networkState.html": [
[
"html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-networkState.html",
@@ -363384,6 +363959,12 @@
{}
]
],
+ "infrastructure/expected-fail/unhandled-rejection.html": [
+ [
+ "infrastructure/expected-fail/unhandled-rejection.html",
+ {}
+ ]
+ ],
"infrastructure/server/context.any.js": [
[
"infrastructure/server/context.any.html",
@@ -363972,6 +364553,12 @@
{}
]
],
+ "intersection-observer/same-origin-grand-child-iframe.sub.html": [
+ [
+ "intersection-observer/same-origin-grand-child-iframe.sub.html",
+ {}
+ ]
+ ],
"intersection-observer/shadow-content.html": [
[
"intersection-observer/shadow-content.html",
@@ -369099,53 +369686,261 @@
}
]
],
- "native-file-system/FileSystemBaseHandle-remove.tentative.https.window.js": [
+ "native-file-system/native_FileSystemDirectoryHandle-getDirectory.tentative.https.manual.window.js": [
[
- "native-file-system/FileSystemBaseHandle-remove.tentative.https.window.html",
+ "native-file-system/native_FileSystemDirectoryHandle-getDirectory.tentative.https.manual.window.html",
{
"script_metadata": [
[
"script",
+ "/resources/testdriver.js"
+ ],
+ [
+ "script",
"resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/native-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-getDirectory.js"
]
]
}
]
],
- "native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.https.window.js": [
+ "native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.js": [
[
- "native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.https.window.html",
+ "native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.html",
{
"script_metadata": [
[
"script",
+ "/resources/testdriver.js"
+ ],
+ [
+ "script",
"resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/native-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-getFile.js"
]
]
}
]
],
- "native-file-system/FileSystemDirectoryHandle-getFile.tentative.https.window.js": [
+ "native-file-system/native_FileSystemDirectoryHandle-removeEntry.tentative.https.manual.window.js": [
[
- "native-file-system/FileSystemDirectoryHandle-getFile.tentative.https.window.html",
+ "native-file-system/native_FileSystemDirectoryHandle-removeEntry.tentative.https.manual.window.html",
{
"script_metadata": [
[
"script",
+ "/resources/testdriver.js"
+ ],
+ [
+ "script",
"resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/native-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-removeEntry.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/native_FileSystemWriter.tentative.https.manual.window.js": [
+ [
+ "native-file-system/native_FileSystemWriter.tentative.https.manual.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/testdriver.js"
+ ],
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/native-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemWriter.js"
]
]
}
]
],
- "native-file-system/FileSystemWriter.tentative.https.window.js": [
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.js": [
+ [
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-getDirectory.js"
+ ]
+ ]
+ }
+ ],
[
- "native-file-system/FileSystemWriter.tentative.https.window.html",
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.worker.html",
{
"script_metadata": [
[
"script",
"resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-getDirectory.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.js": [
+ [
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-getFile.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-getFile.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.js": [
+ [
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-removeEntry.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-removeEntry.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js": [
+ [
+ "native-file-system/sandboxed_FileSystemWriter.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemWriter.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "native-file-system/sandboxed_FileSystemWriter.tentative.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemWriter.js"
]
]
}
@@ -380469,6 +381264,12 @@
}
]
],
+ "permissions/permissions-query-feature-policy-attribute.https.sub.html": [
+ [
+ "permissions/permissions-query-feature-policy-attribute.https.sub.html",
+ {}
+ ]
+ ],
"permissions/test-background-fetch-permission.html": [
[
"permissions/test-background-fetch-permission.html",
@@ -381472,6 +382273,12 @@
{}
]
],
+ "portals/portals-repeated-activate.html": [
+ [
+ "portals/portals-repeated-activate.html",
+ {}
+ ]
+ ],
"portals/portals-set-src-after-activate.html": [
[
"portals/portals-set-src-after-activate.html",
@@ -396572,6 +397379,14 @@
}
]
],
+ "shadow-dom/focus/focus-selector-delegatesFocus.html": [
+ [
+ "shadow-dom/focus/focus-selector-delegatesFocus.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"shadow-dom/focus/focus-tabindex-order-shadow-negative.html": [
[
"shadow-dom/focus/focus-tabindex-order-shadow-negative.html",
@@ -403611,6 +404426,12 @@
{}
]
],
+ "svg/animations/keysplines-x-limits.html": [
+ [
+ "svg/animations/keysplines-x-limits.html",
+ {}
+ ]
+ ],
"svg/animations/multiple-animations-ending.html": [
[
"svg/animations/multiple-animations-ending.html",
@@ -418710,6 +419531,23 @@
{}
]
],
+ "webxr/ar-module/idlharness.https.window.js": [
+ [
+ "webxr/ar-module/idlharness.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ]
+ ]
+ }
+ ]
+ ],
"webxr/events_input_source_recreation.https.html": [
[
"webxr/events_input_source_recreation.https.html",
@@ -418746,6 +419584,23 @@
{}
]
],
+ "webxr/gamepads-module/idlharness.https.window.js": [
+ [
+ "webxr/gamepads-module/idlharness.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/WebIDLParser.js"
+ ],
+ [
+ "script",
+ "/resources/idlharness.js"
+ ]
+ ]
+ }
+ ]
+ ],
"webxr/getInputPose_handedness.https.html": [
[
"webxr/getInputPose_handedness.https.html",
@@ -420819,16 +421674,30 @@
{}
]
],
- "workers/semantics/interface-objects/003.html": [
+ "workers/semantics/interface-objects/003.any.js": [
[
- "workers/semantics/interface-objects/003.html",
- {}
+ "workers/semantics/interface-objects/003.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,sharedworker"
+ ]
+ ]
+ }
]
],
- "workers/semantics/interface-objects/004.html": [
+ "workers/semantics/interface-objects/004.any.js": [
[
- "workers/semantics/interface-objects/004.html",
- {}
+ "workers/semantics/interface-objects/004.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "!default,sharedworker"
+ ]
+ ]
+ }
]
],
"workers/semantics/multiple-workers/001.html": [
@@ -444724,15 +445593,15 @@
"support"
],
".github/workflows/pull_request.yml": [
- "9d288c0c9209904091a9b66b9334929aee02c3c7",
+ "81a53c67f4b11ca3c7ddde916dcebb35cf83a021",
"support"
],
".github/workflows/push-build-publish-documentation-website.yml": [
- "167e0d930f4da142ffab22b8c685119495c52702",
+ "f6a1401a3dd161168d3869dd143527969e8300c1",
"support"
],
".github/workflows/push-build-release-manifest.yml": [
- "af677454fdd2cf692929c68ef80bcfe8fb52b69f",
+ "baa06cc14fd4e6859f76f63b2c3962897d1b9837",
"support"
],
".gitignore": [
@@ -444748,7 +445617,7 @@
"support"
],
".taskcluster.yml": [
- "dfe3b36e3a52192ed23b5a6788fddf728e20ff35",
+ "61cc38c9bd1d051b5ad18d59de0f9febd1b3f2a2",
"support"
],
".well-known/README.md": [
@@ -447244,7 +448113,7 @@
"testharness"
],
"2dcontext/imagebitmap/createImageBitmap-invalid-args.html": [
- "004b3ca6bf39eb7613d2621c8a431df5ab52278b",
+ "c64371eaa8c7940a78ff064b5cffac575607d230",
"testharness"
],
"2dcontext/imagebitmap/createImageBitmap-origin.sub.html": [
@@ -449524,15 +450393,15 @@
"testharness"
],
"IndexedDB/fire-error-event-exception.html": [
- "fe0dc182567af2a48b4be82d809b97baf469fb3e",
+ "0a3f12265894f03adfb2b6577e5d35dbf0c89c5d",
"testharness"
],
"IndexedDB/fire-success-event-exception.html": [
- "c4e55066bbab9069e744c089f81df0714ad4db19",
+ "ab0ac44eb7c33ba5f62caa6dca49935c8296cf26",
"testharness"
],
"IndexedDB/fire-upgradeneeded-event-exception.html": [
- "5db452ebafe68a095f083b65a713ba3e0ad40cf5",
+ "1a8163a58b15606e2f00bc6439238c03267ce83b",
"testharness"
],
"IndexedDB/get-databases.any.js": [
@@ -450928,7 +451797,7 @@
"testharness"
],
"IndexedDB/transaction-relaxed-durability.tentative.any.js": [
- "c6a6f37ba9e0b29dc17fe66e487920acf2c4ecc6",
+ "2ba96ec08edd3e35c85bef4712a94a9a75174624",
"testharness"
],
"IndexedDB/transaction-requestqueue.htm": [
@@ -499267,6 +500136,10 @@
"ae8783ce31303024152d3dc91dde3058b3beef0c",
"testharness"
],
+ "css/CSS2/floats/negative-margin-float-positioning.html": [
+ "8b4aef22f71f8695ebbc5b6dc83ad5639945618d",
+ "reftest"
+ ],
"css/CSS2/floats/new-fc-beside-adjoining-float-2.html": [
"2d27a28a0533eece2ec6b1ee933028da8fb99c4f",
"reftest"
@@ -499275,6 +500148,14 @@
"91adbfce2d32ec1f46853b4af60b14c74468a842",
"reftest"
],
+ "css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html": [
+ "5a564f7831c9c19ff7c464c676981c62a53c9a88",
+ "reftest"
+ ],
+ "css/CSS2/floats/new-fc-beside-float-with-margin.html": [
+ "ead8e548be95df87220881a8e66e5f3a47c93f9b",
+ "reftest"
+ ],
"css/CSS2/floats/new-fc-relayout.html": [
"97d8b9a2ff1f3be8aeab2c26817e7542511c59cb",
"reftest"
@@ -499323,8 +500204,8 @@
"4ac426fe6bee576a9a54c2ed2143c7829e901f23",
"testharness"
],
- "css/CSS2/floats/zero-width-floats-positioning.html": [
- "7f8e34daaef68356aa7b9fc4216cf918d93cc6cf",
+ "css/CSS2/floats/zero-width-floats-positioning.tentative.html": [
+ "18f8f6e2046693faf5b46e107a2dd3fa3aca8558",
"reftest"
],
"css/CSS2/floats/zero-width-floats.html": [
@@ -540700,7 +541581,7 @@
"testharness"
],
"css/css-animations/parsing/animation-delay-invalid.html": [
- "a58d2cd11bc572d3a7899fb70b8b04adbd76a713",
+ "52e42a2e2b67a0593f264b57d99b6e9034a835a3",
"testharness"
],
"css/css-animations/parsing/animation-delay-valid.html": [
@@ -540712,7 +541593,7 @@
"testharness"
],
"css/css-animations/parsing/animation-direction-invalid.html": [
- "0b48d97f0a1bb670daec7335049aa486810a2cde",
+ "5c96216d045c665f2005feb2cae642aad5d7f6f6",
"testharness"
],
"css/css-animations/parsing/animation-direction-valid.html": [
@@ -540724,7 +541605,7 @@
"testharness"
],
"css/css-animations/parsing/animation-duration-invalid.html": [
- "5edacd3735e4f3ac0c0724415b3ca0052f10d33b",
+ "bd8cf2adfe98954d43f3e4d3b7f839d6f59b0e96",
"testharness"
],
"css/css-animations/parsing/animation-duration-valid.html": [
@@ -540736,19 +541617,23 @@
"testharness"
],
"css/css-animations/parsing/animation-fill-mode-invalid.html": [
- "dda2221f4746a64778ea4c5a82fa42c35243a342",
+ "2a82f2354639feb9abbba32b7159a0de1f1a18c4",
"testharness"
],
"css/css-animations/parsing/animation-fill-mode-valid.html": [
"1f73a821d15119d6a8fc2720d53f6cefdd29fb5d",
"testharness"
],
+ "css/css-animations/parsing/animation-invalid.html": [
+ "c5790a3fafa4cbdb73126c98596506e3ed796310",
+ "testharness"
+ ],
"css/css-animations/parsing/animation-iteration-count-computed.html": [
"0ac53aa65184020b65669807c699ef6c55362af2",
"testharness"
],
"css/css-animations/parsing/animation-iteration-count-invalid.html": [
- "ff1e8e23a08cf58c08922eb40145e916852c0562",
+ "621340f7c3d87b7edb19a3db94e9dc759014d7c8",
"testharness"
],
"css/css-animations/parsing/animation-iteration-count-valid.html": [
@@ -540772,25 +541657,33 @@
"testharness"
],
"css/css-animations/parsing/animation-play-state-invalid.html": [
- "f47a2f75ddfc35a279037ada8df34077bd1308ab",
+ "91a6f017370a7cf6089d610e2666f64c61a8c98f",
"testharness"
],
"css/css-animations/parsing/animation-play-state-valid.html": [
"ce6d053ec2736ec8d5e8420b3d1a1e4f07fd04ed",
"testharness"
],
+ "css/css-animations/parsing/animation-shorthand.html": [
+ "2e3053e7afcc6eaa7cd2b3912b37b80295ea426d",
+ "testharness"
+ ],
"css/css-animations/parsing/animation-timing-function-computed.html": [
"99bc12ccaa8f24ae5db06cfd0d78d3bd0c015bef",
"testharness"
],
"css/css-animations/parsing/animation-timing-function-invalid.html": [
- "adc1cc10e39d09df78c4398ffca008739d751076",
+ "621145b0e004c583d4a0131eb10d4875fe17da3b",
"testharness"
],
"css/css-animations/parsing/animation-timing-function-valid.html": [
"7ab823ea1da1535606ac4aad30fb21f423ba6703",
"testharness"
],
+ "css/css-animations/parsing/animation-valid.html": [
+ "65de3c6fcfed3f69fa798fa19425bdc054e0700b",
+ "testharness"
+ ],
"css/css-animations/pending-style-changes-001.html": [
"fb74d7fa7d062d60153d47913df9eb2b0c7267c8",
"testharness"
@@ -540836,7 +541729,7 @@
"testharness"
],
"css/css-backgrounds/animations/border-image-outset-interpolation.html": [
- "d4726e87d119462a703cc7ac504e8025f3874680",
+ "aebadbbafb236a090aa543ecf82e5661bee7de74",
"testharness"
],
"css/css-backgrounds/animations/border-image-slice-interpolation.html": [
@@ -543779,6 +544672,10 @@
"6e4d28e7983d62979f4dad843c007b964db00706",
"testharness"
],
+ "css/css-backgrounds/parsing/border-color-shorthand.html": [
+ "012567830eaea7eaf65b33539c0f207639b94c24",
+ "testharness"
+ ],
"css/css-backgrounds/parsing/border-color-valid.html": [
"a4cd7748ac207427812235e9868012b1a193641c",
"testharness"
@@ -543811,6 +544708,10 @@
"f90ef71191e48ee399eac37cea9c356faaa486f5",
"testharness"
],
+ "css/css-backgrounds/parsing/border-image-shorthand.sub.html": [
+ "37fb998d6c2a5ee15fb8d8dd99cfd8942c7372eb",
+ "testharness"
+ ],
"css/css-backgrounds/parsing/border-image-slice-computed.html": [
"bfc8714d9838b5966cb90119391631538a632e2f",
"testharness"
@@ -543840,7 +544741,7 @@
"testharness"
],
"css/css-backgrounds/parsing/border-image-width-computed.html": [
- "98e5616a22847c0536b25d8a96393aafa9c0a913",
+ "2c36eda8c785337eae8f3f3eefb2bf92e29b82a0",
"testharness"
],
"css/css-backgrounds/parsing/border-image-width-invalid.html": [
@@ -543852,7 +544753,7 @@
"testharness"
],
"css/css-backgrounds/parsing/border-invalid.html": [
- "71404f2ce3e18fe336f076ce72ad028c4f665861",
+ "870e741f445e17d7408475aad41a7dc06c5a02cf",
"testharness"
],
"css/css-backgrounds/parsing/border-radius-computed.html": [
@@ -543867,6 +544768,10 @@
"738362f96933c34fae38e6adfa9a82a556fc1f3b",
"testharness"
],
+ "css/css-backgrounds/parsing/border-shorthand.html": [
+ "30491a534ec65abd673a80a278c3f6aa47f82220",
+ "testharness"
+ ],
"css/css-backgrounds/parsing/border-style-computed.html": [
"e890be11289fa057b1d543f16e8b215f389a6a71",
"testharness"
@@ -543875,12 +544780,16 @@
"27fa45116fd150d69a77850f837ee43f7032c601",
"testharness"
],
+ "css/css-backgrounds/parsing/border-style-shorthand.html": [
+ "b85804e287e669fc69a27249270cbb9704216561",
+ "testharness"
+ ],
"css/css-backgrounds/parsing/border-style-valid.html": [
"0b592180280ce6c8eb87567e1c39f197353365c3",
"testharness"
],
"css/css-backgrounds/parsing/border-valid.html": [
- "37b876ce4e97b2aa2ae08cb3447d42a658fcf56d",
+ "8c52b428ba93bb81817336f3eddba61a6fff6cce",
"testharness"
],
"css/css-backgrounds/parsing/border-width-computed.html": [
@@ -543891,6 +544800,10 @@
"ec7eb72a9ac404a59390b9c89f7ae710f6620412",
"testharness"
],
+ "css/css-backgrounds/parsing/border-width-shorthand.html": [
+ "07461bc94d96aa39f82d58f3fbc9237072070226",
+ "testharness"
+ ],
"css/css-backgrounds/parsing/border-width-valid.html": [
"552416df3d2fe1a08aeb8145c5d263770543aa5e",
"testharness"
@@ -544603,6 +545516,10 @@
"77009170938d9634497f73bc21501ced502c7008",
"testharness"
],
+ "css/css-box/parsing/margin-shorthand.html": [
+ "293927983e504a3227335944ab05f966d51cccd6",
+ "testharness"
+ ],
"css/css-box/parsing/margin-valid.html": [
"154aa2de7cb16ca0845f8368e731ec5c941108cb",
"testharness"
@@ -544655,6 +545572,10 @@
"3e3a560c2f71877494577f9dbc5c2eecfbab8a62",
"testharness"
],
+ "css/css-box/parsing/padding-shorthand.html": [
+ "dc0139dc47a70688cd8667e6069b4ba5654b7b1c",
+ "testharness"
+ ],
"css/css-box/parsing/padding-valid.html": [
"0d3d51e86bb015dd5720041cdae671a29a74c77b",
"testharness"
@@ -544859,6 +545780,14 @@
"f68b7c046d9d22994dbc78c722b5004f1253027f",
"reftest"
],
+ "css/css-cascade/all-prop-initial-visited-ref.html": [
+ "f596b559b0e26b9c03d47b7dcab966a4d091308b",
+ "support"
+ ],
+ "css/css-cascade/all-prop-initial-visited.html": [
+ "6fb7936652a77dade7d5e72032064b67d2886637",
+ "reftest"
+ ],
"css/css-cascade/all-prop-initial-xml.html": [
"a04956a52d1f120583c26a462356ba8e47ac1277",
"testharness"
@@ -547007,6 +547936,10 @@
"a78e9f713b2428763ed4244aae1b6269a15d6637",
"reftest"
],
+ "css/css-content/inheritance.html": [
+ "a3242556fdcb4d5fea0d4d28fba6067ed02b340c",
+ "testharness"
+ ],
"css/css-content/pseudo-element-inline-box-ref.html": [
"8294ae672d15643b1d8eeb8c9914fa93fe4e879a",
"support"
@@ -550215,6 +551148,10 @@
"983cac476e83ae97355cc6ad3fc55c6f732a6bf2",
"reftest"
],
+ "css/css-flexbox/flex-minimum-height-flex-items-019.html": [
+ "3572a6cc88e50ade3a8f7faff5a343bc84d9f581",
+ "reftest"
+ ],
"css/css-flexbox/flex-minimum-width-flex-items-001.xht": [
"cd18483ba414160c46e30bc282dec0c2fcd2f418",
"reftest"
@@ -552347,6 +553284,10 @@
"e82c284632dd5b3babbd3979958874013bf3b9aa",
"testharness"
],
+ "css/css-flexbox/parsing/flex-flow-shorthand.html": [
+ "6ae19bdc044dd31b11448e407204accfb0340632",
+ "testharness"
+ ],
"css/css-flexbox/parsing/flex-flow-valid.html": [
"01acd435096db60d214a0b07cb24fccdfded9c93",
"testharness"
@@ -552367,6 +553308,10 @@
"ae010d7b4b4540f6591c1ad42f1c89753a71afc6",
"testharness"
],
+ "css/css-flexbox/parsing/flex-shorthand.html": [
+ "51e01794154edbe475e57d2ca6fb93de65dea8bd",
+ "testharness"
+ ],
"css/css-flexbox/parsing/flex-shrink-computed.html": [
"69a6d8c52b61f162f9c7333f53ed44145e51913f",
"testharness"
@@ -552424,7 +553369,7 @@
"reftest"
],
"css/css-flexbox/percentage-heights-003.html": [
- "9d434cf7cb8ba2023c126391032985d3d3b7c5d9",
+ "c27af532169a349be42379ab9949afec15b47ae2",
"testharness"
],
"css/css-flexbox/percentage-heights-004-ref.html": [
@@ -562919,6 +563864,10 @@
"b36fbb2bbc8ce403632769e1a098f9560e910221",
"reftest"
],
+ "css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html": [
+ "c4ced6b2a12e0f080d6df2fccc8f74270f45683c",
+ "testharness"
+ ],
"css/css-grid/grid-items/grid-item-min-auto-size-001.html": [
"f50e9ef312418f4d3b737bd55b4a7e5c75f09230",
"testharness"
@@ -563027,6 +563976,54 @@
"e45530b2fd4a380ba62c3b42ba52157cec098a00",
"testharness"
],
+ "css/css-grid/grid-items/grid-items-percentage-margins-003.html": [
+ "03d5d7f2c499b00cda96b8235a11852998900259",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-004.html": [
+ "52e6f3bf1a688af98bd28d68f8d7e0ddde3ebee5",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-005.html": [
+ "9cff92d1aa0ccdf2aa2dd0c89b4bd626778d1214",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-006.html": [
+ "04d30e3edfc9920fb22f645549b00497ba0241fb",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-007.html": [
+ "2906fe0608704a1b8413fa7a24db140667254283",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-008.html": [
+ "7bd2e0fc5f4f24b35ff37c61c0b20c1b2ab61571",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-009.html": [
+ "70a6c231dc91b1b2f866e9cd4463860ce9f58c4f",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-010.html": [
+ "34352f60020ec44e4d5f27344818bdb476de694e",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-011.html": [
+ "36bd208df007332656acbb4b3ffb5aac86675c82",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-012.html": [
+ "9cdc15337a936724b8ce157638544f4f9e35b65c",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-013.html": [
+ "581415b828e6d54056fe94e5145e276e7e428352",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-margins-014.html": [
+ "5766e60339a0d83568c93a7f750976dbb9955e6a",
+ "reftest"
+ ],
"css/css-grid/grid-items/grid-items-percentage-margins-vertical-lr-001.html": [
"aa0ff96985878c5f21d7e7a8175b1351e9841656",
"testharness"
@@ -563051,6 +564048,54 @@
"3175469fb08361398658ebcfabb553909aa9c080",
"testharness"
],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-003.html": [
+ "d85a6c1abcfac6c2ecf6bfc1251ba41b58fbab89",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-004.html": [
+ "26302daf2d606637930ea41971f3d6066f782a2b",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-005.html": [
+ "151b604f9bb7c7defdb5edf558ed207777cc0903",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-006.html": [
+ "bcbc7ced73a77ebfb1e2aa027383f868bf38fe87",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-007.html": [
+ "d4cf80c18df05bf06406eccf8aefe7050ed4025f",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-008.html": [
+ "38f766b5cfffcca21906203c8c3472dd1230b197",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-009.html": [
+ "eb1d1f47f28c3daefd78e9e98881459f91c2046d",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-010.html": [
+ "ecd430c68d41698b328341eb9d9e2daba2a7848c",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-011.html": [
+ "e394ced4e6e52f3379428d3ad854bcab0b3cb38d",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-012.html": [
+ "07b2d27b58173a84851c4836c85281efa818c2e4",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-013.html": [
+ "9b6c2bfe0ad261358ff7657752bd3bc3dff0896d",
+ "reftest"
+ ],
+ "css/css-grid/grid-items/grid-items-percentage-paddings-014.html": [
+ "9e67960913a25f0fe1cfe137ceca5d11ebf0b43f",
+ "reftest"
+ ],
"css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-001.html": [
"6ad624a0a262067eb6e3b0724989ab01ca04f6a1",
"testharness"
@@ -563667,6 +564712,10 @@
"b989322775eb7dbf273a3dc3fbb3d1af31f524ba",
"testharness"
],
+ "css/css-grid/parsing/grid-area-shorthand.html": [
+ "9a265502d5c0dfd1b2ebb7ed54b81514216af826",
+ "testharness"
+ ],
"css/css-grid/parsing/grid-area-valid.html": [
"8e7d0d43d1cfac44935593892b67fdb40b179791",
"testharness"
@@ -563676,7 +564725,7 @@
"testharness"
],
"css/css-grid/parsing/grid-auto-columns-invalid.html": [
- "40b6059a7e8b564a4aef5393a7be77cbaa1ff4a2",
+ "04e0fadf0df2824a499bede7f2fe80e410a29e1a",
"testharness"
],
"css/css-grid/parsing/grid-auto-columns-valid.html": [
@@ -563700,7 +564749,7 @@
"testharness"
],
"css/css-grid/parsing/grid-auto-rows-invalid.html": [
- "4111e2563365579b3810c701a782df54dce3c61e",
+ "1b61479f3c2f51c23a3be59a7d90b179de1407ca",
"testharness"
],
"css/css-grid/parsing/grid-auto-rows-valid.html": [
@@ -563724,7 +564773,7 @@
"testharness"
],
"css/css-grid/parsing/grid-template-columns-valid.html": [
- "85ac76a999aab5adf628a8e38f626fcae299d12f",
+ "6bf2e7bce63c88d028f5dea1bf3e7be8cab7775c",
"testharness"
],
"css/css-grid/parsing/grid-template-rows-invalid.html": [
@@ -563732,7 +564781,11 @@
"testharness"
],
"css/css-grid/parsing/grid-template-rows-valid.html": [
- "ec8d64f79bacc1d7831e415768c2a76bf05607e0",
+ "2d3a1ed8045c3eef9982cffc3f95415518f560cb",
+ "testharness"
+ ],
+ "css/css-grid/parsing/grid-template-shorthand.html": [
+ "b9165359a7250afab60463878b9beb8592424f58",
"testharness"
],
"css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html": [
@@ -565559,6 +566612,10 @@
"ff0c8366bb988fafe72746837a330801ae2fe34b",
"testharness"
],
+ "css/css-lists/parsing/list-style-shorthand.sub.html": [
+ "140df208aab9e8c7811de14bd96b99bad7d89752",
+ "testharness"
+ ],
"css/css-lists/parsing/list-style-type-computed.html": [
"21230f31b05058e23f004cfe1a53fa09835372af",
"testharness"
@@ -565803,6 +566860,10 @@
"604b801c76040a5058612fd19c75ee66107081ed",
"testharness"
],
+ "css/css-logical/parsing/inset-shorthand.html": [
+ "4557879129e006980d2775658aadece56458ba35",
+ "testharness"
+ ],
"css/css-logical/parsing/inset-valid.html": [
"2d8f937f075b0d0fbde677e15266f47af5fec3f8",
"testharness"
@@ -574176,7 +575237,7 @@
"testharness"
],
"css/css-scroll-snap/scroll-margin.html": [
- "c85232edf23876a1ab37d858c4d59940b183e01e",
+ "e6ce4ac49c01ff65823fd83ee6866a6019701f6e",
"testharness"
],
"css/css-scroll-snap/scroll-padding.html": [
@@ -577367,6 +578428,10 @@
"3dd2d0c834ec8c7340b093a4c7a1272fb35a8a26",
"testharness"
],
+ "css/css-text-decor/parsing/text-decoration-shorthand.html": [
+ "904313f0528de50541d88b3db89902bdbf721cfe",
+ "testharness"
+ ],
"css/css-text-decor/parsing/text-decoration-skip-ink-computed.html": [
"0b4807cec08a818c07a3d3bcaefc2092ecca9c14",
"testharness"
@@ -589332,7 +590397,7 @@
"reftest"
],
"css/css-transitions/AnimationEffect-getComputedTiming.tentative.html": [
- "4b6a28b5694f52103bcb6b383dbcd1ad6553cf3a",
+ "32c15f07a96a2a1cf99068e303f17296aa71e96e",
"testharness"
],
"css/css-transitions/CSSPseudoElement-getAnimations.tentative.html": [
@@ -589376,7 +590441,7 @@
"testharness"
],
"css/css-transitions/KeyframeEffect-getKeyframes.tentative.html": [
- "08a90734392c2e14c0b2593144796e713ff0a20d",
+ "47b769b13a92971ccb02acd6ea61c1bda53f847f",
"testharness"
],
"css/css-transitions/KeyframeEffect-target.tentative.html": [
@@ -589484,7 +590549,7 @@
"testharness"
],
"css/css-transitions/parsing/transition-delay-invalid.html": [
- "b34d50551ce433ebe672c7fddb4a549582c754db",
+ "4b7a14328601ebf6f38e016d5844744bac1a3839",
"testharness"
],
"css/css-transitions/parsing/transition-delay-valid.html": [
@@ -589496,35 +590561,47 @@
"testharness"
],
"css/css-transitions/parsing/transition-duration-invalid.html": [
- "fd0f341f4071b53561cf8b072bb105d3bd1a4563",
+ "4474089bbb0f89fdfc83a8436c7d5926e046256f",
"testharness"
],
"css/css-transitions/parsing/transition-duration-valid.html": [
"311ca086695151747559a0995b61c7fe4c755592",
"testharness"
],
+ "css/css-transitions/parsing/transition-invalid.html": [
+ "64310b13a15e982402e1d8c3b3d6daad5be67676",
+ "testharness"
+ ],
"css/css-transitions/parsing/transition-property-computed.html": [
"1e8cfeb22ddfbba2225494e16fdb0b27732a3ed0",
"testharness"
],
"css/css-transitions/parsing/transition-property-invalid.html": [
- "903a206eac13688a51ff2ba88552de67efa2e9cb",
+ "715e13d7a249d8762350070c7c47aa8043297b54",
"testharness"
],
"css/css-transitions/parsing/transition-property-valid.html": [
"4e3894f5aa94e00aa59406ee1aab92b9226483af",
"testharness"
],
+ "css/css-transitions/parsing/transition-shorthand.html": [
+ "caffb3978cf0162cb8616c6723c6cb93e33750b4",
+ "testharness"
+ ],
"css/css-transitions/parsing/transition-timing-function-computed.html": [
- "9834dfdbf0dde78d0d2c1b468c5badddc2460ac9",
+ "fa03b2295b9c2f92ab4e520cc75153d9eaa6e672",
"testharness"
],
"css/css-transitions/parsing/transition-timing-function-invalid.html": [
- "00bd2131e0927ba38e633ad7be404b8ec26e51a9",
+ "c69b7e75d3d3ef31df4f6ec927b8fbf2032484d6",
"testharness"
],
"css/css-transitions/parsing/transition-timing-function-valid.html": [
- "2e2c1827bfbef9d4cc58e32ec88da3c7fd614225",
+ "5402fdac195b2dc2d68553d593e1924f5c3be695",
+ "testharness"
+ ],
+ "css/css-transitions/parsing/transition-valid.html": [
+ "c4651f5f125f40c0ec75f6d58b2641fa78b47cf0",
"testharness"
],
"css/css-transitions/properties-value-001.html": [
@@ -589791,36 +590868,36 @@
"9a74bebfb7a45765cac3693b1461953ea75cef92",
"testharness"
],
- "css/css-transitions/transition-delay-000.html": [
- "2b4cedbb52405903e367ea6ca7a39dcca3b167b6",
+ "css/css-transitions/transition-delay-000-manual.html": [
+ "b205085997ced154dd81e5085dbc6a0cfce19045",
"manual"
],
"css/css-transitions/transition-delay-001.html": [
"921525ea72d2e1e28d2321c1594085deaf2330f0",
"testharness"
],
- "css/css-transitions/transition-delay-002.html": [
- "70e952b308c35affc5f7bdfbc66326df49ba6397",
+ "css/css-transitions/transition-delay-002-manual.html": [
+ "168f94b9c054b481df7ccea0c5e07b8643715c8c",
"manual"
],
- "css/css-transitions/transition-delay-003.html": [
- "3062e9a4842dcb5ecfd3b59c26260b412cd3b573",
+ "css/css-transitions/transition-delay-003-manual.html": [
+ "e3680ca2615ab3d490467101c047a42153a46d61",
"manual"
],
"css/css-transitions/transition-duration-001.html": [
"b5c095f001efb373934850db67527ace118e10cd",
"testharness"
],
- "css/css-transitions/transition-duration-002.html": [
- "e9ba5760c605e28e698411f73f3280cc453b9637",
+ "css/css-transitions/transition-duration-002-manual.html": [
+ "03f514d365d165d777e43f83142e801f4f9833d9",
"manual"
],
- "css/css-transitions/transition-duration-003.html": [
- "bb68b5f51c1a5c6dc84de7499599472bc286ad39",
+ "css/css-transitions/transition-duration-003-manual.html": [
+ "cb561008836236752f0ed37ad68159481e71596f",
"manual"
],
- "css/css-transitions/transition-duration-004.html": [
- "01c42473319d90130f9aec5df39a28a287aff7ed",
+ "css/css-transitions/transition-duration-004-manual.html": [
+ "b93904bb7667b7c5afa7f9fdcd3dad524e2f9f41",
"manual"
],
"css/css-transitions/transition-property-001.html": [
@@ -589831,176 +590908,176 @@
"99196b6d1d4ec86be77930d578602110b6a7deb6",
"testharness"
],
- "css/css-transitions/transition-property-003.html": [
- "17668b053e83e102565e341dd337ffc2b4544cf4",
+ "css/css-transitions/transition-property-003-manual.html": [
+ "291204d5752e5fcb9c7b8fb8ef32a95d7d4b1813",
"manual"
],
- "css/css-transitions/transition-property-004.html": [
- "6393c6e3d54f59e8ae9cde42eda248d0c891f68d",
+ "css/css-transitions/transition-property-004-manual.html": [
+ "d2e84c99d69003d46c439ce6c623594390701a2a",
"manual"
],
- "css/css-transitions/transition-property-005.html": [
- "a10ff4a3c1acd4cf31d18bc510f228ed416085ae",
+ "css/css-transitions/transition-property-005-manual.html": [
+ "e69941001bca8c441cdb66aaf4582d7e3c336afc",
"manual"
],
- "css/css-transitions/transition-property-006.html": [
- "e7d8c5e39462d526b4ee60f97046fe14f5e904a1",
+ "css/css-transitions/transition-property-006-manual.html": [
+ "6032a401d0cfea4a717a3c07ebaca841857aef72",
"manual"
],
- "css/css-transitions/transition-property-007.html": [
- "0d006fe9b0b1101a03528aa085ceda850deb621c",
+ "css/css-transitions/transition-property-007-manual.html": [
+ "898aea5b2079caa0d66a94b673feb8e42ee69dfc",
"manual"
],
- "css/css-transitions/transition-property-008.html": [
- "47ca1eee1053ca272eb72f3b6e5eaaa1a9343807",
+ "css/css-transitions/transition-property-008-manual.html": [
+ "53caa1028a47fafec6b2d07a3aa58e7c709cd2d8",
"manual"
],
- "css/css-transitions/transition-property-009.html": [
- "b45948b9dd6040af8dd3f2e7dfdcec1c6002cd58",
+ "css/css-transitions/transition-property-009-manual.html": [
+ "5f272854eb2e3f3ebf1dcd8f5130ef100218ec28",
"manual"
],
- "css/css-transitions/transition-property-010.html": [
- "f05f6aa133e2852aa75b7fa43dc3637964ad1741",
+ "css/css-transitions/transition-property-010-manual.html": [
+ "a7e06ef78072f6ea6944e35495e1be70b232c499",
"manual"
],
- "css/css-transitions/transition-property-011.html": [
- "7b3716dde8adfc3cab36d38115a83702388808d8",
+ "css/css-transitions/transition-property-011-manual.html": [
+ "3799ad212aebddb60c3f1818129e7a4d71e5bfb7",
"manual"
],
- "css/css-transitions/transition-property-012.html": [
- "0e19e52d62abcfd5d4f3852000ce99634a860b3d",
+ "css/css-transitions/transition-property-012-manual.html": [
+ "8587e264119c455f1d7bb8d882c3a290e3248124",
"manual"
],
- "css/css-transitions/transition-property-013.html": [
- "9fb075b09d2b0f04556916cbb4afcbf29e0a021b",
+ "css/css-transitions/transition-property-013-manual.html": [
+ "3b13c038161e1a2037f838c8133330425a42e700",
"manual"
],
- "css/css-transitions/transition-property-014.html": [
- "91075ff638f32d1b6f958019c7862fdf171f0475",
+ "css/css-transitions/transition-property-014-manual.html": [
+ "d4aca3805b3b983bc1e3363abd8ba5b33ea71ef7",
"manual"
],
- "css/css-transitions/transition-property-015.html": [
- "b37d4fc9a7beae894eb63fb98aa3fe9d6dcc039f",
+ "css/css-transitions/transition-property-015-manual.html": [
+ "e5805bc4ba6882394c1b45932ce97eaab71afc43",
"manual"
],
- "css/css-transitions/transition-property-016.html": [
- "2670cd7385222e0959553c376193ea94e76ade39",
+ "css/css-transitions/transition-property-016-manual.html": [
+ "d2cc57cd9796d819aa914dcad7ff0525266cb64e",
"manual"
],
- "css/css-transitions/transition-property-017.html": [
- "3b94ecde0c51b82d4650834181c25718576fd327",
+ "css/css-transitions/transition-property-017-manual.html": [
+ "f24c51a7383b76c2dd56db5e1d69eb6c3808cc0c",
"manual"
],
- "css/css-transitions/transition-property-018.html": [
- "593e3ff71944fde48c84ae99191242a9078ea5ee",
+ "css/css-transitions/transition-property-018-manual.html": [
+ "e0b6bd955b5e2b65b131d21f5ea5a646c00afed0",
"manual"
],
- "css/css-transitions/transition-property-019.html": [
- "83f900005469647bd05cf7080e41fd59c1b641ef",
+ "css/css-transitions/transition-property-019-manual.html": [
+ "24751292c2886a761e90ed009543768747ffff29",
"manual"
],
- "css/css-transitions/transition-property-020.html": [
- "af0aea41bcd4615825a961778ab499f61a718f8a",
+ "css/css-transitions/transition-property-020-manual.html": [
+ "e4f7b577920f321453e5a25aadc1d814c4e3ac91",
"manual"
],
- "css/css-transitions/transition-property-021.html": [
- "f499c9aee43f50bb0a74acfba1fa412976a994ad",
+ "css/css-transitions/transition-property-021-manual.html": [
+ "c0492223bbf6043cd5b93f9290640bceaf53f338",
"manual"
],
- "css/css-transitions/transition-property-022.html": [
- "f36954902e3667eb305340075d5952344cc62bbd",
+ "css/css-transitions/transition-property-022-manual.html": [
+ "ece1a32eb09ee3baf7f38ca39da5530774af81c8",
"manual"
],
- "css/css-transitions/transition-property-023.html": [
- "81c8cadac422bcbb48b88a053ae0df564a0a0242",
+ "css/css-transitions/transition-property-023-manual.html": [
+ "267be61aa1560646ffcb12693f4783942242a51c",
"manual"
],
- "css/css-transitions/transition-property-024.html": [
- "b0e9d41dbc0dd0628adf9894fb6811f559efa45a",
+ "css/css-transitions/transition-property-024-manual.html": [
+ "fad3d7ac239ceb28f26d6ae40a2eff88af7690aa",
"manual"
],
- "css/css-transitions/transition-property-025.html": [
- "bfa6f698930d13412d6c19a424aefb2c566c27a7",
+ "css/css-transitions/transition-property-025-manual.html": [
+ "c0f276184894a29f1abd5eb46322f6b0a4a5ffe5",
"manual"
],
- "css/css-transitions/transition-property-026.html": [
- "d6f0481bea7ad1b54ba2d44efd62513ec834b221",
+ "css/css-transitions/transition-property-026-manual.html": [
+ "35846e3fb5334cf049f1031e6c542e46105ba5f8",
"manual"
],
- "css/css-transitions/transition-property-027.html": [
- "01f50dc475ab5fd3ad0f7094d7efa1db0ad362b9",
+ "css/css-transitions/transition-property-027-manual.html": [
+ "5ad5f5d5bd5187593a421b261758227e464f5204",
"manual"
],
- "css/css-transitions/transition-property-028.html": [
- "83d8751109b1e29e76aaa98fedce03f205b68a63",
+ "css/css-transitions/transition-property-028-manual.html": [
+ "be319d2c21204d6ba6bbdb1e6be454782a49203a",
"manual"
],
- "css/css-transitions/transition-property-029.html": [
- "fb435c91249d691862b24a63f5f5b9c35166afb8",
+ "css/css-transitions/transition-property-029-manual.html": [
+ "84c55326fe8ab2c5f3b20d07939a15de60ba42d0",
"manual"
],
- "css/css-transitions/transition-property-030.html": [
- "286af42e12cc2c8249d1bc1e2ca14f3aedba0293",
+ "css/css-transitions/transition-property-030-manual.html": [
+ "ba75f7ce725f320cf4d478273adfa22e47f5ff6a",
"manual"
],
- "css/css-transitions/transition-property-031.html": [
- "d5bf23276f7e594f77f86f9b292fe134a57aabed",
+ "css/css-transitions/transition-property-031-manual.html": [
+ "14cf23c6bdc649f09862f2a573008171177a882f",
"manual"
],
- "css/css-transitions/transition-property-032.html": [
- "020a8573c8729efeb49e1bde33d7942c8f89f70f",
+ "css/css-transitions/transition-property-032-manual.html": [
+ "c6596608ed13fd93ce60c1ca5d05f5dabd8e6157",
"manual"
],
- "css/css-transitions/transition-property-033.html": [
- "fcb999fa079be9df7569e57af8019d93b8b9905b",
+ "css/css-transitions/transition-property-033-manual.html": [
+ "fd7646c66bc47827794ebd0792b7586216dbe2af",
"manual"
],
- "css/css-transitions/transition-property-034.html": [
- "b4da3a9bca07ba24040e1723baa4662c1d83af95",
+ "css/css-transitions/transition-property-034-manual.html": [
+ "07804121c9c862b4bcc2e1babf9c65c17d71e206",
"manual"
],
- "css/css-transitions/transition-property-035.html": [
- "27c9ea9e1d8e8721224bd3bbe46405dffbcab90f",
+ "css/css-transitions/transition-property-035-manual.html": [
+ "4a9e9b128fd5402c97bb64fdbaaa1706814c18c5",
"manual"
],
- "css/css-transitions/transition-property-036.html": [
- "326e615398c5905e92bdacec50b22effa23b3572",
+ "css/css-transitions/transition-property-036-manual.html": [
+ "746bc409ee0e92d6e0588079dff63e4a0e89a68d",
"manual"
],
- "css/css-transitions/transition-property-037.html": [
- "79ce16fb961c9f3bfceda7bf996afb7aef05381f",
+ "css/css-transitions/transition-property-037-manual.html": [
+ "d031caaaa405fcf57b44890ee97159f28d88fc42",
"manual"
],
- "css/css-transitions/transition-property-038.html": [
- "5b16e41f578b70217b2ca1b406fb1a9d1f571248",
+ "css/css-transitions/transition-property-038-manual.html": [
+ "2f9302bad7593a24a6617a91d388202afed979ef",
"manual"
],
- "css/css-transitions/transition-property-039.html": [
- "0ef6da528cb81c746c799ec2fb84c0c6f0f1d872",
+ "css/css-transitions/transition-property-039-manual.html": [
+ "bf0b209bdad43712bb42fdf41d14328b4d4ac5f8",
"manual"
],
- "css/css-transitions/transition-property-040.html": [
- "b333f371f3f974467c745d4cbfa4165077c1aa61",
+ "css/css-transitions/transition-property-040-manual.html": [
+ "83a3cf802b3e00fc717d01de51f8824a15af71ed",
"manual"
],
- "css/css-transitions/transition-property-041.html": [
- "b3386a0534f190d15e5251c31e59c05a779dc4af",
+ "css/css-transitions/transition-property-041-manual.html": [
+ "04f8351a0309f5b4e10c610a6c07325944492220",
"manual"
],
- "css/css-transitions/transition-property-042.html": [
- "fbb3e2d8b1ad7208b40d669e70b5f41e75601c6a",
+ "css/css-transitions/transition-property-042-manual.html": [
+ "15977497fbb81be0a86f24ce52a7e6359e18bf98",
"manual"
],
- "css/css-transitions/transition-property-043.html": [
- "b87dc84a85636d4c1cc32a4a2716b33ecf28b370",
+ "css/css-transitions/transition-property-043-manual.html": [
+ "3b939bcf0ab8d5800ac2e0088da0774f56e28028",
"manual"
],
- "css/css-transitions/transition-property-044.html": [
- "f1d584fcf25396db414078066302ce2f7bb979f2",
+ "css/css-transitions/transition-property-044-manual.html": [
+ "d7c2f467492d9e234467956e3409b9665cee9e9d",
"manual"
],
- "css/css-transitions/transition-property-045.html": [
- "3fa82c16d1f9e7f01760003c07bdfbc38afa060d",
+ "css/css-transitions/transition-property-045-manual.html": [
+ "912ed4df50ccc545c0a7c77f4cc43c0b75104c4a",
"manual"
],
"css/css-transitions/transition-reparented.html": [
@@ -590011,56 +591088,28 @@
"10700abf9bc48d0938fd3f5b77b031ecc0c05e4a",
"reftest"
],
- "css/css-transitions/transition-timing-function-001.html": [
- "4c9598f3919b84dc79d7c92c76b74b7f950423aa",
- "testharness"
- ],
- "css/css-transitions/transition-timing-function-002.html": [
- "527eb9e85ad4dc4944b39e83c1a0d79b8f515ddb",
- "manual"
- ],
- "css/css-transitions/transition-timing-function-003.html": [
- "353b94e7eca1e3f837d5c0e0ec02c1c0167b19a3",
- "manual"
- ],
- "css/css-transitions/transition-timing-function-004.html": [
- "0601b4bd148a113ef0f5e0b5f6b3c33cf40c38b5",
- "manual"
- ],
- "css/css-transitions/transition-timing-function-005.html": [
- "eb46ece6044fe5d204b8dde056e655179732ef90",
- "manual"
- ],
- "css/css-transitions/transition-timing-function-006.html": [
- "d8640d9304778f2ad41f56a90ba23486e8d59f34",
- "manual"
- ],
- "css/css-transitions/transition-timing-function-007.html": [
- "72ffbf6a1302c1858bf7880bfa033793c72b40d1",
- "manual"
- ],
- "css/css-transitions/transition-timing-function-008.html": [
- "2e20f7ee5f2a9ff9602222635a7723850fbd9e51",
+ "css/css-transitions/transition-timing-function-002-manual.html": [
+ "abd729bdedeff531c08279f1b4c4a7399b69d0c2",
"manual"
],
- "css/css-transitions/transition-timing-function-009.html": [
- "a3e2f1a6bd2226a24484899c2a1f3126967989dc",
+ "css/css-transitions/transition-timing-function-003-manual.html": [
+ "9fee35a972ed2f1790dd6c58140e92248044bfa7",
"manual"
],
- "css/css-transitions/transition-timing-function-010.html": [
- "16af80655189fe64a1be1612910eca3f2aa449d4",
+ "css/css-transitions/transition-timing-function-004-manual.html": [
+ "f57d49aeabb305bfea5281d159382c334f37ac8c",
"manual"
],
- "css/css-transitions/transition-timing-function-011.html": [
- "5d0f5a25b25aae82fc73e8a52a419f92350b5e3c",
+ "css/css-transitions/transition-timing-function-005-manual.html": [
+ "27726cd6d5b3bd4bc9532d64e2062318dd019574",
"manual"
],
- "css/css-transitions/transition-timing-function-012.html": [
- "f3bc812217e4a31153187ab33478f461571e089e",
+ "css/css-transitions/transition-timing-function-006-manual.html": [
+ "d97e6bb07694d5b19dffba48a3890f0c07f15d03",
"manual"
],
- "css/css-transitions/transition-timing-function-013.html": [
- "5d89c45e0245ba4fedcd84905a59e3e8580319a8",
+ "css/css-transitions/transition-timing-function-010-manual.html": [
+ "953d7210b6d725cc668887ff592cc630ced88aec",
"manual"
],
"css/css-transitions/transitioncancel-001.html": [
@@ -592691,6 +593740,10 @@
"75fc7e60bd9dc3f249b8340cf342b68fa45b7d68",
"testharness"
],
+ "css/css-ui/parsing/outline-shorthand.html": [
+ "01239e199e651ff53237c19c4a76a500338e8514",
+ "testharness"
+ ],
"css/css-ui/parsing/outline-style-computed.html": [
"3824b8d59815b20206a90e428644942ac220c68c",
"testharness"
@@ -594427,6 +595480,18 @@
"fee5e92a9312f80b6d36966b721d01269f1ad30b",
"reftest"
],
+ "css/css-values/clamp-length-computed.html": [
+ "67dc19a99f4d687745f27b7548d44e2795981d42",
+ "testharness"
+ ],
+ "css/css-values/clamp-length-invalid.html": [
+ "68c298b7ffc431d58025c0c9c5c2163db3742334",
+ "testharness"
+ ],
+ "css/css-values/clamp-length-serialize.html": [
+ "4719e4c0254902bb1c2234c4cfc1c4003a8df0d4",
+ "testharness"
+ ],
"css/css-values/ex-calc-expression-001-ref.html": [
"888a51ea9b6ac04fb065ee5d84a18be8fe765aca",
"support"
@@ -594523,6 +595588,10 @@
"73069ecfe1e6d5b198f6e01df48facbe117d6828",
"reftest"
],
+ "css/css-values/min-max-percentage-length-interpolation.html": [
+ "14af1352d1740d32cd52ab069ab1799f87803f5d",
+ "reftest"
+ ],
"css/css-values/minmax-angle-computed.html": [
"84e598a8147e123285d54876f942a0df0a5bf57f",
"testharness"
@@ -604859,6 +605928,10 @@
"188a65b715291b33d93d8a6af88c2a7f6e25858c",
"reftest"
],
+ "css/mediaqueries/aspect-ratio-serialization.html": [
+ "cce35592885f29eafd2c5c1b94a0da173217fc2a",
+ "testharness"
+ ],
"css/mediaqueries/device-aspect-ratio-001.html": [
"60f49b9b3cfedaf8136dcb568570ef71124cba8b",
"reftest"
@@ -604951,6 +606024,10 @@
"d039281c0254e2bb794e229baecbe4d39c547baa",
"reftest"
],
+ "css/mediaqueries/navigation-controls.tentative.html": [
+ "ac1087bb65b9a8fd85d924ad1ae0de797762dac5",
+ "testharness"
+ ],
"css/mediaqueries/prefers-color-scheme.html": [
"c6ca45ab17201466e01006cab78331a0765cc6c8",
"testharness"
@@ -605020,7 +606097,7 @@
"testharness"
],
"css/motion/animation/offset-interpolation.html": [
- "04f4d4b3bd78f95939c34aa098b85a7947d4fcbd",
+ "2ee011bd77a975e9b566d24658995693c574f620",
"testharness"
],
"css/motion/animation/offset-path-interpolation-001.html": [
@@ -605304,7 +606381,7 @@
"testharness"
],
"css/motion/parsing/offset-parsing-valid.html": [
- "3fe8a5b20d805ae3d330b8c653593b6b0c0e0d9e",
+ "7f8a0fd34c329178e42908edd27858d577cdbad1",
"testharness"
],
"css/motion/parsing/offset-path-computed.html": [
@@ -607416,7 +608493,7 @@
"support"
],
"css/support/interpolation-testcommon.js": [
- "e7ee011cdb470ee228a8a32442d6a717ef6ffd0a",
+ "24c47e136c8d98603238a09dbb64bd79cd6751d2",
"support"
],
"css/support/parsing-testcommon.js": [
@@ -607464,7 +608541,7 @@
"support"
],
"css/support/shorthand-testcommon.js": [
- "1fd603c290c14d4672fc8f63f2d964da9867be78",
+ "3298113513fb1e34311a6e7f34dd2d20cfe0c870",
"support"
],
"css/support/square-purple.png": [
@@ -614160,7 +615237,7 @@
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-008-ref.html": [
- "f5edbedfb74e763fdcdc1451d538caeda5c023c0",
+ "7cf8fafc933623c8a7912e8912a96d2fb178f8b5",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-008.html": [
@@ -618731,6 +619808,10 @@
"9f6d871417dcb006380f6e59bd0c0a031fd7e78e",
"testharness"
],
+ "dom/nodes/MutationObserver-sanity.html": [
+ "a4f6382b944db4b2734ea54c9990dd4135c52557",
+ "testharness"
+ ],
"dom/nodes/MutationObserver-takeRecords.html": [
"6a27ef77ecacf55a7eaaae18cdd007e017e42cd9",
"testharness"
@@ -622064,7 +623145,7 @@
"support"
],
"encrypted-media/scripts/clearkey-update-non-ascii-input.js": [
- "b34c493fd113a91780bf365800b71b98b6a3bfd6",
+ "7a5c073bfab150be54d8bce4b890bf36d731f7ef",
"support"
],
"encrypted-media/scripts/events-session-closed-event.js": [
@@ -622080,11 +623161,11 @@
"support"
],
"encrypted-media/scripts/generate-request-disallowed-input.js": [
- "8b883ccacff17468f98df5d9d704c494abbac51d",
+ "9fd42ee85fa7d9390cbadba60dc4236891e99a54",
"support"
],
"encrypted-media/scripts/invalid-license.js": [
- "992eef5dcf78961ad8f1c45f939e67330de78c57",
+ "89d43769e5346c6dc4046d0227af490e029473a2",
"support"
],
"encrypted-media/scripts/keystatuses-multiple-sessions.js": [
@@ -622180,7 +623261,7 @@
"support"
],
"encrypted-media/scripts/requestmediakeysystemaccess.js": [
- "edfcbfc613310ef8db33e9d6ae2d97032ea73783",
+ "a60d4a1e768618ae0952063e7cdd9192ccfd7ecf",
"support"
],
"encrypted-media/scripts/reset-src-after-setmediakeys.js": [
@@ -622212,7 +623293,7 @@
"support"
],
"encrypted-media/scripts/setmediakeys.js": [
- "f161e6712fd09c43b6659021c33554ba6680a775",
+ "a85adeaeafc63cf3f8224eee52d89aebab9b6450",
"support"
],
"encrypted-media/scripts/syntax-mediakeys.js": [
@@ -622220,7 +623301,7 @@
"support"
],
"encrypted-media/scripts/syntax-mediakeysession.js": [
- "3663a7b930db8c8d66cc9345a394ee59aa85ae50",
+ "fac31cbb3e57e9890d83f4c4fb671eaa7de11c3a",
"support"
],
"encrypted-media/scripts/syntax-mediakeysystemaccess.js": [
@@ -622228,7 +623309,7 @@
"support"
],
"encrypted-media/scripts/temporary-license-type.js": [
- "cb0b0e67fefc1558a0e1caeb477d3ef4227165ab",
+ "44c9f158085fcffd42a8573e080d17939a7a866c",
"support"
],
"encrypted-media/scripts/unique-origin.js": [
@@ -622236,7 +623317,7 @@
"support"
],
"encrypted-media/scripts/update-disallowed-input.js": [
- "b5adaf7f125c10c57d1bde2a19f9536270425f55",
+ "2a30ad38d4310db6da0f84752b23d46f0a9c81e8",
"support"
],
"encrypted-media/scripts/waiting-for-a-key.js": [
@@ -622264,7 +623345,7 @@
"support"
],
"encrypted-media/util/utils.js": [
- "41bd71f9b880711e088daed2bd223404018b9d8e",
+ "79f8c7ea6d1b5c5c38131205c20499019ba7371c",
"support"
],
"entries-api/META.yml": [
@@ -625023,6 +626104,10 @@
"b60ae206c78b3dd8e934dde7a7408fe4a7465932",
"testharness"
],
+ "fetch/sec-metadata/portal.tentative.https.sub.html": [
+ "2a9df1f01174c7297f7d207ba1f52de2dd588b0c",
+ "testharness"
+ ],
"fetch/sec-metadata/prefetch.tentative.https.sub.html": [
"2c230b8949688940067d9bbc151b12f59e20b517",
"testharness"
@@ -625108,7 +626193,7 @@
"support"
],
"fetch/sec-metadata/resources/post-to-owner.py": [
- "c5ded49d71bbc4c8f6d0cc3cc1bd43f9029dcf1b",
+ "096f33b04a22f34eccbcf9981010ff6e43c8ea79",
"support"
],
"fetch/sec-metadata/resources/record-header.py": [
@@ -628684,7 +629769,7 @@
"testharness"
],
"html/browsers/origin/cross-origin-objects/cross-origin-objects.html": [
- "f664819d3404498dc1ef9ede50c7b1b28fad1933",
+ "50fe71a2c6fba3c1ec6e42c94dd05899eb24245c",
"testharness"
],
"html/browsers/origin/cross-origin-objects/frame-with-then.html": [
@@ -635831,6 +636916,14 @@
"f66244ab10ffbfeb5ef64ca7564fdd37794288af",
"reftest"
],
+ "html/rendering/non-replaced-elements/tables/table-column-width-ref.html": [
+ "1eb7c00d21413292ffb47e956cf341338d6e26ff",
+ "support"
+ ],
+ "html/rendering/non-replaced-elements/tables/table-column-width.html": [
+ "6358e14a3926b4f6b97d32832c45c0ef9237f24d",
+ "reftest"
+ ],
"html/rendering/non-replaced-elements/tables/table-direction-ref.html": [
"2bbd6c04772fd538426d516d2a2d1b301d05ff3f",
"support"
@@ -636355,8 +637448,12 @@
"b5f3ec1aa62d8238628409fcda14b189e7ed2a65",
"testharness"
],
+ "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html": [
+ "1d231d52cde8b4758cf834db42231720c374b060",
+ "testharness"
+ ],
"html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html": [
- "ae266882b1957080b28f1204a0183c6ca015cadc",
+ "c9ce86869e10e367a4aadf99d86d1c407ebd1ccf",
"testharness"
],
"html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-dim-ref.html": [
@@ -636415,6 +637512,10 @@
"55f7f0a3bfeca2c8262ab85f8b1b90f7a705c803",
"reftest"
],
+ "html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html": [
+ "2b4937046d2f20e0dafddf07b1470adec5e7b050",
+ "testharness"
+ ],
"html/rendering/replaced-elements/embedded-content-rendering-rules/canvas-fallback-ref.html": [
"9077591f46641b6bb7670c62deb1c77e27beb27f",
"support"
@@ -637579,6 +638680,10 @@
"911aa7b5c96333f78da5ea315e1ca1b8381dcd74",
"testharness"
],
+ "html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-different-load.html": [
+ "4802665cdda09d7d8763b133aed301d43cdce08d",
+ "testharness"
+ ],
"html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-networkState.html": [
"df0985d6fb435c25dce510f924b1470878c5602f",
"testharness"
@@ -647207,6 +648312,10 @@
"4442d513753112fac2e35855268d0b246f01fa09",
"testharness"
],
+ "infrastructure/expected-fail/unhandled-rejection.html": [
+ "f25f6e088fa06fbcd38b62929309e761b0060988",
+ "testharness"
+ ],
"infrastructure/metadata/infrastructure/assumptions/allowed-to-play.html.ini": [
"c9fbabede6d695cd3795e4390b35da0454ffcc34",
"support"
@@ -647239,6 +648348,10 @@
"0bcdd374f2521b6534208ab750a1c0d36e7dd7ca",
"support"
],
+ "infrastructure/metadata/infrastructure/expected-fail/unhandled-rejection.html.ini": [
+ "39773dfe714a6b5754bfe73c64294bcb38f2afa3",
+ "support"
+ ],
"infrastructure/metadata/infrastructure/reftest/reftest_and_fail.html.ini": [
"81aef049cd122f7332c66f5a087947e512a59d0e",
"support"
@@ -647636,7 +648749,7 @@
"support"
],
"interfaces/IndexedDB.idl": [
- "9373f4e43bf8ab0fe51371839dd614b83c54cb9c",
+ "2af9eb2a3245d2229dc5b7505713795405ff0ba9",
"support"
],
"interfaces/InputDeviceCapabilities.idl": [
@@ -647664,7 +648777,7 @@
"support"
],
"interfaces/WebIDL.idl": [
- "78d85c13fb9b461e24bc2e6667b7431241f5dfcb",
+ "a118dfd1a20e439129ab5f73b15ced9523c8d7b8",
"support"
],
"interfaces/accelerometer.idl": [
@@ -647712,7 +648825,7 @@
"support"
],
"interfaces/cookie-store.idl": [
- "533884fdb5865fc5fe87bd73d68983dd4b485676",
+ "c3204b2515a2000ca9be0cf6b4f6732e0ddc63a1",
"support"
],
"interfaces/cors-rfc1918.idl": [
@@ -647760,7 +648873,7 @@
"support"
],
"interfaces/css-masking.idl": [
- "80f908d42f3e4e4d0eadb1825dc6a4dbf20b1f2d",
+ "6db59eddbe087310010be1e60b826b72924c7849",
"support"
],
"interfaces/css-paint-api.idl": [
@@ -647820,11 +648933,11 @@
"support"
],
"interfaces/feature-policy.idl": [
- "3ded1e9b0c64ec84d4f4d07b6b870effcb9cd893",
+ "85601321a17f3d0a46d2246642d59ef44d916398",
"support"
],
"interfaces/fetch.idl": [
- "f529c4501bf484f57858ab2eb616a9d42aea766f",
+ "eacc69d8b9d1d8f7f9bdbf6f2a879d95d9d847bd",
"support"
],
"interfaces/filter-effects.idl": [
@@ -647840,11 +648953,11 @@
"support"
],
"interfaces/gamepad.idl": [
- "b7497c276f1610139ef14c1cc4d0c34c1f2c406b",
+ "27541bf2553520dcf7f2ce52386014c9a4363377",
"support"
],
"interfaces/generic-sensor.idl": [
- "2921c50a65e8d4467a56c5d337ef4d476e3ee0a2",
+ "f3eeb9bf968f7a1a0ba6a772ad935b855b1e9e8a",
"support"
],
"interfaces/geolocation-API.idl": [
@@ -647908,7 +649021,7 @@
"support"
],
"interfaces/magnetometer.idl": [
- "be6cbc9d47a8da6a16613c8d88bbc824e7372de3",
+ "da1f22bb6685a38164c1eb16d3a6c07290e7833a",
"support"
],
"interfaces/media-capabilities.idl": [
@@ -647956,15 +649069,15 @@
"support"
],
"interfaces/notifications.idl": [
- "1a55c31bb04c0ab11946a90f374fdf07e268ad05",
+ "d79e9076c81c9f1016f1ca98c16356f6b9454365",
"support"
],
"interfaces/orientation-event.idl": [
- "a8eef516f29b40c1b1604ad8d853e232f89eeabe",
+ "af5bc546ac1726ab610285bfa007df3b4e39bf11",
"support"
],
"interfaces/orientation-sensor.idl": [
- "9ee099881b0a59ca69da02e9aa3d1886e4bc05bc",
+ "2ea3d38240e527f10af7ef392e0c0935a3750572",
"support"
],
"interfaces/page-visibility.idl": [
@@ -647976,7 +649089,7 @@
"support"
],
"interfaces/payment-handler.idl": [
- "b5d79decb06530001cd9d63e6fcba43995d27ba1",
+ "c87c855d439609adee24d2f49fc77879f9c8352b",
"support"
],
"interfaces/payment-method-basic-card.idl": [
@@ -648016,7 +649129,7 @@
"support"
],
"interfaces/proximity.idl": [
- "570a29fd37b09304871409dd811498fef8b3cf19",
+ "d4c8fae3a5438058262108f4848414763138080a",
"support"
],
"interfaces/push-api.idl": [
@@ -648088,7 +649201,7 @@
"support"
],
"interfaces/touch-events.idl": [
- "1a8c9d7d24ece0ea221b6863ce8ea3595bcbb697",
+ "84c48284a1b9bdcd79954008decdaeac9d2bf2eb",
"support"
],
"interfaces/trusted-types.tentative.idl": [
@@ -648100,7 +649213,7 @@
"support"
],
"interfaces/url.idl": [
- "998052da6ef1b3aada6b81a4ff5868ee11e3b477",
+ "b0b237e8524a8621f0ddcd8367ebad6fd5f2fb5b",
"support"
],
"interfaces/user-timing.idl": [
@@ -648187,6 +649300,14 @@
"81a23a35be6f857e49253d47cb9c64d24677b56d",
"support"
],
+ "interfaces/webxr-ar-module.idl": [
+ "61fcd6a730f7c3846a8639075a0b2c2a3b755e0c",
+ "support"
+ ],
+ "interfaces/webxr-gamepads-module.idl": [
+ "3aa17a7fe0c8020f6101c0fee29107ce7b24cb37",
+ "support"
+ ],
"interfaces/webxr.idl": [
"b03aa556bb815127203e79c7b4bbc864d539314b",
"support"
@@ -648299,6 +649420,10 @@
"a093b22028c11c3e54db4a6f8fcccaad6a309bfb",
"testharness"
],
+ "intersection-observer/resources/cross-origin-child-iframe.sub.html": [
+ "8e2c36ed56072ad9fd2e82d43b609f5719d78a55",
+ "support"
+ ],
"intersection-observer/resources/cross-origin-subframe.html": [
"4305ed1719b68f227192e005c9696fec5fe58f83",
"support"
@@ -648315,6 +649440,10 @@
"9d0769ae44a1bb4a6195c006999b0959f706330c",
"support"
],
+ "intersection-observer/resources/same-origin-grand-child-iframe.html": [
+ "25db5a29d8a917916d0b2012f8f790ea9178e681",
+ "support"
+ ],
"intersection-observer/resources/scaled-target-subframe.html": [
"8f6f930e00915417fcba592df5520999c427ed91",
"support"
@@ -648355,6 +649484,10 @@
"20bd11d4beb1e8bdd623eaad96f11788747f0d15",
"testharness"
],
+ "intersection-observer/same-origin-grand-child-iframe.sub.html": [
+ "57c0347ddc8ec748e3ff025a0ef7f11342f32a1d",
+ "testharness"
+ ],
"intersection-observer/shadow-content.html": [
"ce9473cb79258fca90321ee26240612c387ac9b9",
"testharness"
@@ -648396,7 +649529,7 @@
"testharness"
],
"intersection-observer/v2/delay-test.html": [
- "231df32c31df0458a4d5de09da55f0244854e0a6",
+ "e3906ea2c2975cbe678f55e34ead09527bc2bbfc",
"testharness"
],
"intersection-observer/v2/drop-shadow-filter-vertical-rl.html": [
@@ -648860,7 +649993,7 @@
"testharness"
],
"lint.whitelist": [
- "be87d27864059b94b79f74a7f671f119cc40c0f9",
+ "d9ea5c17c7cf66a47199faba54d4793e8236f6cb",
"support"
],
"loading/lazyload/common.js": [
@@ -650012,7 +651145,7 @@
"testharness"
],
"mathml/relations/html5-tree/clipboard-event-handlers.tentative.html": [
- "82fda880887839b72ac8c683d076ea07a8525d80",
+ "9816f5126a030de083ce4a6ca020976d9bb3beeb",
"testharness"
],
"mathml/relations/html5-tree/color-attributes-1-ref.html": [
@@ -650108,7 +651241,7 @@
"testharness"
],
"mathml/relations/html5-tree/math-global-event-handlers.tentative.html": [
- "e96feeaf0960641e4413b7b43b93e46490460ee7",
+ "be9bee9c6c68fc2ec8caf5043242c45711ed0ed1",
"testharness"
],
"mathml/relations/html5-tree/required-extensions-2-ref.html": [
@@ -650280,7 +651413,7 @@
"support"
],
"media-capabilities/decodingInfo.any.js": [
- "737ded18c9f3a24f7ef65af2b770dbb9b5865fef",
+ "edd58ac3409bcbab14277f38560c7045178a2dcb",
"testharness"
],
"media-capabilities/decodingInfoEncryptedMedia.http.html": [
@@ -653967,28 +655100,68 @@
"0d9137dc6fb91b1499d922e01d6ad96049f5757b",
"testharness"
],
- "native-file-system/FileSystemBaseHandle-remove.tentative.https.window.js": [
- "fd2ff888e371f383aa1ee87288dd983add46f662",
+ "native-file-system/README.md": [
+ "6905a68e7901ce26bc1a363062304e1536604400",
+ "support"
+ ],
+ "native-file-system/native_FileSystemDirectoryHandle-getDirectory.tentative.https.manual.window.js": [
+ "cfe729cd1f1dd4b53f00b3b13cd53f64f84ca409",
"testharness"
],
- "native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.https.window.js": [
- "79154b058ff0864032c80b09aef9b8b8c760a105",
+ "native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.js": [
+ "0455cb800919ee353b7f2e87bf47b76ba075519b",
"testharness"
],
- "native-file-system/FileSystemDirectoryHandle-getFile.tentative.https.window.js": [
- "fa38abbc5447625cd8396a76c420259840b264f3",
+ "native-file-system/native_FileSystemDirectoryHandle-removeEntry.tentative.https.manual.window.js": [
+ "8905a7afdea57c974a9a06790df6b9e692d32139",
"testharness"
],
- "native-file-system/FileSystemWriter.tentative.https.window.js": [
- "acc0be1c52184a8b67fdb57953cdc2b4ed793499",
+ "native-file-system/native_FileSystemWriter.tentative.https.manual.window.js": [
+ "25d8ee995857fa67be2c41f048e882ec473f739d",
"testharness"
],
- "native-file-system/README.md": [
- "6905a68e7901ce26bc1a363062304e1536604400",
+ "native-file-system/resources/native-fs-test-helpers.js": [
+ "5ad8c04724b7a2e7743b43a84efaa05b7e6b703d",
+ "support"
+ ],
+ "native-file-system/resources/sandboxed-fs-test-helpers.js": [
+ "5f4f269d2242c2bac59136ff2cf99cbb18f639eb",
"support"
],
"native-file-system/resources/test-helpers.js": [
- "b794cee0c5f111fa9c9a2b05b8a94c2a2260839f",
+ "d0360921f1d8ce7257bd7d6586d333b8534c620d",
+ "support"
+ ],
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.js": [
+ "6fcf566e31fbf061e7545280198562d9e41cad11",
+ "testharness"
+ ],
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.js": [
+ "65ae891cd44418554800e12801617097f6a72c91",
+ "testharness"
+ ],
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.js": [
+ "a4be8bd267e743ee617c29c1cce1188e6b9d377a",
+ "testharness"
+ ],
+ "native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js": [
+ "8352e2487fe0823a2d353372757d833d85e98c4b",
+ "testharness"
+ ],
+ "native-file-system/script-tests/FileSystemDirectoryHandle-getDirectory.js": [
+ "c2c128f5eded06f440e634051fac021e20061e0d",
+ "support"
+ ],
+ "native-file-system/script-tests/FileSystemDirectoryHandle-getFile.js": [
+ "4d8ee96c3d033130f5940306d6f09737db7b0e9c",
+ "support"
+ ],
+ "native-file-system/script-tests/FileSystemDirectoryHandle-removeEntry.js": [
+ "8e89e0958db96ee64927d28a5239b0740ac0f632",
+ "support"
+ ],
+ "native-file-system/script-tests/FileSystemWriter.js": [
+ "1c51d0b4eb771eec5a606263e72719be589aa317",
"support"
],
"navigation-timing/META.yml": [
@@ -661871,10 +663044,18 @@
"b055f50f636848ceb7b1750484cc12328a121398",
"support"
],
+ "permissions/feature-policy-permissions-query.html": [
+ "bd152e973e8fd520460a325d47beab8c25f45d31",
+ "support"
+ ],
"permissions/idlharness.any.js": [
"ff0a969badace39c3c4466c4528e30c21355e132",
"testharness"
],
+ "permissions/permissions-query-feature-policy-attribute.https.sub.html": [
+ "1d7333d9b5f67a405dc6979d5ddcfda444a04c39",
+ "testharness"
+ ],
"permissions/test-background-fetch-permission.html": [
"c824ecf1d2b47630f8ebcef3ed42c8c908c8e9eb",
"testharness"
@@ -662547,6 +663728,10 @@
"0eae0ddfd6ef1e9de2251f50914a855f4142b9d5",
"reftest"
],
+ "portals/portals-repeated-activate.html": [
+ "a3843dddb47b55d920b249b01f47199b1202bda6",
+ "testharness"
+ ],
"portals/portals-set-src-after-activate.html": [
"8da6b341840162dc7348b95cfed060c075a75135",
"testharness"
@@ -662635,6 +663820,10 @@
"26f62839af5ed8ea7a50535f411780bdf7fd6e03",
"support"
],
+ "portals/resources/portal-repeated-activate-window.html": [
+ "e716034eff860fe567bc373f4676d55f97a5a786",
+ "support"
+ ],
"portals/resources/portals-adopt-predecessor-portal.html": [
"b7eb3b96779a561cacf11d6c7e9362ca1049be6c",
"support"
@@ -662655,6 +663844,10 @@
"92aef00380ae4a6180039ad0b10169c81a190441",
"support"
],
+ "portals/resources/simple-portal-adopts-and-activates-predecessor.html": [
+ "56bfd10f647fb63597dbc5ec902a8c2b90257b18",
+ "support"
+ ],
"portals/resources/simple-portal-adopts-predecessor.html": [
"b199bdd93b3a03437ebde7abaef9b14ac61b1f76",
"support"
@@ -674236,7 +675429,7 @@
"testharness"
],
"resource-timing/status-codes-create-entry.html": [
- "fb4236e6bbe856be21e5af577a3fea03d774b8e1",
+ "22e22c445b0812461ef06eb35ad6b611a3b6faa5",
"testharness"
],
"resource-timing/supported_resource_type.any.js": [
@@ -674288,7 +675481,7 @@
"support"
],
"resources/chromium/contacts_manager_mock.js": [
- "618968ec18da930ad1d3180adb68f05064bb1807",
+ "ae4c33b073dfd2b156030b2cb6d045e133b57c23",
"support"
],
"resources/chromium/device.mojom.js": [
@@ -674348,7 +675541,7 @@
"support"
],
"resources/chromium/mock-imagecapture.js": [
- "eec414bd032a2dd01f27e18de64df0bde4e4a459",
+ "9d46b57020f36277b8bece93588699cae2a82471",
"support"
],
"resources/chromium/mojo_bindings.js": [
@@ -674759,6 +675952,10 @@
"b846d4dc4300a990edf7a905f301dcaf75bee18c",
"support"
],
+ "resources/test/tests/unit/throwing-assertions.html": [
+ "a36a56043cc7cbb66c8138a68b13b02609ca65aa",
+ "support"
+ ],
"resources/test/tests/unit/unpaired-surrogates.html": [
"1b162fe71d283d63dbdaac5b3be887f5cd80d53f",
"support"
@@ -674800,7 +675997,7 @@
"support"
],
"resources/testharness.js": [
- "15591042aa4cb0fdd75fe3bf56b9bdfb63fd161d",
+ "55de1ce252bd0349aa5bee2e69120ae44520ed02",
"support"
],
"resources/testharness.js.headers": [
@@ -676616,7 +677813,7 @@
"manual"
],
"service-workers/service-worker/fetch-event-within-sw.https.html": [
- "8a567fd7a93f8552412cfff657789c5375eba971",
+ "f5a60c3060961a2b1674c8959c5d4a0af7b5452a",
"testharness"
],
"service-workers/service-worker/fetch-event.https.html": [
@@ -678615,6 +679812,10 @@
"20456b057e1e724cdac9bc656f3b3d6c7ac2f658",
"testharness"
],
+ "shadow-dom/focus/focus-selector-delegatesFocus.html": [
+ "386045258e043f7b0849aaa366d34bb645f2f73f",
+ "testharness"
+ ],
"shadow-dom/focus/focus-tabindex-order-shadow-negative.html": [
"ab25ea829bd10952ad6e96898fc95a1a1ae25d8f",
"testharness"
@@ -678644,7 +679845,7 @@
"testharness"
],
"shadow-dom/focus/resources/shadow-utils.js": [
- "6ea372afdf180a95d9fda632ebccd00a13df85bf",
+ "8033ce0169f4aa83b54c3567c68c4cc4f5b7a490",
"support"
],
"shadow-dom/form-control-form-attribute.html": [
@@ -679092,7 +680293,7 @@
"support"
],
"signed-exchange/README.md": [
- "f1dbfe6d1adbe7ef7663c5298692872897ce3e0c",
+ "4032edf22f34f596d74da5ee0e4019c5dcf1c69c",
"support"
],
"signed-exchange/appcache/appcache.manifest": [
@@ -679760,7 +680961,7 @@
"testharness"
],
"storage-access-api/hasStorageAccess.sub.window.js": [
- "1352d7589f051b31ec577eb7d0c85daf4a58d8f2",
+ "c4d6e3a8b9a856007a299b7f2b1112188547ebd1",
"testharness"
],
"storage-access-api/helpers.js": [
@@ -679824,7 +681025,7 @@
"testharness"
],
"storage/opaque-origin.https.window.js": [
- "3e101dde6759b2b8c379d6adc95190742328630f",
+ "cc1d31fdf2c68322f72a40b1e84ec05ab1930779",
"testharness"
],
"storage/permission-query.https.any.js": [
@@ -680571,6 +681772,10 @@
"7a60e0280baa67ef8731b7bdc737788d326c3c24",
"testharness"
],
+ "svg/animations/keysplines-x-limits.html": [
+ "3c9ba65059f99dfbad262a4df65cf1eba0a4f0d8",
+ "testharness"
+ ],
"svg/animations/multiple-animations-ending.html": [
"a9b7853bb0ed49a11af24d020766248ebd7d4bbe",
"testharness"
@@ -680604,7 +681809,7 @@
"testharness"
],
"svg/animations/scripted/onhover-syncbases.html": [
- "86a0a40fa2de116c5b2076641180b24688d56f9b",
+ "de757f369af36db7a072ffa4b4216faa56063ecd",
"testharness"
],
"svg/animations/scripted/paced-value-animation-overwrites-keyTimes.html": [
@@ -685224,7 +686429,7 @@
"support"
],
"tools/ci/tcdownload.py": [
- "91c763a7acdd3416d7eff55407bf8f73b840d96a",
+ "46e9005740d39d3a9fcd136f5aeb7effcc3087e6",
"support"
],
"tools/ci/tests/test_jobs.py": [
@@ -685316,7 +686521,7 @@
"support"
],
"tools/lint/lint.py": [
- "48a275bcf29df6264258da3885e0e5f83a7ec85a",
+ "7689c359928d6be0f58384dfdc22d8eaa9f0d932",
"support"
],
"tools/lint/rules.py": [
@@ -690136,7 +691341,7 @@
"support"
],
"tools/wptrunner/requirements.txt": [
- "d6c7a4ff3983663d088c64f6608e3fcf7de3bbfe",
+ "3584c93a199716d0b9809dc4180195647887d1a0",
"support"
],
"tools/wptrunner/requirements_android_webview.txt": [
@@ -691396,7 +692601,7 @@
"support"
],
"trusted-types/trusted-types-eval-reporting.tentative.https.html": [
- "309873cb1f8028ecb071ec5db3dfda62337e6b43",
+ "4ec5db1adce7478cc3e97f942a9de68f1263d31d",
"testharness"
],
"trusted-types/trusted-types-eval-reporting.tentative.https.html.headers": [
@@ -693872,7 +695077,7 @@
"testharness"
],
"web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html": [
- "5c9ec84e8db79f73ac1423258a84bf0d18d70a5f",
+ "5bd0ae2b1edbb508d45ac64258332fcaddf5434c",
"testharness"
],
"web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html": [
@@ -694348,7 +695553,7 @@
"support"
],
"webaudio/resources/audit.js": [
- "1876c0fc77174d861d3847f874dbad26c737d430",
+ "2aac1fffb492ea46e737257df08a09e65f6d3415",
"support"
],
"webaudio/resources/biquad-filters.js": [
@@ -694756,7 +695961,7 @@
"support"
],
"webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html": [
- "e94621296a3114ddbc53f26d74c330d3496dac63",
+ "dc324b22d6539d5383ed53f68ab911f6e96fd0dd",
"testharness"
],
"webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html": [
@@ -695168,7 +696373,7 @@
"testharness"
],
"webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html": [
- "3e364eb7b359948402ef8ecdb287a5f55bb80fc3",
+ "b1f18d397d4fbcf3150e76aa478ce1a00a64e217",
"testharness"
],
"webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https.html": [
@@ -695192,7 +696397,7 @@
"testharness"
],
"webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html": [
- "2e04ab6a3f248e69846cadbdc41c5369c406f519",
+ "816eba0b29ae616e09099544e839b85bb0a8bea5",
"testharness"
],
"webaudio/the-audio-api/the-offlineaudiocontext-interface/.gitkeep": [
@@ -695228,7 +696433,7 @@
"testharness"
],
"webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html": [
- "d330c9c3de4482ee70c036e0ab7ff8feb1fd5a36",
+ "c434aa8c6a50bc2763f7a9233db06466c501c7ac",
"testharness"
],
"webaudio/the-audio-api/the-pannernode-interface/distance-exponential.html": [
@@ -695320,7 +696525,7 @@
"testharness"
],
"webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html": [
- "a2e40777d4285732622fe0776f5e862276bf41c9",
+ "81e64dc12e9c757b613ddd377c39ed313b3cea47",
"testharness"
],
"webaudio/the-audio-api/the-waveshapernode-interface/silent-inputs.html": [
@@ -702195,6 +703400,10 @@
"520afec2000721d04aae9ed89bca49297fa31d4b",
"support"
],
+ "webxr/ar-module/idlharness.https.window.js": [
+ "1268f4ea2a5eb228fb49a6f06d8905f8d9480ae7",
+ "testharness"
+ ],
"webxr/events_input_source_recreation.https.html": [
"ecb4b022bf09410cae44b4f5a3c71bc5c054181e",
"testharness"
@@ -702219,6 +703428,10 @@
"f76847a8769073bb4753702f32dd5c2ccc9d3532",
"testharness"
],
+ "webxr/gamepads-module/idlharness.https.window.js": [
+ "4509c67a847109f2fdaed5be49c87777e1927a12",
+ "testharness"
+ ],
"webxr/getInputPose_handedness.https.html": [
"5a310c6dd77274631d0ef9e751c6f195def9c3d3",
"testharness"
@@ -702412,7 +703625,7 @@
"testharness"
],
"webxr/xrSession_input_events_end.https.html": [
- "37e020605a7e88320c42e054f867f611955c5713",
+ "a932aad2fad78ceb2449928773da3ecfe237b8e7",
"testharness"
],
"webxr/xrSession_prevent_multiple_exclusive.https.html": [
@@ -702488,7 +703701,7 @@
"testharness"
],
"webxr/xrWebGLLayer_constructor.https.html": [
- "7e57f4286c66ea9f8380791840dada3d82b611fe",
+ "0584da79c12def757f951ec53c4c048f18c39b8c",
"testharness"
],
"webxr/xrWebGLLayer_framebuffer_draw.https.html": [
@@ -703955,22 +705168,14 @@
"bbaf66d3383e0957c5ab12ca03688c507081d86d",
"testharness"
],
- "workers/semantics/interface-objects/003.html": [
- "99e8b3a0f3dd426eb4b1a5f22a2fd0fcab01d98d",
+ "workers/semantics/interface-objects/003.any.js": [
+ "1942a4658dfb8e2ecab52c914af9aff8cf79cc2a",
"testharness"
],
- "workers/semantics/interface-objects/003.js": [
- "a91e7c38759f23e9ca50602a853d67a26830adad",
- "support"
- ],
- "workers/semantics/interface-objects/004.html": [
- "b4a09c50e4e50983f814fb08fc0d797a661b2ff5",
+ "workers/semantics/interface-objects/004.any.js": [
+ "358af74ca2c2bda6a0805ec8bded53a92674eb17",
"testharness"
],
- "workers/semantics/interface-objects/004.js": [
- "00e50d19cae409d6b69688e22ed926ac9893e2d9",
- "support"
- ],
"workers/semantics/multiple-workers/001.html": [
"f9e2bbeabab16766d162a030f2318894c5537b1f",
"testharness"
@@ -706168,7 +707373,7 @@
"testharness"
],
"xhr/xmlhttprequest-sync-default-feature-policy.sub.html": [
- "5ad5557700d79cb0104a5a5db52afdfa0906533b",
+ "ab5b78b77c66ee5bdca8e7acb5fb61f18d9574c1",
"testharness"
],
"xhr/xmlhttprequest-sync-not-hang-scriptloader-subframe.html": [
diff --git a/tests/wpt/metadata/css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html.ini b/tests/wpt/metadata/css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html.ini
new file mode 100644
index 00000000000..ad46fa14832
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html.ini
@@ -0,0 +1,2 @@
+[new-fc-beside-float-with-margin-rtl.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/floats/zero-width-floats-positioning.tentative.html.ini b/tests/wpt/metadata/css/CSS2/floats/zero-width-floats-positioning.tentative.html.ini
new file mode 100644
index 00000000000..a0b8fea8d2d
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/zero-width-floats-positioning.tentative.html.ini
@@ -0,0 +1,2 @@
+[zero-width-floats-positioning.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-align/parsing/gap-shorthand.html.ini b/tests/wpt/metadata/css/css-align/parsing/gap-shorthand.html.ini
index 68b32a1fd27..f92e47126c8 100644
--- a/tests/wpt/metadata/css/css-align/parsing/gap-shorthand.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/gap-shorthand.html.ini
@@ -11,3 +11,27 @@
[e.style['gap'\] = "10px normal" should set the longhand values]
expected: FAIL
+ [e.style['gap'\] = "10px normal" should set column-gap]
+ expected: FAIL
+
+ [e.style['gap'\] = "normal calc(20% + 10px)" should set row-gap]
+ expected: FAIL
+
+ [e.style['gap'\] = "10px 20%" should set row-gap]
+ expected: FAIL
+
+ [e.style['gap'\] = "10px normal" should set row-gap]
+ expected: FAIL
+
+ [e.style['gap'\] = "normal" should set row-gap]
+ expected: FAIL
+
+ [e.style['gap'\] = "normal" should set column-gap]
+ expected: FAIL
+
+ [e.style['gap'\] = "normal calc(20% + 10px)" should set column-gap]
+ expected: FAIL
+
+ [e.style['gap'\] = "10px 20%" should set column-gap]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/place-content-shorthand.html.ini b/tests/wpt/metadata/css/css-align/parsing/place-content-shorthand.html.ini
index 23e6b5e5544..7bda4a5b069 100644
--- a/tests/wpt/metadata/css/css-align/parsing/place-content-shorthand.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/place-content-shorthand.html.ini
@@ -14,3 +14,33 @@
[e.style['place-content'\] = "last baseline flex-start" should set the longhand values]
expected: FAIL
+ [e.style['place-content'\] = "first baseline" should set justify-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "normal" should set justify-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "space-evenly unsafe end" should set align-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "last baseline flex-start" should set justify-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "last baseline flex-start" should set align-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "space-around" should set align-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "first baseline" should set align-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "normal" should set align-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "space-around" should set justify-content]
+ expected: FAIL
+
+ [e.style['place-content'\] = "space-evenly unsafe end" should set justify-content]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/place-items-shorthand.html.ini b/tests/wpt/metadata/css/css-align/parsing/place-items-shorthand.html.ini
index e4af2f3992f..fbc705c3a50 100644
--- a/tests/wpt/metadata/css/css-align/parsing/place-items-shorthand.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/place-items-shorthand.html.ini
@@ -11,3 +11,27 @@
[e.style['place-items'\] = "first baseline" should set the longhand values]
expected: FAIL
+ [e.style['place-items'\] = "stretch right legacy" should set align-items]
+ expected: FAIL
+
+ [e.style['place-items'\] = "normal" should set align-items]
+ expected: FAIL
+
+ [e.style['place-items'\] = "last baseline flex-start" should set align-items]
+ expected: FAIL
+
+ [e.style['place-items'\] = "normal" should set justify-items]
+ expected: FAIL
+
+ [e.style['place-items'\] = "last baseline flex-start" should set justify-items]
+ expected: FAIL
+
+ [e.style['place-items'\] = "first baseline" should set align-items]
+ expected: FAIL
+
+ [e.style['place-items'\] = "stretch right legacy" should set justify-items]
+ expected: FAIL
+
+ [e.style['place-items'\] = "first baseline" should set justify-items]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-align/parsing/place-self-shorthand.html.ini b/tests/wpt/metadata/css/css-align/parsing/place-self-shorthand.html.ini
index 0597a5b8c68..11c062e766c 100644
--- a/tests/wpt/metadata/css/css-align/parsing/place-self-shorthand.html.ini
+++ b/tests/wpt/metadata/css/css-align/parsing/place-self-shorthand.html.ini
@@ -11,3 +11,27 @@
[e.style['place-self'\] = "first baseline" should set the longhand values]
expected: FAIL
+ [e.style['place-self'\] = "normal" should set align-self]
+ expected: FAIL
+
+ [e.style['place-self'\] = "unsafe self-start stretch" should set align-self]
+ expected: FAIL
+
+ [e.style['place-self'\] = "first baseline" should set justify-self]
+ expected: FAIL
+
+ [e.style['place-self'\] = "unsafe self-start stretch" should set justify-self]
+ expected: FAIL
+
+ [e.style['place-self'\] = "last baseline flex-start" should set align-self]
+ expected: FAIL
+
+ [e.style['place-self'\] = "normal" should set justify-self]
+ expected: FAIL
+
+ [e.style['place-self'\] = "first baseline" should set align-self]
+ expected: FAIL
+
+ [e.style['place-self'\] = "last baseline flex-start" should set justify-self]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-width-computed.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-width-computed.html.ini
new file mode 100644
index 00000000000..bbf93406cad
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/border-image-width-computed.html.ini
@@ -0,0 +1,4 @@
+[border-image-width-computed.html]
+ [Property border-image-width value '0' computes to '0']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/percentage-heights-003.html.ini b/tests/wpt/metadata/css/css-flexbox/percentage-heights-003.html.ini
index 1291e66cabd..254cec90415 100644
--- a/tests/wpt/metadata/css/css-flexbox/percentage-heights-003.html.ini
+++ b/tests/wpt/metadata/css/css-flexbox/percentage-heights-003.html.ini
@@ -5,9 +5,9 @@
[.flexbox 2]
expected: FAIL
- [.flexbox 5]
+ [.flexbox 6]
expected: FAIL
- [.flexbox 6]
+ [.flexbox 7]
expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-shorthand.html.ini b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-shorthand.html.ini
new file mode 100644
index 00000000000..a416cf44931
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text-decor/parsing/text-decoration-shorthand.html.ini
@@ -0,0 +1,10 @@
+[text-decoration-shorthand.html]
+ [e.style['text-decoration'\] = "overline dotted green" should set text-decoration-line]
+ expected: FAIL
+
+ [e.style['text-decoration'\] = "overline dotted green" should set text-decoration-style]
+ expected: FAIL
+
+ [e.style['text-decoration'\] = "overline dotted green" should set text-decoration-color]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
index c511d92d674..03f2f3fe9d1 100644
--- a/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/animation/perspective-interpolation.html.ini
@@ -1,4 +1,5 @@
[perspective-interpolation.html]
+ expected: CRASH
[ perspective interpolation]
expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html.ini b/tests/wpt/metadata/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html.ini
index 7f5bbb7f31b..89a2a619d61 100644
--- a/tests/wpt/metadata/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html.ini
@@ -62,3 +62,6 @@
[delay of a new tranisition]
expected: FAIL
+ [non-default easing of a new transition]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html.ini b/tests/wpt/metadata/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html.ini
index c03a2664e97..44c9aacc065 100644
--- a/tests/wpt/metadata/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html.ini
@@ -8,3 +8,6 @@
[KeyframeEffect.getKeyframes() returns expected frames for a simple transition with a non-default easing function]
expected: FAIL
+ [KeyframeEffect.getKeyframes() returns frames unaffected by a non-default easing function]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini b/tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini
new file mode 100644
index 00000000000..1e17130fab5
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/clamp-length-computed.html.ini
@@ -0,0 +1,13 @@
+[clamp-length-computed.html]
+ [Property letter-spacing value 'clamp(10px, 5px, 30px)' computes to '10px']
+ expected: FAIL
+
+ [Property letter-spacing value 'clamp(10px, 35px, 30px)' computes to '30px']
+ expected: FAIL
+
+ [Property letter-spacing value 'clamp(30px, 100px, 20px)' computes to '30px']
+ expected: FAIL
+
+ [Property letter-spacing value 'clamp(10px, 20px, 30px)' computes to '20px']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/clamp-length-serialize.html.ini b/tests/wpt/metadata/css/css-values/clamp-length-serialize.html.ini
new file mode 100644
index 00000000000..f39169db7b6
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/clamp-length-serialize.html.ini
@@ -0,0 +1,7 @@
+[clamp-length-serialize.html]
+ [e.style['letter-spacing'\] = "clamp(1px, 2px, clamp(2px, 3px, 4px))" should set the property value]
+ expected: FAIL
+
+ [e.style['letter-spacing'\] = "clamp(1px, 2px, 3px)" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-values/min-max-percentage-length-interpolation.html.ini b/tests/wpt/metadata/css/css-values/min-max-percentage-length-interpolation.html.ini
new file mode 100644
index 00000000000..d59c7b30211
--- /dev/null
+++ b/tests/wpt/metadata/css/css-values/min-max-percentage-length-interpolation.html.ini
@@ -0,0 +1,2 @@
+[min-max-percentage-length-interpolation.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
new file mode 100644
index 00000000000..e6e1f29e274
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini
@@ -0,0 +1,2 @@
+[matchMedia-display-none-iframe.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/mediaqueries/aspect-ratio-serialization.html.ini b/tests/wpt/metadata/css/mediaqueries/aspect-ratio-serialization.html.ini
new file mode 100644
index 00000000000..e87166456e6
--- /dev/null
+++ b/tests/wpt/metadata/css/mediaqueries/aspect-ratio-serialization.html.ini
@@ -0,0 +1,4 @@
+[aspect-ratio-serialization.html]
+ [<ratio> serializes with spaces around the integer.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/mediaqueries/navigation-controls.tentative.html.ini b/tests/wpt/metadata/css/mediaqueries/navigation-controls.tentative.html.ini
new file mode 100644
index 00000000000..f34e5d89c79
--- /dev/null
+++ b/tests/wpt/metadata/css/mediaqueries/navigation-controls.tentative.html.ini
@@ -0,0 +1,22 @@
+[navigation-controls.tentative.html]
+ [Should be parseable in JS: '(navigation-controls)']
+ expected: FAIL
+
+ [Should be parseable in a CSS stylesheet: '(navigation-controls: back-button)']
+ expected: FAIL
+
+ [Check that none evaluates to false in the boolean context]
+ expected: FAIL
+
+ [Should be parseable in a CSS stylesheet: '(navigation-controls: none)']
+ expected: FAIL
+
+ [Should be parseable in JS: '(navigation-controls: none)']
+ expected: FAIL
+
+ [Should be parseable in a CSS stylesheet: '(navigation-controls)']
+ expected: FAIL
+
+ [Should be parseable in JS: '(navigation-controls: back-button)']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 7e9e768846c..bb3703d3f92 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -315,9 +315,6 @@
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
- expected: FAIL
-
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
@@ -327,6 +324,18 @@
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ expected: FAIL
+
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
index d2df9b78483..2003288747e 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -56,3 +56,9 @@
[separate text/javascript x/x]
expected: FAIL
+ [separate text/javascript;charset=windows-1252 error text/javascript]
+ expected: FAIL
+
+ [separate text/javascript ]
+ 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 f8988fcd904..a639f15230c 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,9 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
- [X-Content-Type-Options%3A%20'NosniFF']
- expected: FAIL
-
[Content-Type-Options%3A%20nosniff]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
index 75d75b4cda2..51f8272a6de 100644
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_2.html]
+[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
new file mode 100644
index 00000000000..16fa2c5cfc1
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini
@@ -0,0 +1,4 @@
+[creating_browsing_context_test_01.html]
+ [first argument: absolute url]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
index e02f179ec25..bf50d59df41 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-innerwidth-innerheight.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL
- [features "innerheight=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerheight=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerwidth=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
index 23eefb8eaf9..e150c9d848f 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-screenx-screeny.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL
- [features "screenx=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "screeny=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screeny=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screeny=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "screenx=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "screenx=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
index 940516ddd33..ad8840fbb68 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-top-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `top`, `left`]
expected: FAIL
- [features "top=-204" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "top=-204.5" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "top=-0" should NOT set "top=204"]
- expected: TIMEOUT
-
- [features "left=-204.5" should NOT set "left=204"]
- expected: TIMEOUT
-
- [features "left=-0" should NOT set "left=204"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
index 9027336b453..d1ed9088b2b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html.ini
@@ -1,24 +1,5 @@
[open-features-negative-width-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL
- [features "height=-404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404e1" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=-404.5" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "width=-404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404e1" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=-404.5" should NOT set "width=404"]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
index 4e44584b123..a70e9dbad4d 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-height.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL
[features "height=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "height=405LLl" should set "height=405"]
- expected: TIMEOUT
-
- [features "height=/404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "height" should be treated same as "height=0"]
- expected: TIMEOUT
-
- [features "height=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "height=L404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
index fcaeae5336d..779531b4a98 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerheight.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL
[features "innerheight=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405LLl" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405.5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerheight=405*3" should set "height=405"]
- expected: TIMEOUT
-
- [features "innerheight=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=L404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "innerheight=/404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
index 42327fedd27..7a1b258d52e 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-innerwidth.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL
[features "innerwidth=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405/5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "innerwidth=405^4" should set "width=405"]
- expected: TIMEOUT
-
- [features "innerwidth=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "innerwidth=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
index a8e4fe06618..caba4124f0b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-left.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL
[features "left=105e1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105 " should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105/5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105e-1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105^4" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105LLl" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105.32" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105*3" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "left=105.5" should set "left=105"]
- expected: TIMEOUT
-
- [features "left=L104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "left=/104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "left=_104" should NOT set "left=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
index 64a08faf0e6..9ace8a4cbdb 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-screenx.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
expected: FAIL
[features "screenx=105.5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105e1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105 " should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105*3" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105e-1" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105^4" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105LLl" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105/5" should set "left=105"]
- expected: TIMEOUT
+ expected: FAIL
[features "screenx=105.32" should set "left=105"]
- expected: TIMEOUT
-
- [features "screenx=_104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "screenx=L104" should NOT set "left=104"]
- expected: TIMEOUT
-
- [features "screenx=/104" should NOT set "left=104"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
index 4f22ef4ef29..a82bd0f981a 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini
@@ -1,42 +1,32 @@
[open-features-non-integer-screeny.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL
[features "screeny=405^4" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405e-1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405LLl" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405e1" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405 " should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405/5" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405*3" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405.32" should set "height=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "screeny=405.5" should set "height=405"]
- expected: TIMEOUT
-
- [features "screeny=_404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "screeny=L404" should NOT set "height=404"]
- expected: TIMEOUT
-
- [features "screeny=/404" should NOT set "height=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
index 9d841e61bc0..28f93ee71b5 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html.ini
@@ -1,48 +1,32 @@
[open-features-non-integer-width.html]
type: testharness
- expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL
[features "width=405^4" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405.5" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405e1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405 " should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405.32" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405LLl" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405*3" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405e-1" should set "width=405"]
- expected: TIMEOUT
+ expected: FAIL
[features "width=405/5" should set "width=405"]
- expected: TIMEOUT
-
- [top=0,left=0: absence of feature "width" should be treated same as "width=0"]
- expected: TIMEOUT
-
- [features "width=_404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
- expected: TIMEOUT
-
- [features "width=/404" should NOT set "width=404"]
- expected: TIMEOUT
-
- [features "width=L404" should NOT set "width=404"]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/tables/table-column-width.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/tables/table-column-width.html.ini
new file mode 100644
index 00000000000..b0c28c2b4e3
--- /dev/null
+++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/tables/table-column-width.html.ini
@@ -0,0 +1,2 @@
+[table-column-width.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini b/tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini
new file mode 100644
index 00000000000..cdaa9983929
--- /dev/null
+++ b/tests/wpt/metadata/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html.ini
@@ -0,0 +1,4 @@
+[video-aspect-ratio.html]
+ [Video width and height attributes are not used to infer aspect-ratio]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/srcset/avoid-reload-on-resize.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/srcset/avoid-reload-on-resize.html.ini
deleted file mode 100644
index 317900a024d..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/srcset/avoid-reload-on-resize.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[avoid-reload-on-resize.html]
- [Avoid srcset image reloads when viewport resizes]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
deleted file mode 100644
index 9e522297c94..00000000000
--- a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[toggleEvent.html]
- [Calling open twice on 'details' fires only one toggle event]
- expected: FAIL
-
- [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
index 034d9baebfa..496bad988c6 100644
--- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
+++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
@@ -1,5 +1,4 @@
[promise-rejection-events.html]
- expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
@@ -9,6 +8,3 @@
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
expected: FAIL
- [rejectionhandled is dispatched from a queued task, and not immediately]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/permissions/permissions-query-feature-policy-attribute.https.sub.html.ini b/tests/wpt/metadata/permissions/permissions-query-feature-policy-attribute.https.sub.html.ini
new file mode 100644
index 00000000000..bff0021798f
--- /dev/null
+++ b/tests/wpt/metadata/permissions/permissions-query-feature-policy-attribute.https.sub.html.ini
@@ -0,0 +1,4 @@
+[permissions-query-feature-policy-attribute.https.sub.html]
+ [Permission.state is "denied" in cross-origin iframes.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
index 5c59982f790..06cbc30aae8 100644
--- a/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
+++ b/tests/wpt/metadata/resource-timing/resource_TAO_origin.htm.ini
@@ -5,12 +5,3 @@
[responseStart should not be 0 in timing-allow cross-origin request.]
expected: FAIL
- [secureConnectionStart should be 0 in cross-origin request since no ssl!]
- expected: FAIL
-
- [The iframe should have one resource timing entry.]
- expected: FAIL
-
- [responseEnd should not be 0 in timing-allow cross-origin request.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html.ini
index 116273a1a34..c7a155de23d 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html.ini
@@ -1,2 +1,19 @@
[active-processing.https.html]
- expected: ERROR
+ [X Number of channels in input[-1:\]: Expected 1 for all values but found 1 unexpected values: \n\tIndex\tActual\n\t[0\]\t0]
+ expected: FAIL
+
+ [X Number of channels changed is not true. Got false.]
+ expected: FAIL
+
+ [< [verify count change\] 3 out of 4 assertions were failed.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed.]
+ expected: FAIL
+
+ [Executing "Setup graph"]
+ expected: FAIL
+
+ [X Number of channels in input[0:-2\]: Expected 7 for all values but found 1279 unexpected values: \n\tIndex\tActual\n\t[0\]\t0\n\t[1\]\t0\n\t[2\]\t0\n\t[3\]\t0\n\t...and 1275 more errors.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index e568498d654..5729621467c 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -89,3 +89,9 @@
[X SNR (-428.623168034801 dB) is not greater than or equal to 65.737. Got -428.623168034801.]
expected: FAIL
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1415 more errors.\n\tMax AbsError of 9.8619294445961714e-1 at index of 1178.\n\t[1178\]\t-1.3593670912086964e-2\t-9.9978661537170410e-1\t9.8619294445961714e-1\t9.8640342778840562e-1\t3.8985999999999999e-3\n\tMax RelError of 1.0132291292202573e+0 at index of 151.\n]
+ expected: FAIL
+
+ [X SNR (19.538850442445742 dB) is not greater than or equal to 65.737. Got 19.538850442445742.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini
index ea96d4b24a2..7aa97f3b4f6 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume.html.ini
@@ -1,8 +1,20 @@
[audiocontext-suspend-resume.html]
- expected: ERROR
+ expected: TIMEOUT
[X p1 = offlineContext.suspend() incorrectly threw TypeError: "offlineContext.suspend is not a function".]
expected: FAIL
[X p1 instanceof Promise is not true. Got false.]
expected: FAIL
+ [X p2 resolved incorrectly. Got Promise.]
+ expected: FAIL
+
+ [< [test-suspend\] 2 out of 4 assertions were failed.]
+ expected: FAIL
+
+ [Executing "test-suspend"]
+ expected: FAIL
+
+ [< [test-resume\] 1 out of 4 assertions were failed.]
+ 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 312d61c2c68..12d17b1b1fe 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,4 @@
[audiocontextoptions.html]
- expected: ERROR
[X creating two high latency contexts incorrectly threw TypeError: "'0' is not a valid enum value for enumeration 'AudioContextLatencyCategory'.".]
expected: FAIL
@@ -9,3 +8,21 @@
[X context = new AudioContext({'latencyHint': validLatency}) incorrectly threw TypeError: "'0' is not a valid enum value for enumeration 'AudioContextLatencyCategory'.".]
expected: FAIL
+ [X context = new AudioContext({sampleRate: 1}) did not throw an exception.]
+ expected: FAIL
+
+ [< [test-audiocontextoptions-latencyHint-double\] 3 out of 6 assertions were failed.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 2 out of 3 tasks were failed.]
+ expected: FAIL
+
+ [Executing "test-audiocontextoptions-latencyHint-double"]
+ expected: FAIL
+
+ [X context = new AudioContext({sampleRate: 1000000}) did not throw an exception.]
+ expected: FAIL
+
+ [< [test-audiocontextoptions-sampleRate\] 2 out of 4 assertions were failed.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html.ini
index fcc810e1dd7..ba34af314d3 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html.ini
@@ -1,2 +1,7 @@
[audionode-connect-method-chaining.html]
- expected: ERROR
+ [Executing "from-dictionary"]
+ expected: FAIL
+
+ [Executing "media-group"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html.ini
index 416dfa0ae18..07047dbcc70 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html.ini
@@ -1,2 +1,4 @@
[audionode-connect-order.html]
- expected: ERROR
+ [Executing "Test connections"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html.ini
index cad8cb42b1d..305e46c29a3 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html.ini
@@ -1,2 +1,22 @@
[audionode-disconnect-audioparam.html]
- expected: ERROR
+ [X splitter.disconnect(gain1.gain, 2) did not throw an exception.]
+ expected: FAIL
+
+ [X gain1.disconnect(gain3.gain) did not throw an exception.]
+ expected: FAIL
+
+ [< [exceptions\] 3 out of 3 assertions were failed.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 3 tasks were failed.]
+ expected: FAIL
+
+ [Executing "disconnect(AudioParam, output)"]
+ expected: FAIL
+
+ [X splitter.disconnect(gain1.gain, 1) did not throw an exception.]
+ expected: FAIL
+
+ [Executing "disconnect(AudioParam)"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/adding-events.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/adding-events.html.ini
index 56096461d86..a5a62565810 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/adding-events.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/adding-events.html.ini
@@ -1,2 +1,7 @@
[adding-events.html]
- expected: ERROR
+ [Executing "expoRamp"]
+ expected: FAIL
+
+ [Executing "linearRamp"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html.ini
index 0e6dd67be7a..c1a94c07694 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/audioparam-setValueCurve-exceptions.html.ini
@@ -1,5 +1,4 @@
[audioparam-setValueCurve-exceptions.html]
- expected: ERROR
[< [setValueCurve\] 5 out of 6 assertions were failed.]
expected: FAIL
@@ -48,3 +47,33 @@
[X setValueCurveAtTime(curve, 0.03125, 0.01) did not throw an exception.]
expected: FAIL
+ [Executing "automations"]
+ expected: FAIL
+
+ [< [curve overlap\] 6 out of 8 assertions were failed.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 3 out of 6 tasks were failed.]
+ expected: FAIL
+
+ [X g.gain.setValueCurveAtTime([1,2,3\], 5, 5) did not throw an exception.]
+ expected: FAIL
+
+ [X second g.gain.setValueCurveAtTime([1,2,3\], 5, 10) did not throw an exception.]
+ expected: FAIL
+
+ [X g.gain.setValueCurveAtTime([1,2,3\], 6, 9) did not throw an exception.]
+ expected: FAIL
+
+ [X g.gain.setValueCurveAtTime([1,2,3\], 10, 10) did not throw an exception.]
+ expected: FAIL
+
+ [< [automations\] 4 out of 10 assertions were failed.]
+ expected: FAIL
+
+ [X g.gain.setValueCurveAtTime([1,2,3\], 2.5, 10) did not throw an exception.]
+ expected: FAIL
+
+ [X g.gain.setValueCurveAtTime([1,2,3\], 4, 11) did not throw an exception.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/automation-rate.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/automation-rate.html.ini
index 084e1dec905..e8b876936e0 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/automation-rate.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/automation-rate.html.ini
@@ -1,5 +1,4 @@
[automation-rate.html]
- expected: ERROR
[< [AudioBufferSourceNode\] 2 out of 4 assertions were failed.]
expected: FAIL
@@ -9,3 +8,12 @@
[X Set AudioBufferSourceNode.playbackRate.automationRate to "a-rate" did not throw an exception.]
expected: FAIL
+ [Executing "DelayNode"]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 10 tasks were failed.]
+ expected: FAIL
+
+ [Executing "DynamicsCompressorNode"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html.ini
index ddf48045720..cdec8c9952f 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https.html.ini
@@ -1,2 +1,7 @@
[k-rate-audioworklet.https.html]
- expected: ERROR
+ [Executing "Create Test Worklet"]
+ expected: FAIL
+
+ [Executing "AudioWorklet k-rate AudioParam"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-delay.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-delay.html.ini
index ee7a689ec43..b3eb0740b53 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-delay.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/k-rate-delay.html.ini
@@ -1,2 +1,4 @@
[k-rate-delay.html]
- expected: ERROR
+ [Executing "Test k-rate DelayNode"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html.ini
index 40b86091760..da47b2bae11 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-exponentialRampToValueAtTime.html.ini
@@ -1,2 +1,4 @@
[retrospective-exponentialRampToValueAtTime.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html.ini
index b1b685eaef1..cc895942924 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-linearRampToValueAtTime.html.ini
@@ -1,2 +1,4 @@
[retrospective-linearRampToValueAtTime.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html.ini
index b100363750f..fd74d662693 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setTargetAtTime.html.ini
@@ -1,2 +1,4 @@
[retrospective-setTargetAtTime.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html.ini
index c9647f410fd..5ee2d1cfc02 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueAtTime.html.ini
@@ -1,2 +1,4 @@
[retrospective-setValueAtTime.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html.ini
index 28e1d12c231..ec7e865eeeb 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioparam-interface/retrospective-setValueCurveAtTime.html.ini
@@ -1,2 +1,4 @@
[retrospective-setValueCurveAtTime.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html.ini
index 2fa755c898b..ad6eb7b82b9 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html.ini
@@ -1,4 +1,5 @@
[audioworklet-addmodule-resolution.https.html]
+ expected: ERROR
[\n Test the invocation order of AudioWorklet.addModule() and BaseAudioContext\n ]
expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html.ini
index 96c7333c9aa..6c3371545b8 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https.html.ini
@@ -1,2 +1,7 @@
[audioworklet-audioparam-size.https.html]
- expected: ERROR
+ [Executing "Initializing AudioWorklet and Context"]
+ expected: FAIL
+
+ [Executing "Verify Size of AudioParam Arrays"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https.html.ini
index 5ae63f521cc..a6129b22cee 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https.html.ini
@@ -1,2 +1,7 @@
[audioworklet-audioparam.https.html]
- expected: ERROR
+ [Executing "Verifying AudioParam in AudioWorkletNode"]
+ expected: FAIL
+
+ [Executing "Initializing AudioWorklet and Context"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html.ini
index a9dede82004..ee6ba2e5ffb 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html.ini
@@ -1,2 +1,4 @@
[audioworkletnode-automatic-pull.https.html]
- expected: ERROR
+ [Executing "setup-worklet"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html.ini
index 96ee5123835..075de341a4a 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html.ini
@@ -1,2 +1,19 @@
[audioworkletnode-channel-count.https.html]
- expected: ERROR
+ [X Second half of Channel #1: Expected 2 for all values but found 128 unexpected values: \n\tIndex\tActual\n\t[0\]\t0\n\t[1\]\t0\n\t[2\]\t0\n\t[3\]\t0\n\t...and 124 more errors.]
+ expected: FAIL
+
+ [X Second half of Channel #0: Expected 1 for all values but found 128 unexpected values: \n\tIndex\tActual\n\t[0\]\t0\n\t[1\]\t0\n\t[2\]\t0\n\t[3\]\t0\n\t...and 124 more errors.]
+ expected: FAIL
+
+ [X Second half of Channel #2: Expected 3 for all values but found 128 unexpected values: \n\tIndex\tActual\n\t[0\]\t0\n\t[1\]\t0\n\t[2\]\t0\n\t[3\]\t0\n\t...and 124 more errors.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed.]
+ expected: FAIL
+
+ [Executing "setup-buffer-and-worklet"]
+ expected: FAIL
+
+ [< [verify-rendered-buffer\] 3 out of 6 assertions were failed.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html.ini
index af49d11d616..2ee588122bf 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https.html.ini
@@ -1,8 +1,13 @@
[audioworkletnode-construction.https.html]
- expected: ERROR
[X Creating a node before loading a module should throw. threw "ReferenceError" instead of InvalidStateError.]
expected: FAIL
[< [construction-before-module-loading\] 1 out of 1 assertions were failed.]
expected: FAIL
+ [Executing "construction-after-module-loading"]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html.ini
index 4a7d9fded52..ce0841682d3 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https.html.ini
@@ -1,2 +1,34 @@
[audioworkletnode-constructor-options.https.html]
- expected: ERROR
+ [< [audio-node-options\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "channel-count-mode"]
+ expected: FAIL
+
+ [< [without-audio-node-options\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "channel-count"]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 2 out of 6 tasks were failed.]
+ expected: FAIL
+
+ [X Creating AudioWOrkletNode without options incorrectly threw ReferenceError: "AudioWorkletNode is not defined".]
+ expected: FAIL
+
+ [Executing "without-audio-node-options"]
+ expected: FAIL
+
+ [Executing "audio-node-options"]
+ expected: FAIL
+
+ [Executing "setup"]
+ expected: FAIL
+
+ [X Creating AudioWOrkletNode with options: {"numberOfInputs":7,"numberOfOutputs":18,"channelCount":4,"channelCountMode":"clamped-max","channelInterpretation":"discrete"} incorrectly threw ReferenceError: "AudioWorkletNode is not defined".]
+ expected: FAIL
+
+ [Executing "channel-interpretation"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html.ini
index 2949be5b509..0b441eb51a4 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https.html.ini
@@ -1,2 +1,4 @@
[audioworkletnode-disconnected-input.https.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html.ini
index a07e70774d5..98a5b63b99e 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https.html.ini
@@ -1,2 +1,7 @@
[audioworkletprocessor-options.https.html]
- expected: ERROR
+ [Executing "empty-option"]
+ expected: FAIL
+
+ [Executing "valid-processor-data"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/baseaudiocontext-audioworklet.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/baseaudiocontext-audioworklet.https.html.ini
index aca30bb33fb..d744a16a216 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/baseaudiocontext-audioworklet.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/baseaudiocontext-audioworklet.https.html.ini
@@ -1,2 +1,4 @@
[baseaudiocontext-audioworklet.https.html]
- expected: ERROR
+ [Executing "Test if AudioWorklet exists"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/simple-input-output.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/simple-input-output.https.html.ini
index 4e377aa48a8..aabe8d29733 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/simple-input-output.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/simple-input-output.https.html.ini
@@ -1,2 +1,7 @@
[simple-input-output.https.html]
- expected: ERROR
+ [Executing "Initialize worklet"]
+ expected: FAIL
+
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html.ini
index bda92b1d005..efebf8e525a 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html.ini
@@ -1,2 +1,28 @@
[biquad-getFrequencyResponse.html]
- expected: ERROR
+ [Executing "notch"]
+ expected: FAIL
+
+ [Executing "bandpass"]
+ expected: FAIL
+
+ [Executing "highpass"]
+ expected: FAIL
+
+ [Executing "peaking"]
+ expected: FAIL
+
+ [Executing "allpass"]
+ expected: FAIL
+
+ [Executing "highshelf"]
+ expected: FAIL
+
+ [Executing "lowshelf"]
+ expected: FAIL
+
+ [Executing "lowpass"]
+ expected: FAIL
+
+ [Executing "getFrequencyResponse"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html.ini
index a09d9921c49..4dff0d98847 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html.ini
@@ -1,2 +1,19 @@
[no-dezippering.html]
- expected: ERROR
+ [Executing "Test 5"]
+ expected: FAIL
+
+ [Executing "Test 3"]
+ expected: FAIL
+
+ [Executing "Test 1"]
+ expected: FAIL
+
+ [Executing "Test 4"]
+ expected: FAIL
+
+ [Executing "Test 2"]
+ expected: FAIL
+
+ [Executing "Test 0"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html.ini
index 116273a1a34..afe1ef7efdc 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https.html.ini
@@ -1,2 +1,7 @@
[active-processing.https.html]
- expected: ERROR
+ [Executing "initialize"]
+ expected: FAIL
+
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-disconnect.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-disconnect.html.ini
index c85f6c075d8..e04499f9afa 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-disconnect.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-disconnect.html.ini
@@ -1,2 +1,4 @@
[audiochannelmerger-disconnect.html]
- expected: ERROR
+ [Executing "silent-disconnect"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini
index 116273a1a34..afe1ef7efdc 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https.html.ini
@@ -1,2 +1,7 @@
[active-processing.https.html]
- expected: ERROR
+ [Executing "initialize"]
+ expected: FAIL
+
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolution-mono-mono.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolution-mono-mono.html.ini
index ad0581a239e..1f8d873f9af 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolution-mono-mono.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolution-mono-mono.html.ini
@@ -1,2 +1,4 @@
[convolution-mono-mono.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-cascade.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-cascade.html.ini
index 4cbf9a25487..10202ce7d84 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-cascade.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-cascade.html.ini
@@ -1,2 +1,4 @@
[convolver-cascade.html]
- expected: ERROR
+ [Executing "cascade-mono"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-channels.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-channels.html.ini
index df70e50599b..6a15a277693 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-channels.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-channels.html.ini
@@ -1,2 +1,4 @@
[convolver-channels.html]
- expected: ERROR
+ [Executing "channel-count-test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini
index b16c9494baf..39dde8493e8 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-1-chan.html.ini
@@ -1,2 +1,16 @@
[convolver-response-1-chan.html]
- expected: ERROR
+ [Executing "3-channel input"]
+ expected: FAIL
+
+ [Executing "4-channel input"]
+ expected: FAIL
+
+ [Executing "2-channel input"]
+ expected: FAIL
+
+ [Executing "5.1-channel input"]
+ expected: FAIL
+
+ [Executing "1-channel input"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini
index 9f76052af48..3439700de3f 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-2-chan.html.ini
@@ -1,2 +1,16 @@
[convolver-response-2-chan.html]
- expected: ERROR
+ [Executing "3-channel input"]
+ expected: FAIL
+
+ [Executing "2-channel input"]
+ expected: FAIL
+
+ [Executing "4-channel input"]
+ expected: FAIL
+
+ [Executing "1-channel input"]
+ expected: FAIL
+
+ [Executing "5.1-channel input"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini
index 591a89c6ebe..acf644dc3e7 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-response-4-chan.html.ini
@@ -1,2 +1,19 @@
[convolver-response-4-chan.html]
- expected: ERROR
+ [Executing "2-channel input"]
+ expected: FAIL
+
+ [Executing "delayed buffer set"]
+ expected: FAIL
+
+ [Executing "4-channel input"]
+ expected: FAIL
+
+ [Executing "1-channel input"]
+ expected: FAIL
+
+ [Executing "3-channel input"]
+ expected: FAIL
+
+ [Executing "5.1-channel input"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html.ini
index 231d4038bd0..ad225f39dfc 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html.ini
@@ -1,2 +1,4 @@
[convolver-setBuffer-already-has-value.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html.ini
index 9fea5ff2474..50a3c57c38d 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html.ini
@@ -1,2 +1,4 @@
[convolver-setBuffer-null.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini
index 48fae67227f..a70eac76243 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/ctor-convolver.html.ini
@@ -1,5 +1,46 @@
[ctor-convolver.html]
- expected: ERROR
[X node0 = new ConvolverNode(context) incorrectly threw TypeError: "window[name\] is not a constructor".]
expected: FAIL
+ [Executing "nullable buffer"]
+ expected: FAIL
+
+ [Executing "construct with options"]
+ expected: FAIL
+
+ [X node1 = new ConvolverNode(c, {"buffer":{}} threw "ReferenceError" instead of NotSupportedError.]
+ expected: FAIL
+
+ [< [construct with options\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [< [nullable buffer\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [< [illegal sample-rate\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [< [default constructor\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "test AudioNodeOptions"]
+ expected: FAIL
+
+ [< [test AudioNodeOptions\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [X node = new ConvolverNode(c, {"buffer":{},"disableNormalization":false}) incorrectly threw ReferenceError: "ConvolverNode is not defined".]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 5 out of 7 tasks were failed.]
+ expected: FAIL
+
+ [Executing "default constructor"]
+ expected: FAIL
+
+ [X new ConvolverNode(c, {channelCount: 2}} incorrectly threw TypeError: "window[nodeName\] is not a constructor".]
+ expected: FAIL
+
+ [X node1 = new ConvolverNode(c, {"buffer":null} incorrectly threw ReferenceError: "ConvolverNode is not defined".]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html.ini
index 87a247cb5ad..44f25e501f8 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-convolvernode-interface/realtime-conv.html.ini
@@ -1,2 +1,4 @@
[realtime-conv.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/ctor-delay.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/ctor-delay.html.ini
index 03c0e35753a..061ae663da2 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/ctor-delay.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/ctor-delay.html.ini
@@ -1,5 +1,31 @@
[ctor-delay.html]
- expected: ERROR
[X node0 = new DelayNode(context) incorrectly threw TypeError: "window[name\] is not a constructor".]
expected: FAIL
+ [< [constructor options\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "constructor options"]
+ expected: FAIL
+
+ [< [default constructor\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "test AudioNodeOptions"]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 3 out of 5 tasks were failed.]
+ expected: FAIL
+
+ [< [test AudioNodeOptions\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "default constructor"]
+ expected: FAIL
+
+ [X new DelayNode(c, {channelCount: 17}} incorrectly threw TypeError: "window[nodeName\] is not a constructor".]
+ expected: FAIL
+
+ [X node1 = new DelayNode(c, {"delayTime":0.5,"maxDelayTime":1.5}) incorrectly threw ReferenceError: "DelayNode is not defined".]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html.ini
index 1f2ee4b07e1..0cb672f18a8 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-default-delay.html.ini
@@ -1,2 +1,4 @@
[delaynode-max-default-delay.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-nondefault-delay.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-nondefault-delay.html.ini
index b5029de5f80..87ee624a502 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-nondefault-delay.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-max-nondefault-delay.html.ini
@@ -1,2 +1,4 @@
[delaynode-max-nondefault-delay.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelay.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelay.html.ini
index b6b9a1d2ead..45439cb63ab 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelay.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelay.html.ini
@@ -1,2 +1,4 @@
[delaynode-maxdelay.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html.ini
index 2691f449994..1d2ca2df121 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-maxdelaylimit.html.ini
@@ -1,5 +1,4 @@
[delaynode-maxdelaylimit.html]
- expected: ERROR
[X Setting Delay length to negative threw "TypeError" instead of NotSupportedError.]
expected: FAIL
@@ -9,3 +8,12 @@
[X Setting Delay length to 180 seconds or more threw "TypeError" instead of NotSupportedError.]
expected: FAIL
+ [< [test\] 3 out of 4 assertions were failed.]
+ expected: FAIL
+
+ [Executing "test"]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 1 tasks were failed.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-scheduling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-scheduling.html.ini
index 73b40d82b00..13c0beeafda 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-scheduling.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode-scheduling.html.ini
@@ -1,2 +1,4 @@
[delaynode-scheduling.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode.html.ini
index 8943424a61b..275d61f3555 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delaynode.html.ini
@@ -1,2 +1,4 @@
[delaynode.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html.ini
index a09d9921c49..167010e3220 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html.ini
@@ -1,2 +1,10 @@
[no-dezippering.html]
- expected: ERROR
+ [Executing "test2"]
+ expected: FAIL
+
+ [Executing "test0"]
+ expected: FAIL
+
+ [Executing "test1"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html.ini
index b7b3d3da3ae..372a354d1a5 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/ctor-dynamicscompressor.html.ini
@@ -1,5 +1,31 @@
[ctor-dynamicscompressor.html]
- expected: ERROR
[X node0 = new DynamicsCompressorNode(context) incorrectly threw TypeError: "window[name\] is not a constructor".]
expected: FAIL
+ [Executing "constructor with options"]
+ expected: FAIL
+
+ [X new DynamicsCompressorNode(c, {"channelCount":1}) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
+ expected: FAIL
+
+ [< [constructor with options\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [X node1 = new DynamicsCompressorNode(c, {"threshold":-33,"knee":15,"ratio":7,"attack":0.625,"release":0.125}) incorrectly threw ReferenceError: "DynamicsCompressorNode is not defined".]
+ expected: FAIL
+
+ [< [default constructor\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [< [test AudioNodeOptions\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 3 out of 5 tasks were failed.]
+ expected: FAIL
+
+ [Executing "default constructor"]
+ expected: FAIL
+
+ [Executing "test AudioNodeOptions"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic.html.ini
index 479a20cea02..f38d13aa9b3 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-dynamicscompressornode-interface/dynamicscompressor-basic.html.ini
@@ -1,2 +1,4 @@
[dynamicscompressor-basic.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html.ini
index a09d9921c49..01b915b9267 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html.ini
@@ -1,2 +1,10 @@
[no-dezippering.html]
- expected: ERROR
+ [Executing "test3"]
+ expected: FAIL
+
+ [Executing "test2"]
+ expected: FAIL
+
+ [Executing "test0"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html.ini
index 7c06aafddf3..a3fa462c68c 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/ctor-iirfilter.html.ini
@@ -1,5 +1,34 @@
[ctor-iirfilter.html]
- expected: ERROR
[X node0 = new IIRFilterNode(context, {"feedforward":[1\],"feedback":[1,-0.9\]}) incorrectly threw TypeError: "window[name\] is not a constructor".]
expected: FAIL
+ [X node = new IIRFilterNode(c, {"feedforward":[1,0.5\]}) threw "ReferenceError" instead of EcmaScript error TypeError.]
+ expected: FAIL
+
+ [Executing "functionality"]
+ expected: FAIL
+
+ [X node = new IIRFilterNode(, {"feedback":[1,0.5\]}) threw "ReferenceError" instead of EcmaScript error TypeError.]
+ expected: FAIL
+
+ [X new IIRFilterNode(c, {channelCount: 17}} incorrectly threw TypeError: "window[nodeName\] is not a constructor".]
+ expected: FAIL
+
+ [< [default constructor\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "test AudioNodeOptions"]
+ expected: FAIL
+
+ [< [test AudioNodeOptions\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "default constructor"]
+ expected: FAIL
+
+ [< [constructor options\] 2 out of 2 assertions were failed.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 3 out of 6 tasks were failed.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html.ini
index 9914ef448f9..0307fdc0b9e 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-basic.html.ini
@@ -1,8 +1,43 @@
[iirfilter-basic.html]
- expected: ERROR
[< [existence\] 1 out of 1 assertions were failed.]
expected: FAIL
[X context.createIIRFilter does not exist. Got undefined.]
expected: FAIL
+ [# AUDIT TASK RUNNER FINISHED: 2 out of 5 tasks were failed.]
+ expected: FAIL
+
+ [X createIIRFilter([1\], new Float32Array(21)) threw "TypeError" instead of NotSupportedError.]
+ expected: FAIL
+
+ [X createIIRFilter([\], [\]) threw "TypeError" instead of NotSupportedError.]
+ expected: FAIL
+
+ [X createIIRFilter(new Float32Array(20), new Float32Array(20)) incorrectly threw TypeError: "context.createIIRFilter is not a function".]
+ expected: FAIL
+
+ [< [exceptions-createIIRFilter\] 8 out of 14 assertions were failed.]
+ expected: FAIL
+
+ [X createIIRFilter(new Float32Array(21), [1\]) threw "TypeError" instead of NotSupportedError.]
+ expected: FAIL
+
+ [X createIIRFilter([1\], new Float32Array(2)) threw "TypeError" instead of InvalidStateError.]
+ expected: FAIL
+
+ [X createIIRFilter([1\], [\]) threw "TypeError" instead of NotSupportedError.]
+ expected: FAIL
+
+ [X createIIRFilter(new Float32Array(10), [1\]) threw "TypeError" instead of InvalidStateError.]
+ expected: FAIL
+
+ [X createIIRFilter([\], [1\]) threw "TypeError" instead of NotSupportedError.]
+ expected: FAIL
+
+ [Executing "parameters"]
+ expected: FAIL
+
+ [Executing "exceptions-getFrequencyData"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse.html.ini
index 5c657325deb..59fa2e214d7 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter-getFrequencyResponse.html.ini
@@ -1,2 +1,10 @@
[iirfilter-getFrequencyResponse.html]
- expected: ERROR
+ [Executing "compare IIR and biquad"]
+ expected: FAIL
+
+ [Executing "1-pole IIR"]
+ expected: FAIL
+
+ [Executing "getFrequencyResponse"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini
index ffe829f89f6..b80498f0cf7 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-iirfilternode-interface/iirfilter.html.ini
@@ -1,7 +1,52 @@
[iirfilter.html]
- expected: ERROR
- [X createIIRFilter with unnormalized coefficients incorrectly threw TypeError: \"context.createIIRFilter is not a function\".]
+ [X createIIRFilter with unnormalized coefficients incorrectly threw TypeError: "context.createIIRFilter is not a function".]
expected: FAIL
- [X createIIRFilter with normalized coefficients incorrectly threw TypeError: \"context.createIIRFilter is not a function\".]
+ [X createIIRFilter with normalized coefficients incorrectly threw TypeError: "context.createIIRFilter is not a function".]
expected: FAIL
+
+ [Executing "coefficient-normalization"]
+ expected: FAIL
+
+ [Executing "7: peaking"]
+ expected: FAIL
+
+ [Executing "0: lowpass"]
+ expected: FAIL
+
+ [Executing "one-zero"]
+ expected: FAIL
+
+ [Executing "6: highshelf"]
+ expected: FAIL
+
+ [< [coefficient-normalization\] 2 out of 2 assertions were failed.]
+ expected: FAIL
+
+ [Executing "5: lowshelf"]
+ expected: FAIL
+
+ [Executing "one-pole"]
+ expected: FAIL
+
+ [Executing "1: highpass"]
+ expected: FAIL
+
+ [Executing "4: allpass"]
+ expected: FAIL
+
+ [Executing "4th-order-iir"]
+ expected: FAIL
+
+ [Executing "multi-channel"]
+ expected: FAIL
+
+ [Executing "2: bandpass"]
+ expected: FAIL
+
+ [Executing "3: notch"]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 13 tasks were failed.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini
index 86cf943f0b2..41a94a54627 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html.ini
@@ -1,5 +1,4 @@
[mediaElementAudioSourceToScriptProcessorTest.html]
- expected: ERROR
[Element Source tests completed]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/ctor-mediastreamaudiodestination.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/ctor-mediastreamaudiodestination.html.ini
index bc21843f0de..98c5d0954e0 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/ctor-mediastreamaudiodestination.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiodestinationnode-interface/ctor-mediastreamaudiodestination.html.ini
@@ -1,5 +1,22 @@
[ctor-mediastreamaudiodestination.html]
- expected: ERROR
[X node0 = new MediaStreamAudioDestinationNode(context) incorrectly threw TypeError: "window[name\] is not a constructor".]
expected: FAIL
+ [< [test AudioNodeOptions\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "default constructor"]
+ expected: FAIL
+
+ [X new MediaStreamAudioDestinationNode(c, {channelCount: 7}} incorrectly threw TypeError: "window[nodeName\] is not a constructor".]
+ expected: FAIL
+
+ [< [default constructor\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "test AudioNodeOptions"]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 2 out of 4 tasks were failed.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini
index f1bdca6094a..6fbfc5ecb1d 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html.ini
@@ -1,5 +1,4 @@
[mediastreamaudiosourcenode-routing.html]
- expected: ERROR
[MediaStreamAudioSourceNode captures the right track.]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator.html.ini
index 9d7b93abe2b..afa56ebad15 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-oscillatornode-interface/ctor-oscillator.html.ini
@@ -1,2 +1,4 @@
[ctor-oscillator.html]
- expected: ERROR
+ [Executing "constructor options"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/automation-changes.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/automation-changes.html.ini
index a20719e01f3..dfcc66099ae 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/automation-changes.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/automation-changes.html.ini
@@ -1,2 +1,19 @@
[automation-changes.html]
- expected: ERROR
+ [< [Listener.positionX.setValue\] 2 out of 4 assertions were failed.]
+ expected: FAIL
+
+ [Executing "Listener.setPosition"]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 1 out of 3 tasks were failed.]
+ expected: FAIL
+
+ [Executing "Set Listener.positionX.value"]
+ expected: FAIL
+
+ [X listener.positionX.setValueATTime: output0[512:\] should have contain at least one value different from 0.]
+ expected: FAIL
+
+ [X listener.positionX.setValueATTime: output1[0:511\] should have contain at least one value different from 0.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html.ini
index a1c827555e2..2d26d543fbb 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-pannernode-interface/panner-automation-basic.html.ini
@@ -1,2 +1,49 @@
[panner-automation-basic.html]
- expected: ERROR
+ [Executing "forward setter"]
+ expected: FAIL
+
+ [Executing "Stereo listener.positionZ"]
+ expected: FAIL
+
+ [Executing "Stereo listener.positionX"]
+ expected: FAIL
+
+ [Executing "Stereo panner.positionZ"]
+ expected: FAIL
+
+ [Executing "Mono panner.positionX"]
+ expected: FAIL
+
+ [Executing "Stereo panner.positionX"]
+ expected: FAIL
+
+ [Executing "Mono panner.positionZ"]
+ expected: FAIL
+
+ [Executing "orientation setter"]
+ expected: FAIL
+
+ [Executing "Mono listener.positionY"]
+ expected: FAIL
+
+ [Executing "up setter"]
+ expected: FAIL
+
+ [Executing "Stereo listener.positionY"]
+ expected: FAIL
+
+ [Executing "Mono listener.positionX"]
+ expected: FAIL
+
+ [Executing "Mono listener.positionZ"]
+ expected: FAIL
+
+ [Executing "Mono panner.positionY"]
+ expected: FAIL
+
+ [Executing "Stereo panner.positionY"]
+ expected: FAIL
+
+ [Executing "setPosition"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini
index eb3dae12ffc..63c44594ad3 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini
@@ -1,2 +1,4 @@
[simple-input-output.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html.ini
index a09d9921c49..401f30cb203 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-stereopanner-interface/no-dezippering.html.ini
@@ -1,2 +1,16 @@
[no-dezippering.html]
- expected: ERROR
+ [Executing "test mono input setValue"]
+ expected: FAIL
+
+ [Executing "test stereo input setValue"]
+ expected: FAIL
+
+ [Executing "test mono input"]
+ expected: FAIL
+
+ [Executing "test stereo input"]
+ expected: FAIL
+
+ [Executing "test mono input automation"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper.html.ini
index 472044f8544..3db3a40db5c 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/ctor-waveshaper.html.ini
@@ -1,5 +1,31 @@
[ctor-waveshaper.html]
- expected: ERROR
[X node0 = new WaveShaperNode(context) incorrectly threw TypeError: "window[name\] is not a constructor".]
expected: FAIL
+ [< [valid non-default\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [X node1 = new WaveShaperNode(, {"curve":{"0":1,"1":2,"2":3},"oversample":"4x"}) incorrectly threw ReferenceError: "WaveShaperNode is not defined".]
+ expected: FAIL
+
+ [< [valid default construction\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [Executing "valid non-default"]
+ expected: FAIL
+
+ [< [test AudioNodeOptions\] 1 out of 1 assertions were failed.]
+ expected: FAIL
+
+ [# AUDIT TASK RUNNER FINISHED: 3 out of 5 tasks were failed.]
+ expected: FAIL
+
+ [Executing "valid default construction"]
+ expected: FAIL
+
+ [X new WaveShaperNode(c, {channelCount: 17}} incorrectly threw TypeError: "window[nodeName\] is not a constructor".]
+ expected: FAIL
+
+ [Executing "test AudioNodeOptions"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html.ini
index a03586bfd27..a9b505e1ab3 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html.ini
@@ -1,5 +1,22 @@
[curve-tests.html]
- expected: ERROR
[WaveShaperNode - Testing that -1, 0 and +1 map correctly to curve (with 1:1 correlation)]
- expected: NOTRUN
+ expected: FAIL
+
+ [WaveShaperNode - Testing interpolation (where inputs don't correlate directly to curve elements)]
+ expected: FAIL
+
+ [WaveShaperNode - Testing a 4-element curve (does not have a middle element)]
+ expected: FAIL
+
+ [WaveShaperNode - Testing out-of-range inputs (should be mapped to the first/last elements of the curve)]
+ expected: FAIL
+
+ [WaveShaperNode - Testing a 2-element curve (does not have a middle element)]
+ expected: FAIL
+
+ [WaveShaperNode - Testing null curve (should return input values)]
+ expected: FAIL
+
+ [WaveShaperNode - Testing a huge curve]
+ expected: FAIL
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/silent-inputs.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/silent-inputs.html.ini
index f7af301e826..2f27ed6e05a 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/silent-inputs.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/silent-inputs.html.ini
@@ -1,2 +1,10 @@
[silent-inputs.html]
- expected: ERROR
+ [Executing "test-1"]
+ expected: FAIL
+
+ [Executing "test-0"]
+ expected: FAIL
+
+ [Executing "test-2"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-copy-curve.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-copy-curve.html.ini
index e89b8bae3de..87798c615b5 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-copy-curve.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-copy-curve.html.ini
@@ -1,2 +1,4 @@
[waveshaper-copy-curve.html]
- expected: ERROR
+ [Executing "test copying"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-limits.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-limits.html.ini
index 5928332c45c..f0d34b7c3d4 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-limits.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-limits.html.ini
@@ -1,2 +1,4 @@
[waveshaper-limits.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-simple.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-simple.html.ini
index 8cacd43311b..ba6ead136f4 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-simple.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper-simple.html.ini
@@ -1,2 +1,4 @@
[waveshaper-simple.html]
- expected: ERROR
+ [Executing "simple"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper.html.ini
index 5e5b20fe070..24245143ddb 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-waveshapernode-interface/waveshaper.html.ini
@@ -1,2 +1,4 @@
[waveshaper.html]
- expected: ERROR
+ [Executing "test"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webxr/gamepads-module/idlharness.https.window.js.ini b/tests/wpt/metadata/webxr/gamepads-module/idlharness.https.window.js.ini
new file mode 100644
index 00000000000..ee1d63b830d
--- /dev/null
+++ b/tests/wpt/metadata/webxr/gamepads-module/idlharness.https.window.js.ini
@@ -0,0 +1,4 @@
+[idlharness.https.window.html]
+ [XRInputSource interface: attribute gamepad]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webxr/xrWebGLLayer_constructor.https.html.ini b/tests/wpt/metadata/webxr/xrWebGLLayer_constructor.https.html.ini
index 08a51f5b1bc..f9f55152f51 100644
--- a/tests/wpt/metadata/webxr/xrWebGLLayer_constructor.https.html.ini
+++ b/tests/wpt/metadata/webxr/xrWebGLLayer_constructor.https.html.ini
@@ -1,5 +1,4 @@
[xrWebGLLayer_constructor.https.html]
- expected: ERROR
[Ensure that XRWebGLLayer's constructor throws appropriate errors]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/metadata/workers/semantics/interface-objects/003.any.js.ini b/tests/wpt/metadata/workers/semantics/interface-objects/003.any.js.ini
new file mode 100644
index 00000000000..66d358167ba
--- /dev/null
+++ b/tests/wpt/metadata/workers/semantics/interface-objects/003.any.js.ini
@@ -0,0 +1,4 @@
+[003.any.sharedworker.html]
+ [003]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/workers/semantics/interface-objects/004.any.js.ini b/tests/wpt/metadata/workers/semantics/interface-objects/004.any.js.ini
new file mode 100644
index 00000000000..00de8ef15b1
--- /dev/null
+++ b/tests/wpt/metadata/workers/semantics/interface-objects/004.any.js.ini
@@ -0,0 +1,4 @@
+[004.any.sharedworker.html]
+ [004]
+ expected: FAIL
+
diff --git a/tests/wpt/mozilla/meta/mozilla/xmlhttprequest_url.html.ini b/tests/wpt/mozilla/meta/mozilla/xmlhttprequest_url.html.ini
new file mode 100644
index 00000000000..f1ebb2bf40e
--- /dev/null
+++ b/tests/wpt/mozilla/meta/mozilla/xmlhttprequest_url.html.ini
@@ -0,0 +1,4 @@
+[xmlhttprequest_url.html]
+ [Performance entries should contain the URL where the XMLHttpRequest originated]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/.github/workflows/pull_request.yml b/tests/wpt/web-platform-tests/.github/workflows/pull_request.yml
index 9d288c0c920..81a53c67f4b 100644
--- a/tests/wpt/web-platform-tests/.github/workflows/pull_request.yml
+++ b/tests/wpt/web-platform-tests/.github/workflows/pull_request.yml
@@ -7,7 +7,7 @@ jobs:
- uses: actions/checkout@v1
with:
ref: refs/heads/master
- fetch-depth: 1
+ fetch-depth: 50
- name: update-pr-preview
uses: ./tools/docker/github
env:
diff --git a/tests/wpt/web-platform-tests/.github/workflows/push-build-publish-documentation-website.yml b/tests/wpt/web-platform-tests/.github/workflows/push-build-publish-documentation-website.yml
index 167e0d930f4..f6a1401a3dd 100644
--- a/tests/wpt/web-platform-tests/.github/workflows/push-build-publish-documentation-website.yml
+++ b/tests/wpt/web-platform-tests/.github/workflows/push-build-publish-documentation-website.yml
@@ -9,7 +9,7 @@ jobs:
steps:
- uses: actions/checkout@v1
with:
- fetch-depth: 1
+ fetch-depth: 50
- name: website-build-and-publish
uses: ./tools/docker/documentation
env:
diff --git a/tests/wpt/web-platform-tests/.github/workflows/push-build-release-manifest.yml b/tests/wpt/web-platform-tests/.github/workflows/push-build-release-manifest.yml
index af677454fdd..baa06cc14fd 100644
--- a/tests/wpt/web-platform-tests/.github/workflows/push-build-release-manifest.yml
+++ b/tests/wpt/web-platform-tests/.github/workflows/push-build-release-manifest.yml
@@ -9,7 +9,7 @@ jobs:
steps:
- uses: actions/checkout@v1
with:
- fetch-depth: 1
+ fetch-depth: 50
- name: manifest-build-and-tag
uses: ./tools/docker/github
env:
diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml
index dfe3b36e3a5..61cc38c9bd1 100644
--- a/tests/wpt/web-platform-tests/.taskcluster.yml
+++ b/tests/wpt/web-platform-tests/.taskcluster.yml
@@ -86,6 +86,9 @@ tasks:
${event.repository.url}
${event.ref};
cd ~/web-platform-tests;
+ sudo cp tools/certs/cacert.pem
+ /usr/local/share/ca-certificates/cacert.crt;
+ sudo update-ca-certificates;
./tools/ci/run_tc.py
--checkout=${event.after}
--oom-killer
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
index 004b3ca6bf3..c64371eaa8c 100644
--- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
+++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args.html
@@ -52,7 +52,7 @@ testCases = [
description: 'createImageBitmap with <sourceType> source and sw set to 0',
promiseTestFunction:
(source, t) => {
- return promise_rejects(t, new RangeError(),
+ return promise_rejects_js(t, RangeError,
createImageBitmap(source, 0, 0, 0, 10));
}
},
@@ -60,7 +60,7 @@ testCases = [
description: 'createImageBitmap with <sourceType> source and sh set to 0',
promiseTestFunction:
(source, t) => {
- return promise_rejects(t, new RangeError(),
+ return promise_rejects_js(t, RangeError,
createImageBitmap(source, 0, 0, 10, 0));
}
},
@@ -100,88 +100,88 @@ imageSourceTypes.forEach(imageSourceType => {
});
promise_test( t => {
- return promise_rejects(t, new TypeError(), createImageBitmap(undefined));
+ return promise_rejects_js(t, TypeError, createImageBitmap(undefined));
}, "createImageBitmap with undefined image source.");
promise_test( t => {
- return promise_rejects(t, new TypeError(), createImageBitmap(null));
+ return promise_rejects_js(t, TypeError, createImageBitmap(null));
}, "createImageBitmap with null image source.");
promise_test( t => {
var context = document.createElement("canvas").getContext("2d");
- return promise_rejects(t, new TypeError(), createImageBitmap(context));
+ return promise_rejects_js(t, TypeError, createImageBitmap(context));
}, "createImageBitmap with CanvasRenderingContext2D image source.");
promise_test( t => {
var context = document.createElement("canvas").getContext("webgl");
- return promise_rejects(t, new TypeError(), createImageBitmap(context));
+ return promise_rejects_js(t, TypeError, createImageBitmap(context));
}, "createImageBitmap with WebGLRenderingContext image source.");
promise_test( t => {
var buffer = new Uint8Array();
- return promise_rejects(t, new TypeError(), createImageBitmap(buffer));
+ return promise_rejects_js(t, TypeError, createImageBitmap(buffer));
}, "createImageBitmap with Uint8Array image source.");
promise_test( t => {
var buffer = new ArrayBuffer(8);
- return promise_rejects(t, new TypeError(), createImageBitmap(buffer));
+ return promise_rejects_js(t, TypeError, createImageBitmap(buffer));
}, "createImageBitmap with ArrayBuffer image source.");
promise_test( t => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(new Image()));
}, "createImageBitmap with empty image source.");
promise_test( t => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(document.createElement('video')));
}, "createImageBitmap with empty video source.");
promise_test( t => {
return makeOversizedCanvas().then(canvas => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(canvas));
});
}, "createImageBitmap with an oversized canvas source.");
promise_test( t => {
return makeOversizedOffscreenCanvas().then(offscreenCanvas => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(offscreenCanvas));
});
}, "createImageBitmap with an invalid OffscreenCanvas source.");
promise_test( t => {
return makeInvalidBlob().then(blob => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(blob));
});
}, "createImageBitmap with an undecodable blob source.");
promise_test( t => {
return makeBrokenImage().then(image => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(image));
});
}, "createImageBitmap with a broken image source.");
promise_test( t => {
return makeAvailableButBrokenImage("/images/broken.png").then(image => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(image));
});
}, "createImageBitmap with an available but undecodable image source.");
promise_test( t => {
return makeAvailableButBrokenImage("/images/red-zeroheight.svg").then(image => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(image));
});
}, "createImageBitmap with an available but zero height image source.");
promise_test( t => {
return makeAvailableButBrokenImage("/images/red-zerowidth.svg").then(image => {
- return promise_rejects(t, "InvalidStateError",
+ return promise_rejects_dom(t, "InvalidStateError",
createImageBitmap(image));
});
}, "createImageBitmap with an available but zero width image source.");
@@ -189,7 +189,8 @@ promise_test( t => {
promise_test( t => {
return makeImageBitmap().then(bitmap => {
bitmap.close()
- return promise_rejects(t, "InvalidStateError", createImageBitmap(bitmap));
+ return promise_rejects_dom(t, "InvalidStateError",
+ createImageBitmap(bitmap));
});
}, "createImageBitmap with a closed ImageBitmap.");
</script>
diff --git a/tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html b/tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html
index fe0dc182567..0a3f1226589 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html
+++ b/tests/wpt/web-platform-tests/IndexedDB/fire-error-event-exception.html
@@ -21,6 +21,9 @@ function fire_error_event_test(func, description) {
const request = store.add(0, 0);
request.onsuccess = t.unreached_func('request should fail');
func(t, db, tx, request);
+ tx.addEventListener('abort', t.step_func_done(() => {
+ assert_equals(tx.error.name, 'AbortError');
+ }));
},
description);
}
@@ -31,9 +34,6 @@ fire_error_event_test((t, db, tx, request) => {
request.onerror = () => {
throw Error();
};
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event handler on request');
fire_error_event_test((t, db, tx, request) => {
@@ -41,30 +41,33 @@ fire_error_event_test((t, db, tx, request) => {
e.preventDefault();
throw Error();
};
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event handler on request, with preventDefault');
fire_error_event_test((t, db, tx, request) => {
request.addEventListener('error', () => {
throw Error();
});
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event listener on request');
fire_error_event_test((t, db, tx, request) => {
+ request.addEventListener('error', {
+ get handleEvent() {
+ throw new Error();
+ },
+ });
+}, 'Exception in error event listener ("handleEvent" lookup) on request');
+
+fire_error_event_test((t, db, tx, request) => {
+ request.addEventListener('error', {});
+}, 'Exception in error event listener (non-callable "handleEvent") on request');
+
+fire_error_event_test((t, db, tx, request) => {
request.addEventListener('error', () => {
// no-op
});
request.addEventListener('error', () => {
throw Error();
});
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in second error event listener on request');
fire_error_event_test((t, db, tx, request) => {
@@ -77,10 +80,9 @@ fire_error_event_test((t, db, tx, request) => {
assert_true(is_transaction_active(tx, 's'),
'Transaction should be active until dispatch completes');
}));
- tx.onabort = t.step_func_done(() => {
+ tx.addEventListener('abort', t.step_func(() => {
assert_true(second_listener_called);
- assert_equals(tx.error.name, 'AbortError');
- });
+ }));
}, 'Exception in first error event listener on request, ' +
'transaction active in second');
@@ -90,9 +92,6 @@ fire_error_event_test((t, db, tx, request) => {
tx.onerror = () => {
throw Error();
};
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event handler on transaction');
fire_error_event_test((t, db, tx, request) => {
@@ -100,18 +99,12 @@ fire_error_event_test((t, db, tx, request) => {
e.preventDefault();
throw Error();
};
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event handler on transaction, with preventDefault');
fire_error_event_test((t, db, tx, request) => {
tx.addEventListener('error', () => {
throw Error();
});
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event listener on transaction');
fire_error_event_test((t, db, tx, request) => {
@@ -121,9 +114,6 @@ fire_error_event_test((t, db, tx, request) => {
tx.addEventListener('error', () => {
throw Error();
});
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in second error event listener on transaction');
fire_error_event_test((t, db, tx, request) => {
@@ -136,10 +126,9 @@ fire_error_event_test((t, db, tx, request) => {
assert_true(is_transaction_active(tx, 's'),
'Transaction should be active until dispatch completes');
}));
- tx.onabort = t.step_func_done(() => {
+ tx.addEventListener('abort', t.step_func(() => {
assert_true(second_listener_called);
- assert_equals(tx.error.name, 'AbortError');
- });
+ }));
}, 'Exception in first error event listener on transaction, ' +
'transaction active in second');
@@ -149,9 +138,6 @@ fire_error_event_test((t, db, tx, request) => {
db.onerror = () => {
throw Error();
};
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event handler on connection');
fire_error_event_test((t, db, tx, request) => {
@@ -159,18 +145,12 @@ fire_error_event_test((t, db, tx, request) => {
e.preventDefault()
throw Error();
};
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event handler on connection, with preventDefault');
fire_error_event_test((t, db, tx, request) => {
db.addEventListener('error', () => {
throw Error();
});
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in error event listener on connection');
fire_error_event_test((t, db, tx, request) => {
@@ -180,9 +160,6 @@ fire_error_event_test((t, db, tx, request) => {
db.addEventListener('error', () => {
throw Error();
});
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in second error event listener on connection');
fire_error_event_test((t, db, tx, request) => {
@@ -195,10 +172,9 @@ fire_error_event_test((t, db, tx, request) => {
assert_true(is_transaction_active(tx, 's'),
'Transaction should be active until dispatch completes');
}));
- tx.onabort = t.step_func_done(() => {
+ tx.addEventListener('abort', t.step_func(() => {
assert_true(second_listener_called);
- assert_equals(tx.error.name, 'AbortError');
- });
+ }));
}, 'Exception in first error event listener on connection, ' +
'transaction active in second');
diff --git a/tests/wpt/web-platform-tests/IndexedDB/fire-success-event-exception.html b/tests/wpt/web-platform-tests/IndexedDB/fire-success-event-exception.html
index c4e55066bba..ab0ac44eb7c 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/fire-success-event-exception.html
+++ b/tests/wpt/web-platform-tests/IndexedDB/fire-success-event-exception.html
@@ -19,6 +19,9 @@ function fire_success_event_test(func, description) {
const store = tx.objectStore('s');
const request = store.get(0);
func(t, db, tx, request);
+ tx.addEventListener('abort', t.step_func_done(() => {
+ assert_equals(tx.error.name, 'AbortError');
+ }));
},
description);
}
@@ -27,30 +30,35 @@ fire_success_event_test((t, db, tx, request) => {
request.onsuccess = () => {
throw Error();
};
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in success event handler on request');
fire_success_event_test((t, db, tx, request) => {
request.addEventListener('success', () => {
throw Error();
});
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in success event listener on request');
fire_success_event_test((t, db, tx, request) => {
+ request.addEventListener('success', {
+ get handleEvent() {
+ throw new Error();
+ },
+ });
+}, 'Exception in success event listener ("handleEvent" lookup) on request');
+
+fire_success_event_test((t, db, tx, request) => {
+ request.addEventListener('success', {
+ handleEvent: null,
+ });
+}, 'Exception in success event listener (non-callable "handleEvent") on request');
+
+fire_success_event_test((t, db, tx, request) => {
request.addEventListener('success', () => {
// no-op
});
request.addEventListener('success', () => {
throw Error();
});
- tx.onabort = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in second success event listener on request');
fire_success_event_test((t, db, tx, request) => {
@@ -63,10 +71,9 @@ fire_success_event_test((t, db, tx, request) => {
assert_true(is_transaction_active(tx, 's'),
'Transaction should be active until dispatch completes');
}));
- tx.onabort = t.step_func_done(() => {
+ tx.addEventListener('abort', t.step_func(() => {
assert_true(second_listener_called);
- assert_equals(tx.error.name, 'AbortError');
- });
+ }));
}, 'Exception in first success event listener, tx active in second');
</script>
diff --git a/tests/wpt/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html b/tests/wpt/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html
index 5db452ebafe..1a8163a58b1 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html
+++ b/tests/wpt/web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception.html
@@ -15,48 +15,55 @@ function fire_upgradeneeded_event_test(func, description) {
del.onerror = t.unreached_func('deleteDatabase should succeed');
const open = indexedDB.open(dbname, 1);
open.onsuccess = t.unreached_func('open should fail');
+ let tx;
+ open.addEventListener('upgradeneeded', () => {
+ tx = open.transaction;
+ });
func(t, open);
+ open.addEventListener('error', t.step_func_done(() => {
+ assert_equals(tx.error.name, 'AbortError');
+ }));
}, description);
}
fire_upgradeneeded_event_test((t, open) => {
- let tx;
open.onupgradeneeded = () => {
- tx = open.transaction;
throw Error();
};
- open.onerror = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in upgradeneeded handler');
fire_upgradeneeded_event_test((t, open) => {
- let tx;
open.addEventListener('upgradeneeded', () => {
- tx = open.transaction;
throw Error();
});
- open.onerror = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in upgradeneeded listener');
fire_upgradeneeded_event_test((t, open) => {
- let tx;
+ open.addEventListener('upgradeneeded', {
+ get handleEvent() {
+ throw new Error();
+ },
+ });
+}, 'Exception in upgradeneeded "handleEvent" lookup');
+
+fire_upgradeneeded_event_test((t, open) => {
+ open.addEventListener('upgradeneeded', {
+ get handleEvent() {
+ return 10;
+ },
+ });
+}, 'Exception in upgradeneeded due to non-callable "handleEvent"');
+
+fire_upgradeneeded_event_test((t, open) => {
open.addEventListener('upgradeneeded', () => {
// No-op.
});
open.addEventListener('upgradeneeded', () => {
- tx = open.transaction;
throw Error();
});
- open.onerror = t.step_func_done(() => {
- assert_equals(tx.error.name, 'AbortError');
- });
}, 'Exception in second upgradeneeded listener');
fire_upgradeneeded_event_test((t, open) => {
- let tx;
let second_listener_called = false;
open.addEventListener('upgradeneeded', () => {
open.result.createObjectStore('s');
@@ -64,14 +71,12 @@ fire_upgradeneeded_event_test((t, open) => {
});
open.addEventListener('upgradeneeded', t.step_func(() => {
second_listener_called = true;
- tx = open.transaction;
- assert_true(is_transaction_active(tx, 's'),
+ assert_true(is_transaction_active(open.transaction, 's'),
'Transaction should be active until dispatch completes');
}));
- open.onerror = t.step_func_done(() => {
+ open.addEventListener('error', t.step_func(() => {
assert_true(second_listener_called);
- assert_equals(tx.error.name, 'AbortError');
- });
+ }));
}, 'Exception in first upgradeneeded listener, tx active in second');
</script>
diff --git a/tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js b/tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js
index c6a6f37ba9e..2ba96ec08ed 100644
--- a/tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js
+++ b/tests/wpt/web-platform-tests/IndexedDB/transaction-relaxed-durability.tentative.any.js
@@ -12,8 +12,9 @@
let cases = [
undefined,
{},
- {relaxedDurability: false},
- {relaxedDurability: true},
+ {durability: "default"},
+ {durability: "relaxed"},
+ {durability: "strict"},
];
for (let i = 0; i < cases.length; ++i) {
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/negative-margin-float-positioning.html b/tests/wpt/web-platform-tests/css/CSS2/floats/negative-margin-float-positioning.html
new file mode 100644
index 00000000000..8b4aef22f71
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats/negative-margin-float-positioning.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#float-width" title="10.3.5 Floating, non-replaced elements">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="width: 100px;">
+ <div style="float: left; width: 50px; height: 100px; margin-left: 50px; margin-right: 50px;background: green;"></div>
+ <div style="float: left; width: 50px; height: 100px; margin-left: -150px; background: green;"></div>
+</div>
+
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html b/tests/wpt/web-platform-tests/css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html
new file mode 100644
index 00000000000..5a564f7831c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats/new-fc-beside-float-with-margin-rtl.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/CSS22/visuren.html#bfc-next-to-float" title="9.5 Floats">
+<meta name="assert" content="The new formatting context's margin-right does not push it down to the next area.">
+<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="width: 100px; height: 100px; background: red; direction: rtl;">
+ <div style="float: left; width: 50px; height: 100px; background: green;"></div>
+ <div style="overflow: hidden; height: 100px; margin-left: -20px; background: green;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/new-fc-beside-float-with-margin.html b/tests/wpt/web-platform-tests/css/CSS2/floats/new-fc-beside-float-with-margin.html
new file mode 100644
index 00000000000..ead8e548be9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats/new-fc-beside-float-with-margin.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="help" href="https://www.w3.org/TR/CSS22/visuren.html#bfc-next-to-float" title="9.5 Floats">
+<meta name="assert" content="The new formatting context's margin-right does not push it down to the next area.">
+<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="width: 100px; height: 100px; background: red;">
+ <div style="float:left; width:50px; height:100px; background:green;"></div>
+ <div style="overflow: hidden; margin-right: 1px; width:50px; height:100px; background:green;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats-positioning.html b/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats-positioning.tentative.html
index 7f8e34daaef..18f8f6e2046 100644
--- a/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats-positioning.html
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats/zero-width-floats-positioning.tentative.html
@@ -4,7 +4,7 @@
<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#float-width" title="10.3.5 Floating, non-replaced elements">
<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
<p>Test passes if there is a filled green square.</p>
-<div style="margin-left: 50px; width: 125px;">
+<div style="width: 125px;">
<div style="float: left; width: 0px; height: 50px;"></div>
<div style="float: right; clear: left; width: 25px; height: 50px;"></div>
<div style="overflow: hidden; margin-left: -50px; height: 100px; background: green;"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-invalid.html
index a58d2cd11bc..52e42a2e2b6 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-delay-invalid.html
@@ -14,6 +14,9 @@
test_invalid_value("animation-delay", "infinite");
test_invalid_value("animation-delay", "0");
test_invalid_value("animation-delay", "1s 2s");
+
+test_invalid_value("animation-delay", "initial, -3s");
+test_invalid_value("animation-delay", "-3s, initial");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-direction-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-direction-invalid.html
index 0b48d97f0a1..5c96216d045 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-direction-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-direction-invalid.html
@@ -13,6 +13,9 @@
<script>
test_invalid_value("animation-direction", "auto");
test_invalid_value("animation-direction", "normal reverse");
+
+test_invalid_value("animation-direction", "reverse, initial");
+test_invalid_value("animation-direction", "initial, reverse");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-duration-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-duration-invalid.html
index 5edacd3735e..bd8cf2adfe9 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-duration-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-duration-invalid.html
@@ -15,6 +15,9 @@ test_invalid_value("animation-duration", '-3s');
test_invalid_value("animation-duration", '0');
test_invalid_value("animation-duration", 'infinite');
test_invalid_value("animation-duration", '1s 2s');
+
+test_invalid_value("animation-duration", 'initial, 1s');
+test_invalid_value("animation-duration", '1s, initial');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-fill-mode-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-fill-mode-invalid.html
index dda2221f474..2a82f235463 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-fill-mode-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-fill-mode-invalid.html
@@ -13,6 +13,9 @@
<script>
test_invalid_value("animation-fill-mode", "auto");
test_invalid_value("animation-fill-mode", "forwards backwards");
+
+test_invalid_value("animation-fill-mode", "both, initial");
+test_invalid_value("animation-fill-mode", "initial, both");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-invalid.html
new file mode 100644
index 00000000000..c5790a3fafa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-invalid.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Animations: parsing animation with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation">
+<meta name="assert" content="animation supports only the grammar '<single-animation> #'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("animation", "1s 2s 3s");
+test_invalid_value("animation", "-1s -2s");
+
+test_invalid_value("animation", "steps(1) steps(2)");
+
+test_invalid_value("animation", "1 2");
+
+test_invalid_value("animation", "reverse alternate anim");
+
+test_invalid_value("animation", "both backwards anim");
+
+test_invalid_value("animation", "paused running anim");
+
+test_invalid_value("animation", "anim1 anim2");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-iteration-count-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-iteration-count-invalid.html
index ff1e8e23a08..621340f7c3d 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-iteration-count-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-iteration-count-invalid.html
@@ -14,6 +14,9 @@
test_invalid_value("animation-iteration-count", "auto");
test_invalid_value("animation-iteration-count", "-2");
test_invalid_value("animation-iteration-count", "3 4");
+
+test_invalid_value("animation-iteration-count", "initial, 4");
+test_invalid_value("animation-iteration-count", "4, initial");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-play-state-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-play-state-invalid.html
index f47a2f75ddf..91a6f017370 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-play-state-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-play-state-invalid.html
@@ -13,6 +13,9 @@
<script>
test_invalid_value("animation-play-state", "auto");
test_invalid_value("animation-play-state", "paused running");
+
+test_invalid_value("animation-play-state", "paused, initial");
+test_invalid_value("animation-play-state", "initial, paused");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-shorthand.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-shorthand.html
new file mode 100644
index 00000000000..2e3053e7afc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-shorthand.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Animations: animation sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation">
+<meta name="assert" content="animation supports the full grammar '<single-animation> #'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('animation', 'anim paused both reverse 4 1s -3s cubic-bezier(0, -2, 1, 3)', {
+ 'animation-duration': '1s',
+ 'animation-timing-function': 'cubic-bezier(0, -2, 1, 3)',
+ 'animation-delay': '-3s',
+ 'animation-iteration-count': '4',
+ 'animation-direction': 'reverse',
+ 'animation-fill-mode': 'both',
+ 'animation-play-state': 'paused',
+ 'animation-name': 'anim'
+});
+
+test_shorthand_value('animation', 'anim paused both reverse, 4 1s -3s cubic-bezier(0, -2, 1, 3)', {
+ 'animation-duration': '0s, 1s',
+ 'animation-timing-function': 'ease, cubic-bezier(0, -2, 1, 3)',
+ 'animation-delay': '0s, -3s',
+ 'animation-iteration-count': '1, 4',
+ 'animation-direction': 'reverse, normal',
+ 'animation-fill-mode': 'both, none',
+ 'animation-play-state': 'paused, running',
+ 'animation-name': 'anim, none'
+});
+
+test_shorthand_value('animation', '4 1s -3s cubic-bezier(0, -2, 1, 3), anim paused both reverse', {
+ 'animation-duration': '1s, 0s',
+ 'animation-timing-function': 'cubic-bezier(0, -2, 1, 3), ease',
+ 'animation-delay': '-3s, 0s',
+ 'animation-iteration-count': '4, 1',
+ 'animation-direction': 'normal, reverse',
+ 'animation-fill-mode': 'none, both',
+ 'animation-play-state': 'running, paused',
+ 'animation-name': 'none, anim'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-invalid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-invalid.html
index adc1cc10e39..621145b0e00 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-timing-function-invalid.html
@@ -18,6 +18,9 @@ test_invalid_value("animation-timing-function", "cubic-bezier(1, 2, 3, infinite)
test_invalid_value("animation-timing-function", "cubic-bezier(1, 2, 3, 4, 5)");
test_invalid_value("animation-timing-function", "cubic-bezier(-0.1, 0.1, 0.5, 0.9)");
test_invalid_value("animation-timing-function", "cubic-bezier(0.5, 0.1, 1.1, 0.9)");
+
+test_invalid_value("animation-timing-function", "initial, cubic-bezier(0, -2, 1, 3)");
+test_invalid_value("animation-timing-function", "cubic-bezier(0, -2, 1, 3), initial");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-valid.html b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-valid.html
new file mode 100644
index 00000000000..65de3c6fcfe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-animations/parsing/animation-valid.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Animations: parsing animation with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-animations/#propdef-animation">
+<meta name="assert" content="animation supports the full grammar '<single-animation> #'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// <single-animation> = <time> || <easing-function> || <time> ||
+// <single-animation-iteration-count> || <single-animation-direction> ||
+// <single-animation-fill-mode> || <single-animation-play-state> ||
+// [ none | <keyframes-name> ]
+test_valid_value("animation", "1s", ["1s", "1s ease 0s 1 normal none running none"]);
+test_valid_value("animation", "cubic-bezier(0, -2, 1, 3)", ["cubic-bezier(0, -2, 1, 3)", "0s cubic-bezier(0, -2, 1, 3) 0s 1 normal none running none"]);
+test_valid_value("animation", "1s -3s", ["1s -3s", "1s ease -3s 1 normal none running none"]);
+test_valid_value("animation", "4", ["4", "0s ease 0s 4 normal none running none"]);
+test_valid_value("animation", "reverse", ["reverse", "0s ease 0s 1 reverse none running none"]);
+test_valid_value("animation", "both", ["both", "0s ease 0s 1 normal both running none"]);
+test_valid_value("animation", "paused", ["paused", "0s ease 0s 1 normal none paused none"]);
+test_valid_value("animation", "none", ["none", "0s ease 0s 1 normal none running none"]);
+test_valid_value("animation", "anim", ["anim", "0s ease 0s 1 normal none running anim"]);
+
+test_valid_value("animation", "anim paused both reverse 4 1s -3s cubic-bezier(0, -2, 1, 3)",
+ "1s cubic-bezier(0, -2, 1, 3) -3s 4 reverse both paused anim");
+
+test_valid_value("animation", "anim paused both reverse, 4 1s -3s cubic-bezier(0, -2, 1, 3)",
+ "0s ease 0s 1 reverse both paused anim, 1s cubic-bezier(0, -2, 1, 3) -3s 4 normal none running none");
+
+// TODO: Add test with a single negative time.
+// TODO: Add test with a single timing-function keyword.
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html
index d4726e87d11..aebadbbafb2 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/animations/border-image-outset-interpolation.html
@@ -48,14 +48,14 @@ test_interpolation({
test_interpolation({
property: 'border-image-outset',
from: 'initial',
- to: '2px',
+ to: '2',
}, [
- {at: -0.3, expect: '0px'}, // Non-negative
- {at: 0, expect: '0px'},
- {at: 0.3, expect: '0.6px'},
- {at: 0.6, expect: '1.2px'},
- {at: 1, expect: '2px'},
- {at: 1.5, expect: '3px'},
+ {at: -0.3, expect: '0'}, // Non-negative
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '0.6'},
+ {at: 0.6, expect: '1.2'},
+ {at: 1, expect: '2'},
+ {at: 1.5, expect: '3'},
]);
test_interpolation({
@@ -74,14 +74,14 @@ test_interpolation({
test_interpolation({
property: 'border-image-outset',
from: 'unset',
- to: '2px',
+ to: '2',
}, [
- {at: -0.3, expect: '0px'}, // Non-negative
- {at: 0, expect: '0px'},
- {at: 0.3, expect: '0.6px'},
- {at: 0.6, expect: '1.2px'},
- {at: 1, expect: '2px'},
- {at: 1.5, expect: '3px'},
+ {at: -0.3, expect: '0'}, // Non-negative
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '0.6'},
+ {at: 0.6, expect: '1.2'},
+ {at: 1, expect: '2'},
+ {at: 1.5, expect: '3'},
]);
test_interpolation({
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-shorthand.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-shorthand.html
new file mode 100644
index 00000000000..012567830ea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-shorthand.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: border-color sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-color">
+<meta name="assert" content="border-color supports the full grammar '<color>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('border-color', 'currentcolor', {
+ 'border-top-color': 'currentcolor',
+ 'border-right-color': 'currentcolor',
+ 'border-bottom-color': 'currentcolor',
+ 'border-left-color': 'currentcolor'
+});
+
+test_shorthand_value('border-color', 'red yellow', {
+ 'border-top-color': 'red',
+ 'border-right-color': 'yellow',
+ 'border-bottom-color': 'red',
+ 'border-left-color': 'yellow'
+});
+
+test_shorthand_value('border-color', 'red yellow green', {
+ 'border-top-color': 'red',
+ 'border-right-color': 'yellow',
+ 'border-bottom-color': 'green',
+ 'border-left-color': 'yellow'
+});
+
+test_shorthand_value('border-color', 'red yellow green blue', {
+ 'border-top-color': 'red',
+ 'border-right-color': 'yellow',
+ 'border-bottom-color': 'green',
+ 'border-left-color': 'blue'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-shorthand.sub.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-shorthand.sub.html
new file mode 100644
index 00000000000..37fb998d6c2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-shorthand.sub.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: border-image sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image">
+<meta name="assert" content="border-image supports the full grammar ' <‘border-image-source’> || <‘border-image-slice’> [ / <‘border-image-width’> | / <‘border-image-width’>? / <‘border-image-outset’> ]? || <‘border-image-repeat’>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('border-image', 'none', {
+ 'border-image-source': 'none',
+ 'border-image-slice': '100%',
+ 'border-image-width': '1',
+ 'border-image-outset': '0',
+ 'border-image-repeat': 'stretch'
+});
+
+test_shorthand_value('border-image', 'url("http://{{host}}/") 1 2 3 4 fill', {
+ 'border-image-source': 'url("http://{{host}}/")',
+ 'border-image-slice': '1 2 3 4 fill',
+ 'border-image-width': '1',
+ 'border-image-outset': '0',
+ 'border-image-repeat': 'stretch'
+});
+
+test_shorthand_value('border-image', 'repeat round', {
+ 'border-image-source': 'none',
+ 'border-image-slice': '100%',
+ 'border-image-width': '1',
+ 'border-image-outset': '0',
+ 'border-image-repeat': 'repeat round'
+});
+
+test_shorthand_value('border-image', 'url("http://{{host}}/") fill 1 2% 3 4%', {
+ 'border-image-source': 'url("http://{{host}}/")',
+ 'border-image-slice': '1 2% 3 4% fill',
+ 'border-image-width': '1',
+ 'border-image-outset': '0',
+ 'border-image-repeat': 'stretch'
+});
+
+test_shorthand_value('border-image', '1 2% 3 4% / 5% / 6', {
+ 'border-image-source': 'none',
+ 'border-image-slice': '1 2% 3 4%',
+ 'border-image-width': '5%',
+ 'border-image-outset': '6',
+ 'border-image-repeat': 'stretch'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-computed.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-computed.html
index 98e5616a228..2c36eda8c78 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-computed.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-computed.html
@@ -17,6 +17,7 @@
<body>
<div id="target"></div>
<script>
+test_computed_value("border-image-width", "0");
test_computed_value("border-image-width", "1");
test_computed_value("border-image-width", "auto");
test_computed_value("border-image-width", "10px");
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html
index 71404f2ce3e..870e741f445 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html
@@ -3,9 +3,8 @@
<head>
<meta charset="utf-8">
<title>CSS Backgrounds and Borders Module Level 3: parsing border with invalid values</title>
-<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-shorthands">
-<meta name="assert" content="border-width supports only the grammar '<line-width> || <line-style> || <color>'.">
+<meta name="assert" content="border supports only the grammar '<line-width> || <line-style> || <color>'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-shorthand.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-shorthand.html
new file mode 100644
index 00000000000..30491a534ec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-shorthand.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: border sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-shorthands">
+<meta name="assert" content="border supports the full grammar '<line-width> || <line-style> || <color>'.">
+<meta name="assert" content="The border shorthand also resets border-image to its initial value.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('border', '5px dotted blue', {
+ 'border-top-width': '5px',
+ 'border-right-width': '5px',
+ 'border-bottom-width': '5px',
+ 'border-left-width': '5px',
+ 'border-top-style': 'dotted',
+ 'border-right-style': 'dotted',
+ 'border-bottom-style': 'dotted',
+ 'border-left-style': 'dotted',
+ 'border-top-color': 'blue',
+ 'border-right-color': 'blue',
+ 'border-bottom-color': 'blue',
+ 'border-left-color': 'blue',
+
+ 'border-image-source': 'none',
+ 'border-image-slice': '100%',
+ 'border-image-width': '1',
+ 'border-image-outset': '0',
+ 'border-image-repeat': 'stretch'
+});
+
+test_shorthand_value('border-top', 'thin', {
+ 'border-top-width': 'thin',
+ 'border-top-style': 'none',
+ 'border-top-color': 'currentcolor'
+});
+
+test_shorthand_value('border-right', 'double', {
+ 'border-right-width': 'medium',
+ 'border-right-style': 'double',
+ 'border-right-color': 'currentcolor'
+});
+
+test_shorthand_value('border-bottom', 'green', {
+ 'border-bottom-width': 'medium',
+ 'border-bottom-style': 'none',
+ 'border-bottom-color': 'green'
+});
+
+test_shorthand_value('border-left', '1px dotted red', {
+ 'border-left-width': '1px',
+ 'border-left-style': 'dotted',
+ 'border-left-color': 'red'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-shorthand.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-shorthand.html
new file mode 100644
index 00000000000..b85804e287e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-shorthand.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: border-style sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-style">
+<meta name="assert" content="border-style supports the full grammar '<line-style>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('border-style', 'none', {
+ 'border-top-style': 'none',
+ 'border-right-style': 'none',
+ 'border-bottom-style': 'none',
+ 'border-left-style': 'none'
+});
+
+test_shorthand_value('border-style', 'inset outset', {
+ 'border-top-style': 'inset',
+ 'border-right-style': 'outset',
+ 'border-bottom-style': 'inset',
+ 'border-left-style': 'outset'
+});
+
+test_shorthand_value('border-style', 'hidden dotted dashed', {
+ 'border-top-style': 'hidden',
+ 'border-right-style': 'dotted',
+ 'border-bottom-style': 'dashed',
+ 'border-left-style': 'dotted'
+});
+
+test_shorthand_value('border-style', 'solid double groove ridge', {
+ 'border-top-style': 'solid',
+ 'border-right-style': 'double',
+ 'border-bottom-style': 'groove',
+ 'border-left-style': 'ridge'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html
index 37b876ce4e9..8c52b428ba9 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html
@@ -3,9 +3,8 @@
<head>
<meta charset="utf-8">
<title>CSS Backgrounds and Borders Module Level 3: parsing border with valid values</title>
-<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-shorthands">
-<meta name="assert" content="border-width supports the full grammar '<line-width> || <line-style> || <color>'.">
+<meta name="assert" content="border supports the full grammar '<line-width> || <line-style> || <color>'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-shorthand.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-shorthand.html
new file mode 100644
index 00000000000..07461bc94d9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-shorthand.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: border-width sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-width">
+<meta name="assert" content="border-width supports the full grammar '<line-width>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('border-width', '5px', {
+ 'border-top-width': '5px',
+ 'border-right-width': '5px',
+ 'border-bottom-width': '5px',
+ 'border-left-width': '5px'
+});
+
+test_shorthand_value('border-width', 'thick thin', {
+ 'border-top-width': 'thick',
+ 'border-right-width': 'thin',
+ 'border-bottom-width': 'thick',
+ 'border-left-width': 'thin'
+});
+
+test_shorthand_value('border-width', 'thin medium thick', {
+ 'border-top-width': 'thin',
+ 'border-right-width': 'medium',
+ 'border-bottom-width': 'thick',
+ 'border-left-width': 'medium'
+});
+
+test_shorthand_value('border-width', '1px 2px 3px 4px', {
+ 'border-top-width': '1px',
+ 'border-right-width': '2px',
+ 'border-bottom-width': '3px',
+ 'border-left-width': '4px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-box/parsing/margin-shorthand.html b/tests/wpt/web-platform-tests/css/css-box/parsing/margin-shorthand.html
new file mode 100644
index 00000000000..293927983e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-box/parsing/margin-shorthand.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS basic box model: margin sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-box-3/#propdef-margin">
+<meta name="assert" content="margin supports the full grammar '<length-percentage>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('margin', '1px 2px 3px 4px', {
+ 'margin-top': '1px',
+ 'margin-right': '2px',
+ 'margin-bottom': '3px',
+ 'margin-left': '4px'
+});
+
+test_shorthand_value('margin', '1px 2px 3px', {
+ 'margin-top': '1px',
+ 'margin-right': '2px',
+ 'margin-bottom': '3px',
+ 'margin-left': '2px'
+});
+
+test_shorthand_value('margin', '1px 2px', {
+ 'margin-top': '1px',
+ 'margin-right': '2px',
+ 'margin-bottom': '1px',
+ 'margin-left': '2px'
+});
+
+test_shorthand_value('margin', '1px', {
+ 'margin-top': '1px',
+ 'margin-right': '1px',
+ 'margin-bottom': '1px',
+ 'margin-left': '1px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-box/parsing/padding-shorthand.html b/tests/wpt/web-platform-tests/css/css-box/parsing/padding-shorthand.html
new file mode 100644
index 00000000000..dc0139dc47a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-box/parsing/padding-shorthand.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS basic box model: padding sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-box-3/#propdef-padding">
+<meta name="assert" content="padding supports the full grammar '<length-percentage>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('padding', '1px 2px 3px 4px', {
+ 'padding-top': '1px',
+ 'padding-right': '2px',
+ 'padding-bottom': '3px',
+ 'padding-left': '4px'
+});
+
+test_shorthand_value('padding', '1px 2px 3px', {
+ 'padding-top': '1px',
+ 'padding-right': '2px',
+ 'padding-bottom': '3px',
+ 'padding-left': '2px'
+});
+
+test_shorthand_value('padding', '1px 2px', {
+ 'padding-top': '1px',
+ 'padding-right': '2px',
+ 'padding-bottom': '1px',
+ 'padding-left': '2px'
+});
+
+test_shorthand_value('padding', '1px', {
+ 'padding-top': '1px',
+ 'padding-right': '1px',
+ 'padding-bottom': '1px',
+ 'padding-left': '1px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-cascade/all-prop-initial-visited-ref.html b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-initial-visited-ref.html
new file mode 100644
index 00000000000..f596b559b0e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-initial-visited-ref.html
@@ -0,0 +1,3 @@
+<!doctype html>
+<title>CSS Test: Reference</title>
+<span style="color:green">This text must be green.</a>
diff --git a/tests/wpt/web-platform-tests/css/css-cascade/all-prop-initial-visited.html b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-initial-visited.html
new file mode 100644
index 00000000000..6fb7936652a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-cascade/all-prop-initial-visited.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>CSS Cascade: Apply all:initial to a visited link overriding with a color</title>
+<link rel="help" href="https://drafts.csswg.org/css-cascade/#initial">
+<link rel="match" href="all-prop-initial-visited-ref.html">
+<style>
+ a { all: initial }
+ a:visited { color: green }
+</style>
+<a href="">This text must be green.</a>
diff --git a/tests/wpt/web-platform-tests/css/css-content/inheritance.html b/tests/wpt/web-platform-tests/css/css-content/inheritance.html
new file mode 100644
index 00000000000..a3242556fdc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-content/inheritance.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Inheritance of CSS Contents properties</title>
+<link rel="help" href="https://drafts.csswg.org/css-content/#propdef-quotes">
+<link rel="help" href="https://drafts.csswg.org/css-content/#property-index">
+<meta name="assert" content="Properties inherit or not according to the spec.">
+<meta name="assert" content="Properties have initial values according to the spec.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/inheritance-testcommon.js"></script>
+</head>
+<body>
+<div id="container">
+ <div id="target"></div>
+</div>
+<script>
+assert_inherited('quotes', 'auto', 'none');
+assert_not_inherited('bookmark-level', 'none', '1');
+assert_not_inherited('bookmark-state', 'open', 'closed');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-height-flex-items-019.html b/tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-height-flex-items-019.html
new file mode 100644
index 00000000000..3572a6cc88e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/flex-minimum-height-flex-items-019.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<title>CSS Flexbox: min-height: auto with flex items containing percentage-sized children</title>
+<link rel="author" title="Google LLC" href="https://www.google.com/" />
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#min-size-auto" />
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
+<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1003556" />
+
+<style>
+.flex {
+ display: flex;
+}
+.column {
+ flex-direction: column;
+}
+
+.bigger-than-parent {
+ height: 100%;
+ min-height: 100px;
+ background-color: red;
+}
+
+#reference-overlapped-green {
+ position: absolute;
+ background-color: green;
+ width: 100px;
+ height: 100px;
+ z-index: 1;
+}
+
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+
+<div id="reference-overlapped-green"></div>
+
+<div id="outer" style="width: 100px; height: 300px;" class="flex">
+ <div style="height: 100px; width: 100px; background: blue;" class="flex column">
+ <div style="flex: 0 1 100%"></div>
+
+ <div style="flex: 1 0 30px;">
+ <div class="bigger-than-parent">
+ </div>
+ </div>
+ </div>
+</div>
+
+<script>
+onload = function() {
+ var outer = document.getElementById("outer");
+ outer.offsetWidth;
+ outer.style.height = "200px";
+};
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-flow-shorthand.html b/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-flow-shorthand.html
new file mode 100644
index 00000000000..6ae19bdc044
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-flow-shorthand.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Flexible Box Layout Module Level 1: flex-flow sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#propdef-flex-flow">
+<meta name="assert" content="flex-flow supports the full grammar '<flex-direction> || <flex-wrap>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('flex-flow', 'nowrap column', {
+ 'flex-direction': 'column',
+ 'flex-wrap': 'nowrap'
+});
+
+test_shorthand_value('flex-flow', 'wrap row-reverse', {
+ 'flex-direction': 'row-reverse',
+ 'flex-wrap': 'wrap'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-shorthand.html b/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-shorthand.html
new file mode 100644
index 00000000000..51e01794154
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/parsing/flex-shorthand.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Flexible Box Layout Module Level 1: flex sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#propdef-flex">
+<meta name="assert" content="flex supports the full grammar 'none | [ <‘flex-grow’> <‘flex-shrink’>? || <‘flex-basis’> ]'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('flex', 'none', {
+ 'flex-grow': '0',
+ 'flex-shrink': '0',
+ 'flex-basis': 'auto'
+});
+
+test_shorthand_value('flex', '1', {
+ 'flex-grow': '1',
+ 'flex-shrink': '1',
+ 'flex-basis': '0%'
+});
+
+test_shorthand_value('flex', '2 3', {
+ 'flex-grow': '2',
+ 'flex-shrink': '3',
+ 'flex-basis': '0%'
+});
+
+test_shorthand_value('flex', '4 5 6px', {
+ 'flex-grow': '4',
+ 'flex-shrink': '5',
+ 'flex-basis': '6px'
+});
+
+test_shorthand_value('flex', '7% 8', {
+ 'flex-grow': '8',
+ 'flex-shrink': '1',
+ 'flex-basis': '7%'
+});
+
+test_shorthand_value('flex', '8 auto', {
+ 'flex-grow': '8',
+ 'flex-shrink': '1',
+ 'flex-basis': 'auto'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-003.html b/tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-003.html
index 9d434cf7cb8..c27af532169 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-003.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/percentage-heights-003.html
@@ -76,6 +76,15 @@
</div>
</div>
+<!-- indefinite unwrapped column flexbox where item doesn't stretch -->
+<div style="height: 100px;">
+ <div class="flexbox column">
+ <div style="align-self: flex-start">
+ <span data-expected-height="0"></span>
+ </div>
+ </div>
+</div>
+
<!-- indefinite wrapped column flexbox -->
<div style="height: 100px;">
<div class="flexbox column-wrap">
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html
new file mode 100644
index 00000000000..c4ced6b2a12
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-item-dynamic-min-contribution-001.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<meta charset="utf-8" />
+<title>CSS Grid Layout Test: dynamic minimum contribution</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com" />
+<link rel="help" href="https://drafts.csswg.org/css-grid/#min-size-contribution">
+<meta name="assert" content="This test checks that grid items are sized correctly when their minimum contribution is dynamically changed with JavaScript." />
+<style>
+#grid {
+ display: grid;
+ height: 100px;
+ width: 100px;
+}
+</style>
+<div id="log"></div>
+<div id="grid">
+ <div id="item"></div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+const tests = [
+ ["auto", "100px"],
+ ["0%", "100px"],
+ ["100%", "100px"],
+ ["200%", "200px"],
+ ["300%", "300px"],
+ ["400px", "400px"],
+ ["500px", "500px"],
+];
+const item = document.getElementById("item");
+for (let [minSize, expectedSize] of tests) {
+ test(() => {
+ item.style.minHeight = item.style.minWidth = minSize;
+ let cs = getComputedStyle(item);
+ assert_equals(cs.height, expectedSize, "height");
+ assert_equals(cs.width, expectedSize, "width");
+ }, `Minimum size: ${minSize}`);
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html
new file mode 100644
index 00000000000..03d5d7f2c49
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-003.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ font: 25px/1 Ahem;
+ width: 100px;
+}
+.child {
+ margin: 50px;
+ color: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ margin: 50%;
+ color: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child">X</div></div>
+<div class="container grid"><div class="child" id="item">X</div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "auto";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html
new file mode 100644
index 00000000000..52e6f3bf1a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-004.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 25px;
+ height: 25px;
+ margin: 50px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ margin: 50%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "25px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html
new file mode 100644
index 00000000000..9cff92d1aa0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-005.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 25px;
+ height: 25px;
+ margin: 50px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ margin: 50%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.margin = "100%";
+ item.offsetLeft;
+ item.style.margin = "50%";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html
new file mode 100644
index 00000000000..04d30e3edfc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-006.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ min-width: 25px;
+ min-height: 25px;
+ margin: 50px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ margin: 50%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.margin = "100%";
+ item.offsetLeft;
+ item.style.margin = "50%";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html
new file mode 100644
index 00000000000..2906fe06087
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-007.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ font: 25px/1 Ahem;
+ width: 100px;
+}
+.child {
+ margin: 0px 50px;
+ color: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+ grid-template-rows: 100px;
+}
+#item {
+ margin: 0px 50%;
+ color: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child">X</div></div>
+<div class="container grid"><div class="child" id="item">X</div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "auto";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html
new file mode 100644
index 00000000000..7bd2e0fc5f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-008.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 25px;
+ height: 25px;
+ margin: 0px 50px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+ grid-template-rows: 100px;
+}
+#item {
+ margin: 0px 50%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "25px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html
new file mode 100644
index 00000000000..70a6c231dc9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-009.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 25px;
+ height: 25px;
+ margin: 0px 50px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+ grid-template-rows: 100px;
+}
+#item {
+ margin: 0px 50%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.margin = "0px 100%";
+ item.offsetLeft;
+ item.style.margin = "0px 50%";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html
new file mode 100644
index 00000000000..34352f60020
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-010.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ min-width: 25px;
+ min-height: 25px;
+ margin: 0px 50px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+ grid-template-rows: 100px;
+}
+#item {
+ margin: 0px 50%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.margin = "0px 100%";
+ item.offsetLeft;
+ item.style.margin = "0px 50%";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-011.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-011.html
new file mode 100644
index 00000000000..36bd208df00
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-011.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ font: 25px/1 Ahem;
+ width: 100px;
+}
+.child {
+ margin: 50px 0px;
+ color: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ margin: 50% 0px;
+ color: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child">X</div></div>
+<div class="container grid"><div class="child" id="item">X</div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "auto";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-012.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-012.html
new file mode 100644
index 00000000000..9cdc15337a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-012.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 25px;
+ height: 25px;
+ margin: 50px 0px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ margin: 50% 0px;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "25px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-013.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-013.html
new file mode 100644
index 00000000000..581415b828e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-013.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 25px;
+ height: 25px;
+ margin: 50px 0px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ margin: 50% 0px;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.margin = "100% 0px";
+ item.offsetLeft;
+ item.style.margin = "50% 0px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-014.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-014.html
new file mode 100644
index 00000000000..5766e60339a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-margins-014.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage margins</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage margins are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ min-width: 25px;
+ min-height: 25px;
+ margin: 50px 0px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: green;
+ height: 100px;
+}
+.grid {
+ background: none;
+ grid-template-columns: 100px;
+}
+#item {
+ margin: 50% 0px;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.margin = "100% 0px";
+ item.offsetLeft;
+ item.style.margin = "50% 0px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-003.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-003.html
new file mode 100644
index 00000000000..d85a6c1abcf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-003.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ font: 80px/1 Ahem;
+ width: 100px;
+}
+.child {
+ padding: 10px;
+ color: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: red;
+ height: 100px;
+}
+.grid {
+ background: green;
+}
+#item {
+ padding: 10%;
+ color: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child">X</div></div>
+<div class="container grid"><div class="child" id="item">X</div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "auto";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-004.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-004.html
new file mode 100644
index 00000000000..26302daf2d6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-004.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 80px;
+ height: 80px;
+ padding: 10px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: none;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ padding: 10%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "80px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html
new file mode 100644
index 00000000000..151b604f9bb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-005.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 80px;
+ height: 80px;
+ padding: 10px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ padding: 10%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.padding = "50%";
+ item.offsetLeft;
+ item.style.padding = "10%";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html
new file mode 100644
index 00000000000..bcbc7ced73a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-006.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ min-width: 80px;
+ min-height: 80px;
+ padding: 10px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ padding: 10%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.padding = "50%";
+ item.offsetLeft;
+ item.style.padding = "10%";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-007.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-007.html
new file mode 100644
index 00000000000..d4cf80c18df
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-007.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ font: 80px/1 Ahem;
+ width: 100px;
+}
+.child {
+ padding: 0px 10px;
+ color: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: red;
+ height: 100px;
+}
+.grid {
+ background: green;
+ grid-template-rows: 100px;
+}
+#item {
+ padding: 0px 10%;
+ color: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child">X</div></div>
+<div class="container grid"><div class="child" id="item">X</div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "auto";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-008.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-008.html
new file mode 100644
index 00000000000..38f766b5cff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-008.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 80px;
+ height: 100px;
+ padding: 0px 10px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: none;
+ height: 100px;
+}
+.grid {
+ background: none;
+ grid-template-rows: 100px;
+}
+#item {
+ padding: 0px 10%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "80px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html
new file mode 100644
index 00000000000..eb1d1f47f28
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-009.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 80px;
+ height: 100px;
+ padding: 0px 10px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ height: 100px;
+ grid-template-rows: 100px;
+}
+.grid {
+ background: none;
+ grid-template-rows: 100px;
+}
+#item {
+ padding: 0px 10%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.padding = "0px 50%";
+ item.offsetLeft;
+ item.style.padding = "0px 10%";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html
new file mode 100644
index 00000000000..ecd430c68d4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-010.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ min-width: 80px;
+ min-height: 100px;
+ padding: 0px 10px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ height: 100px;
+}
+.grid {
+ background: none;
+ grid-template-rows: 100px;
+}
+#item {
+ padding: 0px 10%;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.padding = "0px 50%";
+ item.offsetLeft;
+ item.style.padding = "0px 10%";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-011.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-011.html
new file mode 100644
index 00000000000..e394ced4e6e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-011.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ font: 80px/1 Ahem;
+ width: 100px;
+}
+.child {
+ padding: 10px 0px;
+ color: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: red;
+ height: 100px;
+}
+.grid {
+ background: green;
+}
+#item {
+ padding: 10px 0px;
+ color: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child">X</div></div>
+<div class="container grid"><div class="child" id="item">X</div></div>
+<script>
+ item.offsetLeft;
+ item.style.width = "0px";
+ item.offsetLeft;
+ item.style.width = "auto";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-012.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-012.html
new file mode 100644
index 00000000000..07b2d27b581
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-012.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 100px;
+ height: 80px;
+ padding: 10px 0px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ background: none;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ padding: 10% 0px;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.height = "0px";
+ item.offsetLeft;
+ item.style.height = "80px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-013.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-013.html
new file mode 100644
index 00000000000..9b6c2bfe0ad
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-013.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ width: 100px;
+ height: 80px;
+ padding: 10px 0px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ padding: 10% 0px;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.padding = "50% 0px";
+ item.offsetLeft;
+ item.style.padding = "10% 0px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-014.html b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-014.html
new file mode 100644
index 00000000000..9e67960913a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-014.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Grid items with percentage paddings</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#item-margins">
+<meta name="assert" content="Checks grid items percentage paddings are resolved correctly in a 'auto' sized grid area after changing the item's width and forcing a new layout.">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<link rel="stylesheet" href="support/grid.css">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.container {
+ width: 100px;
+}
+.child {
+ min-width: 100px;
+ min-height: 80px;
+ padding: 10px 0px;
+ background: red;
+}
+.ref {
+ position: absolute;
+ z-index: -1;
+ height: 100px;
+}
+.grid {
+ background: none;
+}
+#item {
+ padding: 10% 0px;
+ background: green;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="container ref"><div class="child"></div></div>
+<div class="container grid"><div class="child" id="item"></div></div>
+<script>
+ item.offsetLeft;
+ item.style.padding = "50% 0px";
+ item.offsetLeft;
+ item.style.padding = "10% 0px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-area-shorthand.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-area-shorthand.html
new file mode 100644
index 00000000000..9a265502d5c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-area-shorthand.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: grid-area sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-area">
+<meta name="assert" content="grid-area supports the full grammar '<grid-line> [ / <grid-line> ]{0,3}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('grid-area', 'auto', {
+ 'grid-row-start': 'auto',
+ 'grid-column-start': 'auto',
+ 'grid-row-end': 'auto',
+ 'grid-column-end': 'auto'
+});
+
+// <custom-ident>
+test_shorthand_value('grid-area', '--a', {
+ 'grid-row-start': '--a',
+ 'grid-column-start': '--a',
+ 'grid-row-end': '--a',
+ 'grid-column-end': '--a'
+});
+
+test_shorthand_value('grid-area', 'a / b', {
+ 'grid-row-start': 'a',
+ 'grid-column-start': 'b',
+ 'grid-row-end': 'a',
+ 'grid-column-end': 'b'
+});
+
+test_shorthand_value('grid-area', 'a / b / c', {
+ 'grid-row-start': 'a',
+ 'grid-column-start': 'b',
+ 'grid-row-end': 'c',
+ 'grid-column-end': 'b'
+});
+
+test_shorthand_value('grid-area', 'a / b / c / d', {
+ 'grid-row-start': 'a',
+ 'grid-column-start': 'b',
+ 'grid-row-end': 'c',
+ 'grid-column-end': 'd'
+});
+
+// <integer> && <custom-ident>?
+// span && [ <integer> || <custom-ident> ]
+test_shorthand_value('grid-area', '+90 -a- / 2 i span', {
+ 'grid-row-start': '90 -a-',
+ 'grid-column-start': 'span 2 i',
+ 'grid-row-end': 'auto',
+ 'grid-column-end': 'auto'
+});
+
+test_shorthand_value('grid-area', '1 / 2 / 3 / 4', {
+ 'grid-row-start': '1',
+ 'grid-column-start': '2',
+ 'grid-row-end': '3',
+ 'grid-column-end': '4'
+});
+
+
+test_shorthand_value('grid-row', 'auto', {
+ 'grid-row-start': 'auto',
+ 'grid-row-end': 'auto'
+});
+
+test_shorthand_value('grid-row', 'one / 2', {
+ 'grid-row-start': 'one',
+ 'grid-row-end': '2'
+});
+
+test_shorthand_value('grid-row', '1 two / four 3', {
+ 'grid-row-start': '1 two',
+ 'grid-row-end': '3 four'
+});
+
+
+test_shorthand_value('grid-column', '5 span', {
+ 'grid-column-start': 'span 5',
+ 'grid-column-end': 'auto'
+});
+
+test_shorthand_value('grid-column', '1 / two', {
+ 'grid-column-start': '1',
+ 'grid-column-end': 'two'
+});
+
+test_shorthand_value('grid-column', 'span 1 two / four 3 span', {
+ 'grid-column-start': 'span 1 two',
+ 'grid-column-end': 'span 3 four'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-columns-invalid.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-columns-invalid.html
index 40b6059a7e8..04e0fadf0df 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-columns-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-columns-invalid.html
@@ -32,7 +32,8 @@ test_invalid_value("grid-auto-columns", "fit-content(1px auto)");
// <track-size>+
test_invalid_value("grid-auto-columns", "2em / 3em");
test_invalid_value("grid-auto-columns", "auto, 10%");
-test_invalid_value("grid-auto-rows", "1px [a] 1px");
+test_invalid_value("grid-auto-columns", "1px [a] 1px");
+test_invalid_value("grid-auto-columns", "[] 1px []");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-rows-invalid.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-rows-invalid.html
index 4111e256336..1b61479f3c2 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-rows-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-auto-rows-invalid.html
@@ -32,6 +32,7 @@ test_invalid_value("grid-auto-rows", "fit-content(1px auto)");
test_invalid_value("grid-auto-rows", "2em / 3em");
test_invalid_value("grid-auto-rows", "auto, 10%");
test_invalid_value("grid-auto-rows", "1px [a] 1px");
+test_invalid_value("grid-auto-rows", "[] 1px []");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-valid.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-valid.html
index 85ac76a999a..6bf2e7bce63 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-columns-valid.html
@@ -47,7 +47,7 @@ test_valid_value("grid-template-columns", 'fit-content(calc(30% + 40vw))');
// 'repeat(1, 10px)' in Firefox
// '[] 10px' in Safari
// '10px' in Edge 18
-test_valid_value("grid-template-columns", 'repeat(1, [] 10px)', ['repeat(1, 10px)', 'repeat(1, [] 10px)']);
+test_valid_value("grid-template-columns", 'repeat(1, [] 10px [])', 'repeat(1, 10px)');
// 'repeat(1, [one two] 20%)' in Blink, Firefox
// '[one two] 20%' in Safari, Edge 18
@@ -61,6 +61,7 @@ test_valid_value("grid-template-columns", 'repeat(2, fit-content(20%) [three fou
// <track-list> = [ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?
test_valid_value("grid-template-columns", 'min-content repeat(5, minmax(10px, auto))');
+test_valid_value("grid-template-columns", '[] 150px [] 1fr []', '150px 1fr');
// <auto-repeat> = repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )
test_valid_value("grid-template-columns", 'repeat(auto-fill, 10px)');
diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-valid.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-valid.html
index ec8d64f79ba..2d3a1ed8045 100644
--- a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-rows-valid.html
@@ -43,11 +43,7 @@ test_valid_value("grid-template-rows", 'fit-content(calc(30% + 40vw))');
// <track-repeat> = repeat( [ <positive-integer> ] , [ <line-names>? <track-size> ]+ <line-names>? )
-// 'repeat(1, [] 10px)' in Blink
-// 'repeat(1, 10px)' in Firefox
-// '[] 10px' in Safari
-// '10px' in Edge 18
-test_valid_value("grid-template-rows", 'repeat(1, [] 10px)', ['repeat(1, 10px)', 'repeat(1, [] 10px)']);
+test_valid_value("grid-template-rows", 'repeat(1, [] 10px [])', 'repeat(1, 10px)');
// 'repeat(1, [one two] 20%)' in Blink, Firefox
// '[one two] 20%' in Safari, Edge 18
@@ -61,6 +57,7 @@ test_valid_value("grid-template-rows", 'repeat(2, fit-content(20%) [three four]
// <track-list> = [ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?
test_valid_value("grid-template-rows", 'min-content repeat(5, minmax(10px, auto))');
+test_valid_value("grid-template-rows", '[] 150px [] 1fr []', '150px 1fr');
// <auto-repeat> = repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )
test_valid_value("grid-template-rows", 'repeat(auto-fill, 10px)');
diff --git a/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-shorthand.html b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-shorthand.html
new file mode 100644
index 00000000000..b9165359a72
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/parsing/grid-template-shorthand.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: grid-template sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template">
+<meta name="assert" content="grid-template supports the full grammar 'none | [ <grid-template-rows> / <grid-template-columns> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('grid-template', 'none', {
+ 'grid-template-rows': 'none',
+ 'grid-template-columns': 'none',
+ 'grid-template-areas': 'none'
+});
+
+// <grid-template-rows> / <grid-template-columns>
+test_shorthand_value('grid-template', '10px / 20%', {
+ 'grid-template-rows': '10px',
+ 'grid-template-columns': '20%',
+ 'grid-template-areas': 'none'
+});
+
+test_shorthand_value('grid-template', 'fit-content(calc(-0.5em + 10px)) / fit-content(calc(0.5em + 10px))', {
+ 'grid-template-rows': 'fit-content(calc(-0.5em + 10px))',
+ 'grid-template-columns': 'fit-content(calc(0.5em + 10px))',
+ 'grid-template-areas': 'none'
+});
+
+// [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?
+test_shorthand_value('grid-template',
+ '[header-top] "a a a" [header-bottom]' +
+ ' [main-top] "b b b" 1fr [main-bottom]' +
+ ' / auto 1fr auto', {
+ 'grid-template-rows': '[header-top] auto [header-bottom main-top] 1fr [main-bottom]',
+ 'grid-template-columns': 'auto 1fr auto',
+ 'grid-template-areas': '"a a a" "b b b"'
+});
+
+test_shorthand_value('grid-template',
+ ' "a a a"' +
+ ' "b b b" 1fr' +
+ '/ auto 1fr auto', {
+ 'grid-template-rows': 'auto 1fr',
+ 'grid-template-columns': 'auto 1fr auto',
+ 'grid-template-areas': '"a a a" "b b b"'
+});
+
+test_shorthand_value('grid-template',
+ ' [] "a a a" []' +
+ ' [] "b b b" 1fr []' +
+ ' / [] auto 1fr [] auto []', {
+ 'grid-template-rows': 'auto 1fr',
+ 'grid-template-columns': 'auto 1fr auto',
+ 'grid-template-areas': '"a a a" "b b b"'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-lists/parsing/list-style-shorthand.sub.html b/tests/wpt/web-platform-tests/css/css-lists/parsing/list-style-shorthand.sub.html
new file mode 100644
index 00000000000..140df208aab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/parsing/list-style-shorthand.sub.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: list-style sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style">
+<meta name="assert" content="list-style supports the full grammar '<'list-style-position'> || <'list-style-image'> || <'list-style-type'>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('list-style', 'square url("https://{{host}}/") inside', {
+ 'list-style-position': 'inside',
+ 'list-style-image': 'url("https://{{host}}/")',
+ 'list-style-type': 'square'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-logical/parsing/inset-shorthand.html b/tests/wpt/web-platform-tests/css/css-logical/parsing/inset-shorthand.html
new file mode 100644
index 00000000000..4557879129e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-logical/parsing/inset-shorthand.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Logical Properties and Values: inset sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-logical/#propdef-inset">
+<meta name="assert" content="inset supports the full grammar '<'top'>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('inset', '1px 2px 3px 4px', {
+ 'top': '1px',
+ 'right': '2px',
+ 'bottom': '3px',
+ 'left': '4px'
+});
+
+test_shorthand_value('inset', '1px 2px 3px', {
+ 'top': '1px',
+ 'right': '2px',
+ 'bottom': '3px',
+ 'left': '2px'
+});
+
+test_shorthand_value('inset', '1px 2px', {
+ 'top': '1px',
+ 'right': '2px',
+ 'bottom': '1px',
+ 'left': '2px'
+});
+
+test_shorthand_value('inset', '1px', {
+ 'top': '1px',
+ 'right': '1px',
+ 'bottom': '1px',
+ 'left': '1px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin.html
index c85232edf23..e6ce4ac49c0 100644
--- a/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin.html
+++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/scroll-margin.html
@@ -58,14 +58,31 @@ test(() => {
test(() => {
target.style.left = "0px";
target.style.top = "0px";
-
target.style.scrollSnapAlign = "start";
- target.style.scrollMargin = "100px";
- // Scroll to the position between #target and #another-target elements but
- // if the scroll-margin 100px contributed to the snap start-aligned snap
- // position it will be farther than #another-target.
- scroller.scrollTo(200, 200);
+ // Since the target is at (0px, 0px) in the scroll port, the added margin
+ // should not be considered, and the snap points for this snap area should be
+ // the closest points in the scroll port (i.e x=0 or y=0).
+ target.style.scrollMargin = "200px";
+
+ // Distance from target without margin:
+ // `scroll position (150px, 150px)` - `target position (0px, 0px)`
+ // = (150px, 150px)
+ //
+ // Distance from target with margin:
+ // `scroll position (150px, 150px)` - [`target position (0px, 0px)` -
+ // `target margin (200px, 200px)`]
+ // = (350px, 350px)
+ //
+ // Distance from other target:
+ // `other target position (400px, 400px)` - `scroll position (150px, 150px)`
+ // = (250px, 250px)
+ //
+ // Therefore if the "out-of-scrollport" scroll-margin contributes to the
+ // calculation, then the other target would be snapped to. However if the
+ // scroll-margin is not considered, then the (0px, 0px) target should be
+ // snapped to.
+ scroller.scrollTo(150, 150);
assert_equals(scroller.scrollLeft, 0);
assert_equals(scroller.scrollTop, 0);
}, "scroll-margin doesn't contribute to the snap position of the element " +
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/parsing/text-decoration-shorthand.html b/tests/wpt/web-platform-tests/css/css-text-decor/parsing/text-decoration-shorthand.html
new file mode 100644
index 00000000000..904313f0528
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/parsing/text-decoration-shorthand.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Text Decoration: text-decoration sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-text-decor-3/#propdef-text-decoration">
+<meta name="assert" content="text-decoration supports the full grammar '<‘text-decoration-line’> || <‘text-decoration-style’> || <‘text-decoration-color’>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('text-decoration', 'overline dotted green', {
+ 'text-decoration-line': 'overline',
+ 'text-decoration-style': 'dotted',
+ 'text-decoration-color': 'green'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html b/tests/wpt/web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html
index 4b6a28b5694..32c15f07a96 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/AnimationEffect-getComputedTiming.tentative.html
@@ -162,10 +162,21 @@ test(t => {
div.style.marginLeft = '10px';
const effect = div.getAnimations()[0].effect;
- assert_equals(effect.getComputedTiming().easing, 'linear',
+ assert_equals(effect.getComputedTiming().easing, 'ease',
'Initial value of easing');
}, 'easing of a new transition');
+test(t => {
+ const div = addDiv(t, { class: 'animated-div' });
+ div.style.transition = 'margin-left 10s steps(4)';
+ getComputedStyle(div).marginLeft;
+ div.style.marginLeft = '10px';
+
+ const effect = div.getAnimations()[0].effect;
+ assert_equals(effect.getComputedTiming().easing, 'steps(4)',
+ 'Initial value of easing');
+}, 'non-default easing of a new transition');
+
// ------------------------------
// endTime
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html b/tests/wpt/web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html
index 08a90734392..47b769b13a9 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/KeyframeEffect-getKeyframes.tentative.html
@@ -45,7 +45,7 @@ test(t => {
const expected = [
{ offset: 0,
computedOffset: 0,
- easing: 'ease',
+ easing: 'linear',
composite: 'auto',
left: '0px',
},
@@ -80,7 +80,7 @@ test(t => {
{
offset: 0,
computedOffset: 0,
- easing: 'steps(2)',
+ easing: 'linear',
composite: 'auto',
left: '0px',
},
@@ -96,8 +96,7 @@ test(t => {
for (let i = 0; i < frames.length; i++) {
assert_frames_equal(frames[i], expected[i], `ComputedKeyframe #${i}`);
}
-}, 'KeyframeEffect.getKeyframes() returns expected frames for a simple'
- + ' transition with a non-default easing function');
+}, 'KeyframeEffect.getKeyframes() returns frames unaffected by a non-default easing function');
test(t => {
const div = addDiv(t);
@@ -114,7 +113,7 @@ test(t => {
{
offset: 0,
computedOffset: 0,
- easing: 'ease',
+ easing: 'linear',
composite: 'auto',
left: '0px',
},
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-delay-invalid.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-delay-invalid.html
index b34d50551ce..4b7a1432860 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-delay-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-delay-invalid.html
@@ -14,6 +14,9 @@
test_invalid_value("transition-delay", 'infinite');
test_invalid_value("transition-delay", '0');
test_invalid_value("transition-delay", '500ms 0.5s');
+
+test_invalid_value("transition-delay", '-3s, initial');
+test_invalid_value("transition-delay", 'initial, -3s');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-duration-invalid.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-duration-invalid.html
index fd0f341f407..4474089bbb0 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-duration-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-duration-invalid.html
@@ -14,6 +14,9 @@
test_invalid_value("transition-duration", 'infinite');
test_invalid_value("transition-duration", '-500ms');
test_invalid_value("transition-duration", '1s 2s');
+
+test_invalid_value("transition-duration", '1s, initial');
+test_invalid_value("transition-duration", 'initial, 1s');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-invalid.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-invalid.html
new file mode 100644
index 00000000000..64310b13a15
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-invalid.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Transitions: parsing transition with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-transitions/#transition-shorthand-property">
+<meta name="assert" content="transition supports only the grammar '<single-transition> #'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// <single-transition> = [ none | <single-transition-property> ] ||
+// <time> || <easing-function> || <time>
+test_invalid_value("transition", "1s 2s 3s");
+test_invalid_value("transition", "-1s -2s");
+
+test_invalid_value("transition", "steps(1) steps(2)");
+
+test_invalid_value("transition", "none top");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-property-invalid.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-property-invalid.html
index 903a206eac1..715e13d7a24 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-property-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-property-invalid.html
@@ -14,6 +14,9 @@
test_invalid_value("transition-property", 'one two three');
test_invalid_value("transition-property", '1, 2, 3');
test_invalid_value("transition-property", 'none, one');
+
+test_invalid_value("transition-property", 'initial, top');
+test_invalid_value("transition-property", 'top, initial');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-shorthand.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-shorthand.html
new file mode 100644
index 00000000000..caffb3978cf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-shorthand.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Transitions: transition sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-transitions/#transition-shorthand-property">
+<meta name="assert" content="transition supports the full grammar '<single-transition> #'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('transition', '1s -3s cubic-bezier(0, -2, 1, 3) top', {
+ 'transition-property': 'top',
+ 'transition-duration': '1s',
+ 'transition-timing-function': 'cubic-bezier(0, -2, 1, 3)',
+ 'transition-delay': '-3s'
+});
+
+test_shorthand_value('transition', '1s -3s, cubic-bezier(0, -2, 1, 3) top', {
+ 'transition-property': 'all, top',
+ 'transition-duration': '1s, 0s',
+ 'transition-timing-function': 'ease, cubic-bezier(0, -2, 1, 3)',
+ 'transition-delay': '-3s, 0s'
+});
+
+test_shorthand_value('transition', 'cubic-bezier(0, -2, 1, 3) top, 1s -3s', {
+ 'transition-property': 'top, all',
+ 'transition-duration': '0s, 1s',
+ 'transition-timing-function': 'cubic-bezier(0, -2, 1, 3), ease',
+ 'transition-delay': '0s, -3s'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html
index 9834dfdbf0d..fa03b2295b9 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-computed.html
@@ -13,6 +13,8 @@
<div id="target"></div>
<script>
test_computed_value("transition-timing-function", "linear");
+test_computed_value("transition-timing-function", "", "ease");
+test_computed_value("transition-timing-function", "initial", "ease");
test_computed_value("transition-timing-function", "ease");
test_computed_value("transition-timing-function", "ease-in");
@@ -22,7 +24,8 @@ test_computed_value("transition-timing-function", "cubic-bezier(0.1, 0.2, 0.8, 0
test_computed_value("transition-timing-function", "cubic-bezier(0, -2, 1, 3)");
test_computed_value("transition-timing-function", "cubic-bezier(0, 0.7, 1, 1.3)");
-
+test_computed_value("transition-timing-function", "step-start", "steps(1, start)");
+test_computed_value("transition-timing-function", "step-end", "steps(1)");
test_computed_value("transition-timing-function", "steps(4, start)");
test_computed_value("transition-timing-function", "steps(2, end)", "steps(2)");
test_computed_value("transition-timing-function", "steps(2, jump-start)");
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-invalid.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-invalid.html
index 00bd2131e09..c69b7e75d3d 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-invalid.html
@@ -14,11 +14,25 @@
<script>
test_invalid_value("transition-timing-function", "auto");
test_invalid_value("transition-timing-function", "ease-in ease-out");
+
+test_invalid_value("transition-timing-function", "cubic-bezier(foobar)");
test_invalid_value("transition-timing-function", "cubic-bezier(1, 2, 3)");
test_invalid_value("transition-timing-function", "cubic-bezier(1, 2, 3, infinite)");
test_invalid_value("transition-timing-function", "cubic-bezier(1, 2, 3, 4, 5)");
test_invalid_value("transition-timing-function", "cubic-bezier(-0.1, 0.1, 0.5, 0.9)");
test_invalid_value("transition-timing-function", "cubic-bezier(0.5, 0.1, 1.1, 0.9)");
+
+test_invalid_value("transition-timing-function", "steps(foobar)");
+test_invalid_value("transition-timing-function", "steps(3.3, end)");
+test_invalid_value("transition-timing-function", "steps(3, top)");
+test_invalid_value("transition-timing-function", "steps(-3, top)");
+test_invalid_value("transition-timing-function", "steps(0, jump-start)");
+test_invalid_value("transition-timing-function", "steps(0, jump-end)");
+test_invalid_value("transition-timing-function", "steps(0, jump-both)");
+test_invalid_value("transition-timing-function", "steps(1, jump-none)");
+
+test_invalid_value("transition-timing-function", "initial, cubic-bezier(0, -2, 1, 3)");
+test_invalid_value("transition-timing-function", "cubic-bezier(0, -2, 1, 3), initial");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-valid.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-valid.html
index 2e2c1827bfb..5402fdac195 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-valid.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-timing-function-valid.html
@@ -22,6 +22,9 @@ test_valid_value("transition-timing-function", "cubic-bezier(0.1, 0.2, 0.8, 0.9)
test_valid_value("transition-timing-function", "cubic-bezier(0, -2, 1, 3)");
test_valid_value("transition-timing-function", "cubic-bezier(0, 0.7, 1, 1.3)");
+test_valid_value("transition-timing-function", "step-start", "steps(1, start)");
+test_valid_value("transition-timing-function", "step-end", "steps(1)");
+test_valid_value("transition-timing-function", "steps(4)");
test_valid_value("transition-timing-function", "steps(4, start)");
test_valid_value("transition-timing-function", "steps(2, end)", "steps(2)");
test_valid_value("transition-timing-function", "steps(2, jump-start)");
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-valid.html b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-valid.html
new file mode 100644
index 00000000000..c4651f5f125
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transitions/parsing/transition-valid.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Transitions: parsing transition with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-transitions/#transition-shorthand-property">
+<meta name="assert" content="transition supports the full grammar '<single-transition> #'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// <single-transition> = [ none | <single-transition-property> ] ||
+// <time> || <easing-function> || <time>
+test_valid_value("transition", "1s", ["1s", "all 1s ease 0s"]);
+test_valid_value("transition", "cubic-bezier(0, -2, 1, 3)", ["cubic-bezier(0, -2, 1, 3)", "all 0s cubic-bezier(0, -2, 1, 3) 0s"]);
+test_valid_value("transition", "1s -3s", ["1s -3s", "all 1s ease -3s"]);
+test_valid_value("transition", "none", ["none", "none 0s ease 0s"]);
+test_valid_value("transition", "top", ["top", "top 0s ease 0s"]);
+
+test_valid_value("transition", "1s -3s cubic-bezier(0, -2, 1, 3) top", "top 1s cubic-bezier(0, -2, 1, 3) -3s");
+test_valid_value("transition", "1s -3s, cubic-bezier(0, -2, 1, 3) top", ["1s -3s, top cubic-bezier(0, -2, 1, 3)", "all 1s ease -3s, top 0s cubic-bezier(0, -2, 1, 3) 0s"]);
+
+// TODO: Add test with a single negative time.
+// TODO: Add test with a single timing-function keyword.
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-000.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-000-manual.html
index 2b4cedbb524..b205085997c 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-000.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-000-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.4. The 'transition-delay' Property" href="http://www.w3.org/TR/css3-transitions/#transition-delay-property">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-delay' property set positive number to delay the execution of transition">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-002.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-002-manual.html
index 70e952b308c..168f94b9c05 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-002.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-002-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.4. The 'transition-delay' Property" href="http://www.w3.org/TR/css3-transitions/#transition-delay-property">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'transition-delay' property set 0 will not delay the execution of transition">
<style>
div {
@@ -33,7 +32,7 @@
test.addEventListener("click", function(evt) {
if (clicked == 0) {
ref.setAttribute("style", "background-color: green;");
- setInterval(function() {console.log(clicked);
+ setInterval(function() {
if (clicked == 2) {
test.setAttribute("style", "background-color: green;");
}
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-003.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-003-manual.html
index 3062e9a4842..e3680ca2615 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-003.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-003-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.4. The 'transition-delay' Property" href="http://www.w3.org/TR/css3-transitions/#transition-delay-property">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'transition-delay' property set negative number will not delay the execution of transition">
<style>
div {
@@ -33,7 +32,7 @@
test.addEventListener("click", function(evt) {
if (clicked == 0) {
ref.setAttribute("style", "background-color: green;");
- setInterval(function() {console.log(clicked);
+ setInterval(function() {
if (clicked == 2) {
test.setAttribute("style", "background-color: green;");
}
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-002.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-002-manual.html
index e9ba5760c60..03f514d365d 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-002.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-002-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.2. The 'transition-duration' Property" href="http://www.w3.org/TR/css3-transitions/#transition-duration-property">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-duration' property set positive number specifies the time that transition from the old value to the new value should take.">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-003.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-003-manual.html
index bb68b5f51c1..cb561008836 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-003.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-003-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.2. The 'transition-duration' Property" href="http://www.w3.org/TR/css3-transitions/#transition-duration-property">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the initial value of 'transition-duration' property is '0s' which means the transition is immediate.">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-004.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-004-manual.html
index 01c42473319..b93904bb766 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-004.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-004-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.2. The 'transition-duration' Property" href="http://www.w3.org/TR/css3-transitions/#transition-duration-property">
-<meta name="flags" content="interact">
<meta name="assert" content="A negative value for 'transition-duration renders the declaration invalid which means the transition is immediate.">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-003.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-003-manual.html
index 17668b053e8..291204d5752 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-003.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-003-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.1. The 'transition-property' Property" href="http://www.w3.org/TR/css3-transitions/#transition-property-property">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-duration' property set 'none' means that no property will be transitioned.">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-004.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-004-manual.html
index 6393c6e3d54..d2e84c99d69 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-004.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-004-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.1. The 'transition-property' Property" href="http://www.w3.org/TR/css3-transitions/#transition-property-property">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-duration' property set 'all' means that all properties are transitioned.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-005.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-005-manual.html
index a10ff4a3c1a..e69941001bc 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-005.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-005-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.1. The 'transition-property' Property" href="http://www.w3.org/TR/css3-transitions/#transition-property-property">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-duration' property set more than one properties like 'height, width'
means only the specified properties will be transitioned.">
<style>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-006.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-006-manual.html
index e7d8c5e3946..6032a401d0c 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-006.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-006-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'background-position' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-007.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-007-manual.html
index 0d006fe9b0b..898aea5b207 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-007.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-007-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-bottom-color' property animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-008.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-008-manual.html
index 47ca1eee105..53caa1028a4 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-008.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-008-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-bottom-width' property animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-009.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-009-manual.html
index b45948b9dd6..5f272854eb2 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-009.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-009-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-left-color' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-010.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-010-manual.html
index f05f6aa133e..a7e06ef7807 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-010.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-010-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-left-width' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-011.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-011-manual.html
index 7b3716dde8a..3799ad212ae 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-011.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-011-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-right-color' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-012.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-012-manual.html
index 0e19e52d62a..8587e264119 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-012.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-012-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-right-width' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-013.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-013-manual.html
index 9fb075b09d2..3b13c038161 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-013.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-013-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-top-color' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-014.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-014-manual.html
index 91075ff638f..d4aca3805b3 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-014.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-014-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-top-width' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-015.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-015-manual.html
index b37d4fc9a7b..e5805bc4ba6 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-015.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-015-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'border-spacing' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-016.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-016-manual.html
index 2670cd73852..d2cc57cd979 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-016.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-016-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'bottom' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-017.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-017-manual.html
index 3b94ecde0c5..f24c51a7383 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-017.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-017-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'clip' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-018.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-018-manual.html
index 593e3ff7194..e0b6bd955b5 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-018.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-018-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'color' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-019.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-019-manual.html
index 83f90000546..24751292c28 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-019.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-019-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'font-size' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-020.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-020-manual.html
index af0aea41bcd..e4f7b577920 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-020.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-020-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'font-weight' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-021.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-021-manual.html
index f499c9aee43..c0492223bbf 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-021.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-021-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'left' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-022.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-022-manual.html
index f36954902e3..ece1a32eb09 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-022.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-022-manual.html
@@ -4,7 +4,7 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="ahem interact">
+<meta name="flags" content="ahem">
<meta name="assert" content="Test checks that the 'letter-spacing' property is animatable.">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-023.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-023-manual.html
index 81c8cadac42..267be61aa15 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-023.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-023-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'line-height' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-024.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-024-manual.html
index b0e9d41dbc0..fad3d7ac239 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-024.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-024-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'margin-bottom' property is animatable.">
<style>
#ref {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-025.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-025-manual.html
index bfa6f698930..c0f27618489 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-025.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-025-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'margin-left' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-026.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-026-manual.html
index d6f0481bea7..35846e3fb53 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-026.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-026-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'margin-right' property is animatable.">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-027.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-027-manual.html
index 01f50dc475a..5ad5f5d5bd5 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-027.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-027-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'max-height' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-028.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-028-manual.html
index 83d8751109b..be319d2c212 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-028.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-028-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'max-width' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-029.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-029-manual.html
index fb435c91249..84c55326fe8 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-029.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-029-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'min-height' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-030.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-030-manual.html
index 286af42e12c..ba75f7ce725 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-030.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-030-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'min-width' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-031.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-031-manual.html
index d5bf23276f7..14cf23c6bdc 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-031.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-031-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'opacity' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-032.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-032-manual.html
index 020a8573c87..c6596608ed1 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-032.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-032-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'outline-color' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-033.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-033-manual.html
index fcb999fa079..fd7646c66bc 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-033.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-033-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'outline-width' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-034.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-034-manual.html
index b4da3a9bca0..07804121c9c 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-034.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-034-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'padding-bottom' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-035.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-035-manual.html
index 27c9ea9e1d8..4a9e9b128fd 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-035.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-035-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'padding-left' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-036.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-036-manual.html
index 326e615398c..746bc409ee0 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-036.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-036-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'padding-right' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-037.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-037-manual.html
index 79ce16fb961..d031caaaa40 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-037.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-037-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'padding-top' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-038.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-038-manual.html
index 5b16e41f578..2f9302bad75 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-038.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-038-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'right' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-039.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-039-manual.html
index 0ef6da528cb..bf0b209bdad 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-039.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-039-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'text-indent' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-040.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-040-manual.html
index b333f371f3f..83a3cf802b3 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-040.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-040-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'text-shadow' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-041.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-041-manual.html
index b3386a0534f..04f8351a030 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-041.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-041-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'top' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-042.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-042-manual.html
index fbb3e2d8b1a..15977497fbb 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-042.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-042-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'vertical-align' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-043.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-043-manual.html
index b87dc84a856..3b939bcf0ab 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-043.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-043-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the 'visibility' property is animatable.">
<style>
#test {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-044.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-044-manual.html
index f1d584fcf25..d7c2f467492 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-044.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-044-manual.html
@@ -4,7 +4,7 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="ahem interact">
+<meta name="flags" content="ahem">
<meta name="assert" content="Test checks that the 'word-spacing' property is animatable.">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-045.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-045-manual.html
index 3fa82c16d1f..912ed4df50c 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-property-045.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-property-045-manual.html
@@ -4,7 +4,7 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="7.1. Properties from CSS" href="http://www.w3.org/TR/css3-transitions/#animatable-css">
-<meta name="flags" content="ahem interact">
+<meta name="flags" content="ahem">
<meta name="assert" content="Test checks that the 'z-index' property is animatable.">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html
deleted file mode 100644
index 4c9598f3919..00000000000
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8">
- <title>CSS Transitions Test: Parsing transition-timing-function</title>
- <meta name="assert" content="Test checks that transition-timing-function values are parsed properly">
- <link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function-property">
- <link rel="author" title="Rodney Rehm" href="http://rodneyrehm.de/en/">
- <meta name="flags" content="dom">
-
- <script src="/resources/testharness.js" type="text/javascript"></script>
- <script src="/resources/testharnessreport.js" type="text/javascript"></script>
-
- <script src="./support/vendorPrefix.js" type="text/javascript"></script>
- <script src="./support/helper.js" type="text/javascript"></script>
- </head>
- <body>
- <!-- required by testharnessreport.js -->
- <div id="log"></div>
- <!-- elements used for testing -->
- <div id="container">
- <div id="transition"></div>
- </div>
-
- <script>
- var transition = document.getElementById('transition');
- var defaultValue = 'ease';
- var values = {
- // keywords
- 'ease': 'ease',
- 'linear': 'linear',
- 'ease-in': 'ease-in',
- 'ease-out': 'ease-out',
- 'ease-in-out': 'ease-in-out',
- 'step-start': 'steps(1, start)',
- 'step-end': 'steps(1)',
- // cubic bezier
- 'cubic-bezier(0.1, 0.2, 0.3, 0.4)': 'cubic-bezier(0.1, 0.2, 0.3, 0.4)',
- 'cubic-bezier(0.1, -0.2, 0.3, -0.4)': 'cubic-bezier(0.1, -0.2, 0.3, -0.4)',
- 'cubic-bezier(0.1, 1.2, 0.3, 1.4)': 'cubic-bezier(0.1, 1.2, 0.3, 1.4)',
- // steps
- 'steps(3, start)': 'steps(3, start)',
- 'steps(3, end)': 'steps(3)',
- 'steps(3)': 'steps(3)',
- 'steps(3, jump-start)': 'steps(3, jump-start)',
- 'steps(3, jump-end)': 'steps(3)',
- 'steps(3, jump-both)': 'steps(3, jump-both)',
- 'steps(3, jump-none)': 'steps(3, jump-none)',
- // invalid
- 'cubic-bezier(foobar)': defaultValue,
- 'steps(foobar)': defaultValue,
- 'steps(3.3, end)': defaultValue,
- 'steps(3, top)': defaultValue,
- 'steps(-3, top)': defaultValue,
- 'steps(0, jump-start)': defaultValue,
- 'steps(0, jump-end)': defaultValue,
- 'steps(0, jump-both)': defaultValue,
- 'steps(1, jump-none)': defaultValue,
- // Both x values must be in the range [0, 1]
- 'cubic-bezier(-0.1, -0.2, -0.3, -0.4)': defaultValue,
- 'cubic-bezier(1.1, 1.2, 1.3, 1.4)': defaultValue
- };
-
- // these tests are supposed to fail and
- // possibly make the engine issue a parser warning
- var invalidTests = {
- 'cubic-bezier(foobar)': true,
- 'steps(foobar)': true,
- 'steps(3.3, end)': true,
- 'steps(3, top)': true,
- 'steps(-3, top)': true,
- // Both x values must be in the range [0, 1]
- 'cubic-bezier(-0.1, -0.2, -0.3, -0.4)': true,
- 'cubic-bezier(1.1, 1.2, 1.3, 1.4)': true
- };
-
- for (var key in values) {
- if (Object.prototype.hasOwnProperty.call(values, key)) {
- test(function() {
- setStyle('#transition', {
- 'transition-timing-function': key
- });
- var result = computedStyle(transition, 'transition-timing-function');
- assert_equals(result, values[key], "Expected computed value");
- }, "parse '" + key + "'",
- {
- // mark tests that fail as such
- flags: invalidTests[key] ? "invalid" : ""
- });
- }
- }
- </script>
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-002.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-002-manual.html
index 527eb9e85ad..abd729bdede 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-002.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-002-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-timing-function' property set 'ease' is equivalent to cubic-bezier(0.25, 0.1, 0.25, 1.0)">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-003.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-003-manual.html
index 353b94e7eca..9fee35a972e 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-003.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-003-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-timing-function' property set 'ease-in' is equivalent to cubic-bezier(0.42, 0, 1.0, 1.0)">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-004.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-004-manual.html
index 0601b4bd148..f57d49aeabb 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-004.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-004-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-timing-function' property set 'ease-in-out' is equivalent to cubic-bezier(0.42, 0, 0.58, 1.0)">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-005.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-005-manual.html
index eb46ece6044..27726cd6d5b 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-005.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-005-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-timing-function' property set 'ease-out' is equivalent to cubic-bezier(0, 0, 0.58, 1.0)">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-006.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-006-manual.html
index d8640d93047..d97e6bb0769 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-006.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-006-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
<meta name="assert" content="The 'transition-timing-function' property set 'linear' is equivalent to cubic-bezier(0.0, 0.0, 1.0, 1.0)">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-007.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-007.html
deleted file mode 100644
index 72ffbf6a130..00000000000
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-007.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Transitions Test: transition-timing-function - 'step-end' equivalent to 'steps(1, end)'</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
-<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
-<meta name="assert" content="The 'transition-timing-function' property set 'step-end' is equivalent to 'steps(1, end)'">
-<style>
- div {
- height: 100px;
- transition: width 2s;
- width: 100px;
- }
- #test1 {
- background-color: blue;
- transition-timing-function: step-end;
- }
- #test2 {
- background-color: yellow;
- transition-timing-function: steps(1, end);
- }
-</style>
-<body>
- <p>Click the 'Start' button. Test passes if the width growth of blue square is <strong>equivalent</strong> to the yellow square.</p>
- <div id="test1"></div>
- <div id="test2"></div>
- <button>Start</button>
- <script>
- (function() {
- var button = document.querySelector("button");
- button.addEventListener("click", function(evt) {
- var test1 = document.querySelector("#test1"),
- test2 = document.querySelector("#test2");
- test1.setAttribute("style", "width: 300px");
- test2.setAttribute("style", "width: 300px");
- }, false);
- })();
- </script>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-008.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-008.html
deleted file mode 100644
index 2e20f7ee5f2..00000000000
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-008.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Transitions Test: transition-timing-function - 'step-start' equivalent to 'steps(1, start)'</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
-<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
-<meta name="assert" content="The 'transition-timing-function' property set 'step-start' is equivalent to 'steps(1, start)'">
-<style>
- div {
- height: 100px;
- transition: width 2s;
- width: 100px;
- }
- #test1 {
- background-color: blue;
- transition-timing-function: step-start;
- }
- #test2 {
- background-color: yellow;
- transition-timing-function: steps(1, start);
- }
-</style>
-<body>
- <p>Click the 'Start' button. Test passes if the width growth of blue square is <strong>equivalent</strong> to the yellow square.</p>
- <div id="test1"></div>
- <div id="test2"></div>
- <button>Start</button>
- <script>
- (function() {
- var button = document.querySelector("button");
- button.addEventListener("click", function(evt) {
- var test1 = document.querySelector("#test1"),
- test2 = document.querySelector("#test2");
- test1.setAttribute("style", "width: 300px");
- test2.setAttribute("style", "width: 300px");
- }, false);
- })();
- </script>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-009.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-009.html
deleted file mode 100644
index a3e2f1a6bd2..00000000000
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-009.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Transitions Test: transition-timing-function - ease(initial value)</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
-<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
-<meta name="assert" content="Test checks that the initial value of 'transition-timing-function' property is 'ease'.">
-<style>
- div {
- height: 100px;
- transition-duration: 2s;
- transition-property: width;
- width: 100px;
- }
- #test1 {
- background-color: blue;
- transition-timing-function: ease;
- }
- #test2 {
- background-color: yellow;
- }
-</style>
-<body>
- <p>Click the 'Start' button. Test passes if the width growth of blue square is <strong>equivalent</strong> to the yellow square.</p>
- <div id="test1"></div>
- <div id="test2"></div>
- <button>Start</button>
- <script>
- (function() {
- var button = document.querySelector("button");
- button.addEventListener("click", function(evt) {
- var test1 = document.querySelector("#test1"),
- test2 = document.querySelector("#test2");
- test1.setAttribute("style", "width: 300px");
- test2.setAttribute("style", "width: 300px");
- }, false);
- })();
- </script>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-010.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-010-manual.html
index 16af8065518..953d7210b6d 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-010.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-010-manual.html
@@ -4,7 +4,6 @@
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
<meta name="assert" content="Test checks that the first parameter of 'steps()' function specifies the number of intervals.">
<style>
div {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-011.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-011.html
deleted file mode 100644
index 5d0f5a25b25..00000000000
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-011.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Transitions Test: transition-timing-function - steps(the second parameter default 'end')</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
-<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
-<meta name="assert" content="Test checks that the second parameter of 'steps()' function is default 'end'.">
-<style>
- div {
- height: 100px;
- transition-duration: 2s;
- transition-property: width;
- width: 100px;
- }
- #test1 {
- background-color: blue;
- transition-timing-function: steps(2);
- }
- #test2 {
- background-color: yellow;
- transition-timing-function: steps(2, end);
- }
-</style>
-<body>
- <p>Click the 'Start' button. Test passes if the width growth of blue square is <strong>equivalent</strong> to the yellow square.</p>
- <div id="test1"></div>
- <div id="test2"></div>
- <button>Start</button>
- <script>
- (function() {
- var button = document.querySelector("button");
- button.addEventListener("click", function(evt) {
- var test1 = document.querySelector("#test1"),
- test2 = document.querySelector("#test2");
- test1.setAttribute("style", "width: 300px");
- test2.setAttribute("style", "width: 300px");
- }, false);
- })();
- </script>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-012.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-012.html
deleted file mode 100644
index f3bc812217e..00000000000
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-012.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Transitions Test: transition-timing-function - steps(-2)</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
-<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
-<meta name="assert" content="Test checks that the 'steps()' function with negative number is invalid, the transition-timing-function will use 'ease' as default.">
-<style>
- div {
- height: 100px;
- transition-duration: 2s;
- transition-property: width;
- width: 100px;
- }
- #test1 {
- background-color: blue;
- transition-timing-function: steps(-2);
- }
- #test2 {
- background-color: yellow;
- transition-timing-function: ease;
- }
-</style>
-<body>
- <p>Click the 'Start' button. Test passes if the width growth of blue square is <strong>equivalent</strong> to the yellow square.</p>
- <div id="test1"></div>
- <div id="test2"></div>
- <button>Start</button>
- <script>
- (function() {
- var button = document.querySelector("button");
- button.addEventListener("click", function(evt) {
- var test1 = document.querySelector("#test1"),
- test2 = document.querySelector("#test2");
- test1.setAttribute("style", "width: 300px");
- test2.setAttribute("style", "width: 300px");
- }, false);
- })();
- </script>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-013.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-013.html
deleted file mode 100644
index 5d89c45e024..00000000000
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-013.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Transitions Test: transition-timing-function - steps(0)</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="author" title="Shiyou Tan" href="mailto:shiyoux.tan@intel.com">
-<link rel="help" title="2.3. The 'transition-timing-function' Property" href="http://www.w3.org/TR/css3-transitions/#transition-timing-function">
-<meta name="flags" content="interact">
-<meta name="assert" content="Test checks that the 'steps()' function with '0' is invalid, the transition-timing-function will use 'ease' as default.">
-<style>
- div {
- height: 100px;
- transition-duration: 2s;
- transition-property: width;
- width: 100px;
- }
- #test1 {
- background-color: blue;
- transition-timing-function: steps(0);
- }
- #test2 {
- background-color: yellow;
- transition-timing-function: ease;
- }
-</style>
-<body>
- <p>Click the 'Start' button. Test passes if the width growth of blue square is <strong>equivalent</strong> to the yellow square.</p>
- <div id="test1"></div>
- <div id="test2"></div>
- <button>Start</button>
- <script>
- (function() {
- var button = document.querySelector("button");
- button.addEventListener("click", function(evt) {
- var test1 = document.querySelector("#test1"),
- test2 = document.querySelector("#test2");
- test1.setAttribute("style", "width: 300px");
- test2.setAttribute("style", "width: 300px");
- }, false);
- })();
- </script>
-</body>
diff --git a/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-shorthand.html b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-shorthand.html
new file mode 100644
index 00000000000..01239e199e6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-ui/parsing/outline-shorthand.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS UI Level 3: outline sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-ui-3/#outline">
+<link rel="help" href="https://drafts.csswg.org/cssom/#serializing-css-values">
+<meta name="assert" content="outline supports the full grammar '<outline-color> || <outline> || <outline>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('outline', '3px ridge blue', {
+ 'outline-color': 'blue',
+ 'outline-style': 'ridge',
+ 'outline-width': '3px'
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-values/clamp-length-computed.html b/tests/wpt/web-platform-tests/css/css-values/clamp-length-computed.html
new file mode 100644
index 00000000000..67dc19a99f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/clamp-length-computed.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-values-4/#comp-func">
+<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/computed-testcommon.js"></script>
+<div id="container" style="font-size: 20px">
+ <div id="target"></div>
+ <div id="reference"></div>
+</div>
+<script>
+const property = 'letter-spacing';
+
+function test_length_equals(value, expected) {
+ const reference = document.getElementById('reference');
+ reference.style[property] = '';
+ reference.style[property] = expected;
+ const computed = getComputedStyle(reference)[property];
+ test_computed_value(property, value, computed);
+}
+
+test_length_equals('clamp(10px, 20px, 30px)', '20px');
+test_length_equals('clamp(10px, 5px, 30px)', '10px');
+test_length_equals('clamp(10px, 35px, 30px)', '30px');
+
+// clamp(MIN, VAL, MAX) is identical to max(MIN, min(VAL, MAX)),
+// so MIN wins over MAX if they are in the wrong order.
+test_length_equals('clamp(30px, 100px, 20px)', '30px');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-values/clamp-length-invalid.html b/tests/wpt/web-platform-tests/css/css-values/clamp-length-invalid.html
new file mode 100644
index 00000000000..68c298b7ffc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/clamp-length-invalid.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-values-4/#comp-func">
+<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/parsing-testcommon.js"></script>
+<script>
+function test_invalid_length(value) {
+ test_invalid_value('letter-spacing', value);
+}
+
+test_invalid_length('clamp()');
+test_invalid_length('clamp( )');
+test_invalid_length('clamp(,)');
+test_invalid_length('clamp(1px, )');
+test_invalid_length('clamp(, 1px)');
+test_invalid_length('clamp(1px, 1px)');
+test_invalid_length('clamp(1px, , 1px)');
+test_invalid_length('clamp(, 1px, 1px)');
+test_invalid_length('clamp(1px, 1px, )');
+test_invalid_length('clamp(1px, 1px, 1px, )');
+test_invalid_length('clamp(1px 1px 1px)');
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-values/clamp-length-serialize.html b/tests/wpt/web-platform-tests/css/css-values/clamp-length-serialize.html
new file mode 100644
index 00000000000..4719e4c0254
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/clamp-length-serialize.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-values-4/#comp-func">
+<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../support/parsing-testcommon.js"></script>
+<script>
+function test_valid_length(value, expected) {
+ test_valid_value('letter-spacing', value, expected);
+}
+
+test_valid_length('clamp(1px, 2px, 3px)', 'clamp(1px, 2px, 3px)');
+test_valid_length('clamp(1px, 2px, clamp(2px, 3px, 4px))', 'clamp(1px, 2px, clamp(2px, 3px, 4px))');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-values/min-max-percentage-length-interpolation.html b/tests/wpt/web-platform-tests/css/css-values/min-max-percentage-length-interpolation.html
new file mode 100644
index 00000000000..14af1352d17
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-values/min-max-percentage-length-interpolation.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<link rel="help" href="https://drafts.csswg.org/css-values-4/#comp-func">
+<link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<title>Tests interpolation between CSS comparison functions</title>
+<style>
+@keyframes anim {
+ from {
+ width: min(50px, 30%);
+ height: min(75%, 160px);
+ }
+ to {
+ width: max(75%, 100px);
+ height: max(50px, 20%);
+ }
+}
+
+.test {
+ background-color: green;
+ animation: anim 2000000s linear;
+ animation-delay: -1000000s;
+}
+
+.container {
+ position: absolute;
+ width: 200px;
+ height: 200px;
+}
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div class="container">
+ <div class="test"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-serialization.html b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-serialization.html
new file mode 100644
index 00000000000..cce35592885
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/mediaqueries/aspect-ratio-serialization.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Media Queries Test: 'aspect-ratio' serializes with spaces around ' / '.</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#serialize-a-css-component-value">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(function() {
+ assert_equals(matchMedia("(aspect-ratio: 1/3)").media, "(aspect-ratio: 1 / 3)");
+}, "<ratio> serializes with spaces around the integer.");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html b/tests/wpt/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html
new file mode 100644
index 00000000000..ac1087bb65b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<link rel="help" href="https://github.com/fallaciousreasoning/backbutton-mediaquery/blob/master/explainer.md" />
+<script type="text/javascript" src="/resources/testharness.js"></script>
+<script type="text/javascript" src="/resources/testharnessreport.js"></script>
+<script type="text/javascript" src="resources/matchmedia-utils.js"></script>
+<script>
+ query_should_be_css_parseable("(navigation-controls)");
+ query_should_be_css_parseable("(navigation-controls: none)");
+ query_should_be_css_parseable("(navigation-controls: back-button)");
+ query_should_not_be_css_parseable("(navigation-controls: none back-button)");
+ query_should_not_be_css_parseable("(navigation-controls: back-button/none)");
+ query_should_be_js_parseable("(navigation-controls)");
+ query_should_be_js_parseable("(navigation-controls: none)");
+ query_should_be_js_parseable("(navigation-controls: back-button)");
+ query_should_not_be_js_parseable("(navigation-controls: none back-button)");
+ query_should_not_be_js_parseable("(navigation-controls: back-button/none)");
+ test(() => {
+ let booleanContext = window.matchMedia("(navigation-controls)");
+ let none = window.matchMedia("(navigation-controls: none)");
+ assert_equals(booleanContext.matches, !none.matches);
+ }, "Check that none evaluates to false in the boolean context");
+</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/motion/animation/offset-interpolation.html b/tests/wpt/web-platform-tests/css/motion/animation/offset-interpolation.html
index 04f4d4b3bd7..2ee011bd77a 100644
--- a/tests/wpt/web-platform-tests/css/motion/animation/offset-interpolation.html
+++ b/tests/wpt/web-platform-tests/css/motion/animation/offset-interpolation.html
@@ -57,9 +57,9 @@
to: 'path("M0 0H 300") 600px 0deg',
method: 'CSS Animations',
}, [
- {at: -0.3, expect: 'path("M0 0H 170") 470px auto'},
- {at: 0, expect: 'path("M0 0H 200") 500px auto'},
- {at: 0.3, expect: 'path("M0 0H 230") 530px auto'},
+ {at: -0.3, expect: 'path("M0 0H 170") 470px'},
+ {at: 0, expect: 'path("M0 0H 200") 500px'},
+ {at: 0.3, expect: 'path("M0 0H 230") 530px'},
{at: 0.6, expect: 'path("M0 0H 260") 560px 0deg'},
{at: 1, expect: 'path("M0 0H 300") 600px 0deg'},
{at: 1.5, expect: 'path("M0 0H 350") 650px 0deg'},
@@ -85,9 +85,9 @@
to: 'path("M0 0H 300") 600px 0deg',
method: 'Web Animations',
}, [
- {at: -0.3, expect: 'path("M0 0V 200") 470px auto'},
- {at: 0, expect: 'path("M0 0V 200") 500px auto'},
- {at: 0.3, expect: 'path("M0 0V 200") 530px auto'},
+ {at: -0.3, expect: 'path("M0 0V 200") 470px'},
+ {at: 0, expect: 'path("M0 0V 200") 500px'},
+ {at: 0.3, expect: 'path("M0 0V 200") 530px'},
{at: 0.6, expect: 'path("M0 0H 300") 560px 0deg'},
{at: 1, expect: 'path("M0 0H 300") 600px 0deg'},
{at: 1.5, expect: 'path("M0 0H 300") 650px 0deg'},
diff --git a/tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html b/tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html
index 3fe8a5b20d8..7f8a0fd34c3 100644
--- a/tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html
+++ b/tests/wpt/web-platform-tests/css/motion/parsing/offset-parsing-valid.html
@@ -22,15 +22,18 @@ test_valid_value("offset", "left bottom ray(0rad closest-side) 10px auto 30deg /
test_valid_value("offset", "left top");
test_valid_value("offset", "none 30deg reverse", "none reverse 30deg");
test_valid_value("offset", "none 50px reverse 30deg");
-test_valid_value("offset", "none calc(10px + 20%) auto");
+test_valid_value("offset", "none calc(10px + 20%) auto", "none calc(20% + 10px)");
test_valid_value("offset", "none reverse");
-test_valid_value("offset", "path(\"M 0 0 H 1\") -200% auto");
+test_valid_value("offset", "path(\"M 0 0 H 1\") -200% auto", "path(\"M 0 0 H 1\") -200%");
test_valid_value("offset", "path(\"M 0 0 H 1\") -200%");
test_valid_value("offset", "path('M 0 0 H 1') 50px", "path(\"M 0 0 H 1\") 50px");
-test_valid_value("offset", "path(\"M 0 0 H 1\") auto");
+test_valid_value("offset", "path(\"M 0 0 H 1\") auto", "path(\"M 0 0 H 1\")");
+test_valid_value("offset", "path(\"M 0 0 H 1\") auto 0deg", "path(\"M 0 0 H 1\")");
+test_valid_value("offset", "path(\"M 0 0 H 1\") auto 0rad", "path(\"M 0 0 H 1\")");
+test_valid_value("offset", "path(\"M 0 0 H 1\") auto 0.5turn", "path(\"M 0 0 H 1\") auto 0.5turn");
test_valid_value("offset", "path('M 0 0 H 1') reverse 30deg 50px", "path(\"M 0 0 H 1\") 50px reverse 30deg");
test_valid_value("offset", "path(\"M 0 0 H 1\")");
-test_valid_value("offset", "path('m 20 0 h 100') -7rad 8px / auto", "path(\"m 20 0 h 100\") 8px -7rad / auto");
+test_valid_value("offset", "path('m 20 0 h 100') -7rad 8px / auto", "path(\"m 20 0 h 100\") 8px -7rad");
test_valid_value("offset", "path('m 0 30 v 100') -7rad 8px / left top", "path(\"m 0 30 v 100\") 8px -7rad / left top");
test_valid_value("offset", "path('m 0 0 h 100') -7rad 8px", "path(\"m 0 0 h 100\") 8px -7rad");
test_valid_value("offset", "path(\"M 0 0 H 100\") 100px 0deg");
diff --git a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
index e7ee011cdb4..24c47e136c8 100644
--- a/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/interpolation-testcommon.js
@@ -11,11 +11,10 @@
return keyframe === neutralKeyframe;
}
- // For the CSS interpolation methods, we set the animation duration long
- // enough that any advancement in time during the test is irrelevant in terms
- // of the progress. We then set the delay to be negative half the duration, so
- // we are immediately at the halfway point of the animation. Finally, we use
- // an easing function that maps halfway to whatever progress we actually want.
+ // For the CSS interpolation methods set the delay to be negative half the
+ // duration, so we are immediately at the halfway point of the animation.
+ // We then use an easing function that maps halfway to whatever progress
+ // we actually want.
var cssAnimationsInterpolation = {
name: 'CSS Animations',
@@ -36,8 +35,8 @@
(isNeutralKeyframe(to) ? '' : `to {${property}:${to};}`) +
'}';
target.style.animationName = 'animation' + id;
- target.style.animationDuration = '2e9s';
- target.style.animationDelay = '-1e9s';
+ target.style.animationDuration = '100s';
+ target.style.animationDelay = '-50s';
target.style.animationTimingFunction = createEasing(at);
},
};
@@ -54,9 +53,9 @@
},
interpolate: function(property, from, to, at, target) {
// Force a style recalc on target to set the 'from' value.
- getComputedStyle(target).left;
- target.style.transitionDuration = '2e9s';
- target.style.transitionDelay = '-1e9s';
+ getComputedStyle(target).getPropertyValue(property);
+ target.style.transitionDuration = '100s';
+ target.style.transitionDelay = '-50s';
target.style.transitionTimingFunction = createEasing(at);
target.style.transitionProperty = property;
target.style.setProperty(property, isNeutralKeyframe(to) ? '' : to);
@@ -76,9 +75,9 @@
},
interpolate: function(property, from, to, at, target) {
// Force a style recalc on target to set the 'from' value.
- getComputedStyle(target).left;
- target.style.transitionDuration = '2e9s';
- target.style.transitionDelay = '-1e9s';
+ getComputedStyle(target).getPropertyValue(property);
+ target.style.transitionDuration = '100s';
+ target.style.transitionDelay = '-50s';
target.style.transitionTimingFunction = createEasing(at);
target.style.transitionProperty = 'all';
target.style.setProperty(property, isNeutralKeyframe(to) ? '' : to);
@@ -104,8 +103,11 @@
property = property.substring(0, i) + property[i + 1].toUpperCase() + property.substring(i + 2);
}
}
- if (property === 'offset')
+ if (property === 'offset') {
property = 'cssOffset';
+ } else if (property === 'float') {
+ property = 'cssFloat';
+ }
}
var keyframes = [];
if (!isNeutralKeyframe(from)) {
@@ -124,11 +126,11 @@
}
var animation = target.animate(keyframes, {
fill: 'forwards',
- duration: 1,
+ duration: 100 * 1000,
easing: createEasing(at),
});
animation.pause();
- animation.currentTime = 0.5;
+ animation.currentTime = 50 * 1000;
},
};
@@ -150,7 +152,7 @@
return 'steps(1, start)';
}
if (y == 0.5) {
- return 'steps(2, end)';
+ return 'linear';
}
// Approximate using a bezier.
var b = (8 * y - 1) / 6;
diff --git a/tests/wpt/web-platform-tests/css/support/shorthand-testcommon.js b/tests/wpt/web-platform-tests/css/support/shorthand-testcommon.js
index 1fd603c290c..3298113513f 100644
--- a/tests/wpt/web-platform-tests/css/support/shorthand-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/shorthand-testcommon.js
@@ -3,18 +3,37 @@
function test_shorthand_value(property, value, longhands) {
const stringifiedValue = JSON.stringify(value);
+ for (let longhand of Object.keys(longhands).sort()) {
+ test(function(){
+ var div = document.getElementById('target') || document.createElement('div');
+ div.style[property] = "";
+ try {
+ div.style[property] = value;
+
+ const readValue = div.style[longhand];
+ assert_equals(readValue, longhands[longhand], longhand + " should be canonical");
+
+ div.style[longhand] = "";
+ div.style[longhand] = readValue;
+ assert_equals(div.style[longhand], readValue, "serialization should round-trip");
+ } finally {
+ div.style[property] = "";
+ }
+ }, "e.style['" + property + "'] = " + stringifiedValue + " should set " + longhand);
+ }
+
test(function(){
var div = document.getElementById('target') || document.createElement('div');
div.style[property] = "";
- div.style[property] = value;
-
- for (let longhand of Object.keys(longhands).sort()) {
- const readValue = div.style[longhand];
- assert_equals(readValue, longhands[longhand], longhand + " should be canonical");
-
- div.style[longhand] = "";
- div.style[longhand] = readValue;
- assert_equals(div.style[longhand], readValue, "serialization should round-trip");
+ try {
+ const expectedLength = div.style.length;
+ div.style[property] = value;
+ for (let longhand of Object.keys(longhands).sort()) {
+ div.style[longhand] = "";
+ }
+ assert_equals(div.style.length, expectedLength);
+ } finally {
+ div.style[property] = "";
}
- }, "e.style['" + property + "'] = " + stringifiedValue + " should set the longhand values");
+ }, "e.style['" + property + "'] = " + stringifiedValue + " should not set unrelated longhands");
}
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-008-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-008-ref.html
index f5edbedfb74..7cf8fafc933 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-008-ref.html
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-margin-box-border-radius-008-ref.html
@@ -40,7 +40,7 @@
}
</style>
- <body class="bfc">
+ <main class="bfc">
<span class="container">
<div class="shape"></div>
</span>
@@ -50,5 +50,5 @@
<div class="box" style="height: 36px; top: 60px; right: 120px;"></div>
<div class="box" style="height: 12px; top: 96px; right: 120px;"></div> <!-- Box at corner -->
<div class="box" style="height: 12px; top: 108px; right: 120px;"></div> <!-- Box at corner -->
- </body>
+ </main>
</html>
diff --git a/tests/wpt/web-platform-tests/dom/nodes/MutationObserver-sanity.html b/tests/wpt/web-platform-tests/dom/nodes/MutationObserver-sanity.html
new file mode 100644
index 00000000000..a4f6382b944
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/nodes/MutationObserver-sanity.html
@@ -0,0 +1,95 @@
+<!doctype html>
+<meta charset=utf-8>
+<title></title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+ test(() => {
+ var m = new MutationObserver(() => {});
+ assert_throws_js(TypeError, () => {
+ m.observe(document, {});
+ });
+ }, "Should throw if none of childList, attributes, characterData are true");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { childList: true });
+ m.disconnect();
+ }, "Should not throw if childList is true");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { attributes: true });
+ m.disconnect();
+ }, "Should not throw if attributes is true");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { characterData: true });
+ m.disconnect();
+ }, "Should not throw if characterData is true");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { attributeOldValue: true });
+ m.disconnect();
+ }, "Should not throw if attributeOldValue is true and attributes is omitted");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { characterDataOldValue: true });
+ m.disconnect();
+ }, "Should not throw if characterDataOldValue is true and characterData is omitted");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { attributes: ["abc"] });
+ m.disconnect();
+ }, "Should not throw if attributeFilter is present and attributes is omitted");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ assert_throws_js(TypeError, () => {
+ m.observe(document, { childList: true, attributeOldValue: true,
+ attributes: false });
+ });
+ }, "Should throw if attributeOldValue is true and attributes is false");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { childList: true, attributeOldValue: true,
+ attributes: true });
+ m.disconnect();
+ }, "Should not throw if attributeOldValue and attributes are both true");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ assert_throws_js(TypeError, () => {
+ m.observe(document, { childList: true, attributeFilter: ["abc"],
+ attributes: false });
+ });
+ }, "Should throw if attributeFilter is present and attributes is false");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { childList: true, attributeFilter: ["abc"],
+ attributes: true });
+ m.disconnect();
+ }, "Should not throw if attributeFilter is present and attributes is true");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ assert_throws_js(TypeError, () => {
+ m.observe(document, { childList: true, characterDataOldValue: true,
+ characterData: false });
+ });
+ }, "Should throw if characterDataOldValue is true and characterData is false");
+
+ test(() => {
+ var m = new MutationObserver(() => {});
+ m.observe(document, { childList: true, characterDataOldValue: true,
+ characterData: true });
+ m.disconnect();
+ }, "Should not throw if characterDataOldValue is true and characterData is true");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/clearkey-update-non-ascii-input.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/clearkey-update-non-ascii-input.js
index b34c493fd11..7a5c073bfab 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/clearkey-update-non-ascii-input.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/clearkey-update-non-ascii-input.js
@@ -15,7 +15,7 @@ function runTest(config, qualifier)
var mediaKeySession;
var messageEventFired = false;
- return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function (access) {
+ var p = navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function (access) {
initDataType = access.getConfiguration().initDataTypes[0];
initData = getInitData(config.content, initDataType);
return access.createMediaKeys();
@@ -34,15 +34,19 @@ function runTest(config, qualifier)
+ '}]}';
messageEventFired = true;
return messageEvent.target.update(stringToUint8Array(jwkSet));
- }).then(function () {
- assert_unreached('Error: update() should fail because the processed message has non-ASCII character.');
}).catch(function (error) {
- if(messageEventFired){
- assert_equals(error.name, 'TypeError');
- }
- else {
- assert_unreached('Error: ' + error.name);
+ // Ensure we reached the update() call we are trying to test.
+ if (!messageEventFired) {
+ assert_unreached(
+ `Failed to reach the update() call. Error: '${error.name}' '${error.message}'`);
}
+
+ // Propagate the error on through.
+ throw error;
});
+
+ return promise_rejects_js(
+ test, TypeError, p,
+ 'update() should fail because the processed message has non-ASCII character.');
}, testname);
-} \ No newline at end of file
+}
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js
index 8b883ccacff..9fd42ee85fa 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js
@@ -57,17 +57,16 @@ function runTest(config,qualifier) {
// with the provided initData. generateRequest() should fail with an
// TypeError. Returns a promise that is resolved
// if the error occurred and rejected otherwise.
- return navigator.requestMediaKeySystemAccess(testspec.keysystem, getSimpleConfigurationForInitDataType(testspec.initDataType)).then(function(access) {
+ var p = navigator.requestMediaKeySystemAccess(testspec.keysystem, getSimpleConfigurationForInitDataType(testspec.initDataType)).then(function(access) {
return access.createMediaKeys();
}).then(function(mediaKeys) {
var mediaKeySession = mediaKeys.createSession("temporary");
return mediaKeySession.generateRequest(testspec.initDataType, testspec.initData);
- }).then(test.step_func(function() {
- assert_unreached('generateRequest() succeeded unexpectedly');
- }), test.step_func(function(error) {
- assert_equals(error.name, 'TypeError');
- }));
- },testspec.testname);
+ });
+
+ return promise_rejects_js(test, TypeError, p,
+ "generateRequest() should fail");
+ }, testspec.testname);
});
});
}
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/invalid-license.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/invalid-license.js
index 992eef5dcf7..89d43769e53 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/invalid-license.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/invalid-license.js
@@ -7,7 +7,7 @@ function runTest(config)
var invalidLicense = new Uint8Array([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77]);
var messageEventFired = false;
- return navigator.requestMediaKeySystemAccess(keySystem, getSimpleConfiguration()).then(function (access) {
+ var p = navigator.requestMediaKeySystemAccess(keySystem, getSimpleConfiguration()).then(function (access) {
initDataType = access.getConfiguration().initDataTypes[0];
initData = getInitData(initDataType);
return access.createMediaKeys();
@@ -20,14 +20,19 @@ function runTest(config)
}).then(function (messageEvent) {
messageEventFired = true;
return messageEvent.target.update(invalidLicense);
- }).then(function () {
- assert_unreached('Error: update() should fail because of an invalid license.');
}).catch(function (error) {
- if(messageEventFired) {
- assert_equals(error.name, 'TypeError');
- } else {
- assert_unreached('Error: ' + error.name);
+ // Ensure we reached the update() call we are trying to test.
+ if (!messageEventFired) {
+ assert_unreached(
+ `Failed to reach the update() call. Error: '${error.name}' '${error.message}'`);
}
+
+ // Propagate the error on through.
+ throw error;
});
+
+ return promise_rejects_js(
+ test, TypeError, p,
+ 'update() should fail because of an invalid license.');
}, 'Update with invalid Clear Key license');
-} \ No newline at end of file
+}
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js
index edfcbfc6133..a60d4a1e768 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js
@@ -11,11 +11,17 @@ function runTest(config, qualifier) {
modifiedtestname = testname.replace( '%audiocontenttype', audiocontenttypes ).replace( '%videocontenttype', videocontenttypes );
promise_test(function(test) {
- return navigator.requestMediaKeySystemAccess(keySystem, configurations).then(function(a) {
- assert_unreached('Unexpected requestMediaKeySystemAccess() success.');
- }, function(e) {
- assert_equals(e.name, expectedError);
- });
+ var p = navigator.requestMediaKeySystemAccess(keySystem, configurations);
+ // expectedError is a string name for the error. We can differentiate
+ // JS Errors from DOMExceptions by checking whether
+ // window[expectedError] exists. If it does, expectedError is the name
+ // of a JS Error subclass and window[expectedError] is the constructor
+ // for that subclass. Otherwise it's a name for a DOMException.
+ if (window[expectedError]) {
+ return promise_rejects_js(test, window[expectedError], p);
+ } else {
+ return promise_rejects_dom(test, expectedError, p);
+ }
}, prefix + modifiedtestname + ' should result in ' + expectedError );
}
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/setmediakeys.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/setmediakeys.js
index f161e6712fd..a85adeaeafc 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/setmediakeys.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/setmediakeys.js
@@ -30,7 +30,8 @@ function runTest(config, qualifier) {
assert_unreached('setMediaKeys should fail when setting to wrong kind of object (Date)');
}, function(error) {
// The error should be TypeError.
- assert_equals(error.name, 'TypeError', 'setMediaKeys should return a TypeError when setting to wrong kind of object (Date)');
+ assert_throws_js(TypeError, () => { throw error; },
+ 'setMediaKeys should return a TypeError when setting to wrong kind of object (Date)');
return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]);
}).then(function(access) {
assert_equals(access.keySystem, config.keysystem)
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/syntax-mediakeysession.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/syntax-mediakeysession.js
index 3663a7b930d..fac31cbb3e5 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/syntax-mediakeysession.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/syntax-mediakeysession.js
@@ -57,7 +57,14 @@ function runTest(config) {
func: function (mk6, type) {
return mk6.createSession().generateRequest(type, new Uint8Array(0));
}
- }
+ },
+ // Using an empty type should return a 'TypeError'.
+ {
+ exception: 'TypeError',
+ func: function (mk7, type) {
+ return mk7.createSession().generateRequest('', initData);
+ }
+ },
];
function generateRequestTestExceptions(){
return new Promise(function(resolve, reject){
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/temporary-license-type.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/temporary-license-type.js
index cb0b0e67fef..44c9f158085 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/temporary-license-type.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/temporary-license-type.js
@@ -37,7 +37,7 @@ function runTest(config,qualifier) {
return;
}
- assert_equals(error.name, 'TypeError' );
+ assert_throws_js(TypeError, () => { throw error; });
test.done();
} ) );
}).catch(onFailure);
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/update-disallowed-input.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/update-disallowed-input.js
index b5adaf7f125..2a30ad38d43 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/update-disallowed-input.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/update-disallowed-input.js
@@ -21,7 +21,7 @@ function runTest(config)
return jwkSet + ',"test":"unknown"'.repeat(4000) + '}';
}
- return navigator.requestMediaKeySystemAccess(keySystem, getSimpleConfiguration()).then(function(access) {
+ var p = navigator.requestMediaKeySystemAccess(keySystem, getSimpleConfiguration()).then(function(access) {
initDataType = access.getConfiguration().initDataTypes[0];
initData = getInitData(initDataType);
return access.createMediaKeys();
@@ -36,10 +36,8 @@ function runTest(config)
assert_greater_than(jwkSet.length, 65536);
var jwkSetArray = stringToUint8Array(jwkSet);
return mediaKeySession.update(jwkSetArray);
- }).then(function () {
- assert_unreached('update() with a response longer than 64Kb succeed');
- }).catch(function (error) {
- assert_equals(error.name, 'TypeError');
});
+
+ return promise_rejects_js(test, TypeError, p);
}, 'update() with invalid response (longer than 64Kb characters) should fail.');
}
diff --git a/tests/wpt/web-platform-tests/encrypted-media/util/utils.js b/tests/wpt/web-platform-tests/encrypted-media/util/utils.js
index 41bd71f9b88..79f8c7ea6d1 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/util/utils.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/util/utils.js
@@ -240,25 +240,31 @@ function test_exception(testCase /*...*/) {
var exception = testCase.exception;
var args = Array.prototype.slice.call(arguments, 1);
- // Currently blink throws for TypeErrors rather than returning
- // a rejected promise (http://crbug.com/359386).
- // FIXME: Remove try/catch once they become failed promises.
- try {
- return func.apply(null, args).then(
- function (result) {
- assert_unreached(format_value(func));
- },
- function (error) {
- assert_equals(error.name, exception, format_value(func));
- assert_not_equals(error.message, "", format_value(func));
+ // This should really be rewritten in terms of the promise_rejects_*
+ // testharness utility functions, but that needs the async test involved
+ // passed in, and we don't have that here.
+ return func.apply(null, args).then(
+ function (result) {
+ assert_unreached(format_value(func));
+ },
+ function (error) {
+ assert_not_equals(error.message, "", format_value(func));
+ // `exception` is a string name for the error. We can differentiate
+ // JS Errors from DOMExceptions by checking whether
+ // window[exception] exists. If it does, expectedError is the name
+ // of a JS Error subclass and window[exception] is the constructor
+ // for that subclass. Otherwise it's a name for a DOMException.
+ if (window[exception]) {
+ assert_throws_js(window[exception],
+ () => { throw error; },
+ format_value(func));
+ } else {
+ assert_throws_dom(exception,
+ () => { throw error; },
+ format_value(func));
}
- );
- } catch (e) {
- // Only allow 'TypeError' exceptions to be thrown.
- // Everything else should be a failed promise.
- assert_equals('TypeError', exception, format_value(func));
- assert_equals(e.name, exception, format_value(func));
- }
+ }
+ );
}
// Check that the events sequence (array of strings) matches the pattern (array of either strings, or
diff --git a/tests/wpt/web-platform-tests/fetch/sec-metadata/portal.tentative.https.sub.html b/tests/wpt/web-platform-tests/fetch/sec-metadata/portal.tentative.https.sub.html
new file mode 100644
index 00000000000..2a9df1f0117
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/sec-metadata/portal.tentative.https.sub.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+<script src=/fetch/sec-metadata/resources/helper.js></script>
+<script src=/common/utils.js></script>
+<body>
+<script>
+ const USER = true;
+ const FORCED = false;
+
+ function create_test(host, expectations) {
+ async_test(t => {
+ let p = document.createElement('portal');
+ p.addEventListener('message', t.step_func(e => {
+ assert_header_equals(e.data, expectations);
+ t.done();
+ }));
+
+ let url = `https://${host}/fetch/sec-metadata/resources/post-to-owner.py`;
+ p.src = url;
+ document.body.appendChild(p);
+ }, `{{host}} -> ${host} portal`);
+ }
+
+ create_test("{{host}}:{{ports[https][0]}}", {
+ // TODO(mkwst): 'document' seems right, I guess? Perhaps a portal-specific destination would be better?
+ "dest": "document",
+ "site": "same-origin",
+ "user": "",
+ "mode": "nested-navigate"
+ });
+
+ create_test("{{hosts[][www]}}:{{ports[https][0]}}", {
+ "dest": "document",
+ "site": "same-site",
+ "user": "",
+ "mode": "nested-navigate"
+ });
+
+ create_test("{{hosts[alt][www]}}:{{ports[https][0]}}", {
+ "dest": "document",
+ "site": "cross-site",
+ "user": "",
+ "mode": "nested-navigate"
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/fetch/sec-metadata/resources/post-to-owner.py b/tests/wpt/web-platform-tests/fetch/sec-metadata/resources/post-to-owner.py
index c5ded49d71b..096f33b04a2 100644
--- a/tests/wpt/web-platform-tests/fetch/sec-metadata/resources/post-to-owner.py
+++ b/tests/wpt/web-platform-tests/fetch/sec-metadata/resources/post-to-owner.py
@@ -14,6 +14,8 @@ def main(request, response):
window.opener.postMessage(data, "*");
if (window.top != window)
window.top.postMessage(data, "*");
+ if (window.portalHost)
+ window.portalHost.postMessage(data, "*");
</script>
""" % json.dumps({
"dest": request.headers.get("sec-fetch-dest", ""),
diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
index f664819d340..50fe71a2c6f 100644
--- a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
+++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
@@ -561,6 +561,32 @@ addPromiseTest(function() {
});
}, "Resolving a promise with a cross-origin location should work (cross-site).");
+addTest(function(win) {
+ var desc = Object.getOwnPropertyDescriptor(window, "onmouseenter");
+ var f = () => {};
+
+ // Check that it has [LenientThis] behavior
+ assert_equals(desc.get.call({}), undefined, "getter should return undefined");
+ desc.set.call({}, f); // Should not throw.
+
+ // Check that we can apply it to a same-origin window.
+ assert_equals(desc.get.call(B), null, "Should be able to read the value");
+ desc.set.call(B, f);
+ assert_equals(desc.get.call(B), f, "Value should have updated");
+ // And reset it for our next test
+ desc.set.call(B, null);
+ assert_equals(desc.get.call(B), null, "Should have been reset");
+
+ // Check that applying it to a cross-origin window throws instead of doing
+ // the [LenientThis] behavior.
+ assert_throws("SecurityError", () => {
+ desc.get.call(win);
+ }, "Should throw when getting cross-origin");
+ assert_throws("SecurityError", () => {
+ desc.set.call(win, f);
+ }, "Should throw when setting cross-origin");
+}, "LenientThis behavior");
+
// We do a fresh load of the subframes for each test to minimize side-effects.
// It would be nice to reload ourselves as well, but we can't do that without
// disrupting the test harness.
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/table-column-width-ref.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/table-column-width-ref.html
new file mode 100644
index 00000000000..1eb7c00d214
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/table-column-width-ref.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<div style="border: 1px solid green; width: 0">Text</div>
diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/table-column-width.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/table-column-width.html
new file mode 100644
index 00000000000..6358e14a392
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/tables/table-column-width.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<link rel="match" href="table-column-width-ref.html">
+<table style="display: block">
+ <colgroup style="display: block">
+ <col style="border: 1px solid green; display: block" width="0"></col>
+ </colgroup>
+</table>
+<script>
+ document.querySelector("col").append("Text");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html
new file mode 100644
index 00000000000..1d231d52cde
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/canvas-aspect-ratio.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<title>Canvas width and height attributes are used to infer aspect-ratio</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ canvas {
+ width: 100%;
+ max-width: 100px;
+ height: auto;
+ }
+</style>
+<body>
+<script>
+let t = async_test("Canvas width and height attributes are used to infer aspect-ratio");
+function assert_ratio(img, expected) {
+ let epsilon = 0.001;
+ assert_approx_equals(parseInt(getComputedStyle(img).width, 10) / parseInt(getComputedStyle(img).height, 10), expected, epsilon);
+}
+// Create and append a new canvas and immediately check the ratio.
+t.step(function() {
+ var canvas = document.createElement("canvas");
+ canvas.setAttribute("width", "250");
+ canvas.setAttribute("height", "100");
+ document.body.appendChild(canvas);
+ // Canvases always use the aspect ratio from their surface size.
+ assert_ratio(canvas, 2.5);
+
+ t.done();
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html
index ae266882b19..c9ce86869e1 100644
--- a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html
+++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/img-aspect-ratio.tentative.html
@@ -9,7 +9,6 @@
height: auto;
}
</style>
-<img src=broken width=100 height=125>
<img src="/images/green.png">
<img src="/images/green.png" width=100 height=125>
<script>
@@ -18,10 +17,37 @@ function assert_ratio(img, expected) {
let epsilon = 0.001;
assert_approx_equals(parseInt(getComputedStyle(img).width, 10) / parseInt(getComputedStyle(img).height, 10), expected, epsilon);
}
+// Create and append a new image and immediately check the ratio.
+// This is not racy because the spec requires the user agent to queue a task:
+// https://html.spec.whatwg.org/multipage/images.html#updating-the-image-data
+t.step(function() {
+ var img = new Image();
+ img.width = 250;
+ img.height = 100;
+ img.src = "/images/blue.png";
+ document.body.appendChild(img);
+ assert_ratio(img, 2.5);
+
+ img = new Image();
+ img.setAttribute("width", "0.8");
+ img.setAttribute("height", "0.2");
+ img.src = "/images/blue.png";
+ document.body.appendChild(img);
+ assert_ratio(img, 4);
+
+ img = new Image();
+ img.setAttribute("width", "50%");
+ img.setAttribute("height", "25%");
+ img.src = "/images/blue.png";
+ document.body.appendChild(img);
+ // Percentages should be ignored.
+ assert_equals(getComputedStyle(img).height, "0px");
+});
+
onload = t.step_func_done(function() {
let images = document.querySelectorAll("img");
- assert_ratio(images[0], 0.8);
- assert_ratio(images[2], 2.0); // 2.0 is the original aspect ratio of green.png
- assert_ratio(images[1], 2.0); // Loaded image's aspect ratio, at least by default, overrides width / height ratio.
+ assert_ratio(images[2], 1.266); // 1.266 is the original aspect ratio of blue.png
+ assert_ratio(images[1], 2.0); // 2.0 is the original aspect ratio of green.png
+ assert_ratio(images[0], 2.0); // Loaded image's aspect ratio, at least by default, overrides width / height ratio.
});
</script>
diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html
new file mode 100644
index 00000000000..2b4937046d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/video-aspect-ratio.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<title>Video width and height attributes are not used to infer aspect-ratio</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/media.js"></script>
+<style>
+ video {
+ width: 100%;
+ max-width: 100px;
+ height: auto;
+ }
+</style>
+<body>
+<script>
+let t = async_test("Video width and height attributes are not used to infer aspect-ratio");
+function assert_ratio(img, expected) {
+ let epsilon = 0.001;
+ assert_approx_equals(parseInt(getComputedStyle(img).width, 10) / parseInt(getComputedStyle(img).height, 10), expected, epsilon);
+}
+// Create and append a new video and immediately check the ratio.
+// This is not racy because the spec requires the user agent to queue a task:
+// https://html.spec.whatwg.org/multipage/media.html#concept-media-load-algorithm
+t.step(function() {
+ var video = document.createElement("video");
+ video.setAttribute("width", "250");
+ video.setAttribute("height", "100");
+ video.src = getVideoURI('/media/2x2-green');
+ document.body.appendChild(video);
+ // Videos default to a size of 300x150px and calculate their aspect ratio
+ // based on that before the video is loaded. So this should be 2, ignoring
+ // the 2.5 that it would be based on the attributes.
+ assert_ratio(video, 2);
+
+ video.onloadeddata = t.step_func_done(function() {
+ // When loaded this video is square.
+ assert_ratio(video, 1);
+ });
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-different-load.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-different-load.html
new file mode 100644
index 00000000000..4802665cdda
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/playing-the-media-resource/pause-remove-from-document-different-load.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<title>paused state when removing from a document</title>
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1583052">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/media.js"></script>
+<div id="log"></div>
+<div>
+ <video hidden></video>
+</div>
+<script>
+function afterStableState(func) {
+ var a = new Audio();
+ a.volume = 0;
+ a.addEventListener('volumechange', func);
+}
+
+async_test(function(t) {
+ var v = document.querySelector('video');
+
+ // Much like pause-remove-from-document.html, modulo this call.
+ document.body.appendChild(v);
+
+ v.src = getVideoURI('/media/movie_300');
+ v.play();
+ v.onplaying = t.step_func(function() {
+ assert_false(v.paused, 'paused after playing');
+ v.parentNode.removeChild(v);
+ assert_false(v.paused, 'paused after removing');
+ afterStableState(t.step_func(function() {
+ assert_true(v.paused, 'paused after stable state');
+ v.onpause = t.step_func(function() {
+ assert_true(v.paused, 'paused in pause event');
+ // re-insert and verify that it stays paused
+ document.body.appendChild(v);
+ t.step_timeout(function() {
+ assert_true(v.paused, 'paused after re-inserting');
+ t.done();
+ }, 0);
+ });
+ }));
+ });
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/expected-fail/unhandled-rejection.html b/tests/wpt/web-platform-tests/infrastructure/expected-fail/unhandled-rejection.html
new file mode 100644
index 00000000000..f25f6e088fa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/expected-fail/unhandled-rejection.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Unhandled rejection</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+Promise.reject(new Error("error outside any setup or test"));
+</script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/unhandled-rejection.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/unhandled-rejection.html.ini
new file mode 100644
index 00000000000..39773dfe714
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/expected-fail/unhandled-rejection.html.ini
@@ -0,0 +1,4 @@
+[unhandled-rejection.html]
+ [Unhandled rejection]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
index 9373f4e43bf..2af9eb2a324 100644
--- a/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
+++ b/tests/wpt/web-platform-tests/interfaces/IndexedDB.idl
@@ -163,7 +163,7 @@ interface IDBKeyRange {
optional boolean lowerOpen = false,
optional boolean upperOpen = false);
- boolean _includes(any key);
+ boolean includes(any key);
};
[Exposed=(Window,Worker)]
diff --git a/tests/wpt/web-platform-tests/interfaces/WebIDL.idl b/tests/wpt/web-platform-tests/interfaces/WebIDL.idl
index 78d85c13fb9..a118dfd1a20 100644
--- a/tests/wpt/web-platform-tests/interfaces/WebIDL.idl
+++ b/tests/wpt/web-platform-tests/interfaces/WebIDL.idl
@@ -9,9 +9,9 @@ typedef (Int8Array or Int16Array or Int32Array or
typedef (ArrayBufferView or ArrayBuffer) BufferSource;
[Exposed=(Window,Worker),
- Constructor(optional DOMString message = "", optional DOMString name = "Error"),
Serializable]
interface DOMException { // but see below note about ECMAScript binding
+ constructor(optional DOMString message = "", optional DOMString name = "Error");
readonly attribute DOMString name;
readonly attribute DOMString message;
readonly attribute unsigned short code;
diff --git a/tests/wpt/web-platform-tests/interfaces/cookie-store.idl b/tests/wpt/web-platform-tests/interfaces/cookie-store.idl
index 533884fdb58..c3204b2515a 100644
--- a/tests/wpt/web-platform-tests/interfaces/cookie-store.idl
+++ b/tests/wpt/web-platform-tests/interfaces/cookie-store.idl
@@ -78,9 +78,9 @@ dictionary CookieListItem {
typedef sequence<CookieListItem> CookieList;
[Exposed=Window,
- SecureContext,
- Constructor(DOMString type, optional CookieChangeEventInit eventInitDict)]
+ SecureContext]
interface CookieChangeEvent : Event {
+ constructor(DOMString type, optional CookieChangeEventInit eventInitDict = {});
readonly attribute CookieList changed;
readonly attribute CookieList deleted;
};
@@ -90,9 +90,9 @@ dictionary CookieChangeEventInit : EventInit {
CookieList deleted;
};
-[Exposed=ServiceWorker,
- Constructor(DOMString type, optional ExtendableCookieChangeEventInit eventInitDict)
+[Exposed=ServiceWorker
] interface ExtendableCookieChangeEvent : ExtendableEvent {
+ constructor(DOMString type, optional ExtendableCookieChangeEventInit eventInitDict = {});
readonly attribute CookieList changed;
readonly attribute CookieList deleted;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/css-masking.idl b/tests/wpt/web-platform-tests/interfaces/css-masking.idl
index 80f908d42f3..6db59eddbe0 100644
--- a/tests/wpt/web-platform-tests/interfaces/css-masking.idl
+++ b/tests/wpt/web-platform-tests/interfaces/css-masking.idl
@@ -3,11 +3,13 @@
// (https://github.com/tidoust/reffy-reports)
// Source: CSS Masking Module Level 1 (https://drafts.fxtf.org/css-masking-1/)
+[Exposed=Window]
interface SVGClipPathElement : SVGElement {
readonly attribute SVGAnimatedEnumeration clipPathUnits;
readonly attribute SVGAnimatedTransformList transform;
};
+[Exposed=Window]
interface SVGMaskElement : SVGElement {
readonly attribute SVGAnimatedEnumeration maskUnits;
readonly attribute SVGAnimatedEnumeration maskContentUnits;
diff --git a/tests/wpt/web-platform-tests/interfaces/feature-policy.idl b/tests/wpt/web-platform-tests/interfaces/feature-policy.idl
index 3ded1e9b0c6..85601321a17 100644
--- a/tests/wpt/web-platform-tests/interfaces/feature-policy.idl
+++ b/tests/wpt/web-platform-tests/interfaces/feature-policy.idl
@@ -18,6 +18,7 @@ partial interface Document {
partial interface HTMLIFrameElement {
[SameObject] readonly attribute FeaturePolicy featurePolicy;
};
+[Exposed=Window]
interface FeaturePolicyViolationReportBody : ReportBody {
readonly attribute DOMString featureId;
readonly attribute DOMString? sourceFile;
diff --git a/tests/wpt/web-platform-tests/interfaces/fetch.idl b/tests/wpt/web-platform-tests/interfaces/fetch.idl
index f529c4501bf..eacc69d8b9d 100644
--- a/tests/wpt/web-platform-tests/interfaces/fetch.idl
+++ b/tests/wpt/web-platform-tests/interfaces/fetch.idl
@@ -5,9 +5,10 @@
typedef (sequence<sequence<ByteString>> or record<ByteString, ByteString>) HeadersInit;
-[Constructor(optional HeadersInit init),
- Exposed=(Window,Worker)]
+[Exposed=(Window,Worker)]
interface Headers {
+ constructor(optional HeadersInit init);
+
void append(ByteString name, ByteString value);
void delete(ByteString name);
ByteString? get(ByteString name);
@@ -15,6 +16,7 @@ interface Headers {
void set(ByteString name, ByteString value);
iterable<ByteString, ByteString>;
};
+
typedef (Blob or BufferSource or FormData or URLSearchParams or ReadableStream or USVString) BodyInit;
interface mixin Body {
readonly attribute ReadableStream? body;
@@ -27,9 +29,10 @@ interface mixin Body {
};
typedef (Request or USVString) RequestInfo;
-[Constructor(RequestInfo input, optional RequestInit init = {}),
- Exposed=(Window,Worker)]
+[Exposed=(Window,Worker)]
interface Request {
+ constructor(RequestInfo input, optional RequestInit init = {});
+
readonly attribute ByteString method;
readonly attribute USVString url;
[SameObject] readonly attribute Headers headers;
@@ -72,8 +75,10 @@ enum RequestMode { "navigate", "same-origin", "no-cors", "cors" };
enum RequestCredentials { "omit", "same-origin", "include" };
enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" };
enum RequestRedirect { "follow", "error", "manual" };
-[Constructor(optional BodyInit? body = null, optional ResponseInit init = {}), Exposed=(Window,Worker)]
-interface Response {
+
+[Exposed=(Window,Worker)]interface Response {
+ constructor(optional BodyInit? body = null, optional ResponseInit init = {});
+
[NewObject] static Response error();
[NewObject] static Response redirect(USVString url, optional unsigned short status = 302);
@@ -98,6 +103,7 @@ dictionary ResponseInit {
};
enum ResponseType { "basic", "cors", "default", "error", "opaque", "opaqueredirect" };
+
partial interface mixin WindowOrWorkerGlobalScope {
- [NewObject] Promise<Response> fetch(RequestInfo input, optional RequestInit init);
+ [NewObject] Promise<Response> fetch(RequestInfo input, optional RequestInit init = {});
};
diff --git a/tests/wpt/web-platform-tests/interfaces/gamepad.idl b/tests/wpt/web-platform-tests/interfaces/gamepad.idl
index b7497c276f1..27541bf2553 100644
--- a/tests/wpt/web-platform-tests/interfaces/gamepad.idl
+++ b/tests/wpt/web-platform-tests/interfaces/gamepad.idl
@@ -38,6 +38,6 @@ interface GamepadEvent: Event {
[SameObject] readonly attribute Gamepad gamepad;
};
-dictionary GamepadEventInit: EventInit {
+dictionary GamepadEventInit : EventInit {
required Gamepad gamepad;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/generic-sensor.idl b/tests/wpt/web-platform-tests/interfaces/generic-sensor.idl
index 2921c50a65e..f3eeb9bf968 100644
--- a/tests/wpt/web-platform-tests/interfaces/generic-sensor.idl
+++ b/tests/wpt/web-platform-tests/interfaces/generic-sensor.idl
@@ -19,9 +19,9 @@ dictionary SensorOptions {
double frequency;
};
-[Constructor(DOMString type, SensorErrorEventInit errorEventInitDict),
- SecureContext, Exposed=(DedicatedWorker, Window)]
+[SecureContext, Exposed=(DedicatedWorker, Window)]
interface SensorErrorEvent : Event {
+ constructor(DOMString type, SensorErrorEventInit errorEventInitDict);
readonly attribute DOMException error;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/magnetometer.idl b/tests/wpt/web-platform-tests/interfaces/magnetometer.idl
index be6cbc9d47a..da1f22bb668 100644
--- a/tests/wpt/web-platform-tests/interfaces/magnetometer.idl
+++ b/tests/wpt/web-platform-tests/interfaces/magnetometer.idl
@@ -3,9 +3,10 @@
// (https://github.com/tidoust/reffy-reports)
// Source: Magnetometer (https://w3c.github.io/magnetometer/)
-[Constructor(optional MagnetometerSensorOptions sensorOptions = {}), SecureContext,
+[SecureContext,
Exposed=Window]
interface Magnetometer : Sensor {
+ constructor(optional MagnetometerSensorOptions sensorOptions = {});
readonly attribute double? x;
readonly attribute double? y;
readonly attribute double? z;
@@ -17,9 +18,10 @@ dictionary MagnetometerSensorOptions : SensorOptions {
MagnetometerLocalCoordinateSystem referenceFrame = "device";
};
-[Constructor(optional MagnetometerSensorOptions sensorOptions = {}), SecureContext,
+[SecureContext,
Exposed=Window]
interface UncalibratedMagnetometer : Sensor {
+ constructor(optional MagnetometerSensorOptions sensorOptions = {});
readonly attribute double? x;
readonly attribute double? y;
readonly attribute double? z;
diff --git a/tests/wpt/web-platform-tests/interfaces/notifications.idl b/tests/wpt/web-platform-tests/interfaces/notifications.idl
index 1a55c31bb04..d79e9076c81 100644
--- a/tests/wpt/web-platform-tests/interfaces/notifications.idl
+++ b/tests/wpt/web-platform-tests/interfaces/notifications.idl
@@ -3,9 +3,10 @@
// (https://github.com/tidoust/reffy-reports)
// Source: Notifications API Standard (https://notifications.spec.whatwg.org/)
-[Constructor(DOMString title, optional NotificationOptions options = {}),
- Exposed=(Window,Worker)]
+[Exposed=(Window,Worker)]
interface Notification : EventTarget {
+ constructor(DOMString title, optional NotificationOptions options = {});
+
static readonly attribute NotificationPermission permission;
[Exposed=Window] static Promise<NotificationPermission> requestPermission(optional NotificationPermissionCallback deprecatedCallback);
@@ -81,9 +82,10 @@ partial interface ServiceWorkerRegistration {
Promise<sequence<Notification>> getNotifications(optional GetNotificationOptions filter = {});
};
-[Constructor(DOMString type, NotificationEventInit eventInitDict),
- Exposed=ServiceWorker]
+[Exposed=ServiceWorker]
interface NotificationEvent : ExtendableEvent {
+ constructor(DOMString type, NotificationEventInit eventInitDict);
+
readonly attribute Notification notification;
readonly attribute DOMString action;
};
diff --git a/tests/wpt/web-platform-tests/interfaces/orientation-event.idl b/tests/wpt/web-platform-tests/interfaces/orientation-event.idl
index a8eef516f29..af5bc546ac1 100644
--- a/tests/wpt/web-platform-tests/interfaces/orientation-event.idl
+++ b/tests/wpt/web-platform-tests/interfaces/orientation-event.idl
@@ -7,8 +7,9 @@ partial interface Window {
[SecureContext] attribute EventHandler ondeviceorientation;
};
-[Constructor(DOMString type, optional DeviceOrientationEventInit eventInitDict = {}), Exposed=Window, SecureContext]
+[Exposed=Window, SecureContext]
interface DeviceOrientationEvent : Event {
+ constructor(DOMString type, optional DeviceOrientationEventInit eventInitDict = {});
readonly attribute double? alpha;
readonly attribute double? beta;
readonly attribute double? gamma;
@@ -41,22 +42,23 @@ partial interface Window {
[SecureContext] attribute EventHandler ondevicemotion;
};
-[SecureContext]
+[Exposed=Window, SecureContext]
interface DeviceMotionEventAcceleration {
readonly attribute double? x;
readonly attribute double? y;
readonly attribute double? z;
};
-[SecureContext]
+[Exposed=Window, SecureContext]
interface DeviceMotionEventRotationRate {
readonly attribute double? alpha;
readonly attribute double? beta;
readonly attribute double? gamma;
};
-[Constructor(DOMString type, optional DeviceMotionEventInit eventInitDict = {}), Exposed=Window, SecureContext]
+[Exposed=Window, SecureContext]
interface DeviceMotionEvent : Event {
+ constructor(DOMString type, optional DeviceMotionEventInit eventInitDict = {});
readonly attribute DeviceMotionEventAcceleration? acceleration;
readonly attribute DeviceMotionEventAcceleration? accelerationIncludingGravity;
readonly attribute DeviceMotionEventRotationRate? rotationRate;
diff --git a/tests/wpt/web-platform-tests/interfaces/orientation-sensor.idl b/tests/wpt/web-platform-tests/interfaces/orientation-sensor.idl
index 9ee099881b0..2ea3d38240e 100644
--- a/tests/wpt/web-platform-tests/interfaces/orientation-sensor.idl
+++ b/tests/wpt/web-platform-tests/interfaces/orientation-sensor.idl
@@ -17,12 +17,14 @@ dictionary OrientationSensorOptions : SensorOptions {
OrientationSensorLocalCoordinateSystem referenceFrame = "device";
};
-[Constructor(optional OrientationSensorOptions sensorOptions = {}), SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
interface AbsoluteOrientationSensor : OrientationSensor {
+ constructor(optional OrientationSensorOptions sensorOptions = {});
};
-[Constructor(optional OrientationSensorOptions sensorOptions = {}), SecureContext, Exposed=Window]
+[SecureContext, Exposed=Window]
interface RelativeOrientationSensor : OrientationSensor {
+ constructor(optional OrientationSensorOptions sensorOptions = {});
};
dictionary AbsoluteOrientationReadingValues {
diff --git a/tests/wpt/web-platform-tests/interfaces/payment-handler.idl b/tests/wpt/web-platform-tests/interfaces/payment-handler.idl
index b5d79decb06..c87c855d439 100644
--- a/tests/wpt/web-platform-tests/interfaces/payment-handler.idl
+++ b/tests/wpt/web-platform-tests/interfaces/payment-handler.idl
@@ -40,8 +40,9 @@ partial interface ServiceWorkerGlobalScope {
attribute EventHandler oncanmakepayment;
};
-[Constructor(DOMString type, CanMakePaymentEventInit eventInitDict), Exposed=ServiceWorker]
+[Exposed=ServiceWorker]
interface CanMakePaymentEvent : ExtendableEvent {
+ constructor(DOMString type, CanMakePaymentEventInit eventInitDict);
readonly attribute USVString topOrigin;
readonly attribute USVString paymentRequestOrigin;
readonly attribute FrozenArray<PaymentMethodData> methodData;
@@ -65,8 +66,9 @@ dictionary PaymentMethodChangeResponse {
object paymentMethodErrors;
};
-[Constructor(DOMString type, PaymentRequestEventInit eventInitDict), Exposed=ServiceWorker]
+[Exposed=ServiceWorker]
interface PaymentRequestEvent : ExtendableEvent {
+ constructor(DOMString type, PaymentRequestEventInit eventInitDict);
readonly attribute USVString topOrigin;
readonly attribute USVString paymentRequestOrigin;
readonly attribute DOMString paymentRequestId;
diff --git a/tests/wpt/web-platform-tests/interfaces/proximity.idl b/tests/wpt/web-platform-tests/interfaces/proximity.idl
index 570a29fd37b..d4c8fae3a54 100644
--- a/tests/wpt/web-platform-tests/interfaces/proximity.idl
+++ b/tests/wpt/web-platform-tests/interfaces/proximity.idl
@@ -3,7 +3,7 @@
// (https://github.com/tidoust/reffy-reports)
// Source: Proximity Sensor (https://w3c.github.io/proximity/)
-[Constructor(optional SensorOptions sensorOptions), SecureContext, Exposed=Window]
+[Constructor(optional SensorOptions sensorOptions = {}), SecureContext, Exposed=Window]
interface ProximitySensor : Sensor {
readonly attribute double? distance;
readonly attribute double? max;
diff --git a/tests/wpt/web-platform-tests/interfaces/touch-events.idl b/tests/wpt/web-platform-tests/interfaces/touch-events.idl
index 1a8c9d7d24e..84c48284a1b 100644
--- a/tests/wpt/web-platform-tests/interfaces/touch-events.idl
+++ b/tests/wpt/web-platform-tests/interfaces/touch-events.idl
@@ -9,46 +9,47 @@ enum TouchType {
};
dictionary TouchInit {
- required long identifier;
+ required long identifier;
required EventTarget target;
- double clientX = 0;
- double clientY = 0;
- double screenX = 0;
- double screenY = 0;
- double pageX = 0;
- double pageY = 0;
- float radiusX = 0;
- float radiusY = 0;
- float rotationAngle = 0;
- float force = 0;
- double altitudeAngle = 0;
- double azimuthAngle = 0;
- TouchType touchType = "direct";
+ double clientX = 0;
+ double clientY = 0;
+ double screenX = 0;
+ double screenY = 0;
+ double pageX = 0;
+ double pageY = 0;
+ float radiusX = 0;
+ float radiusY = 0;
+ float rotationAngle = 0;
+ float force = 0;
+ double altitudeAngle = 0;
+ double azimuthAngle = 0;
+ TouchType touchType = "direct";
};
-[Constructor(TouchInit touchInitDict), Exposed=Window]
+[Exposed=Window]
interface Touch {
- readonly attribute long identifier;
+ constructor(TouchInit touchInitDict);
+ readonly attribute long identifier;
readonly attribute EventTarget target;
- readonly attribute double screenX;
- readonly attribute double screenY;
- readonly attribute double clientX;
- readonly attribute double clientY;
- readonly attribute double pageX;
- readonly attribute double pageY;
- readonly attribute float radiusX;
- readonly attribute float radiusY;
- readonly attribute float rotationAngle;
- readonly attribute float force;
- readonly attribute float altitudeAngle;
- readonly attribute float azimuthAngle;
- readonly attribute TouchType touchType;
+ readonly attribute double screenX;
+ readonly attribute double screenY;
+ readonly attribute double clientX;
+ readonly attribute double clientY;
+ readonly attribute double pageX;
+ readonly attribute double pageY;
+ readonly attribute float radiusX;
+ readonly attribute float radiusY;
+ readonly attribute float rotationAngle;
+ readonly attribute float force;
+ readonly attribute float altitudeAngle;
+ readonly attribute float azimuthAngle;
+ readonly attribute TouchType touchType;
};
[Exposed=Window]
interface TouchList {
readonly attribute unsigned long length;
- getter Touch? item(unsigned long index);
+ getter Touch? item (unsigned long index);
};
dictionary TouchEventInit : EventModifierInit {
@@ -57,8 +58,9 @@ dictionary TouchEventInit : EventModifierInit {
sequence<Touch> changedTouches = [];
};
-[Constructor(DOMString type, optional TouchEventInit eventInitDict = {}), Exposed=Window]
+[Exposed=Window]
interface TouchEvent : UIEvent {
+ constructor(DOMString type, optional TouchEventInit eventInitDict = {});
readonly attribute TouchList touches;
readonly attribute TouchList targetTouches;
readonly attribute TouchList changedTouches;
diff --git a/tests/wpt/web-platform-tests/interfaces/url.idl b/tests/wpt/web-platform-tests/interfaces/url.idl
index 998052da6ef..b0b237e8524 100644
--- a/tests/wpt/web-platform-tests/interfaces/url.idl
+++ b/tests/wpt/web-platform-tests/interfaces/url.idl
@@ -3,10 +3,11 @@
// (https://github.com/tidoust/reffy-reports)
// Source: URL Standard (https://url.spec.whatwg.org/)
-[Constructor(USVString url, optional USVString base),
- Exposed=(Window,Worker),
+[Exposed=(Window,Worker),
LegacyWindowAlias=webkitURL]
interface URL {
+ constructor(USVString url, optional USVString base);
+
stringifier attribute USVString href;
readonly attribute USVString origin;
attribute USVString protocol;
@@ -23,9 +24,10 @@ interface URL {
USVString toJSON();
};
-[Constructor(optional (sequence<sequence<USVString>> or record<USVString, USVString> or USVString) init = ""),
- Exposed=(Window,Worker)]
+[Exposed=(Window,Worker)]
interface URLSearchParams {
+ constructor(optional (sequence<sequence<USVString>> or record<USVString, USVString> or USVString) init = "");
+
void append(USVString name, USVString value);
void delete(USVString name);
USVString? get(USVString name);
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl b/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl
new file mode 100644
index 00000000000..61fcd6a730f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl
@@ -0,0 +1,21 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: WebXR Augmented Reality Module - Level 1 (https://immersive-web.github.io/webxr-ar-module/)
+
+enum XRSessionMode {
+ "inline",
+ "immersive-vr",
+ "immersive-ar"
+};
+
+enum XREnvironmentBlendMode {
+ "opaque",
+ "alpha-blend",
+ "additive"
+};
+
+partial interface XRSession {
+ // Attributes
+ readonly attribute XREnvironmentBlendMode environmentBlendMode;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/webxr-gamepads-module.idl b/tests/wpt/web-platform-tests/interfaces/webxr-gamepads-module.idl
new file mode 100644
index 00000000000..3aa17a7fe0c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/webxr-gamepads-module.idl
@@ -0,0 +1,14 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: WebXR Gamepads Module - Level 1 (https://immersive-web.github.io/webxr-gamepads-module/)
+
+partial interface XRInputSource {
+ [SameObject] readonly attribute Gamepad? gamepad;
+};
+
+enum GamepadMappingType {
+ "", // Defined in the Gamepad API
+ "standard", // Defined in the Gamepad API
+ "xr-standard",
+};
diff --git a/tests/wpt/web-platform-tests/intersection-observer/resources/cross-origin-child-iframe.sub.html b/tests/wpt/web-platform-tests/intersection-observer/resources/cross-origin-child-iframe.sub.html
new file mode 100644
index 00000000000..8e2c36ed560
--- /dev/null
+++ b/tests/wpt/web-platform-tests/intersection-observer/resources/cross-origin-child-iframe.sub.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<script src="/common/get-host-info.sub.js"></script>
+<iframe id="iframe"></iframe>
+<script>
+iframe.src =
+ get_host_info().ORIGIN + "/intersection-observer/resources/same-origin-grand-child-iframe.html";
+</script>
diff --git a/tests/wpt/web-platform-tests/intersection-observer/resources/same-origin-grand-child-iframe.html b/tests/wpt/web-platform-tests/intersection-observer/resources/same-origin-grand-child-iframe.html
new file mode 100644
index 00000000000..25db5a29d8a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/intersection-observer/resources/same-origin-grand-child-iframe.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<div id="target"></div>
+<script>
+const observer = new IntersectionObserver(records => {
+ window.top.postMessage(records[0].rootBounds, "*");
+}, {});
+observer.observe(target);
+</script>
diff --git a/tests/wpt/web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub.html b/tests/wpt/web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub.html
new file mode 100644
index 00000000000..57c0347ddc8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="./resources/intersection-observer-test-utils.js"></script>
+<iframe id="iframe"></iframe>
+<script>
+promise_test(async t => {
+ iframe.src =
+ get_host_info().HTTP_NOTSAMESITE_ORIGIN + "/intersection-observer/resources/cross-origin-child-iframe.sub.html";
+
+ const rootBounds = await new Promise(resolve => {
+ window.addEventListener("message", event => resolve(event.data));
+ }, { once: true } );
+
+ assert_equals(rootBounds.left, 0);
+ assert_equals(rootBounds.top, 0);
+ assert_equals(rootBounds.right, document.documentElement.clientWidth);
+ assert_equals(rootBounds.bottom, document.documentElement.clientHeight);
+}, "rootBounds in a same-origin iframe in the case where there is a cross-origin "
++ "iframe in between the top document and the same origin iframe");
+</script>
diff --git a/tests/wpt/web-platform-tests/intersection-observer/v2/delay-test.html b/tests/wpt/web-platform-tests/intersection-observer/v2/delay-test.html
index 231df32c31d..e3906ea2c29 100644
--- a/tests/wpt/web-platform-tests/intersection-observer/v2/delay-test.html
+++ b/tests/wpt/web-platform-tests/intersection-observer/v2/delay-test.html
@@ -46,7 +46,7 @@ async_test(t => {
// The first notification should be sent without delay.
waitForNotification(t, t.step_func(step0));
- function waitForDelay(timerExpiredBeforeLastFrame) {
+ function waitForDelay(timerExpiredBeforeLastFrame, nextStep) {
requestAnimationFrame(t.step_func(() => {
if (timerExpiredBeforeLastFrame) {
// New notifications should have been generated during the previous
@@ -54,11 +54,11 @@ async_test(t => {
assert_equals(entries.length, 2);
assert_greater_than(entries[1].time - entries[0].time, delay);
assert_false(entries[1].isVisible);
- t.done();
+ nextStep();
} else {
// Observer may not have updated yet. Wait for next frame.
let timerExpired = performance.now() - entries[0].time >= delay;
- waitForDelay(timerExpired);
+ waitForDelay(timerExpired, nextStep);
}
}));
}
@@ -69,7 +69,20 @@ async_test(t => {
// This should trigger a notification on the next run.
occluder.style.marginTop = "-10px";
// Enter a rAF loop until the delay timer expires.
- waitForDelay(false);
+ waitForDelay(false, step1);
+ }
+
+ function step1() {
+ occluder.style.marginTop = "10px";
+ // This style invalidation should cause a frame to run before the observer
+ // can generate a notification (due to delay parameter). Make sure the
+ // notification will still be generated even if we don't force more frames
+ // with a rAF loop.
+ t.step_timeout(() => {
+ assert_equals(entries.length, 3);
+ assert_true(entries[0].isVisible);
+ t.done();
+ }, 2 * delay);
}
}, "'delay' parameter throttles frequency of notifications.");
diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist
index be87d278640..d9ea5c17c7c 100644
--- a/tests/wpt/web-platform-tests/lint.whitelist
+++ b/tests/wpt/web-platform-tests/lint.whitelist
@@ -836,11 +836,6 @@ AHEM SYSTEM FONT: acid/acid3/test.html
AHEM SYSTEM FONT: resource-timing/resources/all_resource_types.htm
AHEM SYSTEM FONT: resource-timing/resources/iframe-reload-TAO.sub.html
-# These tests are imported from mozilla-central and can't be modified in WPT.
-# They do load Ahem as a web font, but they use their own copy which trips the
-# lint rule. Basically false positives.
-AHEM SYSTEM FONT: css/vendor-imports/mozilla/mozilla-central-reftests/*
-
# TODO: The following should be deleted along with the Ahem web font cleanup
# PR (https://github.com/web-platform-tests/wpt/pull/18702)
AHEM SYSTEM FONT: infrastructure/assumptions/ahem-ref.html
diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html
index 82fda880887..9816f5126a0 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/clipboard-event-handlers.tentative.html
@@ -30,6 +30,9 @@
"math"
);
async_test(test => {
+ test.step(function() {
+ assert_true(MathMLElement.prototype.hasOwnProperty(`on${name}`));
+ });
mathEl[`on${name}`] = test.step_func_done(e => {
assert_equals(e.currentTarget, mathEl,
"The event must be fired at the <math> element");
diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html
index e96feeaf096..be9bee9c6c6 100644
--- a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html
+++ b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html
@@ -125,6 +125,9 @@
}, `${name}: dynamic changes on the attribute`);
async_test(t => {
+ t.step(function() {
+ assert_true(MathMLElement.prototype.hasOwnProperty(name));
+ });
const element = document.createElementNS(
"http://www.w3.org/1998/Math/MathML",
"math"
diff --git a/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js b/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js
index 737ded18c9f..edd58ac3409 100644
--- a/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js
+++ b/tests/wpt/web-platform-tests/media-capabilities/decodingInfo.any.js
@@ -17,28 +17,28 @@ var minimalAudioConfiguration = {
};
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo());
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo());
}, "Test that decodingInfo rejects if it doesn't get a configuration");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({}));
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({}));
}, "Test that decodingInfo rejects if the MediaConfiguration isn't valid");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
video: minimalVideoConfiguration,
audio: minimalAudioConfiguration,
}));
}, "Test that decodingInfo rejects if the MediaConfiguration does not have a type");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
}));
}, "Test that decodingInfo rejects if the configuration doesn't have an audio or video field");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -51,7 +51,7 @@ promise_test(t => {
}, "Test that decodingInfo rejects if the video configuration has a negative framerate");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -64,7 +64,7 @@ promise_test(t => {
}, "Test that decodingInfo rejects if the video configuration has a framerate set to 0");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -77,7 +77,7 @@ promise_test(t => {
}, "Test that decodingInfo rejects if the video configuration has a framerate set to Infinity");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'fgeoa',
@@ -90,7 +90,7 @@ promise_test(t => {
}, "Test that decodingInfo rejects if the video configuration contentType doesn't parse");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'audio/fgeoa',
@@ -103,7 +103,7 @@ promise_test(t => {
}, "Test that decodingInfo rejects if the video configuration contentType isn't of type video");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"; foo="bar"',
@@ -116,7 +116,7 @@ promise_test(t => {
}, "Test that decodingInfo rejects if the video configuration contentType has more than one parameter");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; foo="bar"',
@@ -142,7 +142,7 @@ promise_test(t => {
}, "Test that decodingInfo() accepts framerate in the form of x/y");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -155,7 +155,7 @@ promise_test(t => {
}, "Test that decodingInfo() rejects framerate in the form of x/0");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -168,7 +168,7 @@ promise_test(t => {
}, "Test that decodingInfo() rejects framerate in the form of 0/y");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -181,7 +181,7 @@ promise_test(t => {
}, "Test that decodingInfo() rejects framerate in the form of -x/y");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -194,7 +194,7 @@ promise_test(t => {
}, "Test that decodingInfo() rejects framerate in the form of x/-y");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -233,7 +233,7 @@ promise_test(t => {
}, "Test that decodingInfo() accepts framerate as fraction with decimals");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
@@ -246,28 +246,28 @@ promise_test(t => {
}, "Test that decodingInfo() rejects framerate with trailing unallowed characters");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
audio: { contentType: 'fgeoa' },
}));
}, "Test that decodingInfo rejects if the audio configuration contenType doesn't parse");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
audio: { contentType: 'video/fgeoa' },
}));
}, "Test that decodingInfo rejects if the audio configuration contentType isn't of type audio");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
audio: { contentType: 'audio/webm; codecs="opus"; foo="bar"' },
}));
}, "Test that decodingInfo rejects if the audio configuration contentType has more than one parameters");
promise_test(t => {
- return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
+ return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
audio: { contentType: 'audio/webm; foo="bar"' },
}));
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.https.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.https.window.js
deleted file mode 100644
index fd2ff888e37..00000000000
--- a/tests/wpt/web-platform-tests/native-file-system/FileSystemBaseHandle-remove.tentative.https.window.js
+++ /dev/null
@@ -1,76 +0,0 @@
-// META: script=resources/test-helpers.js
-promise_test(async t => cleanupSandboxedFileSystem(),
- 'Cleanup to setup test environment');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const handle = await createFileWithContents(t, 'file-to-remove', '12345', root);
- await createFileWithContents(t, 'file-to-keep', 'abc', root);
- await root.removeEntry('file-to-remove');
-
- assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
- await promise_rejects(t, 'NotFoundError', getFileContents(handle));
-}, 'removeEntry() to remove a file');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const handle = await createFileWithContents(t, 'file-to-remove', '12345', root);
- await root.removeEntry('file-to-remove');
-
- await promise_rejects(t, 'NotFoundError', root.removeEntry('file-to-remove'));
-}, 'removeEntry() on an already removed file should fail');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const dir = await root.getDirectory('dir-to-remove', { create: true });
- await createFileWithContents(t, 'file-to-keep', 'abc', root);
- await root.removeEntry('dir-to-remove');
-
- assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
- await promise_rejects(t, 'NotFoundError', getSortedDirectoryEntries(dir));
-}, 'removeEntry() to remove an empty directory');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const dir = await root.getDirectory('dir-to-remove', { create: true });
- t.add_cleanup(() => root.removeEntry('dir-to-remove', { recursive: true }));
- await createEmptyFile(t, 'file-in-dir', dir);
-
- await promise_rejects(t, 'InvalidModificationError', root.removeEntry('dir-to-remove'));
- assert_array_equals(await getSortedDirectoryEntries(root), ['dir-to-remove/']);
- assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']);
-}, 'removeEntry() on a non-empty directory should fail');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const dir = await createDirectory(t, 'dir', root);
- await promise_rejects(t, new TypeError(), dir.removeEntry(""));
-}, 'removeEntry() with empty name should fail');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const dir = await createDirectory(t, 'dir', root);
- await promise_rejects(t, new TypeError(), dir.removeEntry(kCurrentDirectory));
-}, `removeEntry() with "${kCurrentDirectory}" name should fail`);
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const dir = await createDirectory(t, 'dir', root);
- await promise_rejects(t, new TypeError(), dir.removeEntry(kParentDirectory));
-}, `removeEntry() with "${kParentDirectory}" name should fail`);
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
-
- const dir_name = 'dir-name';
- const dir = await createDirectory(t, dir_name, root);
-
- const file_name = 'file-name';
- await createEmptyFile(t, file_name, dir);
-
- for (let i = 0; i < kPathSeparators.length; ++i) {
- const path_with_separator = `${dir_name}${kPathSeparators[i]}${file_name}`;
- await promise_rejects(t, new TypeError(), root.removeEntry(path_with_separator),
- `removeEntry() must reject names containing "${kPathSeparators[i]}"`);
- }
-}, 'removeEntry() with a path separator should fail.');
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.https.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.https.window.js
deleted file mode 100644
index 79154b058ff..00000000000
--- a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getDirectory.tentative.https.window.js
+++ /dev/null
@@ -1,106 +0,0 @@
-// META: script=resources/test-helpers.js
-promise_test(async t => cleanupSandboxedFileSystem(),
- 'Cleanup to setup test environment');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- await promise_rejects(t, 'NotFoundError', root.getDirectory('non-existing-dir'));
-}, 'getDirectory(create=false) rejects for non-existing directories');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const handle = await root.getDirectory('non-existing-dir', { create: true });
- t.add_cleanup(() => root.removeEntry('non-existing-dir', { recursive: true }));
-
- assert_false(handle.isFile);
- assert_true(handle.isDirectory);
- assert_equals(handle.name, 'non-existing-dir');
- assert_equals(await getDirectoryEntryCount(handle), 0);
- assert_array_equals(await getSortedDirectoryEntries(root), ['non-existing-dir/']);
-}, 'getDirectory(create=true) creates an empty directory');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const existing_handle = await root.getDirectory('dir-with-contents', { create: true });
- t.add_cleanup(() => root.removeEntry('dir-with-contents', { recursive: true }));
- const file_handle = await createEmptyFile(t, 'test-file', existing_handle);
-
- const handle = await root.getDirectory('dir-with-contents', { create: false });
-
- assert_false(handle.isFile);
- assert_true(handle.isDirectory);
- assert_equals(handle.name, 'dir-with-contents');
- assert_array_equals(await getSortedDirectoryEntries(handle), ['test-file']);
-}, 'getDirectory(create=false) returns existing directories');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const existing_handle = await root.getDirectory('dir-with-contents', { create: true });
- t.add_cleanup(() => root.removeEntry('dir-with-contents', { recursive: true }));
- const file_handle = await existing_handle.getFile('test-file', { create: true });
-
- const handle = await root.getDirectory('dir-with-contents', { create: true });
-
- assert_false(handle.isFile);
- assert_true(handle.isDirectory);
- assert_equals(handle.name, 'dir-with-contents');
- assert_array_equals(await getSortedDirectoryEntries(handle), ['test-file']);
-}, 'getDirectory(create=true) returns existing directories without erasing');
-
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- await createEmptyFile(t, 'file-name');
-
- await promise_rejects(t, 'TypeMismatchError', root.getDirectory('file-name'));
- await promise_rejects(t, 'TypeMismatchError', root.getDirectory('file-name', { create: false }));
- await promise_rejects(t, 'TypeMismatchError', root.getDirectory('file-name', { create: true }));
-}, 'getDirectory() when a file already exists with the same name');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- await promise_rejects(t, new TypeError(), dir.getDirectory("", { create: true }));
- await promise_rejects(t, new TypeError(), dir.getDirectory("", { create: false }));
-}, 'getDirectory() with empty name');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- await promise_rejects(t, new TypeError(), dir.getDirectory(kCurrentDirectory));
- await promise_rejects(t, new TypeError(), dir.getDirectory(kCurrentDirectory, { create: true }));
-}, `getDirectory() with "${kCurrentDirectory}" name`);
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const subdir = await createDirectory(t, 'subdir-name', /*parent=*/dir);
-
- await promise_rejects(t, new TypeError(), subdir.getDirectory(kParentDirectory));
- await promise_rejects(t, new TypeError(), subdir.getDirectory(kParentDirectory, { create: true }));
-}, `getDirectory() with "${kParentDirectory}" name`);
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
-
- const first_subdir_name = 'first-subdir-name';
- const first_subdir = await createDirectory(t, first_subdir_name, /*parent=*/dir);
-
- const second_subdir_name = 'second-subdir-name';
- const second_subdir = await createDirectory(t, second_subdir_name, /*parent=*/first_subdir);
-
- for (let i = 0; i < kPathSeparators.length; ++i) {
- const path_with_separator = `${first_subdir_name}${kPathSeparators[i]}${second_subdir_name}`;
- await promise_rejects(t, new TypeError(), dir.getDirectory(path_with_separator),
- `getDirectory() must reject names containing "${kPathSeparators[i]}"`);
- }
-}, 'getDirectory(create=false) with a path separator when the directory exists');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
-
- const subdir_name = 'subdir-name';
- const subdir = await createDirectory(t, subdir_name, /*parent=*/dir);
-
- for (let i = 0; i < kPathSeparators.length; ++i) {
- const path_with_separator = `${subdir_name}${kPathSeparators[i]}file_name`;
- await promise_rejects(t, new TypeError(), dir.getDirectory(path_with_separator, { create: true }),
- `getDirectory(true) must reject names containing "${kPathSeparators[i]}"`);
- }
-}, 'getDirectory(create=true) with a path separator');
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.https.window.js b/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.https.window.js
deleted file mode 100644
index fa38abbc544..00000000000
--- a/tests/wpt/web-platform-tests/native-file-system/FileSystemDirectoryHandle-getFile.tentative.https.window.js
+++ /dev/null
@@ -1,111 +0,0 @@
-// META: script=resources/test-helpers.js
-promise_test(async t => cleanupSandboxedFileSystem(),
- 'Cleanup to setup test environment');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- await promise_rejects(t, 'NotFoundError', dir.getFile('non-existing-file'));
-}, 'getFile(create=false) rejects for non-existing files');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const handle = await dir.getFile('non-existing-file', { create: true });
- t.add_cleanup(() => dir.removeEntry('non-existing-file'));
-
- assert_true(handle.isFile);
- assert_false(handle.isDirectory);
- assert_equals(handle.name, 'non-existing-file');
- assert_equals(await getFileSize(handle), 0);
- assert_equals(await getFileContents(handle), '');
-}, 'getFile(create=true) creates an empty file for non-existing files');
-
-promise_test(async t => {
- const existing_handle = await createFileWithContents(t, 'existing-file', '1234567890');
-
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const handle = await dir.getFile('existing-file');
-
- assert_true(handle.isFile);
- assert_false(handle.isDirectory);
- assert_equals(handle.name, 'existing-file');
- assert_equals(await getFileSize(handle), 10);
- assert_equals(await getFileContents(handle), '1234567890');
-}, 'getFile(create=false) returns existing files');
-
-promise_test(async t => {
- const existing_handle = await createFileWithContents(t, 'file-with-contents', '1234567890');
-
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const handle = await dir.getFile('file-with-contents', { create: true });
-
- assert_true(handle.isFile);
- assert_false(handle.isDirectory);
- assert_equals(handle.name, 'file-with-contents');
- assert_equals(await getFileSize(handle), 10);
- assert_equals(await getFileContents(handle), '1234567890');
-}, 'getFile(create=true) returns existing files without erasing');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const dir_handle = await dir.getDirectory('dir-name', { create: true });
- t.add_cleanup(() => dir.removeEntry('dir-name', { recursive: true }));
-
- await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name'));
-}, 'getFile(create=false) when a directory already exists with the same name');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const dir_handle = await dir.getDirectory('dir-name', { create: true });
- t.add_cleanup(() => dir.removeEntry('dir-name', { recursive: true }));
-
- await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name', { create: true }));
-}, 'getFile(create=true) when a directory already exists with the same name');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- await promise_rejects(t, new TypeError(), dir.getFile("", { create: true }));
- await promise_rejects(t, new TypeError(), dir.getFile("", { create: false }));
-}, 'getFile() with empty name');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- await promise_rejects(t, new TypeError(), dir.getFile(kCurrentDirectory));
- await promise_rejects(t, new TypeError(), dir.getFile(kCurrentDirectory, { create: true }));
-}, `getFile() with "${kCurrentDirectory}" name`);
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const subdir = await createDirectory(t, 'subdir-name', /*parent=*/dir);
-
- await promise_rejects(t, new TypeError(), subdir.getFile(kParentDirectory));
- await promise_rejects(t, new TypeError(), subdir.getFile(kParentDirectory, { create: true }));
-}, `getFile() with "${kParentDirectory}" name`);
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
-
- const subdir_name = 'subdir-name';
- const subdir = await createDirectory(t, subdir_name, /*parent=*/dir);
-
- const file_name = 'file-name';
- await createEmptyFile(t, file_name, /*parent=*/subdir);
-
- for (let i = 0; i < kPathSeparators.length; ++i) {
- const path_with_separator = `${subdir_name}${kPathSeparators[i]}${file_name}`;
- await promise_rejects(t, new TypeError(), dir.getFile(path_with_separator),
- `getFile() must reject names containing "${kPathSeparators[i]}"`);
- }
-}, 'getFile(create=false) with a path separator when the file exists.');
-
-promise_test(async t => {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
-
- const subdir_name = 'subdir-name';
- const subdir = await createDirectory(t, subdir_name, /*parent=*/dir);
-
- for (let i = 0; i < kPathSeparators.length; ++i) {
- const path_with_separator = `${subdir_name}${kPathSeparators[i]}file_name`;
- await promise_rejects(t, new TypeError(), dir.getFile(path_with_separator, { create: true }),
- `getFile(true) must reject names containing "${kPathSeparators[i]}"`);
- }
-}, 'getFile(create=true) with a path separator');
diff --git a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getDirectory.tentative.https.manual.window.js b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getDirectory.tentative.https.manual.window.js
new file mode 100644
index 00000000000..cfe729cd1f1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getDirectory.tentative.https.manual.window.js
@@ -0,0 +1,4 @@
+// META: script=/resources/testdriver.js
+// META: script=resources/test-helpers.js
+// META: script=resources/native-fs-test-helpers.js
+// META: script=script-tests/FileSystemDirectoryHandle-getDirectory.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.js b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.js
new file mode 100644
index 00000000000..0455cb80091
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-getFile.tentative.https.manual.window.js
@@ -0,0 +1,4 @@
+// META: script=/resources/testdriver.js
+// META: script=resources/test-helpers.js
+// META: script=resources/native-fs-test-helpers.js
+// META: script=script-tests/FileSystemDirectoryHandle-getFile.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-removeEntry.tentative.https.manual.window.js b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-removeEntry.tentative.https.manual.window.js
new file mode 100644
index 00000000000..8905a7afdea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-removeEntry.tentative.https.manual.window.js
@@ -0,0 +1,4 @@
+// META: script=/resources/testdriver.js
+// META: script=resources/test-helpers.js
+// META: script=resources/native-fs-test-helpers.js
+// META: script=script-tests/FileSystemDirectoryHandle-removeEntry.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemWriter.tentative.https.manual.window.js b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemWriter.tentative.https.manual.window.js
new file mode 100644
index 00000000000..25d8ee99585
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemWriter.tentative.https.manual.window.js
@@ -0,0 +1,4 @@
+// META: script=/resources/testdriver.js
+// META: script=resources/test-helpers.js
+// META: script=resources/native-fs-test-helpers.js
+// META: script=script-tests/FileSystemWriter.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/native-fs-test-helpers.js b/tests/wpt/web-platform-tests/native-file-system/resources/native-fs-test-helpers.js
new file mode 100644
index 00000000000..5ad8c04724b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/resources/native-fs-test-helpers.js
@@ -0,0 +1,49 @@
+// This file defines a directory_test() function that can be used to define
+// tests that require a FileSystemDirectoryHandle. The implementation of that
+// function in this file will ask the user to select an empty directory and
+// uses that directory.
+//
+// Another implementation of this function exists in
+// sandboxed-fs-test-helpers.js, where that version uses the sandboxed file
+// system instead.
+
+const directory_promise = (async () => {
+ await new Promise(resolve => {
+ window.addEventListener('DOMContentLoaded', resolve);
+ });
+
+ await window.test_driver.bless(
+ 'show a file picker.<br />Please select an empty directory');
+ const entries = await self.chooseFileSystemEntries({type: 'openDirectory'});
+ assert_true(entries instanceof FileSystemHandle);
+ assert_true(entries instanceof FileSystemDirectoryHandle);
+ for await (const entry of entries.getEntries()) {
+ assert_unreached('Selected directory is not empty');
+ }
+ return entries;
+})();
+
+function directory_test(func, description) {
+ promise_test(async t => {
+ const directory = await directory_promise;
+ // To be resilient against tests not cleaning up properly, cleanup before
+ // every test.
+ for await (let entry of directory.getEntries()) {
+ await directory.removeEntry(entry.name, {recursive: entry.isDirectory});
+ }
+ await func(t, directory);
+ }, description);
+}
+
+directory_test(async (t, dir) => {
+ assert_equals(await dir.queryPermission({writable: false}), 'granted');
+}, 'User succesfully selected an empty directory.');
+
+directory_test(async (t, dir) => {
+ const status = await dir.queryPermission({writable: true});
+ if (status == 'granted')
+ return;
+
+ await window.test_driver.bless('ask for write permission');
+ assert_equals(await dir.requestPermission({writable: true}), 'granted');
+}, 'User granted write access.');
diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/sandboxed-fs-test-helpers.js b/tests/wpt/web-platform-tests/native-file-system/resources/sandboxed-fs-test-helpers.js
new file mode 100644
index 00000000000..5f4f269d224
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/resources/sandboxed-fs-test-helpers.js
@@ -0,0 +1,25 @@
+// This file defines a directory_test() function that can be used to define
+// tests that require a FileSystemDirectoryHandle. The implementation of that
+// function in this file will return an empty directory in the sandboxed file
+// system.
+//
+// Another implementation of this function exists in native-fs-test-helpers.js,
+// where that version uses the native file system instead.
+
+async function cleanupSandboxedFileSystem() {
+ const dir =
+ await FileSystemDirectoryHandle.getSystemDirectory({type: 'sandbox'});
+ for await (let entry of dir.getEntries())
+ await dir.removeEntry(entry.name, {recursive: entry.isDirectory});
+}
+
+function directory_test(func, description) {
+ promise_test(async t => {
+ // To be extra resilient against bad tests, cleanup before every test.
+ await cleanupSandboxedFileSystem();
+
+ const dir =
+ await FileSystemDirectoryHandle.getSystemDirectory({type: 'sandbox'});
+ await func(t, dir);
+ }, description);
+}
diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
index b794cee0c5f..d0360921f1d 100644
--- a/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
+++ b/tests/wpt/web-platform-tests/native-file-system/resources/test-helpers.js
@@ -1,95 +1,87 @@
// A special path component meaning "this directory."
-const kCurrentDirectory = ".";
+const kCurrentDirectory = '.';
// A special path component meaning "the parent directory."
-const kParentDirectory = "..";
+const kParentDirectory = '..';
// Array of separators used to separate components in hierarchical paths.
let kPathSeparators;
-if (navigator.userAgent.includes("Windows NT")) {
- // Windows uses both '/' and '\' as path separators.
- kPathSeparators = ['/', '\\' ];
+if (navigator.userAgent.includes('Windows NT')) {
+ // Windows uses both '/' and '\' as path separators.
+ kPathSeparators = ['/', '\\'];
} else {
- kPathSeparators = [ '/' ];
-}
-
-async function cleanupSandboxedFileSystem() {
- const dir = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- for await (let entry of dir.getEntries())
- dir.removeEntry(entry.name, { recursive: entry.isDirectory });
+ kPathSeparators = ['/'];
}
async function getFileSize(handle) {
- const file = await handle.getFile();
- return file.size;
+ const file = await handle.getFile();
+ return file.size;
}
async function getFileContents(handle) {
- const file = await handle.getFile();
- return new Response(file).text();
+ const file = await handle.getFile();
+ return new Response(file).text();
}
async function getDirectoryEntryCount(handle) {
- let result = 0;
- for await (let entry of handle.getEntries()) {
- result++;
- }
- return result;
+ let result = 0;
+ for await (let entry of handle.getEntries()) {
+ result++;
+ }
+ return result;
}
async function getSortedDirectoryEntries(handle) {
- let result = [];
- for await (let entry of handle.getEntries()) {
- if (entry.isDirectory)
- result.push(entry.name + '/');
- else
- result.push(entry.name);
- }
- result.sort();
- return result;
+ let result = [];
+ for await (let entry of handle.getEntries()) {
+ if (entry.isDirectory)
+ result.push(entry.name + '/');
+ else
+ result.push(entry.name);
+ }
+ result.sort();
+ return result;
}
async function createDirectory(test, name, parent) {
- const parent_dir_handle = parent ? parent :
- await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
-
- const new_dir_handle = await parent_dir_handle.getDirectory(name, { create: true });
+ const new_dir_handle = await parent.getDirectory(name, {create: true});
test.add_cleanup(async () => {
- try {
- await parent_dir_handle.removeEntry(name, { recursive: true });
- } catch (e) {
- // Ignore any errors when removing directories, as tests might
- // have already removed the directory.
- }
+ try {
+ await parent.removeEntry(name, {recursive: true});
+ } catch (e) {
+ // Ignore any errors when removing directories, as tests might
+ // have already removed the directory.
+ }
});
return new_dir_handle;
}
async function createEmptyFile(test, name, parent) {
- const dir = parent ? parent : await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
- const handle = await dir.getFile(name, { create: true });
- test.add_cleanup(async () => {
- try {
- await dir.removeEntry(name);
- } catch (e) {
- // Ignore any errors when removing files, as tests might already remove the file.
- }
- });
- // Make sure the file is empty.
- assert_equals(await getFileSize(handle), 0);
- return handle;
+ const handle = await parent.getFile(name, {create: true});
+ test.add_cleanup(async () => {
+ try {
+ await parent.removeEntry(name);
+ } catch (e) {
+ // Ignore any errors when removing files, as tests might already remove
+ // the file.
+ }
+ });
+ // Make sure the file is empty.
+ assert_equals(await getFileSize(handle), 0);
+ return handle;
}
async function createFileWithContents(test, name, contents, parent) {
- const handle = await createEmptyFile(test, name, parent);
- const writer = await handle.createWriter();
- await writer.write(0, new Blob([contents]));
- await writer.close();
- return handle;
+ const handle = await createEmptyFile(test, name, parent);
+ const writer = await handle.createWriter();
+ await writer.write(0, new Blob([contents]));
+ await writer.close();
+ return handle;
}
function garbageCollect() {
- // TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to
- // some sort of cross-browser GC trigger.
- if (self.gc) self.gc();
+ // TODO(https://github.com/web-platform-tests/wpt/issues/7899): Change to
+ // some sort of cross-browser GC trigger.
+ if (self.gc)
+ self.gc();
};
diff --git a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.js b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.js
new file mode 100644
index 00000000000..6fcf566e31f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.js
@@ -0,0 +1,3 @@
+// META: script=resources/test-helpers.js
+// META: script=resources/sandboxed-fs-test-helpers.js
+// META: script=script-tests/FileSystemDirectoryHandle-getDirectory.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.js b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.js
new file mode 100644
index 00000000000..65ae891cd44
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.js
@@ -0,0 +1,3 @@
+// META: script=resources/test-helpers.js
+// META: script=resources/sandboxed-fs-test-helpers.js
+// META: script=script-tests/FileSystemDirectoryHandle-getFile.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.js b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.js
new file mode 100644
index 00000000000..a4be8bd267e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.js
@@ -0,0 +1,3 @@
+// META: script=resources/test-helpers.js
+// META: script=resources/sandboxed-fs-test-helpers.js
+// META: script=script-tests/FileSystemDirectoryHandle-removeEntry.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js
new file mode 100644
index 00000000000..8352e2487fe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.js
@@ -0,0 +1,3 @@
+// META: script=resources/test-helpers.js
+// META: script=resources/sandboxed-fs-test-helpers.js
+// META: script=script-tests/FileSystemWriter.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getDirectory.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getDirectory.js
new file mode 100644
index 00000000000..c2c128f5ede
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getDirectory.js
@@ -0,0 +1,111 @@
+directory_test(async (t, root) => {
+ await promise_rejects(
+ t, 'NotFoundError', root.getDirectory('non-existing-dir'));
+}, 'getDirectory(create=false) rejects for non-existing directories');
+
+directory_test(async (t, root) => {
+ const handle = await root.getDirectory('non-existing-dir', {create: true});
+ t.add_cleanup(() => root.removeEntry('non-existing-dir', {recursive: true}));
+
+ assert_false(handle.isFile);
+ assert_true(handle.isDirectory);
+ assert_equals(handle.name, 'non-existing-dir');
+ assert_equals(await getDirectoryEntryCount(handle), 0);
+ assert_array_equals(
+ await getSortedDirectoryEntries(root), ['non-existing-dir/']);
+}, 'getDirectory(create=true) creates an empty directory');
+
+directory_test(async (t, root) => {
+ const existing_handle =
+ await root.getDirectory('dir-with-contents', {create: true});
+ t.add_cleanup(() => root.removeEntry('dir-with-contents', {recursive: true}));
+ const file_handle = await createEmptyFile(t, 'test-file', existing_handle);
+
+ const handle = await root.getDirectory('dir-with-contents', {create: false});
+
+ assert_false(handle.isFile);
+ assert_true(handle.isDirectory);
+ assert_equals(handle.name, 'dir-with-contents');
+ assert_array_equals(await getSortedDirectoryEntries(handle), ['test-file']);
+}, 'getDirectory(create=false) returns existing directories');
+
+directory_test(async (t, root) => {
+ const existing_handle =
+ await root.getDirectory('dir-with-contents', {create: true});
+ t.add_cleanup(() => root.removeEntry('dir-with-contents', {recursive: true}));
+ const file_handle =
+ await existing_handle.getFile('test-file', {create: true});
+
+ const handle = await root.getDirectory('dir-with-contents', {create: true});
+
+ assert_false(handle.isFile);
+ assert_true(handle.isDirectory);
+ assert_equals(handle.name, 'dir-with-contents');
+ assert_array_equals(await getSortedDirectoryEntries(handle), ['test-file']);
+}, 'getDirectory(create=true) returns existing directories without erasing');
+
+directory_test(async (t, root) => {
+ await createEmptyFile(t, 'file-name', root);
+
+ await promise_rejects(t, 'TypeMismatchError', root.getDirectory('file-name'));
+ await promise_rejects(
+ t, 'TypeMismatchError', root.getDirectory('file-name', {create: false}));
+ await promise_rejects(
+ t, 'TypeMismatchError', root.getDirectory('file-name', {create: true}));
+}, 'getDirectory() when a file already exists with the same name');
+
+directory_test(async (t, dir) => {
+ await promise_rejects(
+ t, new TypeError(), dir.getDirectory('', {create: true}));
+ await promise_rejects(
+ t, new TypeError(), dir.getDirectory('', {create: false}));
+}, 'getDirectory() with empty name');
+
+directory_test(async (t, dir) => {
+ await promise_rejects(
+ t, new TypeError(), dir.getDirectory(kCurrentDirectory));
+ await promise_rejects(
+ t, new TypeError(), dir.getDirectory(kCurrentDirectory, {create: true}));
+}, `getDirectory() with "${kCurrentDirectory}" name`);
+
+directory_test(async (t, dir) => {
+ const subdir = await createDirectory(t, 'subdir-name', /*parent=*/ dir);
+
+ await promise_rejects(
+ t, new TypeError(), subdir.getDirectory(kParentDirectory));
+ await promise_rejects(
+ t, new TypeError(),
+ subdir.getDirectory(kParentDirectory, {create: true}));
+}, `getDirectory() with "${kParentDirectory}" name`);
+
+directory_test(async (t, dir) => {
+ const first_subdir_name = 'first-subdir-name';
+ const first_subdir =
+ await createDirectory(t, first_subdir_name, /*parent=*/ dir);
+
+ const second_subdir_name = 'second-subdir-name';
+ const second_subdir =
+ await createDirectory(t, second_subdir_name, /*parent=*/ first_subdir);
+
+ for (let i = 0; i < kPathSeparators.length; ++i) {
+ const path_with_separator =
+ `${first_subdir_name}${kPathSeparators[i]}${second_subdir_name}`;
+ await promise_rejects(
+ t, new TypeError(), dir.getDirectory(path_with_separator),
+ `getDirectory() must reject names containing "${kPathSeparators[i]}"`);
+ }
+}, 'getDirectory(create=false) with a path separator when the directory exists');
+
+directory_test(async (t, dir) => {
+ const subdir_name = 'subdir-name';
+ const subdir = await createDirectory(t, subdir_name, /*parent=*/ dir);
+
+ for (let i = 0; i < kPathSeparators.length; ++i) {
+ const path_with_separator = `${subdir_name}${kPathSeparators[i]}file_name`;
+ await promise_rejects(
+ t, new TypeError(),
+ dir.getDirectory(path_with_separator, {create: true}),
+ `getDirectory(true) must reject names containing "${
+ kPathSeparators[i]}"`);
+ }
+}, 'getDirectory(create=true) with a path separator');
diff --git a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getFile.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getFile.js
new file mode 100644
index 00000000000..4d8ee96c3d0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-getFile.js
@@ -0,0 +1,100 @@
+directory_test(async (t, dir) => {
+ await promise_rejects(t, 'NotFoundError', dir.getFile('non-existing-file'));
+}, 'getFile(create=false) rejects for non-existing files');
+
+directory_test(async (t, dir) => {
+ const handle = await dir.getFile('non-existing-file', {create: true});
+ t.add_cleanup(() => dir.removeEntry('non-existing-file'));
+
+ assert_true(handle.isFile);
+ assert_false(handle.isDirectory);
+ assert_equals(handle.name, 'non-existing-file');
+ assert_equals(await getFileSize(handle), 0);
+ assert_equals(await getFileContents(handle), '');
+}, 'getFile(create=true) creates an empty file for non-existing files');
+
+directory_test(async (t, dir) => {
+ const existing_handle = await createFileWithContents(
+ t, 'existing-file', '1234567890', /*parent=*/ dir);
+ const handle = await dir.getFile('existing-file');
+
+ assert_true(handle.isFile);
+ assert_false(handle.isDirectory);
+ assert_equals(handle.name, 'existing-file');
+ assert_equals(await getFileSize(handle), 10);
+ assert_equals(await getFileContents(handle), '1234567890');
+}, 'getFile(create=false) returns existing files');
+
+directory_test(async (t, dir) => {
+ const existing_handle = await createFileWithContents(
+ t, 'file-with-contents', '1234567890', /*parent=*/ dir);
+ const handle = await dir.getFile('file-with-contents', {create: true});
+
+ assert_true(handle.isFile);
+ assert_false(handle.isDirectory);
+ assert_equals(handle.name, 'file-with-contents');
+ assert_equals(await getFileSize(handle), 10);
+ assert_equals(await getFileContents(handle), '1234567890');
+}, 'getFile(create=true) returns existing files without erasing');
+
+directory_test(async (t, dir) => {
+ const dir_handle = await dir.getDirectory('dir-name', {create: true});
+ t.add_cleanup(() => dir.removeEntry('dir-name', {recursive: true}));
+
+ await promise_rejects(t, 'TypeMismatchError', dir.getFile('dir-name'));
+}, 'getFile(create=false) when a directory already exists with the same name');
+
+directory_test(async (t, dir) => {
+ const dir_handle = await dir.getDirectory('dir-name', {create: true});
+ t.add_cleanup(() => dir.removeEntry('dir-name', {recursive: true}));
+
+ await promise_rejects(
+ t, 'TypeMismatchError', dir.getFile('dir-name', {create: true}));
+}, 'getFile(create=true) when a directory already exists with the same name');
+
+directory_test(async (t, dir) => {
+ await promise_rejects(t, new TypeError(), dir.getFile('', {create: true}));
+ await promise_rejects(t, new TypeError(), dir.getFile('', {create: false}));
+}, 'getFile() with empty name');
+
+directory_test(async (t, dir) => {
+ await promise_rejects(t, new TypeError(), dir.getFile(kCurrentDirectory));
+ await promise_rejects(
+ t, new TypeError(), dir.getFile(kCurrentDirectory, {create: true}));
+}, `getFile() with "${kCurrentDirectory}" name`);
+
+directory_test(async (t, dir) => {
+ const subdir = await createDirectory(t, 'subdir-name', /*parent=*/ dir);
+
+ await promise_rejects(t, new TypeError(), subdir.getFile(kParentDirectory));
+ await promise_rejects(
+ t, new TypeError(), subdir.getFile(kParentDirectory, {create: true}));
+}, `getFile() with "${kParentDirectory}" name`);
+
+directory_test(async (t, dir) => {
+ const subdir_name = 'subdir-name';
+ const subdir = await createDirectory(t, subdir_name, /*parent=*/ dir);
+
+ const file_name = 'file-name';
+ await createEmptyFile(t, file_name, /*parent=*/ subdir);
+
+ for (let i = 0; i < kPathSeparators.length; ++i) {
+ const path_with_separator =
+ `${subdir_name}${kPathSeparators[i]}${file_name}`;
+ await promise_rejects(
+ t, new TypeError(), dir.getFile(path_with_separator),
+ `getFile() must reject names containing "${kPathSeparators[i]}"`);
+ }
+}, 'getFile(create=false) with a path separator when the file exists.');
+
+directory_test(async (t, dir) => {
+ const subdir_name = 'subdir-name';
+ const subdir = await createDirectory(t, subdir_name, /*parent=*/ dir);
+
+ for (let i = 0; i < kPathSeparators.length; ++i) {
+ const path_with_separator = `${subdir_name}${kPathSeparators[i]}file_name`;
+ await promise_rejects(
+ t, new TypeError(), dir.getFile(path_with_separator, {create: true}),
+ `getFile(true) must reject names containing "${kPathSeparators[i]}"`);
+ }
+}, 'getFile(create=true) with a path separator');
diff --git a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-removeEntry.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-removeEntry.js
new file mode 100644
index 00000000000..8e89e0958db
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-removeEntry.js
@@ -0,0 +1,69 @@
+
+directory_test(async (t, root) => {
+ const handle =
+ await createFileWithContents(t, 'file-to-remove', '12345', root);
+ await createFileWithContents(t, 'file-to-keep', 'abc', root);
+ await root.removeEntry('file-to-remove');
+
+ assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
+ await promise_rejects(t, 'NotFoundError', getFileContents(handle));
+}, 'removeEntry() to remove a file');
+
+directory_test(async (t, root) => {
+ const handle =
+ await createFileWithContents(t, 'file-to-remove', '12345', root);
+ await root.removeEntry('file-to-remove');
+
+ await promise_rejects(t, 'NotFoundError', root.removeEntry('file-to-remove'));
+}, 'removeEntry() on an already removed file should fail');
+
+directory_test(async (t, root) => {
+ const dir = await root.getDirectory('dir-to-remove', {create: true});
+ await createFileWithContents(t, 'file-to-keep', 'abc', root);
+ await root.removeEntry('dir-to-remove');
+
+ assert_array_equals(await getSortedDirectoryEntries(root), ['file-to-keep']);
+ await promise_rejects(t, 'NotFoundError', getSortedDirectoryEntries(dir));
+}, 'removeEntry() to remove an empty directory');
+
+directory_test(async (t, root) => {
+ const dir = await root.getDirectory('dir-to-remove', {create: true});
+ t.add_cleanup(() => root.removeEntry('dir-to-remove', {recursive: true}));
+ await createEmptyFile(t, 'file-in-dir', dir);
+
+ await promise_rejects(
+ t, 'InvalidModificationError', root.removeEntry('dir-to-remove'));
+ assert_array_equals(
+ await getSortedDirectoryEntries(root), ['dir-to-remove/']);
+ assert_array_equals(await getSortedDirectoryEntries(dir), ['file-in-dir']);
+}, 'removeEntry() on a non-empty directory should fail');
+
+directory_test(async (t, root) => {
+ const dir = await createDirectory(t, 'dir', root);
+ await promise_rejects(t, new TypeError(), dir.removeEntry(''));
+}, 'removeEntry() with empty name should fail');
+
+directory_test(async (t, root) => {
+ const dir = await createDirectory(t, 'dir', root);
+ await promise_rejects(t, new TypeError(), dir.removeEntry(kCurrentDirectory));
+}, `removeEntry() with "${kCurrentDirectory}" name should fail`);
+
+directory_test(async (t, root) => {
+ const dir = await createDirectory(t, 'dir', root);
+ await promise_rejects(t, new TypeError(), dir.removeEntry(kParentDirectory));
+}, `removeEntry() with "${kParentDirectory}" name should fail`);
+
+directory_test(async (t, root) => {
+ const dir_name = 'dir-name';
+ const dir = await createDirectory(t, dir_name, root);
+
+ const file_name = 'file-name';
+ await createEmptyFile(t, file_name, dir);
+
+ for (let i = 0; i < kPathSeparators.length; ++i) {
+ const path_with_separator = `${dir_name}${kPathSeparators[i]}${file_name}`;
+ await promise_rejects(
+ t, new TypeError(), root.removeEntry(path_with_separator),
+ `removeEntry() must reject names containing "${kPathSeparators[i]}"`);
+ }
+}, 'removeEntry() with a path separator should fail.');
diff --git a/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.https.window.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemWriter.js
index acc0be1c521..1c51d0b4eb7 100644
--- a/tests/wpt/web-platform-tests/native-file-system/FileSystemWriter.tentative.https.window.js
+++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemWriter.js
@@ -1,54 +1,51 @@
-// META: script=resources/test-helpers.js
-promise_test(async t => cleanupSandboxedFileSystem(),
- 'Cleanup to setup test environment');
-
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'empty_blob');
- const writer = await handle.createWriter();
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'empty_blob', root);
+ const writer = await handle.createWriter();
- await writer.write(0, new Blob([]));
- await writer.close();
+ await writer.write(0, new Blob([]));
+ await writer.close();
- assert_equals(await getFileContents(handle), '');
- assert_equals(await getFileSize(handle), 0);
+ assert_equals(await getFileContents(handle), '');
+ assert_equals(await getFileSize(handle), 0);
}, 'write() with an empty blob to an empty file');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'valid_blob');
- const writer = await handle.createWriter();
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'valid_blob', root);
+ const writer = await handle.createWriter();
- await writer.write(0, new Blob(['1234567890']));
- await writer.close();
+ await writer.write(0, new Blob(['1234567890']));
+ await writer.close();
- assert_equals(await getFileContents(handle), '1234567890');
- assert_equals(await getFileSize(handle), 10);
+ assert_equals(await getFileContents(handle), '1234567890');
+ assert_equals(await getFileSize(handle), 10);
}, 'write() a blob to an empty file');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'blob_with_offset');
- const writer = await handle.createWriter();
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'blob_with_offset', root);
+ const writer = await handle.createWriter();
- await writer.write(0, new Blob(['1234567890']));
- await writer.write(4, new Blob(['abc']));
- await writer.close();
+ await writer.write(0, new Blob(['1234567890']));
+ await writer.write(4, new Blob(['abc']));
+ await writer.close();
- assert_equals(await getFileContents(handle), '1234abc890');
- assert_equals(await getFileSize(handle), 10);
+ assert_equals(await getFileContents(handle), '1234abc890');
+ assert_equals(await getFileSize(handle), 10);
}, 'write() called with a blob and a valid offset');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'bad_offset');
- const writer = await handle.createWriter();
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'bad_offset', root);
+ const writer = await handle.createWriter();
- await promise_rejects(t, 'InvalidStateError', writer.write(4, new Blob(['abc'])));
- await writer.close();
+ await promise_rejects(
+ t, 'InvalidStateError', writer.write(4, new Blob(['abc'])));
+ await writer.close();
- assert_equals(await getFileContents(handle), '');
- assert_equals(await getFileSize(handle), 0);
+ assert_equals(await getFileContents(handle), '');
+ assert_equals(await getFileSize(handle), 0);
}, 'write() called with an invalid offset');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'empty_string');
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'empty_string', root);
const writer = await handle.createWriter();
await writer.write(0, '');
@@ -57,8 +54,8 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 0);
}, 'write() with an empty string to an empty file');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'valid_utf8_string');
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'valid_utf8_string', root);
const writer = await handle.createWriter();
await writer.write(0, 'foo🤘');
@@ -67,8 +64,8 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 7);
}, 'write() with a valid utf-8 string');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'string_with_unix_line_ending');
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'string_with_unix_line_ending', root);
const writer = await handle.createWriter();
await writer.write(0, 'foo\n');
@@ -77,8 +74,9 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 4);
}, 'write() with a string with unix line ending preserved');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'string_with_windows_line_ending');
+directory_test(async (t, root) => {
+ const handle =
+ await createEmptyFile(t, 'string_with_windows_line_ending', root);
const writer = await handle.createWriter();
await writer.write(0, 'foo\r\n');
@@ -87,8 +85,8 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 5);
}, 'write() with a string with windows line ending preserved');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'empty_array_buffer');
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'empty_array_buffer', root);
const writer = await handle.createWriter();
let buf = new ArrayBuffer(0);
@@ -98,8 +96,9 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 0);
}, 'write() with an empty array buffer to an empty file');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'valid_string_typed_byte_array');
+directory_test(async (t, root) => {
+ const handle =
+ await createEmptyFile(t, 'valid_string_typed_byte_array', root);
const writer = await handle.createWriter();
let buf = new ArrayBuffer(3);
@@ -113,32 +112,31 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 3);
}, 'write() with a valid typed array buffer');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'trunc_shrink');
- const writer = await handle.createWriter();
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'trunc_shrink', root);
+ const writer = await handle.createWriter();
- await writer.write(0, new Blob(['1234567890']));
- await writer.truncate(5);
- await writer.close();
+ await writer.write(0, new Blob(['1234567890']));
+ await writer.truncate(5);
+ await writer.close();
- assert_equals(await getFileContents(handle), '12345');
- assert_equals(await getFileSize(handle), 5);
+ assert_equals(await getFileContents(handle), '12345');
+ assert_equals(await getFileSize(handle), 5);
}, 'truncate() to shrink a file');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'trunc_grow');
- const writer = await handle.createWriter();
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'trunc_grow', root);
+ const writer = await handle.createWriter();
- await writer.write(0, new Blob(['abc']));
- await writer.truncate(5);
- await writer.close();
+ await writer.write(0, new Blob(['abc']));
+ await writer.truncate(5);
+ await writer.close();
- assert_equals(await getFileContents(handle), 'abc\0\0');
- assert_equals(await getFileSize(handle), 5);
+ assert_equals(await getFileContents(handle), 'abc\0\0');
+ assert_equals(await getFileSize(handle), 5);
}, 'truncate() to grow a file');
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+directory_test(async (t, root) => {
const dir = await createDirectory(t, 'parent_dir', root);
const file_name = 'create_writer_fails_when_dir_removed.txt';
const handle = await createEmptyFile(t, file_name, dir);
@@ -147,8 +145,7 @@ promise_test(async t => {
await promise_rejects(t, 'NotFoundError', handle.createWriter());
}, 'createWriter() fails when parent directory is removed');
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+directory_test(async (t, root) => {
const dir = await createDirectory(t, 'parent_dir', root);
const file_name = 'write_fails_when_dir_removed.txt';
const handle = await createEmptyFile(t, file_name, dir);
@@ -158,8 +155,7 @@ promise_test(async t => {
await promise_rejects(t, 'NotFoundError', writer.write(0, new Blob(['foo'])));
}, 'write() fails when parent directory is removed');
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+directory_test(async (t, root) => {
const dir = await createDirectory(t, 'parent_dir', root);
const file_name = 'truncate_fails_when_dir_removed.txt';
const handle = await createEmptyFile(t, file_name, dir);
@@ -169,8 +165,7 @@ promise_test(async t => {
await promise_rejects(t, 'NotFoundError', writer.truncate(0));
}, 'truncate() fails when parent directory is removed');
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+directory_test(async (t, root) => {
const dir = await createDirectory(t, 'parent_dir', root);
const file_name = 'close_fails_when_dir_removed.txt';
const handle = await createEmptyFile(t, file_name, dir);
@@ -181,8 +176,8 @@ promise_test(async t => {
await promise_rejects(t, 'NotFoundError', writer.close());
}, 'atomic writes: close() fails when parent directory is removed');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'atomic_writes.txt');
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'atomic_writes.txt', root);
const writer = await handle.createWriter();
await writer.write(0, new Blob(['foox']));
@@ -200,8 +195,8 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 4);
}, 'atomic writes: writers make atomic changes on close');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'atomic_write_after_close.txt');
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'atomic_write_after_close.txt', root);
const writer = await handle.createWriter();
await writer.write(0, new Blob(['foo']));
@@ -209,11 +204,13 @@ promise_test(async t => {
assert_equals(await getFileContents(handle), 'foo');
assert_equals(await getFileSize(handle), 3);
- await promise_rejects(t, 'InvalidStateError', writer.write(0, new Blob(['abc'])));
+ await promise_rejects(
+ t, 'InvalidStateError', writer.write(0, new Blob(['abc'])));
}, 'atomic writes: write() after close() fails');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'atomic_truncate_after_close.txt');
+directory_test(async (t, root) => {
+ const handle =
+ await createEmptyFile(t, 'atomic_truncate_after_close.txt', root);
const writer = await handle.createWriter();
await writer.write(0, new Blob(['foo']));
@@ -224,8 +221,8 @@ promise_test(async t => {
await promise_rejects(t, 'InvalidStateError', writer.truncate(0));
}, 'atomic writes: truncate() after close() fails');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'atomic_close_after_close.txt');
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'atomic_close_after_close.txt', root);
const writer = await handle.createWriter();
await writer.write(0, new Blob(['foo']));
@@ -236,24 +233,23 @@ promise_test(async t => {
await promise_rejects(t, 'InvalidStateError', writer.close());
}, 'atomic writes: close() after close() fails');
-promise_test(async t => {
- const handle = await createEmptyFile(t, 'there_can_be_only_one.txt');
+directory_test(async (t, root) => {
+ const handle = await createEmptyFile(t, 'there_can_be_only_one.txt', root);
const writer = await handle.createWriter();
await writer.write(0, new Blob(['foo']));
// This test might be flaky if there is a race condition allowing
// close() to be called multiple times.
- let success_promises = [...Array(100)].map(() => writer
- .close()
- .then(() => 1)
- .catch(() => 0));
+ let success_promises =
+ [...Array(100)].map(() => writer.close().then(() => 1).catch(() => 0));
let close_attempts = await Promise.all(success_promises);
- let success_count = close_attempts.reduce((x,y) => x + y);
+ let success_count = close_attempts.reduce((x, y) => x + y);
assert_equals(success_count, 1);
}, 'atomic writes: only one close() operation may succeed');
-promise_test(async t => {
- const handle = await createFileWithContents(t, 'atomic_file_is_copied.txt', 'fooks');
+directory_test(async (t, root) => {
+ const handle = await createFileWithContents(
+ t, 'atomic_file_is_copied.txt', 'fooks', root);
const writer = await handle.createWriter({keepExistingData: true});
await writer.write(0, new Blob(['bar']));
@@ -262,8 +258,9 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 5);
}, 'createWriter({keepExistingData: true}): atomic writer initialized with source contents');
-promise_test(async t => {
- const handle = await createFileWithContents(t, 'atomic_file_is_not_copied.txt', 'very long string');
+directory_test(async (t, root) => {
+ const handle = await createFileWithContents(
+ t, 'atomic_file_is_not_copied.txt', 'very long string', root);
const writer = await handle.createWriter({keepExistingData: false});
await writer.write(0, new Blob(['bar']));
@@ -273,8 +270,7 @@ promise_test(async t => {
assert_equals(await getFileSize(handle), 3);
}, 'createWriter({keepExistingData: false}): atomic writer initialized with empty file');
-promise_test(async t => {
- const root = await FileSystemDirectoryHandle.getSystemDirectory({ type: 'sandbox' });
+directory_test(async (t, root) => {
const dir = await createDirectory(t, 'parent_dir', root);
const file_name = 'atomic_writer_persists_removed.txt';
const handle = await createFileWithContents(t, file_name, 'foo', dir);
diff --git a/tests/wpt/web-platform-tests/permissions/feature-policy-permissions-query.html b/tests/wpt/web-platform-tests/permissions/feature-policy-permissions-query.html
new file mode 100644
index 00000000000..bd152e973e8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/permissions/feature-policy-permissions-query.html
@@ -0,0 +1,11 @@
+<script>
+'use strict';
+
+Promise.resolve().then(() => navigator.permissions.query({name:'geolocation'}))
+ .then(permissionStatus => {
+ window.parent.postMessage({ state: permissionStatus.state }, '*');
+}, error => {
+ window.parent.postMessage({ state: null }, '*');
+});
+</script>
+
diff --git a/tests/wpt/web-platform-tests/permissions/permissions-query-feature-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/permissions/permissions-query-feature-policy-attribute.https.sub.html
new file mode 100644
index 00000000000..1d7333d9b5f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/permissions/permissions-query-feature-policy-attribute.https.sub.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Test permissions query againts feature policy allow attribute</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id="log"></div>
+
+<script>
+ "use strict";
+
+ function test_permissions_query(
+ feature_description, test, src, expect_state, allow_attribute) {
+ let frame = document.createElement('iframe');
+ frame.src = src;
+
+ if (typeof allow_attribute !== 'undefined') {
+ frame.allow = allow_attribute;
+ }
+
+ window.addEventListener('message', test.step_func(function handler(evt) {
+ if (evt.source === frame.contentWindow) {
+ assert_equals(evt.data.state, expect_state, feature_description);
+ document.body.removeChild(frame);
+ window.removeEventListener('message', handler);
+ test.done();
+ }
+ }));
+
+ document.body.appendChild(frame);
+ }
+
+ const same_origin_src =
+ "/permissions/feature-policy-permissions-query.html";
+ const cross_origin_src =
+ "https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;
+
+ async_test(t => {
+ test_permissions_query(
+ 'navigator.permissions.query("geolocation")',
+ t,
+ same_origin_src,
+ "prompt",
+ "geolocation"
+ );
+ }, 'Permissions.state is "prompt" with allow="geolocation" in same-origin iframes.');
+
+ async_test(t => {
+ test_permissions_query(
+ 'navigator.permissions.query("geolocation")',
+ t,
+ cross_origin_src,
+ "prompt",
+ "geolocation"
+ );
+ }, 'Permissions.state is "prompt" with allow="geolocation" in cross-origin iframes.');
+
+ async_test(t => {
+ test_permissions_query(
+ 'navigator.permissions.query("geolocation")',
+ t,
+ same_origin_src,
+ "prompt"
+ );
+ }, 'Permission.state is "prompt" in same-origin iframes.');
+
+ async_test(t => {
+ test_permissions_query(
+ 'navigator.permissions.query("geolocation")',
+ t,
+ cross_origin_src,
+ "denied"
+ );
+ }, 'Permission.state is "denied" in cross-origin iframes.');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/portals/portals-repeated-activate.html b/tests/wpt/web-platform-tests/portals/portals-repeated-activate.html
new file mode 100644
index 00000000000..a3843dddb47
--- /dev/null
+++ b/tests/wpt/web-platform-tests/portals/portals-repeated-activate.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ async_test(async t => {
+ let win = window.open("resources/portal-repeated-activate-window.html");
+ win.onload = () => win.activate();
+ window.onmessage = t.step_func_done(() => {});
+ }, "test activation in page that has been reactivated")
+</script>
diff --git a/tests/wpt/web-platform-tests/portals/resources/portal-repeated-activate-window.html b/tests/wpt/web-platform-tests/portals/resources/portal-repeated-activate-window.html
new file mode 100644
index 00000000000..e716034eff8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/portals/resources/portal-repeated-activate-window.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<body>
+ <portal src="simple-portal-adopts-and-activates-predecessor.html">
+ <script>
+ function activate() {
+ var portal = document.querySelector("portal");
+ portal.activate().then(() => document.body.removeChild(portal));
+ }
+
+ var count = 0;
+ window.onportalactivate = e => {
+ ++count;
+ if (count == 1) {
+ e.adoptPredecessor().activate();
+ } else {
+ window.opener.postMessage("done", "*");
+ }
+ };
+ </script>
+</body>
diff --git a/tests/wpt/web-platform-tests/portals/resources/simple-portal-adopts-and-activates-predecessor.html b/tests/wpt/web-platform-tests/portals/resources/simple-portal-adopts-and-activates-predecessor.html
new file mode 100644
index 00000000000..56bfd10f647
--- /dev/null
+++ b/tests/wpt/web-platform-tests/portals/resources/simple-portal-adopts-and-activates-predecessor.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<body>
+ <script>
+ window.onportalactivate = e => e.adoptPredecessor().activate();
+ </script>
+</body>
diff --git a/tests/wpt/web-platform-tests/resource-timing/status-codes-create-entry.html b/tests/wpt/web-platform-tests/resource-timing/status-codes-create-entry.html
index fb4236e6bbe..22e22c445b0 100644
--- a/tests/wpt/web-platform-tests/resource-timing/status-codes-create-entry.html
+++ b/tests/wpt/web-platform-tests/resource-timing/status-codes-create-entry.html
@@ -14,7 +14,7 @@ async_test(t => {
window.addEventListener("load", t.step_func(() => {
const images = document.getElementsByTagName("img");
for (let img of images) {
- assert_equals(performance.getEntriesByName(img.src).length, 1, img.src);
+ assert_greater_than(performance.getEntriesByName(img.src).length, 0, img.src);
}
t.done();
}));
diff --git a/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js b/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js
index 618968ec18d..ae4c33b073d 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/contacts_manager_mock.js
@@ -10,7 +10,7 @@ const WebContactsTest = (() => {
this.bindingSet_ = new mojo.BindingSet(blink.mojom.ContactsManager);
this.interceptor_ = new MojoInterfaceInterceptor(
- blink.mojom.ContactsManager.name);
+ blink.mojom.ContactsManager.name, "context", true);
this.interceptor_.oninterfacerequest =
e => this.bindingSet_.addBinding(this, e.handle);
this.interceptor_.start();
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 eec414bd032..9d46b57020f 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js
@@ -6,7 +6,7 @@ var ImageCaptureTest = (() => {
class MockImageCapture {
constructor() {
this.interceptor_ = new MojoInterfaceInterceptor(
- media.mojom.ImageCapture.name);
+ media.mojom.ImageCapture.name, "context", true);
this.interceptor_.oninterfacerequest =
e => this.bindingSet_.addBinding(this, e.handle);
this.interceptor_.start();
@@ -262,4 +262,4 @@ var ImageCaptureTest = (() => {
}
return ImageCaptureTestChromium;
-})(); \ No newline at end of file
+})();
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/unit/throwing-assertions.html b/tests/wpt/web-platform-tests/resources/test/tests/unit/throwing-assertions.html
new file mode 100644
index 00000000000..a36a56043cc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resources/test/tests/unit/throwing-assertions.html
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="timeout" content="long">
+ <script src="/resources/testharness.js"></script>
+ <title>Test the methods that make assertions about exceptions</title>
+</head>
+<body>
+<script>
+function makeTest(...bodies) {
+ const closeScript = '<' + '/script>';
+ let src = `
+<!DOCTYPE HTML>
+<html>
+<head>
+<title>Document title</title>
+<script src="/resources/testharness.js?${Math.random()}">${closeScript}
+</head>
+
+<body>
+<div id="log"></div>`;
+ bodies.forEach((body) => {
+ src += '<script>(' + body + ')();' + closeScript;
+ });
+
+ const iframe = document.createElement('iframe');
+
+ document.body.appendChild(iframe);
+ iframe.contentDocument.write(src);
+
+ return new Promise((resolve) => {
+ window.addEventListener('message', function onMessage(e) {
+ if (e.source !== iframe.contentWindow) {
+ return;
+ }
+ if (!e.data || e.data.type !=='complete') {
+ return;
+ }
+ window.removeEventListener('message', onMessage);
+ resolve(e.data);
+ });
+
+ iframe.contentDocument.close();
+ }).then(({ tests, status }) => {
+ const summary = {
+ harness: getEnumProp(status, status.status),
+ tests: {}
+ };
+
+ tests.forEach((test) => {
+ summary.tests[test.name] = getEnumProp(test, test.status);
+ });
+
+ return summary;
+ });
+}
+
+function getEnumProp(object, value) {
+ for (let property in object) {
+ if (!/^[A-Z]+$/.test(property)) {
+ continue;
+ }
+
+ if (object[property] === value) {
+ return property;
+ }
+ }
+}
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_js(TypeError, () => { throw new TypeError(); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_js on a TypeError');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_js(RangeError, () => { throw new RangeError(); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_js on a RangeError');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_js(TypeError, () => { throw new RangeError(); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'FAIL');
+ });
+}, 'assert_throws_js on a TypeError when RangeError is thrown');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_js(Error, () => { throw new TypeError(); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'FAIL');
+ });
+}, 'assert_throws_js on an Error when TypeError is thrown');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_js(Error,
+ () => { throw new DOMException("hello", "Error"); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'FAIL');
+ });
+}, 'assert_throws_js on an Error when a DOMException is thrown');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_js(SyntaxError,
+ () => { throw new DOMException("hey", "SyntaxError"); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'FAIL');
+ });
+}, 'assert_throws_js on a SyntaxError when a DOMException is thrown');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_dom("SyntaxError",
+ () => { throw new DOMException("x", "SyntaxError"); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_dom basic sanity');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_dom(12,
+ () => { throw new DOMException("x", "SyntaxError"); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_dom with numeric code');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_dom("SYNTAX_ERR",
+ () => { throw new DOMException("x", "SyntaxError"); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_dom with string name for code');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_dom("DataError",
+ () => { throw new DOMException("x", "DataError"); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_dom for a code-less DOMException type');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_dom("NoSuchError",
+ () => { throw new DOMException("x", "NoSuchError"); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'FAIL');
+ });
+}, 'assert_throws_dom for a nonexistent DOMException type');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_dom("SyntaxError", () => { throw new SyntaxError(); });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'FAIL');
+ });
+}, 'assert_throws_dom when a non-DOM exception is thrown');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_exactly(5, () => { throw 5; });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_exactly with number');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_exactly("foo", () => { throw "foo"; });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_exactly with string');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_exactly({}, () => { throw {}; });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'FAIL');
+ });
+}, 'assert_throws_exactly with different objects');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ var obj = {};
+ assert_throws_exactly(obj, () => { throw obj; });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'PASS');
+ });
+}, 'assert_throws_exactly with same object');
+
+promise_test(() => {
+ return makeTest(() => {
+ test(() => {
+ assert_throws_exactly(TypeError, () => { throw new TypeError; });
+ });
+ }).then(({harness, tests}) => {
+ assert_equals(harness, 'OK');
+ assert_equals(tests['Document title'], 'FAIL');
+ });
+}, 'assert_throws_exactly with bogus TypeError bits ');
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js
index 15591042aa4..55de1ce252b 100644
--- a/tests/wpt/web-platform-tests/resources/testharness.js
+++ b/tests/wpt/web-platform-tests/resources/testharness.js
@@ -630,6 +630,27 @@ policies and contribution forms [3].
});
}
+ function promise_rejects_js(test, expected, promise, description) {
+ return promise.then(test.unreached_func("Should have rejected: " + description)).catch(function(e) {
+ assert_throws_js_impl(expected, function() { throw e },
+ description, "promise_reject_js");
+ });
+ }
+
+ function promise_rejects_dom(test, expected, promise, description) {
+ return promise.then(test.unreached_func("Should have rejected: " + description)).catch(function(e) {
+ assert_throws_dom_impl(expected, function() { throw e },
+ description, "promise_rejects_dom");
+ });
+ }
+
+ function promise_rejects_exactly(test, expected, promise, description) {
+ return promise.then(test.unreached_func("Should have rejected: " + description)).catch(function(e) {
+ assert_throws_exactly_impl(expected, function() { throw e },
+ description, "promise_rejects_exactly");
+ });
+ }
+
/**
* This constructor helper allows DOM events to be handled using Promises,
* which can make it a lot easier to test a very specific series of events,
@@ -811,6 +832,9 @@ policies and contribution forms [3].
expose(async_test, 'async_test');
expose(promise_test, 'promise_test');
expose(promise_rejects, 'promise_rejects');
+ expose(promise_rejects_js, 'promise_rejects_js');
+ expose(promise_rejects_dom, 'promise_rejects_dom');
+ expose(promise_rejects_exactly, 'promise_rejects_exactly');
expose(generate_tests, 'generate_tests');
expose(setup, 'setup');
expose(done, 'done');
@@ -1270,8 +1294,11 @@ policies and contribution forms [3].
expose(assert_regexp_match, "assert_regexp_match");
function assert_class_string(object, class_string, description) {
- assert_equals({}.toString.call(object), "[object " + class_string + "]",
- description);
+ var actual = {}.toString.call(object);
+ var expected = "[object " + class_string + "]";
+ assert(same_value(actual, expected), "assert_class_string", description,
+ "expected ${expected} but got ${actual}",
+ {expected:expected, actual:actual});
}
expose(assert_class_string, "assert_class_string");
@@ -1482,6 +1509,276 @@ policies and contribution forms [3].
}
expose(assert_throws, "assert_throws");
+ /**
+ * Assert a JS Error with the expected constructor is thrown.
+ *
+ * @param {object} constructor The expected exception constructor.
+ * @param {Function} func Function which should throw.
+ * @param {string} description Error description for the case that the error is not thrown.
+ */
+ function assert_throws_js(constructor, func, description)
+ {
+ assert_throws_js_impl(constructor, func, description,
+ "assert_throws_js");
+ }
+ expose(assert_throws_js, "assert_throws_js");
+
+ /**
+ * Like assert_throws_js but allows specifying the assertion type
+ * (assert_throws_js or promise_rejects_js, in practice).
+ */
+ function assert_throws_js_impl(constructor, func, description,
+ assertion_type)
+ {
+ try {
+ func.call(this);
+ assert(false, assertion_type, description,
+ "${func} did not throw", {func:func});
+ } catch (e) {
+ if (e instanceof AssertionError) {
+ throw e;
+ }
+
+ // Basic sanity-checks on the thrown exception.
+ assert(typeof e === "object",
+ assertion_type, description,
+ "${func} threw ${e} with type ${type}, not an object",
+ {func:func, e:e, type:typeof e});
+
+ assert(e !== null,
+ assertion_type, description,
+ "${func} threw null, not an object",
+ {func:func});
+
+ // Basic sanity-check on the passed-in constructor
+ assert(typeof constructor == "function",
+ assertion_type, description,
+ "${constructor} is not a constructor",
+ {constructor:constructor});
+ var obj = constructor;
+ while (obj) {
+ if (typeof obj === "function" &&
+ obj.name === "Error") {
+ break;
+ }
+ obj = Object.getPrototypeOf(obj);
+ }
+ assert(obj != null,
+ assertion_type, description,
+ "${constructor} is not an Error subtype",
+ {constructor:constructor});
+
+ // And checking that our exception is reasonable
+ assert(e.constructor === constructor &&
+ e.name === constructor.name,
+ assertion_type, description,
+ "${func} threw ${actual} (${actual_name}) expected instance of ${expected} (${expected_name})",
+ {func:func, actual:e, actual_name:e.name,
+ expected:constructor,
+ expected_name:constructor.name});
+ }
+ }
+
+ /**
+ * Assert a DOMException with the expected type is thrown.
+ *
+ * @param {number|string} type The expected exception name or code. See the
+ * table of names and codes at
+ * https://heycam.github.io/webidl/#dfn-error-names-table
+ * If a number is passed it should be one of the numeric code values
+ * in that table (e.g. 3, 4, etc). If a string is passed it can
+ * either be an exception name (e.g. "HierarchyRequestError",
+ * "WrongDocumentError") or the name of the corresponding error code
+ * (e.g. "HIERARCHY_REQUEST_ERR", "WRONG_DOCUMENT_ERR").
+ * @param {Function} func Function which should throw.
+ * @param {string} description Error description for the case that the error is not thrown.
+ */
+ function assert_throws_dom(type, func, description)
+ {
+ assert_throws_dom_impl(type, func, description, "assert_throws_dom")
+ }
+ expose(assert_throws_dom, "assert_throws_dom");
+
+ /**
+ * Like assert_throws_dom but allows specifying the assertion type
+ * (assert_throws_dom or promise_rejects_dom, in practice).
+ */
+ function assert_throws_dom_impl(type, func, description, assertion_type)
+ {
+ try {
+ func.call(this);
+ assert(false, assertion_type, description,
+ "${func} did not throw", {func:func});
+ } catch (e) {
+ if (e instanceof AssertionError) {
+ throw e;
+ }
+
+ assert(typeof e === "object",
+ assertion_type, description,
+ "${func} threw ${e} with type ${type}, not an object",
+ {func:func, e:e, type:typeof e});
+
+ assert(e !== null,
+ assertion_type, description,
+ "${func} threw null, not an object",
+ {func:func});
+
+ // Sanity-check our type
+ assert(typeof type == "number" ||
+ typeof type == "string",
+ assertion_type, description,
+ "${type} is not a number or string",
+ {type:type});
+
+ var codename_name_map = {
+ INDEX_SIZE_ERR: 'IndexSizeError',
+ HIERARCHY_REQUEST_ERR: 'HierarchyRequestError',
+ WRONG_DOCUMENT_ERR: 'WrongDocumentError',
+ INVALID_CHARACTER_ERR: 'InvalidCharacterError',
+ NO_MODIFICATION_ALLOWED_ERR: 'NoModificationAllowedError',
+ NOT_FOUND_ERR: 'NotFoundError',
+ NOT_SUPPORTED_ERR: 'NotSupportedError',
+ INUSE_ATTRIBUTE_ERR: 'InUseAttributeError',
+ INVALID_STATE_ERR: 'InvalidStateError',
+ SYNTAX_ERR: 'SyntaxError',
+ INVALID_MODIFICATION_ERR: 'InvalidModificationError',
+ NAMESPACE_ERR: 'NamespaceError',
+ INVALID_ACCESS_ERR: 'InvalidAccessError',
+ TYPE_MISMATCH_ERR: 'TypeMismatchError',
+ SECURITY_ERR: 'SecurityError',
+ NETWORK_ERR: 'NetworkError',
+ ABORT_ERR: 'AbortError',
+ URL_MISMATCH_ERR: 'URLMismatchError',
+ QUOTA_EXCEEDED_ERR: 'QuotaExceededError',
+ TIMEOUT_ERR: 'TimeoutError',
+ INVALID_NODE_TYPE_ERR: 'InvalidNodeTypeError',
+ DATA_CLONE_ERR: 'DataCloneError'
+ };
+
+ var name_code_map = {
+ IndexSizeError: 1,
+ HierarchyRequestError: 3,
+ WrongDocumentError: 4,
+ InvalidCharacterError: 5,
+ NoModificationAllowedError: 7,
+ NotFoundError: 8,
+ NotSupportedError: 9,
+ InUseAttributeError: 10,
+ InvalidStateError: 11,
+ SyntaxError: 12,
+ InvalidModificationError: 13,
+ NamespaceError: 14,
+ InvalidAccessError: 15,
+ TypeMismatchError: 17,
+ SecurityError: 18,
+ NetworkError: 19,
+ AbortError: 20,
+ URLMismatchError: 21,
+ QuotaExceededError: 22,
+ TimeoutError: 23,
+ InvalidNodeTypeError: 24,
+ DataCloneError: 25,
+
+ EncodingError: 0,
+ NotReadableError: 0,
+ UnknownError: 0,
+ ConstraintError: 0,
+ DataError: 0,
+ TransactionInactiveError: 0,
+ ReadOnlyError: 0,
+ VersionError: 0,
+ OperationError: 0,
+ NotAllowedError: 0
+ };
+
+ var code_name_map = {};
+ for (var key in name_code_map) {
+ if (name_code_map[key] > 0) {
+ code_name_map[name_code_map[key]] = key;
+ }
+ }
+
+ var required_props = {};
+ var name;
+
+ if (typeof type === "number") {
+ if (type === 0) {
+ throw new AssertionError('Test bug: ambiguous DOMException code 0 passed to assert_throws_dom()');
+ } else if (!(type in code_name_map)) {
+ throw new AssertionError('Test bug: unrecognized DOMException code "' + type + '" passed to assert_throws_dom()');
+ }
+ name = code_name_map[type];
+ required_props.code = type;
+ } else if (typeof type === "string") {
+ name = type in codename_name_map ? codename_name_map[type] : type;
+ if (!(name in name_code_map)) {
+ throw new AssertionError('Test bug: unrecognized DOMException code name or name "' + type + '" passed to assert_throws_dom()');
+ }
+
+ required_props.code = name_code_map[name];
+ }
+
+ if (required_props.code === 0 ||
+ ("name" in e &&
+ e.name !== e.name.toUpperCase() &&
+ e.name !== "DOMException")) {
+ // New style exception: also test the name property.
+ required_props.name = name;
+ }
+
+ //We'd like to test that e instanceof the appropriate interface,
+ //but we can't, because we don't know what window it was created
+ //in. It might be an instanceof the appropriate interface on some
+ //unknown other window. TODO: Work around this somehow? Maybe have
+ //the first arg just be a DOMException with the right name instead
+ //of the string-or-code thing we have now?
+
+ for (var prop in required_props) {
+ assert(prop in e && e[prop] == required_props[prop],
+ assertion_type, description,
+ "${func} threw ${e} that is not a DOMException " + type + ": property ${prop} is equal to ${actual}, expected ${expected}",
+ {func:func, e:e, prop:prop, actual:e[prop], expected:required_props[prop]});
+ }
+ }
+ }
+
+ /**
+ * Assert the provided value is thrown.
+ *
+ * @param {value} exception The expected exception.
+ * @param {Function} func Function which should throw.
+ * @param {string} description Error description for the case that the error is not thrown.
+ */
+ function assert_throws_exactly(exception, func, description)
+ {
+ assert_throws_exactly_impl(exception, func, description,
+ "assert_throws_exactly");
+ }
+ expose(assert_throws_exactly, "assert_throws_exactly");
+
+ /**
+ * Like assert_throws_exactly but allows specifying the assertion type
+ * (assert_throws_exactly or promise_rejects_exactly, in practice).
+ */
+ function assert_throws_exactly_impl(exception, func, description,
+ assertion_type)
+ {
+ try {
+ func.call(this);
+ assert(false, assertion_type, description,
+ "${func} did not throw", {func:func});
+ } catch (e) {
+ if (e instanceof AssertionError) {
+ throw e;
+ }
+
+ assert(same_value(e, exception), assertion_type, description,
+ "${func} threw ${e} but we expected it to throw ${exception}",
+ {func:func, e:e, exception:exception});
+ }
+ }
+
function assert_unreached(description) {
assert(false, "assert_unreached", description,
"Reached unreachable code");
@@ -3365,38 +3662,42 @@ policies and contribution forms [3].
var tests = new Tests();
if (global_scope.addEventListener) {
- var error_handler = function(e) {
+ var error_handler = function(message, stack) {
if (tests.tests.length === 0 && !tests.allow_uncaught_exception) {
tests.set_file_is_test();
}
- var stack;
- if (e.error && e.error.stack) {
- stack = e.error.stack;
- } else {
- stack = e.filename + ":" + e.lineno + ":" + e.colno;
- }
-
if (tests.file_is_test) {
var test = tests.tests[0];
if (test.phase >= test.phases.HAS_RESULT) {
return;
}
- test.set_status(test.FAIL, e.message, stack);
+ test.set_status(test.FAIL, message, stack);
test.phase = test.phases.HAS_RESULT;
- // The following function invocation is superfluous.
- // TODO: Remove.
- test.done();
} else if (!tests.allow_uncaught_exception) {
tests.status.status = tests.status.ERROR;
- tests.status.message = e.message;
+ tests.status.message = message;
tests.status.stack = stack;
}
done();
};
- addEventListener("error", error_handler, false);
- addEventListener("unhandledrejection", function(e){ error_handler(e.reason); }, false);
+ addEventListener("error", function(e) {
+ var message = e.message;
+ var stack;
+ if (e.error && e.error.stack) {
+ stack = e.error.stack;
+ } else {
+ stack = e.filename + ":" + e.lineno + ":" + e.colno;
+ }
+ error_handler(message, stack);
+ }, false);
+
+ addEventListener("unhandledrejection", function(e) {
+ var message = "Unhandled rejection: " + e.reason.message;
+ // There's no stack for unhandled rejections.
+ error_handler(message);
+ }, false);
}
test_environment.on_tests_ready();
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html
index 8a567fd7a93..f5a60c30609 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html
@@ -18,13 +18,13 @@ async function registerSwAndOpenFrame(t) {
return frame;
}
-async function deleteCashes() {
+async function deleteCaches() {
const cacheKeys = await caches.keys();
await Promise.all(cacheKeys.map(c => caches.delete(c)));
}
promise_test(async t => {
- t.add_cleanup(deleteCashes);
+ t.add_cleanup(deleteCaches);
const iframe = await registerSwAndOpenFrame(t);
const fetchText =
diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/focus-selector-delegatesFocus.html b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-selector-delegatesFocus.html
new file mode 100644
index 00000000000..386045258e0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/shadow-dom/focus/focus-selector-delegatesFocus.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <title>CSS Test (Selectors): :focus behavior with shadow hosts & delegatesFocus </title>
+ <link rel="author" title="Rakina Zata Amni" href="rakina@chromium.org" />
+ <link rel="help" href="https://html.spec.whatwg.org/multipage/semantics-other.html#selector-focus" />
+ <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/shadow-utils.js"></script>
+</head>
+
+<body>
+<script>
+function createFocusableDiv() {
+ const div = document.createElement("div");
+ div.innerText = "foo";
+ div.tabIndex = 0;
+ return div;
+}
+
+function createShadowHost(delegatesFocus, container) {
+ const host = document.createElement("div");
+ host.attachShadow({ mode: "open", delegatesFocus: delegatesFocus });
+ container.appendChild(host);
+ return host;
+}
+
+const delegatesFocusValues = [true, false];
+
+for (const delegatesFocus of delegatesFocusValues) {
+ test(() => {
+ resetFocus();
+ const host = createShadowHost(delegatesFocus, document.body);
+ const shadowChild = createFocusableDiv();
+ host.shadowRoot.appendChild(shadowChild);
+
+ shadowChild.focus();
+ assert_true(shadowChild.matches(":focus"), "element in shadow tree matches :focus");
+ assert_true(host.matches(":focus"), "host matches :focus");
+ }, `:focus applies to host with delegatesFocus=${delegatesFocus} when the shadow root's descendant has focus`);
+
+ test(() => {
+ resetFocus();
+ const host = createShadowHost(delegatesFocus, document.body);
+ const slotted = createFocusableDiv();
+ host.shadowRoot.appendChild(document.createElement("slot"));
+ host.appendChild(slotted);
+
+ slotted.focus();
+ assert_true(slotted.matches(":focus"), "slotted element matches :focus");
+ assert_true(host.matches(":focus"), "host matches :focus");
+ }, `:focus applies to host with delegatesFocus=${delegatesFocus} when slotted element has focus`);
+
+ for (const nestedDelegatesFocus of delegatesFocusValues) {
+ test(() => {
+ resetFocus();
+ const host = createShadowHost(delegatesFocus, document.body);
+ const nestedHost = createShadowHost(nestedDelegatesFocus, host.shadowRoot);
+ const nestedShadowChild = createFocusableDiv();
+ nestedHost.shadowRoot.appendChild(nestedShadowChild);
+ nestedShadowChild.focus();
+ assert_true(nestedShadowChild.matches(":focus"), "element in nested shadow tree matches :focus");
+ assert_true(nestedHost.matches(":focus"), "host of nested shadow tree matches focus");
+ assert_true(host.matches(":focus"), "topmost host matches focus");
+}, `:focus applies to host with delegatesFocus=${delegatesFocus} when an element in a nested shadow tree with delegatesFocus=${nestedDelegatesFocus} is focused`);
+ }
+}
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/shadow-dom/focus/resources/shadow-utils.js b/tests/wpt/web-platform-tests/shadow-dom/focus/resources/shadow-utils.js
index 6ea372afdf1..8033ce0169f 100644
--- a/tests/wpt/web-platform-tests/shadow-dom/focus/resources/shadow-utils.js
+++ b/tests/wpt/web-platform-tests/shadow-dom/focus/resources/shadow-utils.js
@@ -60,8 +60,9 @@ function removeTabIndex(elements) {
}
}
-function resetFocus() {
- document.body.focus();
+function resetFocus(root = document) {
+ if (root.activeElement)
+ root.activeElement.blur();
}
function navigateFocusForward() {
diff --git a/tests/wpt/web-platform-tests/signed-exchange/README.md b/tests/wpt/web-platform-tests/signed-exchange/README.md
index f1dbfe6d1ad..4032edf22f3 100644
--- a/tests/wpt/web-platform-tests/signed-exchange/README.md
+++ b/tests/wpt/web-platform-tests/signed-exchange/README.md
@@ -1,5 +1,5 @@
This directory contains tests for the
-[b2 implementation snapshot](https://tools.ietf.org/html/draft-yasskin-httpbis-origin-signed-exchanges-impl-02) of the
+[b3 implementation snapshot](https://tools.ietf.org/html/draft-yasskin-httpbis-origin-signed-exchanges-impl-03) of the
[Signed HTTP Exchanges](https://wicg.github.io/webpackage/draft-yasskin-http-origin-signed-responses.html).
`resources` directory contains pregenerated signed exchanges and
diff --git a/tests/wpt/web-platform-tests/storage-access-api/hasStorageAccess.sub.window.js b/tests/wpt/web-platform-tests/storage-access-api/hasStorageAccess.sub.window.js
index 1352d7589f0..c4d6e3a8b9a 100644
--- a/tests/wpt/web-platform-tests/storage-access-api/hasStorageAccess.sub.window.js
+++ b/tests/wpt/web-platform-tests/storage-access-api/hasStorageAccess.sub.window.js
@@ -56,4 +56,13 @@ if (topLevelDocument) {
// Validate the nested-iframe scenario where the cross-origin frame containing
// the tests is not the first child.
RunTestsInNestedIFrame("http://{{domains[www]}}:{{ports[http][0]}}/storage-access-api/hasStorageAccess.sub.window.html?testCase=nested-cross-origin-frame&allowed=false&rootdocument=false");
+
+ // Run tests specific to the top-level window only here. They won't get re-run inside of various iframes.
+ promise_test(() => {
+ let createdDocument = document.implementation.createDocument("", null);
+
+ return createdDocument.hasStorageAccess().then(hasAccess => {
+ assert_false(hasAccess, "Access should be denied to a generated document not part of the DOM.");
+ });
+ }, "[" + testPrefix + "] document.hasStorageAccess() should work on a document object.");
}
diff --git a/tests/wpt/web-platform-tests/storage/opaque-origin.https.window.js b/tests/wpt/web-platform-tests/storage/opaque-origin.https.window.js
index 3e101dde675..cc1d31fdf2c 100644
--- a/tests/wpt/web-platform-tests/storage/opaque-origin.https.window.js
+++ b/tests/wpt/web-platform-tests/storage/opaque-origin.https.window.js
@@ -15,7 +15,7 @@ function load_iframe(src, sandbox) {
function wait_for_message(iframe) {
return new Promise(resolve => {
self.addEventListener('message', function listener(e) {
- if (e.source === iframe.contentWindow) {
+ if (e.source === iframe.contentWindow && "result" in e.data) {
resolve(e.data);
self.removeEventListener('message', listener);
}
@@ -24,7 +24,8 @@ function wait_for_message(iframe) {
}
function make_script(snippet) {
- return '<script>' +
+ return '<script src="/resources/testharness.js"></script>' +
+ '<script>' +
' window.onmessage = () => {' +
' try {' +
' (' + snippet + ')' +
@@ -33,19 +34,25 @@ function make_script(snippet) {
' window.parent.postMessage({result: "no rejection"}, "*");' +
' }, ' +
' error => {' +
- ' window.parent.postMessage({result: error.name}, "*");' +
+ ' try {' +
+ ' assert_throws_js(TypeError, () => { throw error; });' +
+ ' window.parent.postMessage({result: "correct rejection"}, "*");' +
+ ' } catch (e) {' +
+ ' window.parent.postMessage({result: "incorrect rejection"}, "*");' +
+ ' }' +
' });' +
' } catch (ex) {' +
// Report if not implemented/exposed, rather than time out.
- ' window.parent.postMessage({result: ex.message}, "*");' +
+ ' window.parent.postMessage({result: "API access threw"}, "*");' +
' }' +
' };' +
'<\/script>';
}
-['navigator.storage.persist()',
- 'navigator.storage.persisted()',
- 'navigator.storage.estimate()'
+['navigator.storage.persisted()',
+ 'navigator.storage.estimate()',
+ // persist() can prompt, so make sure we test that last
+ 'navigator.storage.persist()',
].forEach(snippet => {
promise_test(t => {
return load_iframe(make_script(snippet))
@@ -66,7 +73,7 @@ function make_script(snippet) {
return wait_for_message(iframe);
})
.then(message => {
- assert_equals(message.result, 'TypeError',
+ assert_equals(message.result, 'correct rejection',
`${snippet} should reject with TypeError`);
});
}, `${snippet} in sandboxed iframe should reject with TypeError`);
diff --git a/tests/wpt/web-platform-tests/svg/animations/keysplines-x-limits.html b/tests/wpt/web-platform-tests/svg/animations/keysplines-x-limits.html
new file mode 100644
index 00000000000..3c9ba65059f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/animations/keysplines-x-limits.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<title>'keySplines' with x-values outside of the 0 to 1 range</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<svg>
+ <rect x="10" width="10" height="10" fill="blue">
+ <animate attributeName="x" values="0; 250" dur="5s"/>
+ </rect>
+ <rect x="10" width="10" height="10" y="20" fill="blue">
+ <animate attributeName="x" values="0; 250" dur="5s"
+ keyTimes="0; 1" keySplines="-1 0 1 1" calcMode="spline"/>
+ </rect>
+ <rect x="10" width="10" height="10" y="30" fill="blue">
+ <animate attributeName="x" values="0; 250" dur="5s"
+ keyTimes="0; 1" keySplines="2 0 1 1" calcMode="spline"/>
+ </rect>
+ <rect x="10" width="10" height="10" y="10" fill="blue">
+ <animate attributeName="x" values="0; 250" dur="5s"
+ keyTimes="0; 1" keySplines="0 0 -1 1" calcMode="spline"/>
+ </rect>
+ <rect x="10" width="10" height="10" y="40" fill="blue">
+ <animate attributeName="x" values="0; 250" dur="5s"
+ keyTimes="0; 1" keySplines="0 0 2 1" calcMode="spline"/>
+ </rect>
+</svg>
+<script>
+ async_test(t => {
+ let svg = document.querySelector('svg');
+ svg.pauseAnimations();
+ svg.setCurrentTime(2.5);
+ window.onload = t.step_func(() => {
+ requestAnimationFrame(t.step_func_done(() => {
+ let rects = document.getElementsByTagName('rect');
+ assert_equals(rects[0].getBBox().x, 125, 'animations applied');
+ assert_equals(rects[1].getBBox().x, 10, 'first control point x less than zero');
+ assert_equals(rects[2].getBBox().x, 10, 'first control point x greater than one');
+ assert_equals(rects[3].getBBox().x, 10, 'second control point x less than zero');
+ assert_equals(rects[4].getBBox().x, 10, 'second control point x greater than one');
+ }));
+ });
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/svg/animations/scripted/onhover-syncbases.html b/tests/wpt/web-platform-tests/svg/animations/scripted/onhover-syncbases.html
index 86a0a40fa2d..de757f369af 100644
--- a/tests/wpt/web-platform-tests/svg/animations/scripted/onhover-syncbases.html
+++ b/tests/wpt/web-platform-tests/svg/animations/scripted/onhover-syncbases.html
@@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
- <title>Check if onhover events reset correctly when triggred multiple times</title>
+ <title>Check if onhover events reset correctly when triggered multiple times</title>
<link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#interact-EventAttributes">
<link rel="author" title="Edvard Thörnros" href="mailto:edvardt@opera.com">
<script src="/resources/testharness.js"></script>
@@ -20,7 +20,7 @@ async_test(t => {
let rounds = 5; // How many times the cursor is moved in and out
let circle = document.querySelector("#circle");
let delay = 20;
- let f = t.step_func(function() {
+ function f() {
assert_equals(window.getComputedStyle(circle, null).fill,
"rgb(255, 0, 0)")
if (rounds-- == 0) {
@@ -29,15 +29,15 @@ async_test(t => {
}
circle.dispatchEvent(new Event("mouseover"));
- step_timeout(function() {
+ t.step_timeout(function() {
assert_equals(window.getComputedStyle(circle, null).fill,
"rgb(0, 255, 0)")
circle.dispatchEvent(new Event("mouseout"))
t.step_timeout(f, delay);
- }, delay);
- });
- step_timeout(function() { f(); }, 0);
- });
+ }, delay);
+ }
+ t.step_timeout(f, 0);
+});
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/tools/ci/tcdownload.py b/tests/wpt/web-platform-tests/tools/ci/tcdownload.py
index 91c763a7acd..46e9005740d 100644
--- a/tests/wpt/web-platform-tests/tools/ci/tcdownload.py
+++ b/tests/wpt/web-platform-tests/tools/ci/tcdownload.py
@@ -71,7 +71,7 @@ def run(*args, **kwargs):
if not taskgroups:
logger.error("No complete TaskCluster runs found for ref %s" % kwargs["ref"])
- return
+ return 1
for taskgroup in taskgroups:
taskgroup_url = "https://queue.taskcluster.net/v1/task-group/%s/list"
diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.py b/tests/wpt/web-platform-tests/tools/lint/lint.py
index 48a275bcf29..7689c359928 100644
--- a/tests/wpt/web-platform-tests/tools/lint/lint.py
+++ b/tests/wpt/web-platform-tests/tools/lint/lint.py
@@ -681,7 +681,10 @@ def check_script_metadata(repo_root, path, f):
ahem_font_re = re.compile(b"font.*:.*ahem", flags=re.IGNORECASE)
-ahem_stylesheet_re = re.compile(b"\/fonts\/ahem\.css", flags=re.IGNORECASE)
+# Ahem can appear either in the global location or in the support
+# directory for legacy Mozilla imports
+ahem_stylesheet_re = re.compile(b"\/fonts\/ahem\.css|support\/ahem.css",
+ flags=re.IGNORECASE)
def check_ahem_system_font(repo_root, path, f):
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
index d6c7a4ff398..3584c93a199 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
@@ -3,6 +3,6 @@ mozinfo==1.1.0
mozlog==4.2.0
mozdebug==0.1.1
pillow==6.1.0
-urllib3[secure]==1.25.3
+urllib3[secure]==1.25.5
requests==2.22.0
six==1.12.0
diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html
index 309873cb1f8..4ec5db1adce 100644
--- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html
@@ -1,8 +1,7 @@
<!DOCTYPE html>
<head>
<script nonce="123" src="/resources/testharness.js"></script>
- <script nonce="123"src="/resources/testharnessreport.js"></script>
- <script nonce="123"src="/content-security-policy/support/testharness-helper.js"></script>
+ <script nonce="123" src="/resources/testharnessreport.js"></script>
</head>
<body>
<script nonce="123">
@@ -23,15 +22,10 @@
// Return function that returns a promise that resolves on the given
// violation report.
- //
- // filter_arg - iff function, call it with the event object.
- // Else, string-ify and compare against event.originalPolicy.
function promise_violation(filter_arg) {
return _ => new Promise((resolve, reject) => {
function handler(e) {
- let matches = (filter_arg instanceof Function)
- ? filter_arg(e)
- : (e.originalPolicy.includes(filter_arg));
+ let matches = e.originalPolicy.includes(filter_arg);
if (matches) {
document.removeEventListener("securitypolicyviolation", handler);
e.stopPropagation();
@@ -56,7 +50,6 @@
createURL: id,
createScript: id,
};
-
const scriptyPolicy = TrustedTypes.createPolicy('allowEval', a_policy);
// Provoke/wait for a CSP violation, in order to be sure that all previous
@@ -72,33 +65,35 @@
});
}
- window.script_run_beacon = 'never_overwritten';
-
promise_test(t => {
+ let beacon = 'never_overwritten';
let p = Promise.resolve()
.then(promise_violation("trusted-types *"))
.then(promise_flush());
- expect_throws(_ => eval('script_run_beacon="should not run"'));
- assert_equals(script_run_beacon, 'never_overwritten');
+ assert_throws(new EvalError(),
+ _ => eval('beacon="should not run"'));
+ assert_equals(beacon, 'never_overwritten');
flush();
return p;
}, "Trusted Type violation report: evaluating a string.");
promise_test(t => {
+ let beacon = 'never_overwritten2';
let p = promise_flush()();
- eval(scriptyPolicy.createScript('script_run_beacon="i ran"'));
+ eval(scriptyPolicy.createScript('beacon="i ran"'));
+ assert_equals(beacon, 'i ran');
flush();
- assert_equals(script_run_beacon, 'i ran');
return p;
}, "Trusted Type violation report: evaluating a Trusted Script.");
promise_test(t => {
+ let beacon = 'never_overwritten';
TrustedTypes.createPolicy('default', {
createScript: s => s.replace('payload', 'default policy'),
}, true);
let p = promise_flush()();
- eval('script_run_beacon="payload"');
- assert_equals(script_run_beacon, 'default policy');
+ eval('beacon="payload"');
+ assert_equals(beacon, 'default policy');
flush();
return p;
}, "Trusted Type violation report: default policy transforms the script before CSP checks runs.");
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html
index 5c9ec84e8db..5bd0ae2b1ed 100644
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html
+++ b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html
@@ -45,6 +45,8 @@ const gNonAnimatableProps = [
'unsupportedProperty',
+ 'float', // We use the string "cssFloat" to represent "float" property, and
+ // so reject "float" in the keyframe-like object.
'font-size', // Supported property that uses dashes
];
diff --git a/tests/wpt/web-platform-tests/webaudio/resources/audit.js b/tests/wpt/web-platform-tests/webaudio/resources/audit.js
index 1876c0fc771..2aac1fffb49 100644
--- a/tests/wpt/web-platform-tests/webaudio/resources/audit.js
+++ b/tests/wpt/web-platform-tests/webaudio/resources/audit.js
@@ -1187,7 +1187,21 @@ window.Audit = (function() {
'> [' + this._label + '] ' +
(this._description ? this._description : ''));
- this._taskFunction(this, this.should.bind(this));
+ // Ideally we would just use testharness async_test instead of reinventing
+ // that wheel, but since it's been reinvented... At least make sure that
+ // an exception while running a task doesn't preclude us running all the
+ // _other_ tasks for the test.
+ try {
+ this._taskFunction(this, this.should.bind(this));
+ } catch (e) {
+ // Log the failure.
+ test(() => { throw e; }, `Executing "${this.label}"`);
+ if (this.state != TaskState.FINISHED) {
+ // We threw before calling done(), so do that manually to run our
+ // other tasks.
+ this.done();
+ }
+ }
}
// Update the task success based on the individual assertion/test inside.
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html
index e94621296a3..dc324b22d65 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https.html
@@ -12,48 +12,50 @@
<script id="layout-test-code">
let audit = Audit.createTaskRunner();
- let sampleRate = 48000;
- let realtimeContext = new AudioContext();
- let offlineContext = new OfflineAudioContext(1, sampleRate, sampleRate);
+ setup(() => {
+ let sampleRate = 48000;
+ let realtimeContext = new AudioContext();
+ let offlineContext = new OfflineAudioContext(1, sampleRate, sampleRate);
- let filePath = 'processors/dummy-processor.js';
+ let filePath = 'processors/dummy-processor.js';
- // Test if the browser does not crash upon addModule() call after the
- // realtime context construction.
- audit.define(
- {label: 'module-loading-after-realtime-context-creation'},
- (task, should) => {
- let dummyWorkletNode =
- new AudioWorkletNode(realtimeContext, 'dummy');
- dummyWorkletNode.connect(realtimeContext.destination);
- should(dummyWorkletNode instanceof AudioWorkletNode,
- '"dummyWorkletNode" is an instance of AudioWorkletNode ' +
- 'from realtime context')
- .beTrue();
- task.done();
- });
+ // Test if the browser does not crash upon addModule() call after the
+ // realtime context construction.
+ audit.define(
+ {label: 'module-loading-after-realtime-context-creation'},
+ (task, should) => {
+ let dummyWorkletNode =
+ new AudioWorkletNode(realtimeContext, 'dummy');
+ dummyWorkletNode.connect(realtimeContext.destination);
+ should(dummyWorkletNode instanceof AudioWorkletNode,
+ '"dummyWorkletNode" is an instance of AudioWorkletNode ' +
+ 'from realtime context')
+ .beTrue();
+ task.done();
+ });
- // Test if the browser does not crash upon addModule() call after the
- // offline context construction.
- audit.define(
- {label: 'module-loading-after-offline-context-creation'},
- (task, should) => {
- let dummyWorkletNode =
- new AudioWorkletNode(offlineContext, 'dummy');
- dummyWorkletNode.connect(offlineContext.destination);
- should(dummyWorkletNode instanceof AudioWorkletNode,
- '"dummyWorkletNode" is an instance of AudioWorkletNode ' +
- 'from offline context')
- .beTrue();
- task.done();
- });
+ // Test if the browser does not crash upon addModule() call after the
+ // offline context construction.
+ audit.define(
+ {label: 'module-loading-after-offline-context-creation'},
+ (task, should) => {
+ let dummyWorkletNode =
+ new AudioWorkletNode(offlineContext, 'dummy');
+ dummyWorkletNode.connect(offlineContext.destination);
+ should(dummyWorkletNode instanceof AudioWorkletNode,
+ '"dummyWorkletNode" is an instance of AudioWorkletNode ' +
+ 'from offline context')
+ .beTrue();
+ task.done();
+ });
- Promise.all([
- realtimeContext.audioWorklet.addModule(filePath),
- offlineContext.audioWorklet.addModule(filePath)
- ]).then(() => {
- audit.run();
- });
+ Promise.all([
+ realtimeContext.audioWorklet.addModule(filePath),
+ offlineContext.audioWorklet.addModule(filePath)
+ ]).then(() => {
+ audit.run();
+ });
+ });
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html
index 3e364eb7b35..b1f18d397d4 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html
@@ -22,104 +22,106 @@ Somewhat similiar to a test from Mozilla:
<body class="a">
<div id="log"></div>
<script>
- var elementSourceTest = async_test("Element Source tests completed");
-
- var src = '/webaudio/resources/sin_440Hz_-6dBFS_1s.wav';
- var BUFFER_SIZE = 2048;
- var context = null;
- var actualBufferArrayC0 = new Float32Array(0);
- var actualBufferArrayC1 = new Float32Array(0);
- var audio = null, source = null, processor = null
-
- function loadExpectedBuffer(event) {
- bufferLoader = new BufferLoader(
- context,
- [src],
- bufferLoadCompleted
- );
- bufferLoader.load();
- };
-
- function bufferLoadCompleted(buffer) {
- runTests(buffer);
- };
-
- function concatTypedArray(arr1, arr2) {
- var result = new Float32Array(arr1.length + arr2.length);
- result.set(arr1);
- result.set(arr2, arr1.length);
- return result;
- }
-
- // Create Audio context. The reference wav file is sampled at 44.1 kHz so
- // use the same rate for the context to remove extra resampling that might
- // be required.
- context = new AudioContext({sampleRate: 44100});
-
- // Create an audio element, and a media element source
- audio = document.createElement('audio');
- audio.src = src;
- source = context.createMediaElementSource(audio);
-
-function processListener (e) {
- actualBufferArrayC0 = concatTypedArray(actualBufferArrayC0, e.inputBuffer.getChannelData(0));
- actualBufferArrayC1 = concatTypedArray(actualBufferArrayC1, e.inputBuffer.getChannelData(1));
-}
-
- // Create a processor node to copy the input to the actual buffer
- processor = context.createScriptProcessor(BUFFER_SIZE);
- source.connect(processor);
- processor.connect(context.destination);
- processor.addEventListener('audioprocess', processListener);
-
- // When media playback ended, save the begin to compare with expected buffer
- audio.addEventListener("ended", function(e) {
- // Setting a timeout since we need audioProcess event to run for all samples
- window.setTimeout(loadExpectedBuffer, 50);
- });
-
- audio.play();
-
- function runTests(expected) {
- source.disconnect();
- processor.disconnect();
-
- // firefox seems to process events after disconnect
- processor.removeEventListener('audioprocess', processListener)
-
- // Note: the expected result is from a mono source file.
- var expectedBuffer = expected[0];
-
- // Trim the actual elements because we don't have a fine-grained
- // control over the start and end time of recording the data.
- var actualTrimmedC0 = trimEmptyElements(actualBufferArrayC0);
- var actualTrimmedC1 = trimEmptyElements(actualBufferArrayC1);
- var expectedLength = trimEmptyElements(expectedBuffer.getChannelData(0)).length;
-
- // Test that there is some data.
- test(function() {
- assert_greater_than(actualTrimmedC0.length, 0,
- "processed data array (C0) length greater than 0");
- assert_greater_than(actualTrimmedC1.length, 0,
- "processed data array (C1) length greater than 0");
- }, "Channel 0 processed some data");
-
- // Test the actual contents of the 1st and second channel.
- test(function() {
- assert_array_approx_equals(
- actualTrimmedC0,
- trimEmptyElements(expectedBuffer.getChannelData(0)),
- 1e-4,
- "comparing expected and rendered buffers (channel 0)");
- assert_array_approx_equals(
- actualTrimmedC1,
- trimEmptyElements(expectedBuffer.getChannelData(0)),
- 1e-4,
- "comparing expected and rendered buffers (channel 1)");
- }, "All data processed correctly");
-
- elementSourceTest.done();
- };
+ var elementSourceTest = async_test(function(elementSourceTest) {
+
+ var src = '/webaudio/resources/sin_440Hz_-6dBFS_1s.wav';
+ var BUFFER_SIZE = 2048;
+ var context = null;
+ var actualBufferArrayC0 = new Float32Array(0);
+ var actualBufferArrayC1 = new Float32Array(0);
+ var audio = null, source = null, processor = null
+
+ function loadExpectedBuffer(event) {
+ bufferLoader = new BufferLoader(
+ context,
+ [src],
+ elementSourceTest.step_func(bufferLoadCompleted)
+ );
+ bufferLoader.load();
+ };
+
+ function bufferLoadCompleted(buffer) {
+ runTests(buffer);
+ };
+
+ function concatTypedArray(arr1, arr2) {
+ var result = new Float32Array(arr1.length + arr2.length);
+ result.set(arr1);
+ result.set(arr2, arr1.length);
+ return result;
+ }
+
+ // Create Audio context. The reference wav file is sampled at 44.1 kHz so
+ // use the same rate for the context to remove extra resampling that might
+ // be required.
+ context = new AudioContext({sampleRate: 44100});
+
+ // Create an audio element, and a media element source
+ audio = document.createElement('audio');
+ audio.src = src;
+ source = context.createMediaElementSource(audio);
+
+ function processListener (e) {
+ actualBufferArrayC0 = concatTypedArray(actualBufferArrayC0, e.inputBuffer.getChannelData(0));
+ actualBufferArrayC1 = concatTypedArray(actualBufferArrayC1, e.inputBuffer.getChannelData(1));
+ }
+
+ // Create a processor node to copy the input to the actual buffer
+ processor = context.createScriptProcessor(BUFFER_SIZE);
+ source.connect(processor);
+ processor.connect(context.destination);
+ let audioprocessListener = elementSourceTest.step_func(processListener);
+ processor.addEventListener('audioprocess', audioprocessListener);
+
+ // When media playback ended, save the begin to compare with expected buffer
+ audio.addEventListener("ended", elementSourceTest.step_func(function(e) {
+ // Setting a timeout since we need audioProcess event to run for all samples
+ window.setTimeout(elementSourceTest.step_func(loadExpectedBuffer), 50);
+ }));
+
+ audio.play();
+
+ function runTests(expected) {
+ source.disconnect();
+ processor.disconnect();
+
+ // firefox seems to process events after disconnect
+ processor.removeEventListener('audioprocess', audioprocessListener)
+
+ // Note: the expected result is from a mono source file.
+ var expectedBuffer = expected[0];
+
+ // Trim the actual elements because we don't have a fine-grained
+ // control over the start and end time of recording the data.
+ var actualTrimmedC0 = trimEmptyElements(actualBufferArrayC0);
+ var actualTrimmedC1 = trimEmptyElements(actualBufferArrayC1);
+ var expectedLength = trimEmptyElements(expectedBuffer.getChannelData(0)).length;
+
+ // Test that there is some data.
+ test(function() {
+ assert_greater_than(actualTrimmedC0.length, 0,
+ "processed data array (C0) length greater than 0");
+ assert_greater_than(actualTrimmedC1.length, 0,
+ "processed data array (C1) length greater than 0");
+ }, "Channel 0 processed some data");
+
+ // Test the actual contents of the 1st and second channel.
+ test(function() {
+ assert_array_approx_equals(
+ actualTrimmedC0,
+ trimEmptyElements(expectedBuffer.getChannelData(0)),
+ 1e-4,
+ "comparing expected and rendered buffers (channel 0)");
+ assert_array_approx_equals(
+ actualTrimmedC1,
+ trimEmptyElements(expectedBuffer.getChannelData(0)),
+ 1e-4,
+ "comparing expected and rendered buffers (channel 1)");
+ }, "All data processed correctly");
+
+ elementSourceTest.done();
+ };
+ }, "Element Source tests completed");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html
index 2e04ab6a3f2..816eba0b29a 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-mediastreamaudiosourcenode-interface/mediastreamaudiosourcenode-routing.html
@@ -21,105 +21,107 @@
const t = async_test(
"MediaStreamAudioSourceNode captures the right track."
);
- const ac = new AudioContext();
- // Test that the right track is captured. Set up a MediaStream that has two
- // tracks, one with a tone at 100Hz and one with a tone at 1000Hz.
- const dest0 = ac.createMediaStreamDestination();
- const dest1 = ac.createMediaStreamDestination();
- const osc0 = ac.createOscillator();
- const osc1 = ac.createOscillator();
- osc0.frequency.value = 100;
- osc1.frequency.value = 1000;
- osc0.connect(dest0);
- osc1.connect(dest1);
- osc0.start(0);
- osc1.start(0);
- const track0 = dest0.stream.getAudioTracks()[0];
- const track0id = track0.id;
- const track1 = dest1.stream.getAudioTracks()[0];
- const track1id = track1.id;
+ t.step(function() {
+ const ac = new AudioContext();
+ // Test that the right track is captured. Set up a MediaStream that has two
+ // tracks, one with a tone at 100Hz and one with a tone at 1000Hz.
+ const dest0 = ac.createMediaStreamDestination();
+ const dest1 = ac.createMediaStreamDestination();
+ const osc0 = ac.createOscillator();
+ const osc1 = ac.createOscillator();
+ osc0.frequency.value = 100;
+ osc1.frequency.value = 1000;
+ osc0.connect(dest0);
+ osc1.connect(dest1);
+ osc0.start(0);
+ osc1.start(0);
+ const track0 = dest0.stream.getAudioTracks()[0];
+ const track0id = track0.id;
+ const track1 = dest1.stream.getAudioTracks()[0];
+ const track1id = track1.id;
- let ids = [track0id, track1id];
- ids.sort();
- let targetFrequency;
- let otherFrequency;
- if (ids[0] == track0id) {
- targetFrequency = 100;
- otherFrequency = 1000;
- } else {
- targetFrequency = 1000;
- otherFrequency = 100;
- }
+ let ids = [track0id, track1id];
+ ids.sort();
+ let targetFrequency;
+ let otherFrequency;
+ if (ids[0] == track0id) {
+ targetFrequency = 100;
+ otherFrequency = 1000;
+ } else {
+ targetFrequency = 1000;
+ otherFrequency = 100;
+ }
- let twoTrackMediaStream = new MediaStream();
- twoTrackMediaStream.addTrack(track0);
- twoTrackMediaStream.addTrack(track1);
+ let twoTrackMediaStream = new MediaStream();
+ twoTrackMediaStream.addTrack(track0);
+ twoTrackMediaStream.addTrack(track1);
- const twoTrackSource = ac.createMediaStreamSource(twoTrackMediaStream);
- const analyser = ac.createAnalyser();
- // Don't do smoothing so that the frequency data changes quickly
- analyser.smoothingTimeConstant = 0;
+ const twoTrackSource = ac.createMediaStreamSource(twoTrackMediaStream);
+ const analyser = ac.createAnalyser();
+ // Don't do smoothing so that the frequency data changes quickly
+ analyser.smoothingTimeConstant = 0;
- twoTrackSource.connect(analyser);
+ twoTrackSource.connect(analyser);
- const indexToCheckForHighEnergy = binIndexForFrequency(
- targetFrequency,
- analyser
- );
- const indexToCheckForLowEnergy = binIndexForFrequency(
- otherFrequency,
- analyser
- );
- let frequencyData = new Float32Array(1024);
- let checkCount = 0;
- let numberOfRemovals = 0;
- let stopped = false;
- function analyse() {
- analyser.getFloatFrequencyData(frequencyData);
- // there should be high energy in the right bin, higher than 40dbfs because
- // it's supposed to be a sine wave at 0dbfs
- if (frequencyData[indexToCheckForHighEnergy] > -40 && !stopped) {
- assert_true(true, "Correct track routed to the AudioContext.");
- checkCount++;
- }
- if (stopped && frequencyData[indexToCheckForHighEnergy] < -40) {
- assert_true(
- true,
- `After stopping the track, low energy is found in the
- same bin`
+ const indexToCheckForHighEnergy = binIndexForFrequency(
+ targetFrequency,
+ analyser
);
- checkCount++;
- }
- if (checkCount > 5 && checkCount < 20) {
- twoTrackMediaStream.getAudioTracks().forEach(track => {
- if (track.id == ids[0]) {
- numberOfRemovals++;
- window.removedTrack = track;
- twoTrackMediaStream.removeTrack(track);
- }
- });
- assert_true(
- numberOfRemovals == 1,
- `The mediastreamtrack can only be
- removed once from the mediastream`
+ const indexToCheckForLowEnergy = binIndexForFrequency(
+ otherFrequency,
+ analyser
);
- } else if (checkCount >= 20 && checkCount < 30) {
- window.removedTrack.stop();
- stopped = true;
- } else if (checkCount >= 30) {
- assert_true(
- numberOfRemovals == 1,
- `After removing the track from the
+ let frequencyData = new Float32Array(1024);
+ let checkCount = 0;
+ let numberOfRemovals = 0;
+ let stopped = false;
+ function analyse() {
+ analyser.getFloatFrequencyData(frequencyData);
+ // there should be high energy in the right bin, higher than 40dbfs because
+ // it's supposed to be a sine wave at 0dbfs
+ if (frequencyData[indexToCheckForHighEnergy] > -40 && !stopped) {
+ assert_true(true, "Correct track routed to the AudioContext.");
+ checkCount++;
+ }
+ if (stopped && frequencyData[indexToCheckForHighEnergy] < -40) {
+ assert_true(
+ true,
+ `After stopping the track, low energy is found in the
+ same bin`
+ );
+ checkCount++;
+ }
+ if (checkCount > 5 && checkCount < 20) {
+ twoTrackMediaStream.getAudioTracks().forEach(track => {
+ if (track.id == ids[0]) {
+ numberOfRemovals++;
+ window.removedTrack = track;
+ twoTrackMediaStream.removeTrack(track);
+ }
+ });
+ assert_true(
+ numberOfRemovals == 1,
+ `The mediastreamtrack can only be
+ removed once from the mediastream`
+ );
+ } else if (checkCount >= 20 && checkCount < 30) {
+ window.removedTrack.stop();
+ stopped = true;
+ } else if (checkCount >= 30) {
+ assert_true(
+ numberOfRemovals == 1,
+ `After removing the track from the
mediastream, it's still routed to the graph.`
- );
- // After some time, consider that it worked.
- t.done();
- return;
- }
+ );
+ // After some time, consider that it worked.
+ t.done();
+ return;
+ }
- t.step_timeout(analyse, 100);
- }
- t.step_timeout(analyse, 100);
+ t.step_timeout(analyse, 100);
+ }
+ t.step_timeout(analyse, 100);
+ });
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html
index d330c9c3de4..c434aa8c6a5 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner.html
@@ -108,6 +108,16 @@
},
'new PannerNode(c, ' + JSON.stringify(options) + ')')
.throw(DOMException, 'NotSupportedError');
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.channelCount = options.channelCount;
+ },
+ `node.channelCount = ${options.channelCount}`)
+ .throw(DOMException, "NotSupportedError");
+ should(node.channelCount,
+ `node.channelCount after setting to ${options.channelCount}`)
+ .beEqualTo(2);
options = {channelCount: 3};
should(
@@ -116,6 +126,16 @@
},
'new PannerNode(c, ' + JSON.stringify(options) + ')')
.throw(DOMException, 'NotSupportedError');
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.channelCount = options.channelCount;
+ },
+ `node.channelCount = ${options.channelCount}`)
+ .throw(DOMException, "NotSupportedError");
+ should(node.channelCount,
+ `node.channelCount after setting to ${options.channelCount}`)
+ .beEqualTo(2);
options = {channelCount: 99};
should(
@@ -124,6 +144,16 @@
},
'new PannerNode(c, ' + JSON.stringify(options) + ')')
.throw(DOMException, 'NotSupportedError');
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.channelCount = options.channelCount;
+ },
+ `node.channelCount = ${options.channelCount}`)
+ .throw(DOMException, "NotSupportedError");
+ should(node.channelCount,
+ `node.channelCount after setting to ${options.channelCount}`)
+ .beEqualTo(2);
// Test channelCountMode. A mode of "max" is illegal, but others are
// ok.
@@ -154,6 +184,16 @@
},
'new PannerNode(c, ' + JSON.stringify(options) + ')')
.throw(DOMException, 'NotSupportedError');
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.channelCountMode = options.channelCountMode;
+ },
+ `node.channelCountMode = ${options.channelCountMode}`)
+ .throw(DOMException, "NotSupportedError");
+ should(node.channelCountMode,
+ `node.channelCountMode after setting to ${options.channelCountMode}`)
+ .beEqualTo("clamped-max");
options = {channelCountMode: 'foobar'};
should(
@@ -162,6 +202,16 @@
},
'new PannerNode(c, " + JSON.stringify(options) + ")')
.throw(TypeError);
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.channelCountMode = options.channelCountMode;
+ },
+ `node.channelCountMode = ${options.channelCountMode}`)
+ .notThrow(); // Invalid assignment to enum-valued attrs does not throw.
+ should(node.channelCountMode,
+ `node.channelCountMode after setting to ${options.channelCountMode}`)
+ .beEqualTo("clamped-max");
// Test channelInterpretation.
options = {channelInterpretation: 'speakers'};
@@ -200,6 +250,17 @@
},
'new PannerNode(c, ' + JSON.stringify(options) + ')')
.throw(RangeError);
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.maxDistance = options.maxDistance;
+ },
+ `node.maxDistance = ${options.maxDistance}`)
+ .throw(RangeError);
+ should(node.maxDistance,
+ `node.maxDistance after setting to ${options.maxDistance}`)
+ .beEqualTo(10000);
+
options = {maxDistance: 100};
should(
() => {
@@ -218,6 +279,17 @@
},
'new PannerNode(c, ' + JSON.stringify(options) + ')')
.throw(RangeError);
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.rolloffFactor = options.rolloffFactor;
+ },
+ `node.rolloffFactor = ${options.rolloffFactor}`)
+ .throw(RangeError);
+ should(node.rolloffFactor,
+ `node.rolloffFactor after setting to ${options.rolloffFactor}`)
+ .beEqualTo(1);
+
options = {rolloffFactor: 0};
should(
() => {
@@ -256,6 +328,17 @@
},
'new PannerNode(c, ' + JSON.stringify(options) + ')')
.throw(DOMException, 'InvalidStateError');
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.coneOuterGain = options.coneOuterGain;
+ },
+ `node.coneOuterGain = ${options.coneOuterGain}`)
+ .throw(DOMException, 'InvalidStateError');
+ should(node.coneOuterGain,
+ `node.coneOuterGain after setting to ${options.coneOuterGain}`)
+ .beEqualTo(0);
+
options = {coneOuterGain: 1.1};
should(
() => {
@@ -263,6 +346,17 @@
},
'new PannerNode(c, ' + JSON.stringify(options) + ')')
.throw(DOMException, 'InvalidStateError');
+ should(
+ () => {
+ node = new PannerNode(context);
+ node.coneOuterGain = options.coneOuterGain;
+ },
+ `node.coneOuterGain = ${options.coneOuterGain}`)
+ .throw(DOMException, 'InvalidStateError');
+ should(node.coneOuterGain,
+ `node.coneOuterGain after setting to ${options.coneOuterGain}`)
+ .beEqualTo(0);
+
options = {coneOuterGain: 0.0};
should(
() => {
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html
index a2e40777d42..81e64dc12e9 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html
@@ -134,35 +134,35 @@
*/
function executeTest(curveData, inputData, expectedData, testName) {
var stTest=async_test("WaveShaperNode - "+testName);
+ stTest.step(function() {
+
+ // Create offline audio context.
+ var ac=new OfflineAudioContext(1, inputData.length, sampleRate);
+
+ // Create the WaveShaper and its curve.
+ var waveShaper=ac.createWaveShaper();
+ if(curveData!=null) {
+ var curve=new Float32Array(curveData.length);
+ for(var i=0;i<curveData.length;i++) { curve[i]=curveData[i]; }
+ waveShaper.curve=curve;
+ }
+ waveShaper.connect(ac.destination);
+
+ // Create buffer containing the input values.
+ var inputBuffer=ac.createBuffer(1, Math.max(inputData.length, 2), sampleRate);
+ var d=inputBuffer.getChannelData(0);
+ for(var i=0;i<inputData.length;i++) { d[i]=inputData[i]; }
+
+ // Play the input buffer through the WaveShaper.
+ var src=ac.createBufferSource();
+ src.buffer=inputBuffer;
+ src.connect(waveShaper);
+ src.start();
+
+ // Test the outputs match the expected values.
+ ac.oncomplete=stTest.step_func_done(function(ev) {
+ var d=ev.renderedBuffer.getChannelData(0);
- // Create offline audio context.
- var ac=new OfflineAudioContext(1, inputData.length, sampleRate);
-
- // Create the WaveShaper and its curve.
- var waveShaper=ac.createWaveShaper();
- if(curveData!=null) {
- var curve=new Float32Array(curveData.length);
- for(var i=0;i<curveData.length;i++) { curve[i]=curveData[i]; }
- waveShaper.curve=curve;
- }
- waveShaper.connect(ac.destination);
-
- // Create buffer containing the input values.
- var inputBuffer=ac.createBuffer(1, Math.max(inputData.length, 2), sampleRate);
- var d=inputBuffer.getChannelData(0);
- for(var i=0;i<inputData.length;i++) { d[i]=inputData[i]; }
-
- // Play the input buffer through the WaveShaper.
- var src=ac.createBufferSource();
- src.buffer=inputBuffer;
- src.connect(waveShaper);
- src.start();
-
- // Test the outputs match the expected values.
- ac.oncomplete=function(ev) {
- var d=ev.renderedBuffer.getChannelData(0);
-
- stTest.step(function() {
for(var i=0;i<expectedData.length;i++) {
var curveText="null";
if(curve!=null) {
@@ -176,10 +176,8 @@
assert_approx_equals(d[i], expectedData[i], tolerance, comment);
}
});
-
- stTest.done();
- };
- ac.startRendering();
+ ac.startRendering();
+ });
}
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/webxr/ar-module/idlharness.https.window.js b/tests/wpt/web-platform-tests/webxr/ar-module/idlharness.https.window.js
new file mode 100644
index 00000000000..1268f4ea2a5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/ar-module/idlharness.https.window.js
@@ -0,0 +1,16 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+// https://immersive-web.github.io/webxr-ar-module/
+
+idl_test(
+ ['webxr-ar-module'],
+ ['webxr', 'dom'],
+ async idl_array => {
+ idl_array.add_objects({
+ // TODO: XRSession
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/webxr/gamepads-module/idlharness.https.window.js b/tests/wpt/web-platform-tests/webxr/gamepads-module/idlharness.https.window.js
new file mode 100644
index 00000000000..4509c67a847
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/gamepads-module/idlharness.https.window.js
@@ -0,0 +1,16 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+// https://immersive-web.github.io/webxr-gamepads-module/
+
+idl_test(
+ ['webxr-gamepads-module'],
+ ['webxr', 'dom'],
+ async idl_array => {
+ idl_array.add_objects({
+ // TODO: XRInputSource
+ });
+ }
+);
diff --git a/tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html b/tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html
index 37e020605a7..a932aad2fad 100644
--- a/tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrSession_input_events_end.https.html
@@ -10,10 +10,16 @@ let testName = "Calling end during an input callback stops processing at the rig
let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
+let gl = null;
+
function requestImmersiveSession() {
return new Promise((resolve, reject) => {
navigator.xr.test.simulateUserActivation(() => {
navigator.xr.requestSession('immersive-vr').then((session) => {
+ session.updateRenderState({
+ baseLayer: new XRWebGLLayer(session, gl)
+ });
+
resolve(session);
}, (err) => {
reject(err);
@@ -22,8 +28,8 @@ function requestImmersiveSession() {
});
}
-let testFunction = function(session, fakeDeviceController, t) {
-
+let testFunction = function(session, fakeDeviceController, t, sessionObjects) {
+ gl = sessionObjects.gl;
// helper method to send a click and then request a dummy animation frame to
// ensure that the click propagates. We're doing everything in these tests
// from event watchers, we just need to trigger the add/click to make the
diff --git a/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_constructor.https.html b/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_constructor.https.html
index 7e57f4286c6..0584da79c12 100644
--- a/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_constructor.https.html
+++ b/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_constructor.https.html
@@ -17,11 +17,8 @@ xr_promise_test("Ensure that XRWebGLLayer's constructor throws appropriate error
let gl = webglCanvas.getContext('webgl', glAttributes);
return navigator.xr.test.simulateDeviceConnection(TRACKED_IMMERSIVE_DEVICE)
.then(() => {
- let sessionPromise;
- navigator.xr.test.simulateUserActivation(function() {
- sessionPromise = navigator.xr.requestSession('inline');
- });
- return sessionPromise.then((session) => {
+ return navigator.xr.requestSession('inline')
+ .then((session) => {
try {
let webglLayerIncompatible = new XRWebGLLayer(session, gl);
} catch (err) {
diff --git a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.any.js b/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.any.js
new file mode 100644
index 00000000000..1942a4658df
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.any.js
@@ -0,0 +1,83 @@
+// META: global=!default,sharedworker
+
+var expected = [
+ // https://html.spec.whatwg.org/
+ "ApplicationCache",
+ "WorkerGlobalScope",
+ "SharedWorkerGlobalScope",
+ "Worker",
+ "SharedWorker",
+ "MessagePort",
+ "MessageEvent",
+ "WorkerNavigator",
+ "MessageChannel",
+ "WorkerLocation",
+ "ImageData",
+ "ImageBitmap",
+ "CanvasGradient",
+ "CanvasPattern",
+ "CanvasPath",
+ "Path2D",
+ "PromiseRejectionEvent",
+ "EventSource",
+ "WebSocket",
+ "CloseEvent",
+ "BroadcastChannel",
+ // https://tc39.github.io/ecma262/
+ "ArrayBuffer",
+ "Int8Array",
+ "Uint8Array",
+ "Uint8ClampedArray",
+ "Int16Array",
+ "Uint16Array",
+ "Int32Array",
+ "Uint32Array",
+ "Float32Array",
+ "Float64Array",
+ "DataView",
+ // https://xhr.spec.whatwg.org/
+ "XMLHttpRequestEventTarget",
+ "XMLHttpRequestUpload",
+ "XMLHttpRequest",
+ "ProgressEvent",
+ "FormData",
+ // https://url.spec.whatwg.org/
+ "URL",
+ "URLSearchParams",
+ // https://w3c.github.io/FileAPI/
+ "File",
+ "Blob",
+ "FileList",
+ "FileReader",
+ "FileReaderSync",
+ // https://dom.spec.whatwg.org/
+ "EventTarget",
+ "ErrorEvent",
+ "Event",
+ "CustomEvent",
+ // http://heycam.github.io/webidl/
+ "DOMException",
+ // https://streams.spec.whatwg.org/
+ "ReadableStream",
+ "WritableStream",
+ "ByteLengthQueuingStrategy",
+ "CountQueuingStrategy",
+ // http://w3c.github.io/IndexedDB/
+ "IDBRequest",
+ "IDBOpenDBRequest",
+ "IDBVersionChangeEvent",
+ "IDBFactory",
+ "IDBDatabase",
+ "IDBObjectStore",
+ "IDBIndex",
+ "IDBKeyRange",
+ "IDBCursor",
+ "IDBCursorWithValue",
+ "IDBTransaction",
+];
+
+for (var i = 0; i < unexpected.length; ++i) {
+ test(function() {
+ assert_true(unexpected[i] in self);
+ }, "The " + unexpected[i] + " interface object should not be exposed");
+}
diff --git a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.html b/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.html
deleted file mode 100644
index 99e8b3a0f3d..00000000000
--- a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html>
-<title>available interface objects in shared worker</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id=log></div>
-<script>
-setup(function() {
- window.worker = new SharedWorker('003.js');
- worker.port.onmessage = function(e) {
- var result = e.data;
- for (var i = 0; i < result.length; ++i) {
- test(function() {
- assert_true(result[i][1]);
- }, "The " + result[i][0] + " interface object should be exposed");
- }
- done();
- }
-}, {explicit_done: true});
-</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.js b/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.js
deleted file mode 100644
index a91e7c38759..00000000000
--- a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/003.js
+++ /dev/null
@@ -1,82 +0,0 @@
-onconnect = function(e) {
- var expected = [
- // https://html.spec.whatwg.org/
- "ApplicationCache",
- "WorkerGlobalScope",
- "SharedWorkerGlobalScope",
- "Worker",
- "SharedWorker",
- "MessagePort",
- "MessageEvent",
- "WorkerNavigator",
- "MessageChannel",
- "WorkerLocation",
- "ImageData",
- "ImageBitmap",
- "CanvasGradient",
- "CanvasPattern",
- "CanvasPath",
- "Path2D",
- "PromiseRejectionEvent",
- "EventSource",
- "WebSocket",
- "CloseEvent",
- "BroadcastChannel",
- // https://tc39.github.io/ecma262/
- "ArrayBuffer",
- "Int8Array",
- "Uint8Array",
- "Uint8ClampedArray",
- "Int16Array",
- "Uint16Array",
- "Int32Array",
- "Uint32Array",
- "Float32Array",
- "Float64Array",
- "DataView",
- // https://xhr.spec.whatwg.org/
- "XMLHttpRequestEventTarget",
- "XMLHttpRequestUpload",
- "XMLHttpRequest",
- "ProgressEvent",
- "FormData",
- // https://url.spec.whatwg.org/
- "URL",
- "URLSearchParams",
- // https://w3c.github.io/FileAPI/
- "File",
- "Blob",
- "FileList",
- "FileReader",
- "FileReaderSync",
- // https://dom.spec.whatwg.org/
- "EventTarget",
- "ErrorEvent",
- "Event",
- "CustomEvent",
- // http://heycam.github.io/webidl/
- "DOMException",
- // https://streams.spec.whatwg.org/
- "ReadableStream",
- "WritableStream",
- "ByteLengthQueuingStrategy",
- "CountQueuingStrategy",
- // http://w3c.github.io/IndexedDB/
- "IDBRequest",
- "IDBOpenDBRequest",
- "IDBVersionChangeEvent",
- "IDBFactory",
- "IDBDatabase",
- "IDBObjectStore",
- "IDBIndex",
- "IDBKeyRange",
- "IDBCursor",
- "IDBCursorWithValue",
- "IDBTransaction",
- ];
- var result = [];
- for (var i = 0; i < expected.length; ++i) {
- result.push([expected[i], expected[i] in self]);
- }
- e.ports[0].postMessage(result);
-} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.any.js b/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.any.js
new file mode 100644
index 00000000000..358af74ca2c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.any.js
@@ -0,0 +1,46 @@
+// META: global=!default,sharedworker
+
+var unexpected = [
+ // https://html.spec.whatwg.org/
+ "DedicatedWorkerGlobalScope",
+ "AbstractView",
+ "AbstractWorker",
+ "Location",
+ "Navigator",
+ "DOMImplementation",
+ "Audio",
+ "HTMLCanvasElement",
+ "Path",
+ "TextMetrics",
+ "CanvasProxy",
+ "CanvasRenderingContext2D",
+ "DrawingStyle",
+ "PopStateEvent",
+ "HashChangeEvent",
+ "PageTransitionEvent",
+ // https://streams.spec.whatwg.org/
+ "ReadableStreamDefaultReader",
+ "ReadableStreamBYOBReader",
+ "ReadableStreamDefaultController",
+ "ReadableByteStreamController",
+ "WritableStreamDefaultWriter",
+ "WritableStreamDefaultController",
+ // http://w3c.github.io/IndexedDB/
+ "IDBEnvironment",
+ // https://www.w3.org/TR/2010/NOTE-webdatabase-20101118/
+ "Database",
+ // https://w3c.github.io/uievents/
+ "UIEvent",
+ "FocusEvent",
+ "MouseEvent",
+ "WheelEvent",
+ "InputEvent",
+ "KeyboardEvent",
+ "CompositionEvent",
+];
+
+for (var i = 0; i < unexpected.length; ++i) {
+ test(function() {
+ assert_false(unexpected[i] in self);
+ }, "The " + unexpected[i] + " interface object should not be exposed");
+}
diff --git a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.html b/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.html
deleted file mode 100644
index b4a09c50e4e..00000000000
--- a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!doctype html>
-<title>unavailable interface objects in shared worker</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id=log></div>
-<script>
-setup(function() {
- window.worker = new SharedWorker('004.js');
- worker.port.onmessage = function(e) {
- var result = e.data;
- for (var i = 0; i < result.length; ++i) {
- test(function() {
- assert_false(result[i][1]);
- }, "The " + result[i][0] + " interface object should not be exposed");
- }
- done();
- }
-}, {explicit_done: true});
-</script> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.js b/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.js
deleted file mode 100644
index 00e50d19cae..00000000000
--- a/tests/wpt/web-platform-tests/workers/semantics/interface-objects/004.js
+++ /dev/null
@@ -1,45 +0,0 @@
-onconnect = function(e) {
- var unexpected = [
- // https://html.spec.whatwg.org/
- "DedicatedWorkerGlobalScope",
- "AbstractView",
- "AbstractWorker",
- "Location",
- "Navigator",
- "DOMImplementation",
- "Audio",
- "HTMLCanvasElement",
- "Path",
- "TextMetrics",
- "CanvasProxy",
- "CanvasRenderingContext2D",
- "DrawingStyle",
- "PopStateEvent",
- "HashChangeEvent",
- "PageTransitionEvent",
- // https://streams.spec.whatwg.org/
- "ReadableStreamDefaultReader",
- "ReadableStreamBYOBReader",
- "ReadableStreamDefaultController",
- "ReadableByteStreamController",
- "WritableStreamDefaultWriter",
- "WritableStreamDefaultController",
- // http://w3c.github.io/IndexedDB/
- "IDBEnvironment",
- // https://www.w3.org/TR/2010/NOTE-webdatabase-20101118/
- "Database",
- // https://w3c.github.io/uievents/
- "UIEvent",
- "FocusEvent",
- "MouseEvent",
- "WheelEvent",
- "InputEvent",
- "KeyboardEvent",
- "CompositionEvent",
- ];
- var result = [];
- for (var i = 0; i < unexpected.length; ++i) {
- result.push([unexpected[i], unexpected[i] in self]);
- }
- e.ports[0].postMessage(result);
-} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html b/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html
index 5ad5557700d..ab5b78b77c6 100644
--- a/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html
+++ b/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html
@@ -9,7 +9,7 @@
<script>
'use strict';
run_all_fp_tests_allow_all(
- 'http://{{domains[www]}}:{{ports[http][0]}}',
+ 'http://{{hosts[alt][]}}:{{ports[http][0]}}',
'sync-xhr',
'NetworkError',
() => {