diff options
153 files changed, 2956 insertions, 600 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 1aa1a0ed3ca..29acda356da 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -13093,6 +13093,12 @@ {} ] ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html", + {} + ] + ], "input-events/input-events-cut-paste-manual.html": [ [ "/input-events/input-events-cut-paste-manual.html", @@ -126177,6 +126183,66 @@ {} ] ], + "css/css-masking/mask-svg-content/mask-negative-scale.svg": [ + [ + "/css/css-masking/mask-svg-content/mask-negative-scale.svg", + [ + [ + "/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg", + "==" + ] + ], + {} + ] + ], + "css/css-masking/mask-svg-content/mask-text-001.svg": [ + [ + "/css/css-masking/mask-svg-content/mask-text-001.svg", + [ + [ + "/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg", + "==" + ] + ], + {} + ] + ], + "css/css-masking/mask-svg-content/mask-type-001.svg": [ + [ + "/css/css-masking/mask-svg-content/mask-type-001.svg", + [ + [ + "/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg", + "==" + ] + ], + {} + ] + ], + "css/css-masking/mask-svg-content/mask-type-002.svg": [ + [ + "/css/css-masking/mask-svg-content/mask-type-002.svg", + [ + [ + "/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg", + "==" + ] + ], + {} + ] + ], + "css/css-masking/mask-svg-content/mask-type-003.svg": [ + [ + "/css/css-masking/mask-svg-content/mask-type-003.svg", + [ + [ + "/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg", + "==" + ] + ], + {} + ] + ], "css/css-masking/test-mask.html": [ [ "/css/css-masking/test-mask.html", @@ -133813,6 +133879,18 @@ {} ] ], + "css/css-shapes/shape-outside/values/shape-outside-inset-0010.html": [ + [ + "/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html", + [ + [ + "/css/reference/ref-filled-green-100px-square-only.html", + "==" + ] + ], + {} + ] + ], "css/css-shapes/spec-examples/shape-outside-001.html": [ [ "/css/css-shapes/spec-examples/shape-outside-001.html", @@ -139357,6 +139435,18 @@ {} ] ], + "css/css-text/white-space/white-space-empty-text-sibling.html": [ + [ + "/css/css-text/white-space/white-space-empty-text-sibling.html", + [ + [ + "/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/word-break/word-break-break-all-000.html": [ [ "/css/css-text/word-break/word-break-break-all-000.html", @@ -166465,6 +166555,30 @@ {} ] ], + "css/selectors/floating-first-letter-05d0.html": [ + [ + "/css/selectors/floating-first-letter-05d0.html", + [ + [ + "/css/selectors/floating-first-letter-ref.html", + "==" + ] + ], + {} + ] + ], + "css/selectors/floating-first-letter-feff.html": [ + [ + "/css/selectors/floating-first-letter-feff.html", + [ + [ + "/css/selectors/floating-first-letter-ref.html", + "==" + ] + ], + {} + ] + ], "css/selectors/focus-within-001.html": [ [ "/css/selectors/focus-within-001.html", @@ -189737,96 +189851,96 @@ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_end.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center.html": [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_end.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center.html", [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_end-ref.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center-ref.html", "==" ] ], {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html": [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html", [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html", "==" ] ], {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html": [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html", [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html", "==" ] ], {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html": [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html", [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html", "==" ] ], {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html": [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html", [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html", "==" ] ], {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html": [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html", [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html", + "/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html", "==" ] ], {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_end.html": [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html", + "/webvtt/rendering/cues-with-video/processing-model/align_end.html", [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html", + "/webvtt/rendering/cues-with-video/processing-model/align_end-ref.html", "==" ] ], {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html", + "/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html", [ [ - "/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html", + "/webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html", "==" ] ], @@ -190325,6 +190439,102 @@ {} ] ], + "webvtt/rendering/cues-with-video/processing-model/regions/basic.html": [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/basic.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html": [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html": [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html": [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html": [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html": [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html": [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html", + "==" + ] + ], + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html": [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html", + [ + [ + "/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html", + "==" + ] + ], + {} + ] + ], "webvtt/rendering/cues-with-video/processing-model/repaint.html": [ [ "/webvtt/rendering/cues-with-video/processing-model/repaint.html", @@ -259862,6 +260072,21 @@ {} ] ], + "css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg": [ + [ + {} + ] + ], + "css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg": [ + [ + {} + ] + ], + "css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg": [ + [ + {} + ] + ], "css/css-masking/test-mask-ref.html": [ [ {} @@ -265527,6 +265752,11 @@ {} ] ], + "css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html": [ + [ + {} + ] + ], "css/css-text/word-break/reference/word-break-break-all-009-ref.xht": [ [ {} @@ -272932,6 +273162,11 @@ {} ] ], + "css/selectors/floating-first-letter-ref.html": [ + [ + {} + ] + ], "css/selectors/focus-within-001-ref.html": [ [ {} @@ -278027,6 +278262,11 @@ {} ] ], + "docs/_admin/index.md": [ + [ + {} + ] + ], "docs/_appendix/github-intro.md": [ [ {} @@ -278077,6 +278317,11 @@ {} ] ], + "docs/_includes/svg/octicons/key.svg": [ + [ + {} + ] + ], "docs/_includes/svg/octicons/package.svg": [ [ {} @@ -296732,6 +296977,31 @@ {} ] ], + "referrer-policy/generic/multiple-headers-and-values.html.headers": [ + [ + {} + ] + ], + "referrer-policy/generic/multiple-headers-combined.html.headers": [ + [ + {} + ] + ], + "referrer-policy/generic/multiple-headers-one-invalid.html.headers": [ + [ + {} + ] + ], + "referrer-policy/generic/multiple-headers-one-unknown-token.html.headers": [ + [ + {} + ] + ], + "referrer-policy/generic/multiple-headers.html.headers": [ + [ + {} + ] + ], "referrer-policy/generic/referrer-policy-test-case.js": [ [ {} @@ -311632,11 +311902,6 @@ {} ] ], - "tools/wptrunner/wptrunner/browsers/chrome_webdriver.py": [ - [ - {} - ] - ], "tools/wptrunner/wptrunner/browsers/edge.py": [ [ {} @@ -315272,42 +315537,42 @@ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center-ref.html": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html": [ + "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [ [ {} ] @@ -315562,6 +315827,86 @@ {} ] ], + "webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html": [ + [ + {} + ] + ], + "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html": [ + [ + {} + ] + ], "webvtt/rendering/cues-with-video/processing-model/repaint-ref.html": [ [ {} @@ -316422,42 +316767,42 @@ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/support/align_end.vtt": [ + "webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/support/align_end_long.vtt": [ + "webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt": [ + "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt": [ + "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt": [ + "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt": [ + "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt": [ + "webvtt/rendering/cues-with-video/processing-model/support/align_end.vtt": [ [ {} ] ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt": [ + "webvtt/rendering/cues-with-video/processing-model/support/align_end_long.vtt": [ [ {} ] @@ -336138,6 +336483,12 @@ {} ] ], + "css/css-scroll-snap/inheritance.html": [ + [ + "/css/css-scroll-snap/inheritance.html", + {} + ] + ], "css/css-scroll-snap/overflowing-snap-areas.html": [ [ "/css/css-scroll-snap/overflowing-snap-areas.html", @@ -356529,11 +356880,15 @@ "fetch/api/redirect/redirect-count.any.js": [ [ "/fetch/api/redirect/redirect-count.any.html", - {} + { + "timeout": "long" + } ], [ "/fetch/api/redirect/redirect-count.any.worker.html", - {} + { + "timeout": "long" + } ] ], "fetch/api/redirect/redirect-empty-location.any.js": [ @@ -360860,6 +361215,12 @@ {} ] ], + "html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html": [ + [ + "/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html", + {} + ] + ], "html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html": [ [ "/html/rendering/non-replaced-elements/margin-collapsing-quirks/multicol-quirks-mode.html", @@ -364384,6 +364745,14 @@ } ] ], + "html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html": [ + [ + "/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html", + { + "timeout": "long" + } + ] + ], "html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html": [ [ "/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html", @@ -364598,6 +364967,12 @@ {} ] ], + "html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm": [ + [ + "/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm", + {} + ] + ], "html/semantics/embedded-content/the-video-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html": [ [ "/html/semantics/embedded-content/the-video-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html", @@ -365498,6 +365873,12 @@ {} ] ], + "html/semantics/forms/the-legend-element/HTMLLegendElement.html": [ + [ + "/html/semantics/forms/the-legend-element/HTMLLegendElement.html", + {} + ] + ], "html/semantics/forms/the-legend-element/legend-form.html": [ [ "/html/semantics/forms/the-legend-element/legend-form.html", @@ -370930,6 +371311,12 @@ {} ] ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html": [ + [ + "/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html", + {} + ] + ], "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html": [ [ "/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html", @@ -371070,6 +371457,12 @@ {} ] ], + "infrastructure/assumptions/cookie.html": [ + [ + "/infrastructure/assumptions/cookie.html", + {} + ] + ], "infrastructure/assumptions/html-elements.html": [ [ "/infrastructure/assumptions/html-elements.html", @@ -385212,6 +385605,12 @@ {} ] ], + "orientation-event/ondeviceorientationabsolute.html": [ + [ + "/orientation-event/ondeviceorientationabsolute.html", + {} + ] + ], "orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html": [ [ "/orientation-sensor/AbsoluteOrientationSensor-disabled-by-feature-policy.https.html", @@ -386576,6 +386975,36 @@ {} ] ], + "referrer-policy/generic/multiple-headers-and-values.html": [ + [ + "/referrer-policy/generic/multiple-headers-and-values.html", + {} + ] + ], + "referrer-policy/generic/multiple-headers-combined.html": [ + [ + "/referrer-policy/generic/multiple-headers-combined.html", + {} + ] + ], + "referrer-policy/generic/multiple-headers-one-invalid.html": [ + [ + "/referrer-policy/generic/multiple-headers-one-invalid.html", + {} + ] + ], + "referrer-policy/generic/multiple-headers-one-unknown-token.html": [ + [ + "/referrer-policy/generic/multiple-headers-one-unknown-token.html", + {} + ] + ], + "referrer-policy/generic/multiple-headers.html": [ + [ + "/referrer-policy/generic/multiple-headers.html", + {} + ] + ], "referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html": [ [ "/referrer-policy/generic/sandboxed-iframe-with-opaque-origin.html", @@ -396884,6 +397313,12 @@ {} ] ], + "service-workers/service-worker/import-module-scripts.https.html": [ + [ + "/service-workers/service-worker/import-module-scripts.https.html", + {} + ] + ], "service-workers/service-worker/import-scripts-redirect.https.html": [ [ "/service-workers/service-worker/import-scripts-redirect.https.html", @@ -397722,6 +398157,12 @@ {} ] ], + "shadow-dom/slots-outside-shadow-dom.html": [ + [ + "/shadow-dom/slots-outside-shadow-dom.html", + {} + ] + ], "shadow-dom/slots.html": [ [ "/shadow-dom/slots.html", @@ -400240,6 +400681,12 @@ {} ] ], + "trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html": [ + [ + "/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html", + {} + ] + ], "trusted-types/Window-TrustedTypes.tentative.html": [ [ "/trusted-types/Window-TrustedTypes.tentative.html", @@ -432176,11 +432623,11 @@ "support" ], ".taskcluster.yml": [ - "f36523ed301c505bc3f9b1fa5979f866008cde36", + "92e8d89d3af3442b3363ae43b20659676e0ffccb", "support" ], ".travis.yml": [ - "6f06b671f0ccfd33377b93cb8ddc519160631e17", + "e0abc3cb953a49eb7018bda4bf118be5be5f22e0", "support" ], ".well-known/README.md": [ @@ -433064,7 +433511,7 @@ "testharness" ], "2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html": [ - "385f1a5568eebe953663232ee745462f20bfda94", + "6208b8dc05629208ee3d68b233e1b6c107d1d12b", "testharness" ], "2dcontext/drawing-paths-to-the-canvas/canvas_complexshapes_ispointInpath_001.htm": [ @@ -549119,6 +549566,38 @@ "cab55923d32ddb9525cb81a12d8035b1bf51bb4c", "support" ], + "css/css-masking/mask-svg-content/mask-negative-scale.svg": [ + "36b7abb42eb157b9feff158c6dfb399249ee437c", + "reftest" + ], + "css/css-masking/mask-svg-content/mask-text-001.svg": [ + "1dd5c546af3f90ad4ea97e9df7c8f19f70473f86", + "reftest" + ], + "css/css-masking/mask-svg-content/mask-type-001.svg": [ + "9bcc40d55b1eba6d2811a3529f33a8f1a7ecdd03", + "reftest" + ], + "css/css-masking/mask-svg-content/mask-type-002.svg": [ + "c298297329cf2d04bb53ae7cf8dbbb42551dfe4c", + "reftest" + ], + "css/css-masking/mask-svg-content/mask-type-003.svg": [ + "891405dc46a5d200873d94608ea6de71e77adf38", + "reftest" + ], + "css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg": [ + "c83ec87e7bd06b73983b6c80c9712b8b924e9375", + "support" + ], + "css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg": [ + "1ed0513327d4ac3735c81104834f68afe80e607d", + "support" + ], + "css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg": [ + "48737c03d1e9d8be22b67c990be0d3ff9b420160", + "support" + ], "css/css-masking/parsing/clip-invalid.html": [ "852612027840e24673432bcdcf6abaa33f422631", "testharness" @@ -554183,6 +554662,10 @@ "df776353a31f1cef3abe9bc9d195da9be5da2510", "support" ], + "css/css-scroll-snap/inheritance.html": [ + "40600d460c4f6a05f6df0a1d8ddb7ad3c3fee53d", + "testharness" + ], "css/css-scroll-snap/overflowing-snap-areas.html": [ "6d3c1865fe7b1e05ea7897db4118abeabb73d02f", "testharness" @@ -555203,6 +555686,10 @@ "3724971363b1fb563427c9abe7e5177b381a118c", "testharness" ], + "css/css-shapes/shape-outside/values/shape-outside-inset-0010.html": [ + "b82abea82a603f9a523fd8ee0a4d61cd0b7349c6", + "reftest" + ], "css/css-shapes/shape-outside/values/shape-outside-inset-002.html": [ "559738f71d8c19d0ab752be891c585a2b8a1479d", "testharness" @@ -560507,6 +560994,10 @@ "01ce8eae718170c4eb65e9629f6618e9458a1aca", "support" ], + "css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html": [ + "3837f7f62f4686226ef4dff3318c2b6961dac85b", + "support" + ], "css/css-text/white-space/seg-break-transformation-000.html": [ "cb7b0f30b566320c1022f61fde44bc09695badb1", "testharness" @@ -560659,6 +561150,10 @@ "f524c821a59a3712616e8ebaf75591e7e744731a", "reftest" ], + "css/css-text/white-space/white-space-empty-text-sibling.html": [ + "56a5cad875dbb7f3225e7ae382d9417e5cc6bae4", + "reftest" + ], "css/css-text/word-break/reference/word-break-break-all-009-ref.xht": [ "0768b857d96624a63129f002d317019674d1ef0d", "support" @@ -580136,7 +580631,7 @@ "reftest" ], "css/motion/offset-path-serialization.html": [ - "1c000919518e4052d1c9546580c9b9cca89883c7", + "7c835c7371f3d78a53c2bff3f6da626dba0bab87", "testharness" ], "css/motion/offset-path-string-001.html": [ @@ -580347,6 +580842,18 @@ "2e496d854184796be55d66566af8739fd4a7f776", "testharness" ], + "css/selectors/floating-first-letter-05d0.html": [ + "6848070e6dfecae8083a8676bf5e063633e191fd", + "reftest" + ], + "css/selectors/floating-first-letter-feff.html": [ + "02d256ab7dce8b8754fc31668a3a894379eb6bd0", + "reftest" + ], + "css/selectors/floating-first-letter-ref.html": [ + "3c3141a862df19ad62f343e00b37f248fbd845b1", + "support" + ], "css/selectors/focus-display-none-001.html": [ "fe5716cc41c4a622159395ba26da3a7598cfcec8", "testharness" @@ -591811,6 +592318,10 @@ "190b4576a106f15d35bd1543ab4f2178f29ca931", "support" ], + "docs/_admin/index.md": [ + "5088b47cd00a89d749580aeb4bce4c79e0230f12", + "support" + ], "docs/_appendix/github-intro.md": [ "9b7144840a9e6b37b832b188391d6d9b7197039a", "support" @@ -591828,7 +592339,7 @@ "support" ], "docs/_config.yml": [ - "760c991820bee4d403f6a33d769430f92ac13628", + "8a793ae19d5ad94889af30127486d9bc61aeeab9", "support" ], "docs/_includes/footer.html": [ @@ -591851,6 +592362,10 @@ "55753dd0d41d6b11080203e60facc8480a79c7cc", "support" ], + "docs/_includes/svg/octicons/key.svg": [ + "c5bfda0a4dcd6e31e4a34d7eb7b86c16c0897d8e", + "support" + ], "docs/_includes/svg/octicons/package.svg": [ "3bc3e504ae58bf8a48a73d9006c9cbec82dce549", "support" @@ -592028,7 +592543,7 @@ "support" ], "docs/index.html": [ - "e8aa2e92e97d23628a6cc85395d8f1dcb37154ff", + "ffef230a74af772e31428a1a7624b5c86b07270c", "support" ], "docs/introduction.md": [ @@ -597544,7 +598059,7 @@ "testharness" ], "fetch/api/redirect/redirect-count.any.js": [ - "7fa6dd1d0ed5579cc66c16297a61a57cbadd1c74", + "0c45d8d87ce44e0ebdde4d10d974681384d47c09", "testharness" ], "fetch/api/redirect/redirect-empty-location.any.js": [ @@ -608111,6 +608626,10 @@ "943f38c3e03e0c654d1105c2f42d49cca3f1432a", "reftest" ], + "html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html": [ + "7f6618bb782a0460d286930f05866ea9b432a1cd", + "testharness" + ], "html/rendering/non-replaced-elements/flow-content-0/support/dialog-framed.html": [ "f9c414c246d1f89e697536f458e08ae33359e457", "support" @@ -612259,6 +612778,10 @@ "633b6a87d9da7784610769bb0041f0e10c27525e", "testharness" ], + "html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html": [ + "0fc49e603606e9233d0b3ae59757aec149c8aaf2", + "testharness" + ], "html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html": [ "be680da619e8dd75f57d454268a528eba7d0d6c2", "testharness" @@ -612479,6 +613002,10 @@ "cac7d470aedd15e9087f20ba23947d59d0595dfb", "testharness" ], + "html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm": [ + "7819ee1c1891887aadec9bb600bcb18e6cc562e3", + "testharness" + ], "html/semantics/embedded-content/the-video-element/intrinsicsize/intrinsicsize-without-unsized-media.tentative.https.sub.html": [ "d749d5576e6881ea900f7cd26e0ff6adad2610f3", "testharness" @@ -613275,6 +613802,10 @@ "fbfeda8a5114c3a24c767a04ecc290f93761a013", "testharness" ], + "html/semantics/forms/the-legend-element/HTMLLegendElement.html": [ + "8600e5437a5ab96eee23662f875e2f0751139610", + "testharness" + ], "html/semantics/forms/the-legend-element/legend-form.html": [ "b127164aed07ddc45c4e71b42807265a78db3b80", "testharness" @@ -618227,6 +618758,14 @@ "07bccb788052e7ce2cb722558e416b5c017ed9f0", "testharness" ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html": [ + "adcea90a363af504c33738da53a979b9bd9479e7", + "manual" + ], + "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html": [ + "fc7f49d143d687b1aa47cc2a52fdf1a2f35d0fb7", + "testharness" + ], "html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorlanguage.html": [ "d56df8a3d857504ebeff29d87339893a8ce78a51", "testharness" @@ -618563,6 +619102,10 @@ "962edf5e8b43c085d6b8a58379be7e587be85c16", "reftest" ], + "infrastructure/assumptions/cookie.html": [ + "5d5b0dc0e108a823ef16614e9c2c91f5ea142543", + "testharness" + ], "infrastructure/assumptions/html-elements.html": [ "3fe3d201ff649aca36e49b6b78cd48a94db26806", "testharness" @@ -619296,7 +619839,7 @@ "support" ], "interfaces/speech-api.idl": [ - "0b5c866b35c28d8e10261205fb6cbaa6962e480a", + "f94637a8d21eb8a5940ce5ddfb6f6ca1af52f289", "support" ], "interfaces/storage.idl": [ @@ -630727,6 +631270,10 @@ "ed8309d6480eaaec45e986a3391854d67b01ba2d", "testharness" ], + "orientation-event/ondeviceorientationabsolute.html": [ + "73ce97ab5c1fd7220fb65e53fb51e0bfa86beb28", + "testharness" + ], "orientation-event/screen-upmost-manual.html": [ "87ad62c58633768262144ed582931b7167948605", "manual" @@ -632747,6 +633294,46 @@ "54963141b1916688fba7c8c1269a6f310efbb13a", "testharness" ], + "referrer-policy/generic/multiple-headers-and-values.html": [ + "682199b917c37b9b11ef0eaa9897ebbfb50f5eb7", + "testharness" + ], + "referrer-policy/generic/multiple-headers-and-values.html.headers": [ + "d1acc2f1d3cbce700865d96937e612c56e075166", + "support" + ], + "referrer-policy/generic/multiple-headers-combined.html": [ + "ad02ae84bd7458c13e7621db7eadbd19a82ffbb5", + "testharness" + ], + "referrer-policy/generic/multiple-headers-combined.html.headers": [ + "fc30a2a18627cf0cb485836f8d44f45beca510f2", + "support" + ], + "referrer-policy/generic/multiple-headers-one-invalid.html": [ + "b1384b14a0e859d8fba0f564e6b9c51333339fc4", + "testharness" + ], + "referrer-policy/generic/multiple-headers-one-invalid.html.headers": [ + "075219380414598f4535faa973fe69468fc7d37e", + "support" + ], + "referrer-policy/generic/multiple-headers-one-unknown-token.html": [ + "3273c0dbedfea3c3917ff0e16f29ff2273f32352", + "testharness" + ], + "referrer-policy/generic/multiple-headers-one-unknown-token.html.headers": [ + "46feffd705fe0e559b6f80a4a6b7f7bc46b26121", + "support" + ], + "referrer-policy/generic/multiple-headers.html": [ + "5f6a749b4bd2003b1b434b070d436ac1a2d8d6e5", + "testharness" + ], + "referrer-policy/generic/multiple-headers.html.headers": [ + "dd1dd853f2030bac5c036f693a7cf0eca6daba1a", + "support" + ], "referrer-policy/generic/referrer-policy-test-case.js": [ "14ccd4e2de171e5c8b284e2ced552024b28d345d", "support" @@ -641204,7 +641791,7 @@ "support" ], "resources/idlharness.js": [ - "00c59eda8adfeb8a1b5b8ab1ef60186517161ea4", + "950df6fa34b82a3f4afe2ab925d90a72ddcf3872", "support" ], "resources/idlharness.js.headers": [ @@ -643844,7 +644431,7 @@ "testharness" ], "service-workers/service-worker/claim-worker-fetch.https.html": [ - "c2c254ca65c36aea942a8a77bd630f2a66dcf982", + "4b49a8152a42c9e45104139b46b9fa56762de6bb", "testharness" ], "service-workers/service-worker/client-id.https.html": [ @@ -644131,6 +644718,10 @@ "e63f6b348a861345101670b9c3d87aaa4977b0c4", "testharness" ], + "service-workers/service-worker/import-module-scripts.https.html": [ + "e82911a1bd002d1039ba5a5ae31b51a3a90e1905", + "testharness" + ], "service-workers/service-worker/import-scripts-redirect.https.html": [ "e52adfa37800853a86da9f5f30bc0dd41e4afcb6", "testharness" @@ -646131,6 +646722,10 @@ "e705e18f4a9747d0ffffe0909bfa4d85bd8f7ad4", "testharness" ], + "shadow-dom/slots-outside-shadow-dom.html": [ + "a6fa2b27f760d1daf6e7390c6e582108b035e57e", + "testharness" + ], "shadow-dom/slots.html": [ "948d389298f46cc906fa998c8b495ad55bd50a1a", "testharness" @@ -646476,7 +647071,7 @@ "testharness" ], "speech-api/SpeechSynthesisUtterance-basics.https.html": [ - "9a90f086ac451d09922f05b55144818e787a5ded", + "2fd394150e941ccbeb8d63b99e598cc53e55446d", "testharness" ], "speech-api/historical.html": [ @@ -651212,7 +651807,7 @@ "support" ], "tools/ci/ci_lint.sh": [ - "46b317e1a193b57161c524b2c10b3d42fd3beada", + "aae38e5c769c53d77c02d8108731ad10db13317b", "support" ], "tools/ci/ci_manifest.sh": [ @@ -651236,7 +651831,7 @@ "support" ], "tools/ci/ci_wptrunner_infrastructure.sh": [ - "c32c943870366223ca42cf76b11853946e847b6a", + "3147164ac886cacca862890fac4466fe882a8886", "support" ], "tools/ci/commands.json": [ @@ -655988,7 +656583,7 @@ "support" ], "tools/wpt/browser.py": [ - "052ec66a091cf6dde0573006490f19a9cc45afbe", + "3b3074a985607abfdb1bd125f3803e25acf7822d", "support" ], "tools/wpt/commands.json": [ @@ -656012,7 +656607,7 @@ "support" ], "tools/wpt/run.py": [ - "d08b0f9380712d618ae96593634c84458fc25621", + "d9a44fd3711563a0134ad2fbfc2ee90ac73c6fbd", "support" ], "tools/wpt/testfiles.py": [ @@ -656268,7 +656863,7 @@ "support" ], "tools/wptrunner/wptrunner/browsers/__init__.py": [ - "08949f794834fd9e163a6b60bdcef6b9722316b5", + "9fbbec4d58511ae0bcecedc89fd2d1c4c7acc591", "support" ], "tools/wptrunner/wptrunner/browsers/base.py": [ @@ -656276,17 +656871,13 @@ "support" ], "tools/wptrunner/wptrunner/browsers/chrome.py": [ - "d41df8dec0ed004b517df5cc245c44e3d8188fd2", + "d7c21cddfd60a4077b4fe803379ca89f0109dcde", "support" ], "tools/wptrunner/wptrunner/browsers/chrome_android.py": [ "c96cf5634f3d76a79b4cfd20429f6622e496d6a0", "support" ], - "tools/wptrunner/wptrunner/browsers/chrome_webdriver.py": [ - "2ee8ec41ed668a3ac6130908e0c1dce1fbca4a90", - "support" - ], "tools/wptrunner/wptrunner/browsers/edge.py": [ "ad2bb513a6a801b29a791a6d65b7b730b86e9a64", "support" @@ -656384,7 +656975,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorselenium.py": [ - "0675461d5d8758260a02a20b40698255a7dcd048", + "0792774d65cfc4cd27dedcd6c2eb63bab8bfce07", "support" ], "tools/wptrunner/wptrunner/executors/executorservo.py": [ @@ -656396,7 +656987,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorwebdriver.py": [ - "6dde7191ec6059e80a9ad15f96a0eba0573d9b56", + "be6ed8d9d070bb717bca1c6fae82225957b10cff", "support" ], "tools/wptrunner/wptrunner/executors/executorwebkit.py": [ @@ -656508,7 +657099,7 @@ "support" ], "tools/wptrunner/wptrunner/testrunner.py": [ - "353e2ada1eb7cc27e0b70590743a8a3bb5bcc2b8", + "931a7822d0b2ba5dad26e28326f3c817be15cc8c", "support" ], "tools/wptrunner/wptrunner/tests/__init__.py": [ @@ -656516,7 +657107,7 @@ "support" ], "tools/wptrunner/wptrunner/tests/base.py": [ - "84dc4f2e7f82ee2e3a2aa6f4d8bdda76b1581da1", + "db518e7b6724659c5ffe6bedce7db0a020cec976", "support" ], "tools/wptrunner/wptrunner/tests/browsers/__init__.py": [ @@ -656652,11 +657243,11 @@ "support" ], "tools/wptrunner/wptrunner/wptrunner.py": [ - "6bd1db9927cb738202ace43541c25a44923afe8c", + "92ee971975316637b21a5af404d090aabdc7ec22", "support" ], "tools/wptrunner/wptrunner/wpttest.py": [ - "4086a89e4cfd4a246c19722e9a86f7c8a2896af3", + "8c2934e27eb5fca81d8620414430a13ce891116d", "support" ], "tools/wptserve/.coveragerc": [ @@ -657068,7 +657659,7 @@ "testharness" ], "trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html": [ - "b20fcf2436eac17f9f558cab0c80d1eced6bb1be", + "a162d84cd820051d6c5868c35b58cd347b0026e5", "testharness" ], "trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-noNamesGiven.tentative.html": [ @@ -657087,6 +657678,10 @@ "6d43e0bafc61f34c17d7d7b751bf69f12d035adf", "testharness" ], + "trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html": [ + "9b48fa7fede81b5d2e2c79d9fc115b56c759cb00", + "testharness" + ], "trusted-types/Window-TrustedTypes.tentative.html": [ "8e20e492e6a8484e386d1a08f854bd9b162bd6be", "testharness" @@ -657116,7 +657711,7 @@ "testharness" ], "trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html": [ - "52e317083316435ec4b1dcc7331f1216c2a32d9a", + "3553f2b07685907a78368fced352867a1b3cc428", "testharness" ], "trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html": [ @@ -660684,7 +661279,7 @@ "testharness" ], "webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html": [ - "c8dbeb941bc48f4f3a92907cb140a29f96567057", + "ce2d5fcfe940b89b4ed04bc62a7be5f15131b64b", "testharness" ], "webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-null.html": [ @@ -664983,68 +665578,68 @@ "809e173b46db0f2c3c65a708ad841703602c40f9", "reftest" ], - "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [ - "247e6e24bf3aa2fd5de4614ee954114f8136b8f6", + "webvtt/rendering/cues-with-video/processing-model/align_center-ref.html": [ + "3663d925d958097ba80341aed86d87d3b264ca4a", "support" ], - "webvtt/rendering/cues-with-video/processing-model/align_end.html": [ - "9da66bf4a76326e876af7c83748e143f0853c06a", + "webvtt/rendering/cues-with-video/processing-model/align_center.html": [ + "9a339a64bad79df520c1e343a7f9e2ad6dcc372e", "reftest" ], - "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [ - "f26b3a0761f2aaeadcbde9d0181f6d4e7db30160", + "webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html": [ + "65c7dee75aa073056bbb2c0df2f628bd9ed329d0", "support" ], - "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [ - "5c85a55082d3cc3cec73caaa9947f10a0c6c0df7", + "webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html": [ + "40cc8c4bbe1011aaf711751ead69d29824dc8933", "reftest" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html": [ - "fab75c8e0a5a6db1fb16552e66052200ae5d9a87", + "webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html": [ + "b8d30a73801b33f5dab57d2722179c93643ac588", "support" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle.html": [ - "43732a549b8167aa673e35b9c9332d945f755ed5", + "webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html": [ + "05167743c0f67b95dad06f2b6e85641f51d6f4cb", "reftest" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html": [ - "88718e5ba5573ee0d87063bd491668744ab2dbc2", + "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html": [ + "37217da49721d267208790b5fb773458cb2a64ed", "support" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html": [ - "6be073fff84cec571c5028a13718bfd93f23fa99", + "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html": [ + "32b3e3a6c4de905f85922bd887bde83914217b0f", "reftest" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html": [ - "b9b6d2936da0f31b355a75c05141584665cc30ce", + "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html": [ + "7241376f825d650722cad59582c188f2d2d2d1be", "support" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html": [ - "4f725f55572becf5c5d9ee302bf71b6f436a95e8", + "webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html": [ + "2f62c4500ed91086c49fff6b5b476edd1010b14e", "reftest" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html": [ - "9fa1f28ea895b69f27b815e189247fe6d0b33efe", + "webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html": [ + "a9e583d66f0cd4fa459c19bb4c922fd468cd9ce4", "support" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html": [ - "7d09fd9889640a56e5b0035c45de637223f3a583", + "webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html": [ + "9292a8cc30141f9fab2add1151f265852cfa4491", "reftest" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html": [ - "ddbdf1604deed32f65620d1484c1f4d27b411644", + "webvtt/rendering/cues-with-video/processing-model/align_end-ref.html": [ + "247e6e24bf3aa2fd5de4614ee954114f8136b8f6", "support" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html": [ - "590db24c5fe5e1e6f5447ee595cf33a785ce3513", + "webvtt/rendering/cues-with-video/processing-model/align_end.html": [ + "9da66bf4a76326e876af7c83748e143f0853c06a", "reftest" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html": [ - "d9852d86004bdc2f295694af117dfc20cf53f33b", + "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped-ref.html": [ + "f26b3a0761f2aaeadcbde9d0181f6d4e7db30160", "support" ], - "webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html": [ - "2ef93c4b01a5f52cc0a0346495a87a9198325153", + "webvtt/rendering/cues-with-video/processing-model/align_end_wrapped.html": [ + "5c85a55082d3cc3cec73caaa9947f10a0c6c0df7", "reftest" ], "webvtt/rendering/cues-with-video/processing-model/align_start-ref.html": [ @@ -665411,6 +666006,102 @@ "68c44beaefb4983903abe366971a401f53dbaeb0", "reftest" ], + "webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html": [ + "ff90d4829c4d23ece39cc473ac6d21b672557772", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/basic.html": [ + "4ffed9193b9abedd04b76c8f4848c4d0d93f1fab", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html": [ + "251a04687f9ec5b4cb761fd5c0962ea8e7a0e5ef", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html": [ + "b9ef28212a4f80e67378247c75afc30c70228281", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html": [ + "db1031093c7a118962a6928ba85e51974a2af71f", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html": [ + "5067d12e6f40b40e7bcc75f809c1afb5000fbf2d", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html": [ + "6a68c722e4dbb7a119577583054daf2bf4f8b2a7", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html": [ + "e1619af932a5bef76c5fb72ef7a97e11c8851bcc", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html": [ + "a183448cb1b3b03f10a0a48fb81a26ec9c72a8c8", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html": [ + "c2edcb9f626a0096f8cd5d95408caa8a3da0c201", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt": [ + "ed978274793480111586d0ef6e85156d142d3d03", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt": [ + "eafea7fff94ec49caead41b412c323cf4ce84774", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt": [ + "d51ad26769bfb6eb3b5595c4440e28ba5cbac2bb", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt": [ + "0b88020d29f680718e95d80a99babd926d40c039", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt": [ + "efe9d8793eda051aad5e2c800690cd15ae97e53f", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt": [ + "afd9876c06d296b2b1ca43691c9355dacc370099", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt": [ + "62e8a796877fddc9aec5ecc78717941081c92424", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt": [ + "9fce99b03b3b9ca1108c3267ba3d981e288f9369", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html": [ + "c216838a6948b22bcde51993ab32f04731ba5e83", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html": [ + "85e699a262b8e03fc8592a22e6acc6dabf73b29a", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html": [ + "f432047c5a6b8ffb785273fc7b3d92351e77c839", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html": [ + "0641b176e6f617359b8f93912dfe88eff56d1032", + "reftest" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html": [ + "fd69b643f5693d8b24cbcb8deac4fac601a3cce9", + "support" + ], + "webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html": [ + "4377e9b4c03b224d60d1fcd029804118346daf47", + "reftest" + ], "webvtt/rendering/cues-with-video/processing-model/repaint-ref.html": [ "49f385b079dc5a1422a9984db4db1cced68c8abe", "support" @@ -666767,36 +667458,36 @@ "6c99ce3b1fe1ab60d41e1afdfb79bd689cba62f7", "support" ], - "webvtt/rendering/cues-with-video/processing-model/support/align_end.vtt": [ - "83f691e6ffa274df619fe49275c63472890821fb", + "webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt": [ + "4b8e14b28b7c7257437fea9ba747dcb8e37a15bf", "support" ], - "webvtt/rendering/cues-with-video/processing-model/support/align_end_long.vtt": [ - "09ace0d227843dd26505ca06ad062bcb1a9dc067", + "webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt": [ + "57c896d04b75d09454271b5a1d489331673d9f64", "support" ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt": [ - "cdee051d77778ef6517ab6603cc215b28a8e0925", + "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt": [ + "21ab82bb08439e6bf570e44b0f8c0bc4a7700fc1", "support" ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt": [ - "8c89441a974ba2c98bf09e9eeed81ea06ecb75fd", + "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt": [ + "4d8538a2be773fc7a9277044a6713622b6262bb6", "support" ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt": [ - "c443773984e98555f45afe4876e19986fd90ef54", + "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt": [ + "4ea1e656077b63830b9032517113d781dadbc95d", "support" ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt": [ - "186ae1ecd2319046c39aa668e97be58b92db8720", + "webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt": [ + "a2e307c9cba59fef12598a0924e55d49a370a53f", "support" ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt": [ - "6928c5dc21880374058057f43537fa67607bc1ba", + "webvtt/rendering/cues-with-video/processing-model/support/align_end.vtt": [ + "83f691e6ffa274df619fe49275c63472890821fb", "support" ], - "webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt": [ - "32bc4ed3fc8593274a1d9e574289401b6ab65d1c", + "webvtt/rendering/cues-with-video/processing-model/support/align_end_long.vtt": [ + "09ace0d227843dd26505ca06ad062bcb1a9dc067", "support" ], "webvtt/rendering/cues-with-video/processing-model/support/align_start.vtt": [ @@ -667076,7 +667767,7 @@ "support" ], "webxr/resources/webxr_util.js": [ - "d73cf8d44e902b57d4b79fd8d8f68251be7f88a4", + "5437513b304cb517a67c8e13f6137759d87156be", "support" ], "webxr/webGLCanvasContext_create_with_xrdevice.https.html": [ @@ -667916,7 +668607,7 @@ "testharness" ], "workers/modules/dedicated-worker-import-blob-url.any.js": [ - "e3f61867c5b9e4ef23f19477d66222bb9ce7579e", + "f51a821d1813df81187e8c78d6251f9f29cf45eb", "testharness" ], "workers/modules/dedicated-worker-import-csp.html": [ @@ -667924,7 +668615,7 @@ "testharness" ], "workers/modules/dedicated-worker-import-data-url.any.js": [ - "10bac0dfbf7567579f682908cbcde2ef45733447", + "0d8510da0c24ad378d1215157a70b4fd615a3d94", "testharness" ], "workers/modules/dedicated-worker-import-failure.html": [ @@ -667940,7 +668631,7 @@ "testharness" ], "workers/modules/dedicated-worker-import.any.js": [ - "805dbf3288c0644415203b3670b7827a9981a2b8", + "308c5e74c157da005257fd03fa9bc714c6d0eee7", "testharness" ], "workers/modules/dedicated-worker-options-credentials.html": [ @@ -667960,7 +668651,7 @@ "support" ], "workers/modules/resources/dynamic-import-and-then-static-import-worker.js": [ - "39ab5c237e2ab54423dd32945afa3ae902087763", + "9a386e63be51dcdae988de99bdd76709bf49d1b6", "support" ], "workers/modules/resources/dynamic-import-given-url-worker.js": [ @@ -667980,7 +668671,7 @@ "support" ], "workers/modules/resources/dynamic-import-worker.js": [ - "cd321fe24606bb55f3be570e31740b99d6fbff47", + "07f4df9db3ebd94dbc5ffd56fa7df36635a93857", "support" ], "workers/modules/resources/empty-worker.js": [ @@ -667988,11 +668679,11 @@ "support" ], "workers/modules/resources/eval-dynamic-import-worker.js": [ - "e92aff21a885536713141bd23a37733d5a66bfe2", + "af57b19f98ddcae391c4a55eb7ad1f51a4a0acf5", "support" ], "workers/modules/resources/export-on-dynamic-import-script.js": [ - "8d172c324d306d8e0792e3637be3fdfcdc354927", + "bab7cb48d24931a82df5c1fd5b195f9eecbc9123", "support" ], "workers/modules/resources/export-on-dynamic-import-script.js.headers": [ @@ -668024,15 +668715,15 @@ "support" ], "workers/modules/resources/import-test-cases.js": [ - "919c20e0d4c78c8f90447c01252a34727df967bb", + "c5830e97eebc88b12a5ed1f600e810df443204f8", "support" ], "workers/modules/resources/nested-dynamic-import-worker.js": [ - "5ae82f8aa054f8f3a61475994c4e658ba282c890", + "cb37f6e20f67c13f77582de19a1d4bd852537aa7", "support" ], "workers/modules/resources/nested-static-import-worker.js": [ - "72ab31cb1c6ef1b77f4de3610cde2e58e094669d", + "7599faaa099f594a05d71f628d548f6732b2b193", "support" ], "workers/modules/resources/new-worker-window.html": [ @@ -668048,7 +668739,7 @@ "support" ], "workers/modules/resources/static-import-and-then-dynamic-import-worker.js": [ - "89125e0af7b0af62823628cb248a02c9b1d24343", + "cd98d8c17df652d367b0720492c432851f10f66a", "support" ], "workers/modules/resources/static-import-non-existent-script-worker.js": [ @@ -668068,7 +668759,7 @@ "support" ], "workers/modules/resources/static-import-worker.js": [ - "f0639153a94feaef8efa30feabf26752ba058853", + "48751dbe03bb0f7de23e26911ac7af5733c7d5f1", "support" ], "workers/name-property.html": [ @@ -669348,7 +670039,7 @@ "testharness" ], "xhr/overridemimetype-edge-cases.window.js": [ - "192a696759c4b82852eee753f417fb8a4cf2718d", + "3f57e9a48f00206b60b1912e1544aec39f07ced8", "testharness" ], "xhr/overridemimetype-headers-received-state-force-shiftjis.htm": [ @@ -669628,7 +670319,7 @@ "support" ], "xhr/resources/inspect-headers.py": [ - "12dd33595f07c632cbe58780714e66fac15e4a6c", + "e71f671ced34ff3d447467ea4098e6e000ffd8f7", "support" ], "xhr/resources/invalid-utf8-html.py": [ diff --git a/tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini b/tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini index b480ed7298a..f2635b9d358 100644 --- a/tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini +++ b/tests/wpt/metadata/css/css-text/i18n/ja/css-text-line-break-ja-cpm-normal.html.ini @@ -23,3 +23,15 @@ expected: if os == "linux": FAIL + [2049 EXCLAMATION QUESTION MARK may NOT appear at line start if ja and normal] + expected: FAIL + + [203C DOUBLE EXCLAMATION MARK may NOT appear at line start if ja and normal] + expected: FAIL + + [2047 DOUBLE QUESTION MARK may NOT appear at line start if ja and normal] + expected: FAIL + + [2048 QUESTION EXCLAMATION MARK may NOT appear at line start if ja and normal] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini b/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini index 27e695ead3c..0242c7dc48c 100644 --- a/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini +++ b/tests/wpt/metadata/css/css-text/i18n/zh/css-text-line-break-zh-cpm-normal.html.ini @@ -23,3 +23,15 @@ expected: if os == "linux": FAIL + [203C DOUBLE EXCLAMATION MARK may NOT appear at line start if zh and normal] + expected: FAIL + + [2049 EXCLAMATION QUESTION MARK may NOT appear at line start if zh and normal] + expected: FAIL + + [2048 QUESTION EXCLAMATION MARK may NOT appear at line start if zh and normal] + expected: FAIL + + [2047 DOUBLE QUESTION MARK may NOT appear at line start if zh and normal] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-text/white-space/white-space-empty-text-sibling.html.ini b/tests/wpt/metadata/css/css-text/white-space/white-space-empty-text-sibling.html.ini new file mode 100644 index 00000000000..2800266d857 --- /dev/null +++ b/tests/wpt/metadata/css/css-text/white-space/white-space-empty-text-sibling.html.ini @@ -0,0 +1,2 @@ +[white-space-empty-text-sibling.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini index 2bd915cc0b9..834487d446f 100644 --- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini +++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini @@ -5,9 +5,6 @@ [z-index intermediate] expected: FAIL - [text-indent intermediate] - expected: FAIL - [border-color end] expected: FAIL @@ -47,9 +44,6 @@ [outline-width end] expected: FAIL - [font-weight end] - expected: FAIL - [min-width intermediate] expected: FAIL @@ -77,3 +71,9 @@ [bottom intermediate] expected: FAIL + [right end] + expected: FAIL + + [padding-left intermediate] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini index 0d630fb814a..3951cd266d5 100644 --- a/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini +++ b/tests/wpt/metadata/fetch/cross-origin-resource-policy/fetch-in-iframe.html.ini @@ -1,5 +1,4 @@ [fetch-in-iframe.html] - expected: CRASH [Untitled] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini deleted file mode 100644 index 87b07c3e670..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_1.html] - [Multiple history traversals from the same task] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini deleted file mode 100644 index 75d75b4cda2..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_2.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini deleted file mode 100644 index a30c51097ab..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html.ini +++ /dev/null @@ -1,16 +0,0 @@ -[location-protocol-setter-non-broken-weird.html] - [Set location.protocol to data] - expected: FAIL - - [Set location.protocol to ftp] - expected: FAIL - - [Set location.protocol to gopher] - expected: FAIL - - [Set location.protocol to x] - expected: FAIL - - [Set location.protocol to http+x] - expected: FAIL - diff --git a/tests/wpt/metadata/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html.ini b/tests/wpt/metadata/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html.ini new file mode 100644 index 00000000000..f244f89b7f6 --- /dev/null +++ b/tests/wpt/metadata/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html.ini @@ -0,0 +1,4 @@ +[form-margin-quirk.html] + [form margin quirk] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html.ini new file mode 100644 index 00000000000..07344310126 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html.ini @@ -0,0 +1,4 @@ +[image-decode-with-quick-attach-svg.tentative.html] + [SVGImageElement.prototype.decode(), attach to DOM before promise resolves.] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini index bed3bccce25..29b0025a2ae 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini @@ -11,5 +11,5 @@ expected: TIMEOUT [picture: source (max-width:500px) valid image, img valid image, resize to narrow] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini deleted file mode 100644 index 8cc42056d34..00000000000 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini +++ /dev/null @@ -1,10 +0,0 @@ -[non-active-document.html] - [DOMParser] - expected: FAIL - - [createHTMLDocument] - expected: FAIL - - [<template>] - 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/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini deleted file mode 100644 index a9677391662..00000000000 --- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[DOMContentLoaded-defer.html] - [The end: DOMContentLoaded and defer scripts] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini deleted file mode 100644 index c6d49957c4a..00000000000 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[aborted-parser.window.html] - [document.open() after parser is aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini index 7de8bd3de79..da4c074ea0a 100644 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-origin.sub.window.js.ini @@ -9,9 +9,6 @@ [document.open should throw a SecurityError with cross-origin document even when the ignore-opens-during-unload counter is greater than 0 (during beforeunload event)] expected: TIMEOUT - [document.open should throw a SecurityError with cross-origin document even when there is an active parser executing script] - expected: FAIL - [document.open should throw a SecurityError with cross-origin document even when the ignore-opens-during-unload counter is greater than 0 (during pagehide event)] expected: FAIL diff --git a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini new file mode 100644 index 00000000000..2ed601c6ff4 --- /dev/null +++ b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini @@ -0,0 +1,283 @@ +[quirks.html] + [top: -\\31 .5] + expected: FAIL + + [bottom: -1A] + expected: FAIL + + [bottom: -1a] + expected: FAIL + + [top: @1] + expected: FAIL + + [top: "1a"] + expected: FAIL + + [top: @a] + expected: FAIL + + [bottom: "1"] + expected: FAIL + + [bottom: -/**/1] + expected: FAIL + + [top: +/**/1] + expected: FAIL + + [bottom: @1a] + expected: FAIL + + [top: 1\\31 ] + expected: FAIL + + [top: url('1')] + expected: FAIL + + [bottom: -\\31 ] + expected: FAIL + + [top: calc(1)] + expected: FAIL + + [top: \\31 ] + expected: FAIL + + [bottom: +1\\31 ] + expected: FAIL + + [bottom: 1\\31 .5] + expected: FAIL + + [bottom: #0001] + expected: FAIL + + [top: calc(2 * 2px)] + expected: FAIL + + [bottom: 1a] + expected: FAIL + + [bottom: A] + expected: FAIL + + [bottom: #01] + expected: FAIL + + [top: +\\31 .5] + expected: FAIL + + [bottom: #1] + expected: FAIL + + [top: -/**/1] + expected: FAIL + + [bottom: +\\31 .5] + expected: FAIL + + [bottom: \\31 ] + expected: FAIL + + [bottom: calc(1)] + expected: FAIL + + [top: #001] + expected: FAIL + + [top: +\\31 ] + expected: FAIL + + [bottom: +\\31 ] + expected: FAIL + + [top: +1.5] + expected: FAIL + + [top: +1\\31 ] + expected: FAIL + + [bottom: @a] + expected: FAIL + + [bottom: @1] + expected: FAIL + + [top: #1] + expected: FAIL + + [top: 1a] + expected: FAIL + + [bottom: +1a] + expected: FAIL + + [bottom: +1A] + expected: FAIL + + [bottom: "a"] + expected: FAIL + + [top: #00001] + expected: FAIL + + [bottom: -1\\31 .5] + expected: FAIL + + [top: "1"] + expected: FAIL + + [bottom: 1.5] + expected: FAIL + + [bottom: -\\31 .5] + expected: FAIL + + [bottom: url('1')] + expected: FAIL + + [bottom: -1.5] + expected: FAIL + + [top: \\31 .5] + expected: FAIL + + [bottom: "1a"] + expected: FAIL + + [bottom: calc(2 * 2px)] + expected: FAIL + + [bottom: +1\\31 .5] + expected: FAIL + + [bottom: 1\\31 ] + expected: FAIL + + [bottom: +/**/1] + expected: FAIL + + [bottom: #00001] + expected: FAIL + + [top: url(1)] + expected: FAIL + + [bottom: #001] + expected: FAIL + + [top: +1\\31 .5] + expected: FAIL + + [top: -1a] + expected: FAIL + + [top: -1A] + expected: FAIL + + [bottom: url(1)] + expected: FAIL + + [top: a] + expected: FAIL + + [top: A] + expected: FAIL + + [top: #000001] + expected: FAIL + + [top: 1] + expected: FAIL + + [top: 1\\31 .5] + expected: FAIL + + [bottom: a] + expected: FAIL + + [bottom: 1] + expected: FAIL + + [bottom: +1] + expected: FAIL + + [bottom: #000001] + expected: FAIL + + [bottom: +a] + expected: FAIL + + [bottom: +A] + expected: FAIL + + [top: 1.5] + expected: FAIL + + [top: +A] + expected: FAIL + + [top: +a] + expected: FAIL + + [top: +1] + expected: FAIL + + [top: -1.5] + expected: FAIL + + [top: -1\\31 .5] + expected: FAIL + + [top: +1a] + expected: FAIL + + [top: +1A] + expected: FAIL + + [top: @1a] + expected: FAIL + + [bottom: \\31 .5] + expected: FAIL + + [top: "a"] + expected: FAIL + + [top: #01] + expected: FAIL + + [bottom: +1.5] + expected: FAIL + + [bottom: -A] + expected: FAIL + + [bottom: -a] + expected: FAIL + + [bottom: -1\\31 ] + expected: FAIL + + [top: #0001] + expected: FAIL + + [bottom: -1] + expected: FAIL + + [top: -\\31 ] + expected: FAIL + + [top: -A] + expected: FAIL + + [top: -a] + expected: FAIL + + [top: -1] + expected: FAIL + + [top: -1\\31 ] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers-and-values.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-and-values.html.ini new file mode 100644 index 00000000000..4df9a4d0412 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-and-values.html.ini @@ -0,0 +1,5 @@ +[multiple-headers-and-values.html] + expected: ERROR + [Image uses the last recognized Referrer-Policy header value] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers-combined.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-combined.html.ini new file mode 100644 index 00000000000..0e47f489cad --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-combined.html.ini @@ -0,0 +1,5 @@ +[multiple-headers-combined.html] + expected: ERROR + [Image uses the last recognized Referrer-Policy header value] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-invalid.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-invalid.html.ini new file mode 100644 index 00000000000..91c79957193 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-invalid.html.ini @@ -0,0 +1,5 @@ +[multiple-headers-one-invalid.html] + expected: ERROR + [Referrer policy header parsing fails if one header is invalid] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-unknown-token.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-unknown-token.html.ini new file mode 100644 index 00000000000..76a07734079 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers-one-unknown-token.html.ini @@ -0,0 +1,5 @@ +[multiple-headers-one-unknown-token.html] + expected: ERROR + [Image uses last recognized referrer policy token from Referrer-Policy headers] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/generic/multiple-headers.html.ini b/tests/wpt/metadata/referrer-policy/generic/multiple-headers.html.ini new file mode 100644 index 00000000000..afc2a5814b8 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/multiple-headers.html.ini @@ -0,0 +1,5 @@ +[multiple-headers.html] + expected: ERROR + [Image uses the last recognized Referrer-Policy header] + expected: NOTRUN + diff --git a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini index f3a2aaf504d..f6c2f3cdc99 100644 --- a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini +++ b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini @@ -2,9 +2,6 @@ [request.formData() with input: &&&a=b&&&&c=d&] expected: FAIL - [request.formData() with input: a=b&c=d] - expected: FAIL - [response.formData() with input: a&b&c] expected: FAIL @@ -14,6 +11,18 @@ [response.formData() with input: a=b&c=d&] expected: FAIL + [request.formData() with input: _charset_=windows-1252&test=%C2x] + expected: FAIL + + [response.formData() with input: _charset_=windows-1252&test=%C2x] + expected: FAIL + + [response.formData() with input: &&&a=b&&&&c=d&] + expected: FAIL + + [response.formData() with input: a=b&c=d] + expected: FAIL + [urlencoded-parser.any.worker.html] [request.formData() with input: a&b&c] @@ -22,12 +31,12 @@ [response.formData() with input: a&b&c] expected: FAIL - [response.formData() with input: a=b&c=d&] + [request.formData() with input: a=b&c=d&] expected: FAIL - [response.formData() with input: &&&a=b&&&&c=d&] + [request.formData() with input: _charset_=windows-1252&test=%C2x] expected: FAIL - [request.formData() with input: a=b&c=d&] + [response.formData() with input: _charset_=windows-1252&test=%C2x] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini index 66bd350083b..a56bad443a2 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini @@ -1,4 +1,5 @@ [realtimeanalyser-fft-scaling.html] + expected: TIMEOUT [X 2048-point FFT peak position is not equal to 64. Got 0.] expected: FAIL diff --git a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini index 333edb3a26e..650c91da4a6 100644 --- a/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini +++ b/tests/wpt/metadata/workers/baseurl/alpha/sharedworker-in-worker.html.ini @@ -1,4 +1,5 @@ [sharedworker-in-worker.html] + expected: ERROR [Base URL in workers: new SharedWorker()] expected: FAIL diff --git a/tests/wpt/web-platform-tests/.taskcluster.yml b/tests/wpt/web-platform-tests/.taskcluster.yml index f36523ed301..92e8d89d3af 100644 --- a/tests/wpt/web-platform-tests/.taskcluster.yml +++ b/tests/wpt/web-platform-tests/.taskcluster.yml @@ -1,6 +1,6 @@ version: 1 policy: - pullRequests: collaborators + pullRequests: public tasks: $flattenDeep: - $if: tasks_for == "github-push" diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml index 6f06b671f0c..e0abc3cb953 100644 --- a/tests/wpt/web-platform-tests/.travis.yml +++ b/tests/wpt/web-platform-tests/.travis.yml @@ -20,7 +20,8 @@ install: matrix: fast_finish: true include: - - os: linux + - name: "tag master + upload manifest" + os: linux python: "2.7" env: - JOB=manifest_upload SCRIPT=tools/ci/ci_manifest.sh @@ -31,16 +32,20 @@ matrix: secure: "EljDx50oNpDLs7rzwIv+z1PxIgB5KMnx1W0OQkpNvltR0rBW9g/aQaE+Z/c8M/sPqN1bkvKPybKzGKjb6j9Dw3/EJhah4SskH78r3yMAe2DU/ngxqqjjfXcCc2t5MKxzHAILTAxqScPj2z+lG1jeK1Z+K5hTbSP9lk+AvS0D16w=" file: $WPT_MANIFEST_FILE.gz skip_cleanup: true - - os: linux + - name: "lint" + os: linux python: "2.7" env: JOB=lint SCRIPT=tools/ci/ci_lint.sh - - os: linux + - name: "update-built-tests.sh" + os: linux python: "2.7" env: JOB=update_built SCRIPT=tools/ci/ci_built_diff.sh - - os: linux + - name: "build-css-testsuites.sh" + os: linux python: "2.7" env: JOB=build_css SCRIPT=css/build-css-testsuites.sh - - os: linux + - name: "stability (Firefox Nightly)" + os: linux python: "2.7" addons: apt: @@ -48,7 +53,8 @@ matrix: - libnss3-tools env: - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=firefox:nightly - - os: linux + - name: "stability (Chrome Dev)" + os: linux sudo: required python: "2.7" addons: @@ -58,19 +64,28 @@ matrix: - fonts-liberation env: - JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:dev - - python: 2.7 + - name: "tools/ unittests (Python 2)" + os: linux + python: "2.7" env: JOB=tools_unittest TOXENV=py27 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh - - python: 3.6 + - name: "tools/ unittests (Python 3)" + os: linux + python: "3.6" env: JOB=tools_unittest TOXENV=py36 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh - - python: 2.7 - env: JOB=resources_unittest TOXENV=py27 SCRIPT=tools/ci/ci_resources_unittest.sh - - python: 2.7 + - name: "tools/wpt/ unittests" + os: linux + python: "2.7" addons: apt: packages: - libnss3-tools env: JOB=wpt_integration TOXENV=py27,py27-flake8 SCRIPT=tools/ci/ci_wpt.sh - - os: linux + - name: "resources/ tests" + os: linux + python: "2.7" + env: JOB=resources_unittest TOXENV=py27 SCRIPT=tools/ci/ci_resources_unittest.sh + - name: "infrastructure/ tests" + os: linux python: "2.7" env: JOB=wptrunner_infrastructure SCRIPT=tools/ci/ci_wptrunner_infrastructure.sh addons: diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html index 385f1a5568e..6208b8dc056 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_svg_image_1.html @@ -1,46 +1,31 @@ +<!doctype html> +<meta charset=utf-8> +<title>Load a 100x100 image to a SVG image and draw it to a 100x100 canvas.</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/common/canvas-tests.js"></script> +<div id="log"></div> <canvas id="dest" height="100" width="100"></canvas> - <script> -var sourceWidth = 100; -var sourceHeight = 100; -var smoothingEnabled = false; -var destCanvas = document.getElementById('dest'); -var sourceImg = document.createElementNS('http://www.w3.org/2000/svg', 'image'); -sourceImg.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '../2x2.png'); -sourceImg.width = sourceWidth; -sourceImg.height = sourceHeight; -var destCtx = destCanvas.getContext('2d'); - -function checkPixel(x, y, expected, epsilon) { - var actual = destCtx.getImageData(x, y, 1, 1).data; - assert_true(actual.length === expected.length); - for (var i=0; i < actual.length; i++) - assert_approx_equals(actual[i], expected[i], epsilon); -} - -var pixelTests = [ - ['Pixel Top Left Image', 0, 0, [253, 140, 245, 255], 1], - ['Pixel Top Right Image', 0, 99, [253, 140, 245, 255], 1], - ['Pixel Bottom Left Image', 99, 0, [253, 140, 245, 255], 1], - ['Pixel Bottom Right Image', 99, 99, [253, 140, 245, 255], 1], -]; +async_test(t => { + var sourceImg = document.createElementNS('http://www.w3.org/2000/svg', 'image'); + sourceImg.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '../2x2.png'); + sourceImg.width = 100; + sourceImg.height = 100; -function runTest() { + window.onload = t.step_func_done(() => { + var destCanvas = document.getElementById('dest'); + var destCtx = destCanvas.getContext('2d'); destCtx.fillStyle = "#FF0000"; destCtx.fillRect(0, 0, destCanvas.width, destCanvas.height); - destCtx.imageSmoothingEnabled = smoothingEnabled; + destCtx.imageSmoothingEnabled = false; // 2 arguments, the dest origin is 0,0 // The source canvas will copied to the 0,0 position of the destination canvas destCtx.drawImage(sourceImg, 0, 0); - generate_tests(checkPixel, pixelTests); -} - -async_test(t => { - window.onload = function() { - t.step(runTest); - t.done(); - } -}, 'Load a 100x100 image to a SVG image and draw it to a 100x100 canvas.'); -</script>
\ No newline at end of file + _assertPixel(destCanvas, 0, 0, 253, 140, 245, 255); + _assertPixel(destCanvas, 0, 99, 253, 140, 245, 255); + _assertPixel(destCanvas, 99, 0, 253, 140, 245, 255); + _assertPixel(destCanvas, 99, 99, 253, 140, 245, 255); + }); +}); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-negative-scale.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-negative-scale.svg new file mode 100644 index 00000000000..36b7abb42eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-negative-scale.svg @@ -0,0 +1,40 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="testmeta"> + <title>CSS Masking: mask with negative scale target</title> + <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/> + <html:link rel="match" href="reference/mask-negative-scale-001-ref.svg"/> + <metadata class="flags">svg</metadata> + <desc class="assert">The masked target elements get scaled with negative + factors. Check if that influences masking. You should see 4 green + rectangles with smaller blue rectangles in it in various rotations.</desc> +</g> +<defs> +<g id="img" transform="translate(10,10)"> + <rect width="200" height="200" fill="red"/> + <rect width="100" height="100" fill="green"/> + <rect width="50" height="50" fill="blue"/> +</g> +</defs> + +<mask id="mask"> + <rect x="10" y="10" width="90" height="90" fill="white"/> +</mask> + +<g transform="translate(200, 200)"> +<g transform="matrix(1 0 0 1 -100 -100)" mask="url(#mask)"> + <use xlink:href="#img"/> +</g> +<g transform="matrix(-1 0 0 -1 -100 -100)" mask="url(#mask)"> + <use xlink:href="#img"/> +</g> +<g transform="matrix(-1 0 0 1 -100 -100)" mask="url(#mask)"> + <use xlink:href="#img"/> +</g> +<g transform="matrix(1 0 0 -1 -100 -100)" mask="url(#mask)"> + <use xlink:href="#img"/> +</g> +</g> +</svg> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-text-001.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-text-001.svg new file mode 100644 index 00000000000..1dd5c546af3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-text-001.svg @@ -0,0 +1,18 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:xlink="http://www.w3.org/1999/xlink" width="100px" height="100px"> +<g id="testmeta"> + <title>CSS Masking: mask with transformed text content</title> + <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/> + <html:link rel="match" href="reference/mask-text-001-ref.svg"/> + <metadata class="flags">svg</metadata> + <desc class="assert">The masked target elements get scaled with negative + factors. Check if that influences masking. You should see 4 green + rectangles with smaller blue rectangles in it in various rotations.</desc> +</g> +<mask id="mask"> + <text fill="#fff" font-family="Ahem" font-size="12px" transform="rotate(90 50 50)" x="50%" y="50%">foobar</text> +</mask> +<rect width="100%" height="100%" x="0" y="0" mask="url(#mask)"/> +</svg>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-001.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-001.svg new file mode 100644 index 00000000000..9bcc40d55b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-001.svg @@ -0,0 +1,19 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml"> +<g id="testmeta"> + <title>CSS Masking: mask without mask-type alpha</title> + <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-mask-type"/> + <html:link rel="match" href="reference/mask-green-square-001-ref.svg"/> + <metadata class="flags">svg</metadata> + <desc class="assert">The mask type "alpha" is applied to the mask element. + The mask should take the alpha channel of the content to mask. You should + see a green square.</desc> +</g> +<mask id="mask" mask-type="alpha"> + <rect width="200" height="200" fill="black" opacity="0"/> + <rect x="50" y="50" width="100" height="100" fill="black"/> +</mask> +<rect width="200" height="200" fill="green" mask="url(#mask)"/> +</svg> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-002.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-002.svg new file mode 100644 index 00000000000..c298297329c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-002.svg @@ -0,0 +1,19 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml"> +<g id="testmeta"> + <title>CSS Masking: mask without mask-type luminance</title> + <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-mask-type"/> + <html:link rel="match" href="reference/mask-green-square-001-ref.svg"/> + <metadata class="flags">svg</metadata> + <desc class="assert">The mask type "alpha" is applied to the mask element. + The mask should take the luminocity of the content to mask. You should + see a green square.</desc> +</g> +<mask id="mask" mask-type="luminance"> + <rect width="200" height="200" fill="black"/> + <rect x="50" y="50" width="100" height="100" fill="white"/> +</mask> +<rect width="200" height="200" fill="green" mask="url(#mask)"/> +</svg> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-003.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-003.svg new file mode 100644 index 00000000000..891405dc46a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/mask-type-003.svg @@ -0,0 +1,19 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml"> +<g id="testmeta"> + <title>CSS Masking: mask without specified mask-type</title> + <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#svg-masks"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#MaskElement"/> + <html:link rel="help" href="http://www.w3.org/TR/css-masking-1/#the-mask-type"/> + <html:link rel="match" href="reference/mask-green-square-001-ref.svg"/> + <metadata class="flags">svg</metadata> + <desc class="assert">No mask type was specified the mask element should + take the luminocity of the content to mask. You should see a green square. + </desc> +</g> +<mask id="mask"> + <rect width="200" height="200" fill="black"/> + <rect x="50" y="50" width="100" height="100" fill="white"/> +</mask> +<rect width="200" height="200" fill="green" mask="url(#mask)"/> +</svg> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg new file mode 100644 index 00000000000..c83ec87e7bd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-green-square-001-ref.svg @@ -0,0 +1,8 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml"> +<g id="testmeta"> + <title>CSS Masking: Reftest reference</title> + <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/> + <metadata class="flags">svg</metadata> +</g> +<rect x="50" y="50" width="100" height="100" fill="green"/> +</svg> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg new file mode 100644 index 00000000000..1ed0513327d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-negative-scale-001-ref.svg @@ -0,0 +1,15 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml"> +<g id="testmeta"> + <title>CSS Masking: Reftest reference</title> + <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/> + <metadata class="flags">svg</metadata> +</g> +<rect width="90" height="90" fill="green"/> +<rect x="40" y="40" width="50" height="50" fill="blue"/> +<rect x="110" width="90" height="90" fill="green"/> +<rect x="110" y="40" width="50" height="50" fill="blue"/> +<rect y="110" width="90" height="90" fill="green"/> +<rect x="40" y="110" width="50" height="50" fill="blue"/> +<rect x="110" y="110" width="90" height="90" fill="green"/> +<rect x="110" y="110" width="50" height="50" fill="blue"/> +</svg> diff --git a/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg new file mode 100644 index 00000000000..48737c03d1e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/mask-svg-content/reference/mask-text-001-ref.svg @@ -0,0 +1,8 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:html="http://www.w3.org/1999/xhtml"> +<g id="testmeta"> + <title>CSS Masking: Reftest reference</title> + <html:link rel="author" title="Dirk Schulze" href="mailto:dschulze@adobe.com"/> + <metadata class="flags">svg</metadata> +</g> +<text fill="#000" font-family="Ahem" font-size="12px" transform="rotate(90 50 50)" x="50" y="50">foobar</text> +</svg>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/css-scroll-snap/inheritance.html b/tests/wpt/web-platform-tests/css/css-scroll-snap/inheritance.html new file mode 100644 index 00000000000..40600d460c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-snap/inheritance.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Inheritance of CSS Scroll Snap properties</title> +<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#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_not_inherited('scroll-margin-block-end', '0px', '10px'); +assert_not_inherited('scroll-margin-block-start', '0px', '10px'); +assert_not_inherited('scroll-margin-bottom', '0px', '10px'); +assert_not_inherited('scroll-margin-inline-end', '0px', '10px'); +assert_not_inherited('scroll-margin-inline-start', '0px', '10px'); +assert_not_inherited('scroll-margin-left', '0px', '10px'); +assert_not_inherited('scroll-margin-right', '0px', '10px'); +assert_not_inherited('scroll-margin-top', '0px', '10px'); +assert_not_inherited('scroll-padding-block-end', 'auto', '10px'); +assert_not_inherited('scroll-padding-block-start', 'auto', '10px'); +assert_not_inherited('scroll-padding-bottom', '0px', '10px'); +assert_not_inherited('scroll-padding-inline-end', 'auto', '10px'); +assert_not_inherited('scroll-padding-inline-start', 'auto', '10px'); +assert_not_inherited('scroll-padding-left', '0px', '10px'); +assert_not_inherited('scroll-padding-right', '0px', '10px'); +assert_not_inherited('scroll-padding-top', '0px', '10px'); +assert_not_inherited('scroll-snap-align', 'none', 'start end'); +assert_not_inherited('scroll-snap-stop', 'normal', 'always'); +assert_not_inherited('scroll-snap-type', 'none', 'inline proximity'); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html new file mode 100644 index 00000000000..b82abea82a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-0010.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property"> +<link rel="match" href="../../../reference/ref-filled-green-100px-square-only.html"> +<meta name="assert" content="This checks that a float 'shadowing' a shape-outside float works as expected."> +<style> +#container { width: 100px; line-height: 0; } +#float_1 { float: right; width: 30px; height: 30px; background: green; } +#float_2 { float: left; width: 20px; height: 100px; background: green; shape-outside: inset(0 20px 0 0); } +#float_3 { float: left; width: 30px; height: 50px; background: green; } +.atomic { display: inline-block; background: green; } +</style> +<p>Test passes if there is a filled green square.</p> +<div id="container"> + <div id="float_1"></div> + <div id="float_2"></div> + <div id="float_3"></div> + <div class="atomic" style="width: 20px; height: 30px;"></div> + <div class="atomic" style="width: 50px; height: 20px;"></div> + <div class="atomic" style="width: 80px; height: 50px;"></div><div class="atomic" style="width: 20px; height: 50px;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html new file mode 100644 index 00000000000..3837f7f62f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html @@ -0,0 +1,3 @@ +<!DOCTYPE html> +<p>There should be a space between "Two" and "words".</p> +Two words diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html new file mode 100644 index 00000000000..56a5cad875d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-rules"> +<link rel="match" href="reference/white-space-empty-text-sibling-ref.html"> +<p>There should be a space between "Two" and "words".</p> +<div id="block"> <span>words</span></div> +<script> + block.insertBefore(document.createTextNode(""), block.firstChild); + block.insertBefore(document.createTextNode(""), block.firstChild); + block.offsetTop; + block.firstChild.data = "Two"; +</script> diff --git a/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html b/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html index 1c000919518..7c835c7371f 100644 --- a/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html +++ b/tests/wpt/web-platform-tests/css/motion/offset-path-serialization.html @@ -36,6 +36,10 @@ test(function() { target.style.offsetPath = ' path( "m 10 20 a 10 20 30 1 0 40 50 a 110 120 30 1 1 140 50" ) '; assert_equals(target.style.offsetPath, 'path("m 10 20 a 10 20 30 1 0 40 50 a 110 120 30 1 1 140 50")'); assert_equals(getComputedStyle(target).offsetPath, 'path("M 10 20 A 10 20 30 1 0 50 70 A 110 120 30 1 1 190 120")'); + + target.style.offsetPath = 'path("M 1 2 H 3 v 4 h 5 V 6 h 7 v 8")'; + assert_equals(target.style.offsetPath, 'path("M 1 2 H 3 v 4 h 5 V 6 h 7 v 8")'); + assert_equals(getComputedStyle(target).offsetPath, 'path("M 1 2 H 3 V 6 H 8 V 6 H 15 V 14")'); }); </script> </body> diff --git a/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-05d0.html b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-05d0.html new file mode 100644 index 00000000000..6848070e6df --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-05d0.html @@ -0,0 +1,20 @@ +<!doctype html> +<meta charset=utf-8> +<title>Drop cap with U+05D0 in the document</title> +<meta name="assert" content="The text placement within :first-line should not be affected by later presence of a right-to-left character."> +<link rel=help href=https://drafts.csswg.org/css-pseudo-4/#first-line-styling> +<link rel=match href=/css/selectors/floating-first-letter-ref.html> +<style> + p:first-line { + background: lightblue; + } + + p::first-letter { + float: left; + font-size: 4rem; + } + div { + color: transparent; + } +</style> +<p>Ab</p><div>א</div>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-feff.html b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-feff.html new file mode 100644 index 00000000000..02d256ab7dc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-feff.html @@ -0,0 +1,17 @@ +<!doctype html> +<meta charset=utf-8> +<title>Drop cap with U+FEFF in the document</title> +<meta name="assert" content="The text placement within :first-line should not be affected by later presence of U+FEFF."> +<link rel=help href=https://drafts.csswg.org/css-pseudo-4/#first-line-styling> +<link rel=match href=/css/selectors/floating-first-letter-ref.html> +<style> + p:first-line { + background: lightblue; + } + + p::first-letter { + float: left; + font-size: 4rem; + } +</style> +<p>Ab</p>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-ref.html b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-ref.html new file mode 100644 index 00000000000..3c3141a862d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/selectors/floating-first-letter-ref.html @@ -0,0 +1,14 @@ +<!doctype html> +<meta charset=utf-8> +<title>Drop cap with no bidi in the document</title> +<style> + p:first-line { + background: lightblue; + } + + p::first-letter { + float: left; + font-size: 4rem; + } +</style> +<p>Ab</p>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/docs/_admin/index.md b/tests/wpt/web-platform-tests/docs/_admin/index.md new file mode 100644 index 00000000000..5088b47cd00 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_admin/index.md @@ -0,0 +1,76 @@ +--- +layout: page +title: Project Administration +order: -1 +--- + +This section documents all the information necessary to administer the +infrastructure which makes the project possible. + +## Secrets + +Some aspects of the infrastructure are only accessible to administrators. + +Project | Secret | Owners +--------------------------|--------------------------|------------- +[results-collection] | root SSH keys | boaz@bocoup.com, mike@bocoup.com, rick@bocoup.com +[results-collection] | Password for app secrets | boaz@bocoup.com, mike@bocoup.com, rick@bocoup.com + +SSL certificates for all HTTPS-enabled domains are retrieved via [Let's +Encrypt](https://letsencrypt.org/), so that data does not represent an +explicitly-managed secret. + +## Third-party account owners + +- (unknown registrar): https://web-platform-tests.org + - jgraham@hoppipolla.co.uk +- (unknown registrar): https://w3c-test.org + - mike@w3.org +- (unknown registrar): http://testthewebforward.org + - web-human@w3.org +- [Google Domains](https://domains.google/): https://wpt.fyi + - foolip@google.com + - jeffcarp@google.com + - lukebjerring@google.com + - mike@bocoup.com +- [GitHub](https://github.com/): web-platform-tests + - [@foolip](https://github.com/foolip) + - [@Hexcles](https://github.com/Hexcles) + - [@jgraham](https://github.com/jgraham) + - [@plehegar](https://github.com/plehegar) + - [@thejohnjansen](https://github.com/thejohnjansen) + - [@youennf](https://github.com/youennf) + - [@zcorpan](https://github.com/zcorpan) +- [GitHub](https://github.com/): w3c + - [@plehegar](https://github.com/plehegar) + - [@sideshowbarker](https://github.com/sideshowbarker) +- [Google Cloud Platform](https://cloud.google.com/): wptdashboard + - boaz@bocoup.com + - foolip@google.com + - geoffers@gmail.com + - jeffcarp@google.com + - kereliuk@google.com + - lukebjerring@google.com + - markdittmer@google.com + - mike@bocoup.com + - rick@bocoup.com +- [Amazon AWS](https://aws.amazon.com/): results-collection infrastructure + - boaz@bocoup.com + - mike@bocoup.com + - rick@bocoup.com +- E-mail address: wpt.pr.bot@gmail.com + - boaz@bocoup.com + - mike@bocoup.com + - simon@bocoup.com +- [Heroku](https://heroku.com/): wpt.pr.bot@gmail.com + - boaz@bocoup.com + - mike@bocoup.com + - simon@bocoup.com +- [GitHub](https://github.com/): @wpt-pr-bot account + - boaz@bocoup.com + - mike@bocoup.com + - simon@bocoup.com + +[results-collection]: https://github.com/web-platform-tests/results-collection +[web-platform-tests]: https://github.com/e3c/web-platform-tests +[wpt.fyi]: https://github.com/web-platform-tests/wpt.fyi diff --git a/tests/wpt/web-platform-tests/docs/_config.yml b/tests/wpt/web-platform-tests/docs/_config.yml index 760c991820b..8a793ae19d5 100644 --- a/tests/wpt/web-platform-tests/docs/_config.yml +++ b/tests/wpt/web-platform-tests/docs/_config.yml @@ -18,6 +18,8 @@ baseurl: "" # the subpath of your site, e.g. /blog url: "" # the base hostname & protocol for your site, e.g. http://example.com collections: + admin: + output: true appendix: output: true reviewing-tests: diff --git a/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/key.svg b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/key.svg new file mode 100644 index 00000000000..c5bfda0a4dc --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/_includes/svg/octicons/key.svg @@ -0,0 +1,3 @@ +<svg width="256" height="256" class="octicon octicon-key" viewBox="0 0 14 16" version="1.1" aria-hidden="true"> + <path fill-rule="evenodd" d="M12.83 2.17C12.08 1.42 11.14 1.03 10 1c-1.13.03-2.08.42-2.83 1.17S6.04 3.86 6.01 5c0 .3.03.59.09.89L0 12v1l1 1h2l1-1v-1h1v-1h1v-1h2l1.09-1.11c.3.08.59.11.91.11 1.14-.03 2.08-.42 2.83-1.17S13.97 6.14 14 5c-.03-1.14-.42-2.08-1.17-2.83zM11 5.38c-.77 0-1.38-.61-1.38-1.38 0-.77.61-1.38 1.38-1.38.77 0 1.38.61 1.38 1.38 0 .77-.61 1.38-1.38 1.38z"></path> +</svg> diff --git a/tests/wpt/web-platform-tests/docs/index.html b/tests/wpt/web-platform-tests/docs/index.html index e8aa2e92e97..ffef230a74a 100644 --- a/tests/wpt/web-platform-tests/docs/index.html +++ b/tests/wpt/web-platform-tests/docs/index.html @@ -51,6 +51,17 @@ layout: page <p>Some hints and tips for those reviewing tests.</p> </li> <li> + <a href="{{ site.baseurl }}{% link _admin/index.md %}"> + <div> + {% include svg/octicons/key.svg %} + </div> + <h2> + Administration + </h2> + </a> + <p>Instruction for project administrators.</p> + </li> + <li> <a href="{{ site.baseurl }}{% link _appendix/index.md %}"> <div> {% include svg/octicons/package.svg %} diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js index 7fa6dd1d0ed..0c45d8d87ce 100644 --- a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-count.any.js @@ -1,5 +1,6 @@ // META: script=../resources/utils.js // META: script=/common/utils.js +// META: timeout=long function redirectCount(desc, redirectUrl, redirectLocation, redirectStatus, maxCount, shouldPass) { var uuid_token = token(); diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html new file mode 100644 index 00000000000..7f6618bb782 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/form-margin-quirk.html @@ -0,0 +1,20 @@ +<!-- quirks --> +<title>form margin quirk</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<style> +form { writing-mode: vertical-lr; } +#ref { margin: 0 1em 0 0; } +</style> +<form id=form></form> +<div id=ref></div> +<script> +test(() => { + const formStyle = getComputedStyle(document.getElementById('form')); + const refStyle = getComputedStyle(document.getElementById('ref')); + assert_equals(formStyle.marginTop, refStyle.marginTop, 'marginTop'); + assert_equals(formStyle.marginRight, refStyle.marginRight, 'marginRight'); + assert_equals(formStyle.marginBottom, refStyle.marginBottom, 'marginBottom'); + assert_equals(formStyle.marginLeft, refStyle.marginLeft, 'marginLeft'); +}); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html new file mode 100644 index 00000000000..0fc49e60360 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach-svg.tentative.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<meta name="timeout" content="long"> +<title>SVGImageElement.prototype.decode(), attach to DOM before promise resolves.</title> +<link rel=help href="https://html.spec.whatwg.org/multipage/embedded-content.html#dom-img-decode"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<svg></svg> +<script> +"use strict"; + +promise_test(function() { + var img = document.createElementNS('http://www.w3.org/2000/svg', 'image'); + img.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', "/images/green.png"); + const promise = img.decode().then(function(arg) { + assert_equals(arg, undefined); + }); + // Don't wait for the promise to resolve before attaching the image. + // The promise should still resolve successfully. + document.querySelector('svg').appendChild(img); + return promise; +}, document.title); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm new file mode 100644 index 00000000000..7819ee1c189 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm @@ -0,0 +1,75 @@ +<!doctype html> +<html> +<head> +<title>video element - intrinsic sizes</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/media.js"></script> +</head> +<body> +<p><a href="https://html.spec.whatwg.org/multipage/#the-video-element">spec reference</a></p> +<video id="v1"></video> +<video id="v2" width="400"></video> +<video id="v3" height="100"></video> +<video id="v4"></video> +<video id="v5" poster="/media/poster.png"></video> +<div id="log"></div> +<script> +test(function() { + var s = getComputedStyle(document.getElementById("v1")); + assert_equals(s.width, "300px"); + assert_equals(s.height, "150px"); +}, "default object size is 300x150"); + +test(function() { + var s = getComputedStyle(document.getElementById("v2")); + assert_equals(s.width, "400px"); + assert_equals(s.height, "200px"); +}, "default height is half the width"); + +test(function() { + var s = getComputedStyle(document.getElementById("v3")); + assert_equals(s.width, "200px"); + assert_equals(s.height, "100px"); +}, "default width is twice the height"); + +async_test(function(t) { + var v = document.getElementById("v4"); + var s = getComputedStyle(v); + v.src = getVideoURI("/media/movie_5") + "?" + new Date() + Math.random(); + v.onerror = t.unreached_func(); + v.onloadedmetadata = t.step_func(function() { + assert_equals(s.width, '320px'); + assert_equals(s.height, '240px'); + v.removeAttribute("src"); + v.load(); + // Dimensions should be updated only on next layout. + assert_equals(s.width, '320px'); + assert_equals(s.height, '240px'); + requestAnimationFrame(t.step_func_done(function() { + assert_equals(s.width, "300px"); + assert_equals(s.height, "150px"); + })); + }); +}, "default object size after src is removed"); + +async_test(function(t) { + var v = document.getElementById("v5"); + var s = getComputedStyle(v); + v.onerror = t.unreached_func(); + onload = t.step_func(function() { + assert_equals(s.width, '102px'); + assert_equals(s.height, '77px'); + v.removeAttribute("poster"); + // Dimensions should be updated only on next layout. + assert_equals(s.width, '102px'); + assert_equals(s.height, '77px'); + requestAnimationFrame(t.step_func_done(function() { + assert_equals(s.width, "300px"); + assert_equals(s.height, "150px"); + })); + }); +}, "default object size after poster is removed"); +</script> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-legend-element/HTMLLegendElement.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-legend-element/HTMLLegendElement.html new file mode 100644 index 00000000000..8600e5437a5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-legend-element/HTMLLegendElement.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>HTML Test: HTMLLegendElement</title> +<link rel="author" title="Intel" href="http://www.intel.com/"> +<link rel="help" title="4.10.17 The legend element" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-legend-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<div style="display:none"> + <form> + <legend id="lgd1">test</legend> + </form> + <form id="fm"> + <fieldset id="fs"> + <legend id="lgd2">test</legend> + </fieldset> + </form> +</div> +<script> + test(function() { + assert_equals(document.getElementById("lgd1").form, null, + "The legend.form return null if it has no fieldset parent."); + }, "The legend.form return null when it has no fieldset parent"); + + test(function() { + assert_equals(document.getElementById("lgd2").form, document.getElementById("fs").form, + "The legend.form should be same as fieldset.form."); + assert_equals(document.getElementById("lgd2").form, document.getElementById("fm"), + "The legend.form should be the correct form."); + }, "The legend.form must be same value as fieldset.form"); + + test(function() { + assert_true(document.getElementById("lgd1") instanceof HTMLLegendElement, "legend should be a HTMLLegendElement"); + assert_readonly(document.getElementById("lgd1"), "form", "The form is not readonly"); + }, "Interface HTMLLegendElement"); +</script> + diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html new file mode 100644 index 00000000000..adcea90a363 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-false-manual.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>navigator.cookieEnabled false</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<link rel="help" href="https://html.spec.whatwg.org/#dom-navigator-cookieenabled"> +<meta name="flags" content="interact"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<h2>Preconditions</h2> +<p>Disable cookies in browser settings.</p> + +<script> + test(() => { + assert_false(navigator.cookieEnabled); + }, "navigator.cookieEnabled is false when cookies are disabled"); +</script> diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html new file mode 100644 index 00000000000..fc7f49d143d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigatorcookies-cookieenabled-true.html @@ -0,0 +1,13 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>navigator.cookieEnabled true</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<link rel="help" href="https://html.spec.whatwg.org/#dom-navigator-cookieenabled"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> + test(() => { + assert_true(navigator.cookieEnabled); + }, "navigator.cookieEnabled is true when cookies are enabled"); +</script> diff --git a/tests/wpt/web-platform-tests/infrastructure/assumptions/cookie.html b/tests/wpt/web-platform-tests/infrastructure/assumptions/cookie.html new file mode 100644 index 00000000000..5d5b0dc0e10 --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/assumptions/cookie.html @@ -0,0 +1,18 @@ +<!doctype html> +<title>cookies work in default browse settings</title> +<link rel="author" title="Intel" href="http://www.intel.com"> +<link rel="help" href="https://html.spec.whatwg.org/#dom-document-cookie"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> + test(t => { + t.add_cleanup(() => { + let date = new Date(); + date.setTime(date.getTime() - 10000); + document.cookie = "name=''; expires=" + date.toGMTString(); + }); + document.cookie = "name=test_cookie"; + assert_not_equals(document.cookie.match(/name=test_cookie/), null); + }); +</script> diff --git a/tests/wpt/web-platform-tests/interfaces/speech-api.idl b/tests/wpt/web-platform-tests/interfaces/speech-api.idl index 0b5c866b35c..f94637a8d21 100644 --- a/tests/wpt/web-platform-tests/interfaces/speech-api.idl +++ b/tests/wpt/web-platform-tests/interfaces/speech-api.idl @@ -43,12 +43,18 @@ enum SpeechRecognitionErrorCode { "language-not-supported" }; -[Exposed=Window] +[Exposed=Window, + Constructor(DOMString type, SpeechRecognitionErrorEventInit eventInitDict)] interface SpeechRecognitionErrorEvent : Event { readonly attribute SpeechRecognitionErrorCode error; readonly attribute DOMString message; }; +dictionary SpeechRecognitionErrorEventInit : EventInit { + required SpeechRecognitionErrorCode error; + DOMString message = ""; +}; + // Item in N-best list [Exposed=Window] interface SpeechRecognitionAlternative { @@ -72,7 +78,8 @@ interface SpeechRecognitionResultList { }; // A full response, which could be interim or final, part of a continuous response or not -[Exposed=Window] +[Exposed=Window, + Constructor(DOMString type, SpeechRecognitionEventInit eventInitDict)] interface SpeechRecognitionEvent : Event { readonly attribute unsigned long resultIndex; readonly attribute SpeechRecognitionResultList results; @@ -80,6 +87,13 @@ interface SpeechRecognitionEvent : Event { readonly attribute Document? emma; }; +dictionary SpeechRecognitionEventInit : EventInit { + unsigned long resultIndex = 0; + required SpeechRecognitionResultList results; + any interpretation = null; + Document? emma = null; +}; + // The object representing a speech grammar [Exposed=Window, Constructor] interface SpeechGrammar { @@ -118,8 +132,7 @@ partial interface Window { }; [Exposed=Window, - Constructor, - Constructor(DOMString text)] + Constructor(optional DOMString text)] interface SpeechSynthesisUtterance : EventTarget { attribute DOMString text; attribute DOMString lang; @@ -138,7 +151,7 @@ interface SpeechSynthesisUtterance : EventTarget { }; [Exposed=Window, - Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict)] + Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict)] interface SpeechSynthesisEvent : Event { readonly attribute SpeechSynthesisUtterance utterance; readonly attribute unsigned long charIndex; @@ -169,7 +182,7 @@ enum SpeechSynthesisErrorCode { }; [Exposed=Window, - Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict)] + Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict)] interface SpeechSynthesisErrorEvent : SpeechSynthesisEvent { readonly attribute SpeechSynthesisErrorCode error; }; diff --git a/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html b/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html new file mode 100644 index 00000000000..73ce97ab5c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/orientation-event/ondeviceorientationabsolute.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> + <head> + <title>User agents must also provide an event handler IDL attribute named ondeviceorientationabsolute on the window object</title> + <meta name=viewport content="width=device-width, maximum-scale=1.0"> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <p>Rotate the device to run the tests.</p> + <div id="log"></div> + <script> + var t1 = async_test("Provide an event handler IDL attribute named ondeviceorientationabsolute"); + var t2 = async_test("The type of this event handler must be 'DeviceOrientationEvent'"); + var t3 = async_test("The absolute property must be set to true."); + var run = false; + if (window.ondeviceorientationabsolute === undefined) { + t1.step(t1.unreached_func("ondeviceorientationabsolute not supported")); + t2.step(t2.unreached_func("ondeviceorientationabsolute not supported")); + t3.step(t3.unreached_func("ondeviceorientationabsolute not supported")); + } else { + window.ondeviceorientationabsolute = function(e) { + if (!run) { + run = true; + t1.step(function() { + assert_equals(e.type, "deviceorientationabsolute"); + }); + t1.done(); + t2.step(function() { + assert_true(e instanceof DeviceOrientationEvent); + }); + t2.done(); + t3.step(function() { + assert_true(e.absolute); + }); + t3.done(); + } + }; + } + </script> + </body> +</html> + diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html new file mode 100644 index 00000000000..682199b917c --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + <head> + <title>Referrer Policy: multiple Referrer-Policy header and header values are allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + + <script src="/referrer-policy/generic/common.js"></script> + </head> + <body> + <h1>Referrer Policy: multiple Referrer-Policy header and header values are allowed</h1> + <p></p> + + <pre id="received_message">Running...</pre> + + <script> + var test = async_test("Image uses the last recognized Referrer-Policy header value"); + var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime(); + var url = location.protocol + "//www1." + location.hostname + ":" + location.port + + urlPath; + queryImage(url, test.step_func(function(message) { + assert_equals(message.referrer, document.location.origin + "/"); + test.done(); + }), null, 'no-referrer', test); + </script> + + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html.headers new file mode 100644 index 00000000000..d1acc2f1d3c --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-and-values.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: no-referrer +Referrer-Policy: no-referrer,origin diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html new file mode 100644 index 00000000000..ad02ae84bd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + <head> + <title>Referrer Policy: multiple Referrer-Policy header values are allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + + <script src="/referrer-policy/generic/common.js"></script> + </head> + <body> + <h1>Referrer Policy: multiple Referrer-Policy header values are allowed</h1> + <p></p> + + <pre id="received_message">Running...</pre> + + <script> + var test = async_test("Image uses the last recognized Referrer-Policy header value"); + var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime(); + var url = location.protocol + "//www1." + location.hostname + ":" + location.port + + urlPath; + queryImage(url, test.step_func(function(message) { + assert_equals(message.referrer, document.location.origin + "/"); + test.done(); + }), null, 'no-referrer', test); + </script> + + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html.headers new file mode 100644 index 00000000000..fc30a2a1862 --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-combined.html.headers @@ -0,0 +1 @@ +Referrer-Policy: no-referrer, origin diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html new file mode 100644 index 00000000000..b1384b14a0e --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + <head> + <title>Referrer Policy: multiple Referrer-Policy headers with one invalid</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + + <script src="/referrer-policy/generic/common.js"></script> + </head> + <body> + <h1>Referrer Policy: multiple Referrer-Policy headers with one invalid</h1> + <p></p> + + <pre id="received_message">Running...</pre> + + <script> + var test = async_test("Referrer policy header parsing fails if one header is invalid"); + var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime(); + var url = location.protocol + "//www1." + location.hostname + ":" + location.port + + urlPath; + queryImage(url, test.step_func(function(message) { + assert_equals(message.referrer, document.location.href); + test.done(); + }), null, 'no-referrer', test); + </script> + + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html.headers new file mode 100644 index 00000000000..07521938041 --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-invalid.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: origin +Referrer-Policy: origin no-referrer diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html new file mode 100644 index 00000000000..3273c0dbedf --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + <head> + <title>Referrer Policy: multiple Referrer-Policy headers with one invalid</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + + <script src="/referrer-policy/generic/common.js"></script> + </head> + <body> + <h1>Referrer Policy: multiple Referrer-Policy headers with one invalid</h1> + <p></p> + + <pre id="received_message">Running...</pre> + + <script> + var test = async_test("Image uses last recognized referrer policy token from Referrer-Policy headers"); + var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime(); + var url = location.protocol + "//www1." + location.hostname + ":" + location.port + + urlPath; + queryImage(url, test.step_func(function(message) { + assert_equals(message.referrer, document.location.origin + "/"); + test.done(); + }), null, 'no-referrer', test); + </script> + + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html.headers new file mode 100644 index 00000000000..46feffd705f --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers-one-unknown-token.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: no-referrer +Referrer-Policy: origin,not-a-valid-token diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html new file mode 100644 index 00000000000..5f6a749b4bd --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html @@ -0,0 +1,29 @@ +<!DOCTYPE html> +<html> + <head> + <title>Referrer Policy: multiple Referrer-Policy headers are allowed</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + + <script src="/referrer-policy/generic/common.js"></script> + </head> + <body> + <h1>Referrer Policy: multiple Referrer-Policy headers are allowed</h1> + <p></p> + + <pre id="received_message">Running...</pre> + + <script> + var test = async_test("Image uses the last recognized Referrer-Policy header"); + var urlPath = '/referrer-policy/generic/subresource/image.py?cache_destroyer=' + (new Date()).getTime(); + var url = location.protocol + "//www1." + location.hostname + ":" + location.port + + urlPath; + queryImage(url, test.step_func(function(message) { + assert_equals(message.referrer, document.location.origin + "/"); + test.done(); + }), null, 'no-referrer', test); + </script> + + <div id="log"></div> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html.headers b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html.headers new file mode 100644 index 00000000000..dd1dd853f20 --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/multiple-headers.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: no-referrer +Referrer-Policy: origin diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index 00c59eda8ad..950df6fa34b 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -57,7 +57,6 @@ if (!('subsetTestByKey' in self)) { } /// Helpers /// function constValue (cnt) -//@{ { if (cnt.type === "null") return null; if (cnt.type === "NaN") return NaN; @@ -66,9 +65,7 @@ function constValue (cnt) return cnt.value; } -//@} function minOverloadLength(overloads) -//@{ { // "The value of the Function object’s “length” property is // a Number determined as follows: @@ -87,9 +84,7 @@ function minOverloadLength(overloads) .reduce(function(m, n) { return Math.min(m, n); }); } -//@} function throwOrReject(a_test, operation, fn, obj, args, message, cb) -//@{ { if (operation.idlType.generic !== "Promise") { assert_throws(new TypeError(), function() { @@ -108,9 +103,7 @@ function throwOrReject(a_test, operation, fn, obj, args, message, cb) } } -//@} function awaitNCallbacks(n, cb, ctx) -//@{ { var counter = 0; return function() { @@ -121,9 +114,7 @@ function awaitNCallbacks(n, cb, ctx) }; } -//@} var fround = -//@{ (function(){ if (Math.fround) return Math.fround; @@ -133,12 +124,10 @@ var fround = return arr[0]; }; })(); -//@} /// IdlHarnessError /// // Entry point self.IdlHarnessError = function(message) -//@{ { /** * Message to be printed as the error's toString invocation. @@ -148,19 +137,15 @@ self.IdlHarnessError = function(message) IdlHarnessError.prototype = Object.create(Error.prototype); -//@} IdlHarnessError.prototype.toString = function() -//@{ { return this.message; }; -//@} /// IdlArray /// // Entry point self.IdlArray = function() -//@{ { /** * A map from strings to the corresponding named IdlObject, such as @@ -210,17 +195,13 @@ self.IdlArray = function() this["inheritance"] = {}; }; -//@} IdlArray.prototype.add_idls = function(raw_idls, options) -//@{ { /** Entry point. See documentation at beginning of file. */ this.internal_add_idls(WebIDL2.parse(raw_idls), options); }; -//@} IdlArray.prototype.add_untested_idls = function(raw_idls, options) -//@{ { /** Entry point. See documentation at beginning of file. */ var parsed_idls = WebIDL2.parse(raw_idls); @@ -228,9 +209,7 @@ IdlArray.prototype.add_untested_idls = function(raw_idls, options) this.internal_add_idls(parsed_idls, options); }; -//@} IdlArray.prototype.mark_as_untested = function (parsed_idls) -//@{ { for (var i = 0; i < parsed_idls.length; i++) { parsed_idls[i].untested = true; @@ -241,21 +220,15 @@ IdlArray.prototype.mark_as_untested = function (parsed_idls) } } }; -//@} -//@} IdlArray.prototype.is_excluded_by_options = function (name, options) -//@{ { return options && (options.except && options.except.includes(name) || options.only && !options.only.includes(name)); }; -//@} -//@} IdlArray.prototype.add_dependency_idls = function(raw_idls, options) -//@{ { const parsed_idls = WebIDL2.parse(raw_idls); const new_options = { only: [] } @@ -361,9 +334,7 @@ IdlArray.prototype.add_dependency_idls = function(raw_idls, options) } } -//@} IdlArray.prototype.internal_add_idls = function(parsed_idls, options) -//@{ { /** * Internal helper called by add_idls() and add_untested_idls(). @@ -501,9 +472,7 @@ IdlArray.prototype.internal_add_idls = function(parsed_idls, options) }.bind(this)); }; -//@} IdlArray.prototype.add_objects = function(dict) -//@{ { /** Entry point. See documentation at beginning of file. */ for (var k in dict) @@ -519,17 +488,13 @@ IdlArray.prototype.add_objects = function(dict) } }; -//@} IdlArray.prototype.prevent_multiple_testing = function(name) -//@{ { /** Entry point. See documentation at beginning of file. */ this.members[name].prevent_multiple_testing = true; }; -//@} IdlArray.prototype.recursively_get_implements = function(interface_name) -//@{ { /** * Helper function for test(). Returns an array of things that implement @@ -557,9 +522,7 @@ IdlArray.prototype.recursively_get_implements = function(interface_name) return ret; }; -//@} IdlArray.prototype.recursively_get_includes = function(interface_name) -//@{ { /** * Helper function for test(). Returns an array of things that implement @@ -587,9 +550,7 @@ IdlArray.prototype.recursively_get_includes = function(interface_name) return ret; }; -//@} IdlArray.prototype.is_json_type = function(type) -//@{ { /** * Checks whether type is a JSON type as per @@ -754,14 +715,12 @@ function exposed_in(globals) { throw new IdlHarnessError("Unexpected global object"); } -//@} /** * Asserts that the given error message is thrown for the given function. * @param {string|IdlHarnessError} error Expected Error message. * @param {Function} idlArrayFunc Function operating on an IdlArray that should throw. */ IdlArray.prototype.assert_throws = function(error, idlArrayFunc) -//@{ { try { idlArrayFunc.call(this, this); @@ -781,9 +740,7 @@ IdlArray.prototype.assert_throws = function(error, idlArrayFunc) throw new IdlHarnessError(`${idlArrayFunc} did not throw the expected IdlHarnessError`); } -//@} IdlArray.prototype.test = function() -//@{ { /** Entry point. See documentation at beginning of file. */ @@ -872,9 +829,7 @@ IdlArray.prototype.test = function() } }; -//@} IdlArray.prototype.collapse_partials = function() -//@{ { const testedPartials = new Map(); this.partials.forEach(function(parsed_idl) @@ -955,9 +910,7 @@ IdlArray.prototype.collapse_partials = function() this.partials = []; } -//@} IdlArray.prototype.assert_type_is = function(value, type) -//@{ { if (type.idlType in this.members && this.members[type.idlType] instanceof IdlTypedef) { @@ -1176,12 +1129,10 @@ IdlArray.prototype.assert_type_is = function(value, type) throw new IdlHarnessError("Type " + type + " isn't an interface or dictionary"); } }; -//@} /// IdlObject /// function IdlObject() {} IdlObject.prototype.test = function() -//@{ { /** * By default, this does nothing, so no actual tests are run for IdlObjects @@ -1189,9 +1140,7 @@ IdlObject.prototype.test = function() */ }; -//@} IdlObject.prototype.has_extended_attribute = function(name) -//@{ { /** * This is only meaningful for things that support extended attributes, @@ -1203,12 +1152,10 @@ IdlObject.prototype.has_extended_attribute = function(name) }); }; -//@} /// IdlDictionary /// // Used for IdlArray.prototype.assert_type_is function IdlDictionary(obj) -//@{ { /** * obj is an object produced by the WebIDLParser.js "dictionary" @@ -1231,7 +1178,6 @@ function IdlDictionary(obj) this.base = obj.inheritance; } -//@} IdlDictionary.prototype = Object.create(IdlObject.prototype); IdlDictionary.prototype.get_inheritance_stack = function() { @@ -1240,7 +1186,6 @@ IdlDictionary.prototype.get_inheritance_stack = function() { /// IdlInterface /// function IdlInterface(obj, is_callback, is_mixin) -//@{ { /** * obj is an object produced by the WebIDLParser.js "interface" production. @@ -1279,30 +1224,23 @@ function IdlInterface(obj, is_callback, is_mixin) this._is_callback = is_callback; this._is_mixin = is_mixin; } -//@} IdlInterface.prototype = Object.create(IdlObject.prototype); IdlInterface.prototype.is_callback = function() -//@{ { return this._is_callback; }; -//@} IdlInterface.prototype.is_mixin = function() -//@{ { return this._is_mixin; }; -//@} IdlInterface.prototype.has_constants = function() -//@{ { return this.members.some(function(member) { return member.type === "const"; }); }; -//@} IdlInterface.prototype.get_unscopables = function() { @@ -1312,13 +1250,11 @@ IdlInterface.prototype.get_unscopables = function() }; IdlInterface.prototype.is_global = function() -//@{ { return this.extAttrs.some(function(attribute) { return attribute.name === "Global"; }); }; -//@} IdlInterface.prototype.has_to_json_regular_operation = function() { return this.members.some(function(m) { @@ -1446,7 +1382,6 @@ function _traverse_inherited_and_consequential_interfaces(stack, callback) { } IdlInterface.prototype.test = function() -//@{ { if (this.has_extended_attribute("NoInterfaceObject") || this.is_mixin()) { @@ -1478,10 +1413,8 @@ IdlInterface.prototype.test = function() // interface are still tested. this.test_members(); }; -//@} IdlInterface.prototype.test_self = function() -//@{ { subsetTestByKey(this.name, test, function() { @@ -1919,9 +1852,7 @@ IdlInterface.prototype.test_self = function() }.bind(this), this.name + ' interface: existence and properties of interface prototype object\'s @@unscopables property'); }; -//@} IdlInterface.prototype.test_immutable_prototype = function(type, obj) -//@{ { if (typeof Object.setPrototypeOf !== "function") { return; @@ -2023,9 +1954,7 @@ IdlInterface.prototype.test_immutable_prototype = function(type, obj) "should return true"); }; -//@} IdlInterface.prototype.test_member_const = function(member) -//@{ { if (!this.has_constants()) { throw new IdlHarnessError("Internal error: test_member_const called without any constants"); @@ -2084,9 +2013,7 @@ IdlInterface.prototype.test_member_const = function(member) }; -//@} IdlInterface.prototype.test_member_attribute = function(member) -//@{ { if (!shouldRunSubTest(this.name)) { return; @@ -2179,9 +2106,7 @@ IdlInterface.prototype.test_member_attribute = function(member) }.bind(this)); }; -//@} IdlInterface.prototype.test_member_operation = function(member) -//@{ { if (!shouldRunSubTest(this.name)) { return; @@ -2274,9 +2199,7 @@ IdlInterface.prototype.do_member_unscopable_asserts = function(member) this.name + '.prototype[Symbol.unscopables].' + prop + ' must have the value `true`'); }; -//@} IdlInterface.prototype.do_member_operation_asserts = function(memberHolderObject, member, a_test) -//@{ { var done = a_test.done.bind(a_test); var operationUnforgeable = member.isUnforgeable; @@ -2343,9 +2266,7 @@ IdlInterface.prototype.do_member_operation_asserts = function(memberHolderObject } } -//@} IdlInterface.prototype.add_iterable_members = function(member) -//@{ { this.members.push(new IdlInterfaceMember( { type: "operation", name: "entries", idlType: "iterator", arguments: []})); @@ -2385,9 +2306,7 @@ IdlInterface.prototype.test_to_json_operation = function(memberHolderObject, mem } }; -//@} IdlInterface.prototype.test_member_iterable = function(member) -//@{ { var interfaceName = this.name; var isPairIterator = member.idlType.length === 2; @@ -2413,9 +2332,7 @@ IdlInterface.prototype.test_member_iterable = function(member) } }; -//@} IdlInterface.prototype.test_member_stringifier = function(member) -//@{ { subsetTestByKey(this.name, test, function() { @@ -2477,9 +2394,7 @@ IdlInterface.prototype.test_member_stringifier = function(member) }.bind(this), this.name + " interface: stringifier"); }; -//@} IdlInterface.prototype.test_members = function() -//@{ { for (var i = 0; i < this.members.length; i++) { @@ -2556,9 +2471,7 @@ IdlInterface.prototype.test_members = function() } }; -//@} IdlInterface.prototype.test_object = function(desc) -//@{ { var obj, exception = null; try @@ -2593,9 +2506,7 @@ IdlInterface.prototype.test_object = function(desc) } }; -//@} IdlInterface.prototype.test_primary_interface_of = function(desc, obj, exception, expected_typeof) -//@{ { // Only the object itself, not its members, are tested here, so if the // interface is untested, there is nothing to do. @@ -2657,9 +2568,7 @@ IdlInterface.prototype.test_primary_interface_of = function(desc, obj, exception }.bind(this), "Stringification of " + desc); }; -//@} IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expected_typeof) -//@{ { // TODO: Indexed and named properties, more checks on interface members this.already_tested = true; @@ -2804,9 +2713,7 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect } }; -//@} IdlInterface.prototype.has_stringifier = function() -//@{ { if (this.name === "DOMException") { // toString is inherited from Error, so don't assume we have the @@ -2823,9 +2730,7 @@ IdlInterface.prototype.has_stringifier = function() return false; }; -//@} IdlInterface.prototype.do_interface_attribute_asserts = function(obj, member, a_test) -//@{ { // This function tests WebIDL as of 2015-01-27. // TODO: Consider [Exposed]. @@ -2948,11 +2853,9 @@ IdlInterface.prototype.do_interface_attribute_asserts = function(obj, member, a_ Promise.all(pendingPromises).then(a_test.done.bind(a_test)); } -//@} /// IdlInterfaceMember /// function IdlInterfaceMember(obj) -//@{ { /** * obj is an object produced by the WebIDLParser.js "ifMember" production. @@ -2972,7 +2875,6 @@ function IdlInterfaceMember(obj) this.isUnscopable = this.has_extended_attribute("Unscopable"); } -//@} IdlInterfaceMember.prototype = Object.create(IdlObject.prototype); IdlInterfaceMember.prototype.is_to_json_regular_operation = function() { @@ -2981,7 +2883,6 @@ IdlInterfaceMember.prototype.is_to_json_regular_operation = function() { /// Internal helper functions /// function create_suitable_object(type) -//@{ { /** * type is an object produced by the WebIDLParser.js "type" production. We @@ -3017,12 +2918,10 @@ function create_suitable_object(type) } return null; } -//@} /// IdlEnum /// // Used for IdlArray.prototype.assert_type_is function IdlEnum(obj) -//@{ { /** * obj is an object produced by the WebIDLParser.js "dictionary" @@ -3036,14 +2935,12 @@ function IdlEnum(obj) this.values = obj.values; } -//@} IdlEnum.prototype = Object.create(IdlObject.prototype); /// IdlTypedef /// // Used for IdlArray.prototype.assert_type_is function IdlTypedef(obj) -//@{ { /** * obj is an object produced by the WebIDLParser.js "typedef" @@ -3057,13 +2954,11 @@ function IdlTypedef(obj) this.idlType = obj.idlType; } -//@} IdlTypedef.prototype = Object.create(IdlObject.prototype); /// IdlNamespace /// function IdlNamespace(obj) -//@{ { this.name = obj.name; this.extAttrs = obj.extAttrs; @@ -3074,12 +2969,10 @@ function IdlNamespace(obj) /** An array of IdlInterfaceMembers. */ this.members = obj.members.map(m => new IdlInterfaceMember(m)); } -//@} IdlNamespace.prototype = Object.create(IdlObject.prototype); IdlNamespace.prototype.do_member_operation_asserts = function (memberHolderObject, member, a_test) -//@{ { var desc = Object.getOwnPropertyDescriptor(memberHolderObject, member.name); @@ -3108,10 +3001,8 @@ IdlNamespace.prototype.do_member_operation_asserts = function (memberHolderObjec "operation has wrong .length"); a_test.done(); } -//@} IdlNamespace.prototype.test_member_operation = function(member) -//@{ { if (!shouldRunSubTest(this.name)) { return; @@ -3136,10 +3027,8 @@ IdlNamespace.prototype.test_member_operation = function(member) this.do_member_operation_asserts(self[this.name], member, a_test); }.bind(this)); }; -//@} IdlNamespace.prototype.test_member_attribute = function (member) -//@{ { if (!shouldRunSubTest(this.name)) { return; @@ -3160,10 +3049,8 @@ IdlNamespace.prototype.test_member_attribute = function (member) a_test.done(); }.bind(this)); }; -//@} IdlNamespace.prototype.test = function () -//@{ { /** * TODO(lukebjerring): Assert: @@ -3189,7 +3076,6 @@ IdlNamespace.prototype.test = function () } }; }; -//@} }()); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html index c2c254ca65c..4b49a8152a4 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html @@ -15,20 +15,22 @@ promise_test(function(t) { return runTest(t, 'resources/claim-nested-worker-fetch-iframe.html'); }, 'fetch() in nested Worker should be intercepted after the client is claimed.'); -var frame; -var registration; - function runTest(t, iframe_url) { var resource = 'simple.txt'; + var frame; + var registration; var worker; var scope = 'resources/'; var script = 'resources/claim-worker.js'; - const test_result = Promise.resolve() + return Promise.resolve() // Create the test iframe with a dedicated worker. .then(() => with_iframe(iframe_url)) - .then(f => frame = f) + .then(f => { + t.add_cleanup(() => f.remove()); + frame = f; + }) // Check the controller and test with fetch in the worker. .then(() => assert_equals(frame.contentWindow.navigator.controller, @@ -40,7 +42,10 @@ function runTest(t, iframe_url) { 'fetch() should not be intercepted.')) // Register a service worker. .then(() => service_worker_unregister_and_register(t, script, scope)) - .then(r => worker = r.installing) + .then(r => { + t.add_cleanup(() => r.unregister()); + worker = r.installing; + }) .then(() => wait_for_state(t, worker, 'activated')) // Let the service worker claim the iframe and the worker. @@ -69,18 +74,6 @@ function runTest(t, iframe_url) { assert_equals(response_text, 'Intercepted!', 'fetch() in the worker should be intercepted.')); - - // Cleanup this testcase. - return Promise.resolve() - .then(cleanup, cleanup) - .then(() => { return test_result; }); -} - -const cleanup = async () => { - if (registration) - await registration.unregister(); - if (frame) - frame.remove(); } </script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html new file mode 100644 index 00000000000..e82911a1bd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/import-module-scripts.https.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Tests for module import: ServiceWorker</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<script src="/workers/modules/resources/import-test-cases.js"></script> +<body> +<script> +function import_test(testCase) { + promise_test(async t => { + const msgPromise = new Promise(resolve => { + navigator.serviceWorker.onmessage = resolve; + }); + await service_worker_unregister(t, testCase.scriptURL); + const registration = await navigator.serviceWorker.register( + testCase.scriptURL, + { scope: testCase.scriptURL, type: 'module' }); + registration.installing.postMessage( + 'Send message for tests from main script.'); + const msgEvent = await msgPromise; + assert_array_equals(msgEvent.data, testCase.expectation); + }, testCase.description); +} + +testCases.forEach(import_test); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/shadow-dom/slots-outside-shadow-dom.html b/tests/wpt/web-platform-tests/shadow-dom/slots-outside-shadow-dom.html new file mode 100644 index 00000000000..a6fa2b27f76 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/slots-outside-shadow-dom.html @@ -0,0 +1,16 @@ +<!doctype html> +<meta charset=utf-8> +<title></title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<div id="host1"><slot>foo</slot></div> +<script> + +test(() => { + var host1 = document.getElementById("host1"); + var sr = host1.attachShadow({mode: "open"}); + sr.innerHTML = "<slot></slot>"; + assert_array_equals(sr.firstChild.assignedNodes({ flatten: true }), [host1.firstChild]); +}, "Light DOM slot element should be in flattened assignedNodes"); + +</script> diff --git a/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html b/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html index 9a90f086ac4..2fd394150e9 100644 --- a/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html +++ b/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisUtterance-basics.https.html @@ -31,6 +31,17 @@ test(function() { }, 'new SpeechSynthesisUtterance("hello") text and defaults'); test(function() { + const utt = new SpeechSynthesisUtterance(null); + assert_equals(utt.text, 'null'); +}, 'new SpeechSynthesisUtterance(null)'); + +test(function() { + const utt = new SpeechSynthesisUtterance(undefined); + // See https://github.com/w3c/speech-api/pull/48. + assert_equals(utt.text, ''); +}, 'new SpeechSynthesisUtterance(undefined)'); + +test(function() { const utt = new SpeechSynthesisUtterance(); utt.text = 'word'; assert_equals(utt.text, 'word'); diff --git a/tests/wpt/web-platform-tests/tools/ci/ci_lint.sh b/tests/wpt/web-platform-tests/tools/ci/ci_lint.sh index 46b317e1a19..aae38e5c769 100755 --- a/tests/wpt/web-platform-tests/tools/ci/ci_lint.sh +++ b/tests/wpt/web-platform-tests/tools/ci/ci_lint.sh @@ -6,4 +6,4 @@ cd $WPT_ROOT mkdir -p ~/meta ./wpt manifest -p ~/meta/MANIFEST.json -./wpt lint +./wpt lint --all diff --git a/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh b/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh index c32c9438703..3147164ac88 100755 --- a/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh +++ b/tests/wpt/web-platform-tests/tools/ci/ci_wptrunner_infrastructure.sh @@ -18,14 +18,14 @@ test_infrastructure() { } main() { - PRODUCTS=( "firefox" "chrome" "chrome_webdriver" ) + PRODUCTS=( "firefox" "chrome" ) for PRODUCT in "${PRODUCTS[@]}"; do if [ "$PRODUCT" != "firefox" ]; then # Firefox is expected to work using pref settings for DNS # Don't adjust the hostnames in that case to ensure this keeps working hosts_fixup fi - if [[ "$PRODUCT" == "chrome"* ]]; then + if [[ "$PRODUCT" == "chrome" ]]; then install_chrome unstable test_infrastructure "--binary=$(which google-chrome-unstable)" else diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py index 052ec66a091..3b3074a9856 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/browser.py +++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py @@ -499,13 +499,6 @@ class ChromeAndroid(Browser): def version(self, binary): return None -class ChromeWebDriver(Chrome): - """Chrome-specific interface for chrome without using selenium. - - Includes webdriver installation. - """ - product = "chrome_webdriver" - class Opera(Browser): """Opera-specific interface. diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py index d08b0f93807..d9a44fd3711 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/run.py +++ b/tests/wpt/web-platform-tests/tools/wpt/run.py @@ -292,11 +292,6 @@ class ChromeAndroid(BrowserSetup): raise WptrunError("Unable to locate or install chromedriver binary") -class ChromeWebDriver(Chrome): - name = "chrome_webdriver" - browser_cls = browser.ChromeWebDriver - - class Opera(BrowserSetup): name = "opera" browser_cls = browser.Opera @@ -435,7 +430,6 @@ product_setup = { "firefox": Firefox, "chrome": Chrome, "chrome_android": ChromeAndroid, - "chrome_webdriver": ChromeWebDriver, "edge": Edge, "edge_webdriver": EdgeWebDriver, "ie": InternetExplorer, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py index 08949f79483..9fbbec4d585 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/__init__.py @@ -24,7 +24,6 @@ module global scope. product_list = ["chrome", "chrome_android", - "chrome_webdriver", "edge", "edge_webdriver", "fennec", diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py index d41df8dec0e..d7c21cddfd6 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py @@ -1,16 +1,16 @@ from .base import Browser, ExecutorBrowser, require_arg from ..webdriver_server import ChromeDriverServer from ..executors import executor_kwargs as base_executor_kwargs -from ..executors.executorselenium import (SeleniumTestharnessExecutor, # noqa: F401 - SeleniumRefTestExecutor) # noqa: F401 +from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401 + WebDriverRefTestExecutor) # noqa: F401 from ..executors.executorchrome import ChromeDriverWdspecExecutor # noqa: F401 __wptrunner__ = {"product": "chrome", "check_args": "check_args", "browser": "ChromeBrowser", - "executor": {"testharness": "SeleniumTestharnessExecutor", - "reftest": "SeleniumRefTestExecutor", + "executor": {"testharness": "WebDriverTestharnessExecutor", + "reftest": "WebDriverRefTestExecutor", "wdspec": "ChromeDriverWdspecExecutor"}, "browser_kwargs": "browser_kwargs", "executor_kwargs": "executor_kwargs", @@ -30,34 +30,43 @@ def browser_kwargs(test_type, run_info_data, config, **kwargs): def executor_kwargs(test_type, server_config, cache_manager, run_info_data, **kwargs): - from selenium.webdriver import DesiredCapabilities - executor_kwargs = base_executor_kwargs(test_type, server_config, cache_manager, run_info_data, **kwargs) executor_kwargs["close_after_done"] = True - capabilities = dict(DesiredCapabilities.CHROME.items()) - capabilities.setdefault("goog:chromeOptions", {})["prefs"] = { - "profile": { - "default_content_setting_values": { - "popups": 1 - } + + capabilities = { + "browserName": "chrome", + "platform": "ANY", + "version": "", + "goog:chromeOptions": { + "prefs": { + "profile": { + "default_content_setting_values": { + "popups": 1 + } + } + }, + "w3c": True } } + for (kwarg, capability) in [("binary", "binary"), ("binary_args", "args")]: if kwargs[kwarg] is not None: capabilities["goog:chromeOptions"][capability] = kwargs[kwarg] + if kwargs["headless"]: if "args" not in capabilities["goog:chromeOptions"]: capabilities["goog:chromeOptions"]["args"] = [] if "--headless" not in capabilities["goog:chromeOptions"]["args"]: capabilities["goog:chromeOptions"]["args"].append("--headless") + if test_type == "testharness": capabilities["goog:chromeOptions"]["useAutomationExtension"] = False capabilities["goog:chromeOptions"]["excludeSwitches"] = ["enable-automation"] - if test_type == "wdspec": - capabilities["goog:chromeOptions"]["w3c"] = True + executor_kwargs["capabilities"] = capabilities + return executor_kwargs diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_webdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_webdriver.py deleted file mode 100644 index 2ee8ec41ed6..00000000000 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_webdriver.py +++ /dev/null @@ -1,56 +0,0 @@ -from .base import inherit -from . import chrome - -from ..executors import executor_kwargs as base_executor_kwargs -from ..executors.executorwebdriver import (WebDriverTestharnessExecutor, # noqa: F401 - WebDriverRefTestExecutor) # noqa: F401 - - -inherit(chrome, globals(), "chrome_webdriver") - -# __wptrunner__ magically appears from inherit, F821 is undefined name -__wptrunner__["executor_kwargs"] = "executor_kwargs" # noqa: F821 -__wptrunner__["executor"]["testharness"] = "WebDriverTestharnessExecutor" # noqa: F821 -__wptrunner__["executor"]["reftest"] = "WebDriverRefTestExecutor" # noqa: F821 - - -def executor_kwargs(test_type, server_config, cache_manager, run_info_data, - **kwargs): - executor_kwargs = base_executor_kwargs(test_type, server_config, - cache_manager, run_info_data, - **kwargs) - executor_kwargs["close_after_done"] = True - - capabilities = { - "browserName": "chrome", - "platform": "ANY", - "version": "", - "goog:chromeOptions": { - "prefs": { - "profile": { - "default_content_setting_values": { - "popups": 1 - } - } - }, - "w3c": True - } - } - - for (kwarg, capability) in [("binary", "binary"), ("binary_args", "args")]: - if kwargs[kwarg] is not None: - capabilities["goog:chromeOptions"][capability] = kwargs[kwarg] - - if kwargs["headless"]: - if "args" not in capabilities["goog:chromeOptions"]: - capabilities["goog:chromeOptions"]["args"] = [] - if "--headless" not in capabilities["goog:chromeOptions"]["args"]: - capabilities["goog:chromeOptions"]["args"].append("--headless") - - if test_type == "testharness": - capabilities["goog:chromeOptions"]["useAutomationExtension"] = False - capabilities["goog:chromeOptions"]["excludeSwitches"] = ["enable-automation"] - - executor_kwargs["capabilities"] = capabilities - - return executor_kwargs diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py index 0675461d5d8..0792774d65c 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py @@ -226,8 +226,12 @@ class SeleniumRun(object): flag = self.result_flag.wait(timeout + 2 * extra_timeout) if self.result is None: - assert not flag - self.result = False, ("EXTERNAL-TIMEOUT", None) + if flag: + # flag is True unless we timeout; this *shouldn't* happen, but + # it can if self._run fails to set self.result due to raising + self.result = False, ("INTERNAL-ERROR", "self._run didn't set a result") + else: + self.result = False, ("EXTERNAL-TIMEOUT", None) return self.result @@ -239,7 +243,7 @@ class SeleniumRun(object): except (socket.timeout, exceptions.ErrorInResponseException): self.result = False, ("CRASH", None) except Exception as e: - message = getattr(e, "message", "") + message = str(getattr(e, "message", "")) if message: message += "\n" message += traceback.format_exc(e) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py index 6dde7191ec6..be6ed8d9d07 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py @@ -228,8 +228,12 @@ class WebDriverRun(object): flag = self.result_flag.wait(timeout + 2 * extra_timeout) if self.result is None: - assert not flag - self.result = False, ("EXTERNAL-TIMEOUT", None) + if flag: + # flag is True unless we timeout; this *shouldn't* happen, but + # it can if self._run fails to set self.result due to raising + self.result = False, ("INTERNAL-ERROR", "self._run didn't set a result") + else: + self.result = False, ("EXTERNAL-TIMEOUT", None) return self.result @@ -247,11 +251,11 @@ class WebDriverRun(object): # workaround for https://bugs.chromium.org/p/chromedriver/issues/detail?id=2001 self.result = False, ("EXTERNAL-TIMEOUT", None) else: - message = getattr(e, "message", "") + message = str(getattr(e, "message", "")) if message: message += "\n" message += traceback.format_exc(e) - self.result = False, ("ERROR", message) + self.result = False, ("INTERNAL-ERROR", message) finally: self.result_flag.set() diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py index 353e2ada1eb..931a7822d0b 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py @@ -9,6 +9,8 @@ from multiprocessing import Process, current_process, Queue from mozlog import structuredlog +import wptlogging + # Special value used as a sentinal in various commands Stop = object() @@ -40,12 +42,13 @@ for level_name in structuredlog.log_levels: class TestRunner(object): - def __init__(self, command_queue, result_queue, executor): + def __init__(self, logger, command_queue, result_queue, executor): """Class implementing the main loop for running tests. This class delegates the job of actually running a test to the executor that is passed in. + :param logger: Structured logger :param command_queue: subprocess.Queue used to send commands to the process :param result_queue: subprocess.Queue used to send results to the @@ -57,7 +60,7 @@ class TestRunner(object): self.executor = executor self.name = current_process().name - self.logger = MessageLogger(self.send_message) + self.logger = logger def __enter__(self): return self @@ -117,30 +120,31 @@ class TestRunner(object): def start_runner(runner_command_queue, runner_result_queue, executor_cls, executor_kwargs, executor_browser_cls, executor_browser_kwargs, - stop_flag): + capture_stdio, stop_flag): """Launch a TestRunner in a new process""" - def log(level, msg): - runner_result_queue.put(("log", (level, {"message": msg}))) + + def send_message(command, *args): + runner_result_queue.put((command, args)) def handle_error(e): - log("critical", traceback.format_exc()) + logger.critical(traceback.format_exc()) stop_flag.set() - try: - browser = executor_browser_cls(**executor_browser_kwargs) - executor = executor_cls(browser, **executor_kwargs) - with TestRunner(runner_command_queue, runner_result_queue, executor) as runner: - try: - runner.run() - except KeyboardInterrupt: - stop_flag.set() - except Exception as e: - handle_error(e) - except Exception as e: - handle_error(e) - finally: - runner_command_queue = None - runner_result_queue = None + logger = MessageLogger(send_message) + + with wptlogging.CaptureIO(logger, capture_stdio): + try: + browser = executor_browser_cls(**executor_browser_kwargs) + executor = executor_cls(browser, **executor_kwargs) + with TestRunner(logger, runner_command_queue, runner_result_queue, executor) as runner: + try: + runner.run() + except KeyboardInterrupt: + stop_flag.set() + except Exception as e: + handle_error(e) + except Exception as e: + handle_error(e) manager_count = 0 @@ -255,7 +259,8 @@ RunnerManagerState = _RunnerManagerState() class TestRunnerManager(threading.Thread): def __init__(self, suite_name, test_queue, test_source_cls, browser_cls, browser_kwargs, executor_cls, executor_kwargs, stop_flag, rerun=1, pause_after_test=False, - pause_on_unexpected=False, restart_on_unexpected=True, debug_info=None): + pause_on_unexpected=False, restart_on_unexpected=True, debug_info=None, + capture_stdio=True): """Thread that owns a single TestRunner process and any processes required by the TestRunner (e.g. the Firefox binary). @@ -313,6 +318,8 @@ class TestRunnerManager(threading.Thread): self.browser = None + self.capture_stdio = capture_stdio + def run(self): """Main loop for the TestManager. @@ -479,6 +486,7 @@ class TestRunnerManager(threading.Thread): self.executor_kwargs, executor_browser_cls, executor_browser_kwargs, + self.capture_stdio, self.child_stop_flag) self.test_runner_proc = Process(target=start_runner, args=args, @@ -737,7 +745,8 @@ class ManagerGroup(object): pause_after_test=False, pause_on_unexpected=False, restart_on_unexpected=True, - debug_info=None): + debug_info=None, + capture_stdio=True): """Main thread object that owns all the TestManager threads.""" self.suite_name = suite_name self.size = size @@ -752,6 +761,7 @@ class ManagerGroup(object): self.restart_on_unexpected = restart_on_unexpected self.debug_info = debug_info self.rerun = rerun + self.capture_stdio = capture_stdio self.pool = set() # Event that is polled by threads so that they can gracefully exit in the face @@ -788,7 +798,8 @@ class ManagerGroup(object): self.pause_after_test, self.pause_on_unexpected, self.restart_on_unexpected, - self.debug_info) + self.debug_info, + self.capture_stdio) manager.start() self.pool.add(manager) self.wait() diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py index 84dc4f2e7f8..db518e7b672 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/base.py @@ -17,7 +17,7 @@ if "CURRENT_TOX_ENV" in os.environ: current_tox_env_split = os.environ["CURRENT_TOX_ENV"].split("-") tox_env_extra_browsers = { - "chrome": {"chrome_android", "chrome_webdriver"}, + "chrome": {"chrome_android"}, "edge": {"edge_webdriver"}, "safari": {"safari_webdriver"}, "servo": {"servodriver"}, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py index 6bd1db9927c..92ee9719753 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py @@ -48,6 +48,7 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, **kwargs): run_info = wpttest.get_run_info(kwargs["run_info"], product, browser_version=kwargs.get("browser_version"), browser_channel=kwargs.get("browser_channel"), + verify=kwargs.get("verify"), debug=debug, extras=run_info_extras) @@ -265,7 +266,8 @@ def run_tests(config, test_paths, product, **kwargs): kwargs["pause_after_test"], kwargs["pause_on_unexpected"], kwargs["restart_on_unexpected"], - kwargs["debug_info"]) as manager_group: + kwargs["debug_info"], + not kwargs["no_capture_stdio"]) as manager_group: try: manager_group.run(test_type, run_tests) except KeyboardInterrupt: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py index 4086a89e4cf..8c2934e27eb 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py @@ -70,6 +70,7 @@ class RunInfo(dict): def __init__(self, metadata_root, product, debug, browser_version=None, browser_channel=None, + verify=None, extras=None): import mozinfo self._update_mozinfo(metadata_root) @@ -94,6 +95,10 @@ class RunInfo(dict): self["browser_version"] = browser_version if browser_channel: self["browser_channel"] = browser_channel + + self["verify"] = verify + if "wasm" not in self: + self["wasm"] = False if extras is not None: self.update(extras) diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html index b20fcf2436e..a162d84cd82 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-createXYZTests.tentative.html @@ -7,8 +7,10 @@ //HTML tests function createHTMLTest(policyName, policy, expectedHTML, t) { let p = window.TrustedTypes.createPolicy(policyName, policy); - assert_true(p.createHTML('whatever') instanceof TrustedHTML); - assert_equals(p.createHTML('whatever') + "", expectedHTML); + let html = p.createHTML('whatever'); + assert_true(html instanceof TrustedHTML); + assert_true(TrustedTypes.isHTML(html)); + assert_equals(html + "", expectedHTML); } test(t => { @@ -77,8 +79,10 @@ //Script tests function createScriptTest(policyName, policy, expectedScript, t) { let p = window.TrustedTypes.createPolicy(policyName, policy); - assert_true(p.createScript('whatever') instanceof TrustedScript); - assert_equals(p.createScript('whatever') + "", expectedScript); + let script = p.createScript('whatever'); + assert_true(script instanceof TrustedScript); + assert_true(TrustedTypes.isScript(script)); + assert_equals(script + "", expectedScript); } test(t => { @@ -150,8 +154,10 @@ //ScriptURL tests function createScriptURLTest(policyName, policy, expectedScriptURL, t) { let p = window.TrustedTypes.createPolicy(policyName, policy); - assert_true(p.createScriptURL(INPUTS.SCRIPTURL) instanceof TrustedScriptURL); - assert_equals(p.createScriptURL(INPUTS.SCRIPTURL) + "", expectedScriptURL); + let scriptUrl = p.createScriptURL(INPUTS.SCRIPTURL); + assert_true(scriptUrl instanceof TrustedScriptURL); + assert_true(TrustedTypes.isScriptURL(scriptUrl)); + assert_equals(scriptUrl + "", expectedScriptURL); } test(t => { @@ -223,8 +229,10 @@ //URL tests function createURLTest(policyName, policy, expectedURL, t) { let p = window.TrustedTypes.createPolicy(policyName, policy); - assert_true(p.createURL(INPUTS.URL) instanceof TrustedURL); - assert_equals(p.createURL(INPUTS.URL) + "", expectedURL); + let url = p.createURL(INPUTS.URL); + assert_true(url instanceof TrustedURL); + assert_true(TrustedTypes.isURL(url)); + assert_equals(url + "", expectedURL); } test(t => { diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html new file mode 100644 index 00000000000..9b48fa7fede --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.html @@ -0,0 +1,118 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/helper.sub.js"></script> + +<meta http-equiv="Content-Security-Policy" content="trusted-types"> +<body> +<script> + // Policy settings for all tests + const noopPolicy = { + 'createHTML': (s) => s, + 'createScriptURL': (s) => s, + 'createURL': (s) => s, + 'createScript': (s) => s, + }; + + // isHTML tests + test(t => { + const p = TrustedTypes.createPolicy('html', noopPolicy); + let html = p.createHTML(INPUTS.HTML); + + assert_true(TrustedTypes.isHTML(html)); + let html2 = Object.create(html); + + // instanceof can pass, but we rely on isHTML + assert_true(html2 instanceof TrustedHTML); + assert_false(TrustedTypes.isHTML(html2)); + + let html3 = Object.assign({}, html, {toString: () => 'fake'}); + + assert_false(TrustedTypes.isHTML(html3)); + }, 'TrustedTypePolicyFactory.isHTML requires the object to be created via policy.'); + + // isScript tests + test(t => { + const p = TrustedTypes.createPolicy('script', noopPolicy); + let script = p.createScript(INPUTS.SCRIPT); + + assert_true(TrustedTypes.isScript(script)); + let script2 = Object.create(script); + + // instanceof can pass, but we rely on isScript + assert_true(script2 instanceof TrustedScript); + assert_false(TrustedTypes.isScript(script2)); + + let script3 = Object.assign({}, script, {toString: () => 'fake'}); + + assert_false(TrustedTypes.isScript(script3)); + }, 'TrustedTypePolicyFactory.isScript requires the object to be created via policy.'); + + // isScriptURL tests + test(t => { + const p = TrustedTypes.createPolicy('script_url', noopPolicy); + let script = p.createScriptURL(INPUTS.SCRIPTURL); + + assert_true(TrustedTypes.isScriptURL(script)); + let script2 = Object.create(script); + + // instanceof can pass, but we rely on isScript + assert_true(script2 instanceof TrustedScriptURL); + assert_false(TrustedTypes.isScriptURL(script2)); + + let script3 = Object.assign({}, script, {toString: () => 'fake'}); + + assert_false(TrustedTypes.isScriptURL(script3)); + }, 'TrustedTypePolicyFactory.isScriptURL requires the object to be created via policy.'); + + // isURL tests + test(t => { + const p = TrustedTypes.createPolicy('url', noopPolicy); + let url = p.createURL(INPUTS.URL); + + assert_true(TrustedTypes.isURL(url)); + let url2 = Object.create(url); + + // instanceof can pass, but we rely on isScript + assert_true(url2 instanceof TrustedURL); + assert_false(TrustedTypes.isURL(url2)); + + let url3 = Object.assign({}, url, {toString: () => 'fake'}); + + assert_false(TrustedTypes.isURL(url3)); + }, 'TrustedTypePolicyFactory.isURL requires the object to be created via policy.'); + + // Redefinition tests + // TODO(vogelheim): Implement TrustedTypes (& policy objects) as 'frozen'. +/* test(t => { + assert_throws(new TypeError(), _ => { + TrustedTypes.isHTML = () => true; + }); + + assert_false(TrustedTypes.isHTML({})); + }, 'TrustedTypePolicyFactory.IsHTML cannot be redefined.'); + + test(t => { + assert_throws(new TypeError(), _ => { + TrustedTypes.isScript = () => true; + }); + + assert_false(TrustedTypes.isScript({})); + }, 'TrustedTypePolicyFactory.isScript cannot be redefined.'); + + test(t => { + assert_throws(new TypeError(), _ => { + TrustedTypes.isScriptURL = () => true; + }); + + assert_false(TrustedTypes.isScriptURL({})); + }, 'TrustedTypePolicyFactory.isScriptURL cannot be redefined.'); + + test(t => { + assert_throws(new TypeError(), _ => { + TrustedTypes.isURL = () => true; + }); + + assert_false(TrustedTypes.isURL({})); + }, 'TrustedTypePolicyFactory.isURL cannot be redefined.');*/ +</script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html index 52e31708331..3553f2b0768 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html @@ -73,4 +73,14 @@ test(t => { assert_element_accepts_non_trusted_type_explicit_set('a', 'rel', null, 'null'); }, "a.rel accepts null"); + + test(t => { + let el = document.createElement('iframe'); + + assert_throws(new TypeError(), _ => { + el.setAttribute('SrC', INPUTS.URL); + }); + + assert_equals(el.src, ''); + }, "`Element.prototype.setAttribute.SrC = string` throws."); </script> diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html index c8dbeb941bc..ce2d5fcfe94 100644 --- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html +++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/convolver-setBuffer-already-has-value.html @@ -27,7 +27,7 @@ should(() => { convolver.buffer = audioBuffer; - }, 'Set buffer a second time').throw(DOMException, 'InvalidStateError'); + }, 'Set buffer a second time').notThrow(); should(() => { convolver.buffer = null; @@ -39,8 +39,8 @@ should(() => { convolver.buffer = audioBuffer; - }, 'Set buffer to non-null to verify to throw an error') - .throw(DOMException, 'InvalidStateError'); + }, 'Set buffer to non-null to verify it is set') + .notThrow(); task.done(); }); diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center-ref.html index fab75c8e0a5..3663d925d95 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle-ref.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center-ref.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<title>Reference for WebVTT rendering, align:middle</title> +<title>Reference for WebVTT rendering, align:center</title> <style> html { overflow:hidden } body { margin:0 } diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center.html index 43732a549b8..9a339a64bad 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class="reftest-wait"> -<title>WebVTT rendering, align:middle</title> -<link rel="match" href="align_middle-ref.html"> +<title>WebVTT rendering, align:center</title> +<link rel="match" href="align_center-ref.html"> <style> html { overflow:hidden } body { margin:0 } @@ -14,7 +14,7 @@ body { margin:0 } <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> <source src="/media/white.webm" type="video/webm"> <source src="/media/white.mp4" type="video/mp4"> - <track src="support/align_middle.vtt"> + <track src="support/align_center.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; </script> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html index 88718e5ba55..65c7dee75aa 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50-ref.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50-ref.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<title>Reference for WebVTT rendering, align:middle, position:50%</title> +<title>Reference for WebVTT rendering, align:center, position:50%</title> <style> html { overflow:hidden } body { margin:0 } diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html index 6be073fff84..40cc8c4bbe1 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_50.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_50.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class="reftest-wait"> -<title>WebVTT rendering, align:middle, position:50%</title> -<link rel="match" href="align_middle_position_50-ref.html"> +<title>WebVTT rendering, align:center, position:50%</title> +<link rel="match" href="align_center_position_50-ref.html"> <style> html { overflow:hidden } body { margin:0 } @@ -14,7 +14,7 @@ body { margin:0 } <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> <source src="/media/white.webm" type="video/webm"> <source src="/media/white.mp4" type="video/mp4"> - <track src="support/align_middle_position_50.vtt"> + <track src="support/align_center_position_50.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; </script> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html index b9b6d2936da..b8d30a73801 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50-ref.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50-ref.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<title>Reference for WebVTT rendering, align:middle, position greater than 50%</title> +<title>Reference for WebVTT rendering, align:center, position greater than 50%</title> <style> html { overflow:hidden } body { margin:0 } diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html index 4f725f55572..05167743c0f 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_gt_50.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_gt_50.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class="reftest-wait"> -<title>WebVTT rendering, align:middle, position greater than 50%</title> -<link rel="match" href="align_middle_position_gt_50-ref.html"> +<title>WebVTT rendering, align:center, position greater than 50%</title> +<link rel="match" href="align_center_position_gt_50-ref.html"> <style> html { overflow:hidden } body { margin:0 } @@ -14,7 +14,7 @@ body { margin:0 } <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> <source src="/media/white.webm" type="video/webm"> <source src="/media/white.mp4" type="video/mp4"> - <track src="support/align_middle_position_gt_50.vtt"> + <track src="support/align_center_position_gt_50.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; </script> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html index 9fa1f28ea89..37217da4972 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50-ref.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50-ref.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<title>Reference for WebVTT rendering, align:middle, position less than 50%</title> +<title>Reference for WebVTT rendering, align:center, position less than 50%</title> <style> html { overflow:hidden } body { margin:0 } diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html index 7d09fd98896..32b3e3a6c4d 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class="reftest-wait"> -<title>WebVTT rendering, align:middle, position less than 50%</title> -<link rel="match" href="align_middle_position_lt_50-ref.html"> +<title>WebVTT rendering, align:center, position less than 50%</title> +<link rel="match" href="align_center_position_lt_50-ref.html"> <style> html { overflow:hidden } body { margin:0 } @@ -14,7 +14,7 @@ body { margin:0 } <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> <source src="/media/white.webm" type="video/webm"> <source src="/media/white.mp4" type="video/mp4"> - <track src="support/align_middle_position_lt_50.vtt"> + <track src="support/align_center_position_lt_50.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; </script> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html index ddbdf1604de..7241376f825 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size-ref.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size-ref.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<title>Reference for WebVTT rendering, align:middle, position less than 50%, size greater than maximum size</title> +<title>Reference for WebVTT rendering, align:center, position less than 50%, size greater than maximum size</title> <style> html { overflow:hidden } body { margin:0 } diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html index 590db24c5fe..2f62c4500ed 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50_size_gt_maximum_size.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_position_lt_50_size_gt_maximum_size.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class="reftest-wait"> -<title>WebVTT rendering, align:middle, position less than 50%, size greater than maximum size</title> -<link rel="match" href="align_middle_position_lt_50_size_gt_maximum_size-ref.html"> +<title>WebVTT rendering, align:center, position less than 50%, size greater than maximum size</title> +<link rel="match" href="align_center_position_lt_50_size_gt_maximum_size-ref.html"> <style> html { overflow:hidden } body { margin:0 } @@ -14,7 +14,7 @@ body { margin:0 } <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> <source src="/media/white.webm" type="video/webm"> <source src="/media/white.mp4" type="video/mp4"> - <track src="support/align_middle_position_lt_50_size_gt_maximum_size.vtt"> + <track src="support/align_center_position_lt_50_size_gt_maximum_size.vtt"> </video> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html index d9852d86004..a9e583d66f0 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped-ref.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped-ref.html @@ -1,5 +1,5 @@ <!DOCTYPE html> -<title>Reference for WebVTT rendering, align:middle with long cues</title> +<title>Reference for WebVTT rendering, align:center with long cues</title> <style> html { overflow:hidden } body { margin:0 } diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html index 2ef93c4b01a..9292a8cc301 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_middle_wrapped.html +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/align_center_wrapped.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html class="reftest-wait"> -<title>WebVTT rendering, align:middle with long cues</title> -<link rel="match" href="align_middle_wrapped-ref.html"> +<title>WebVTT rendering, align:center with long cues</title> +<link rel="match" href="align_center_wrapped-ref.html"> <style> html { overflow:hidden } body { margin:0 } @@ -14,7 +14,7 @@ body { margin:0 } <video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> <source src="/media/white.webm" type="video/webm"> <source src="/media/white.mp4" type="video/mp4"> - <track src="support/align_middle_long.vtt"> + <track src="support/align_center_long.vtt"> <script> document.getElementsByTagName('track')[0].track.mode = 'showing'; </script> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html new file mode 100644 index 00000000000..ff90d4829c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic-ref.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<title>Reference for WebVTT rendering regions, default</title> +<style> +html { overflow:hidden } +body { margin:0 } +.video { + display: inline-block; + width: 320px; + height: 180px; + position: relative; + font-size: 9px; +} +.cue { + position: absolute; + bottom: 0; + left: 0; + right: 0; + text-align: center +} +.cue > span { + font-family: Ahem, sans-serif; + background: rgba(0,0,0,0.8); + color: green; +} +</style> +<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html new file mode 100644 index 00000000000..4ffed9193b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/basic.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>WebVTT rendering regions, default</title> +<link rel="match" href="basic-ref.html"> +<style> +html { overflow:hidden } +body { margin:0 } +::cue { + font-family: Ahem, sans-serif; + color: green +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="../media/white.webm" type="video/webm"> + <source src="../media/white.mp4" type="video/mp4"> + <track src="support/basic.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html new file mode 100644 index 00000000000..251a04687f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent-ref.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<title>Reference for WebVTT rendering regions, regionanchor x 50%</title> +<style> +html { overflow:hidden } +body { margin:0 } +.video { + display: inline-block; + width: 320px; + height: 180px; + position: relative; + font-size: 9px; +} +.cue { + position: absolute; + bottom: 0; + left: -50%; + right: 50%; + text-align: center +} +.cue > span { + font-family: Ahem, sans-serif; + background: rgba(0,0,0,0.8); + color: green; +} +</style> +<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html new file mode 100644 index 00000000000..b9ef28212a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_x_50_percent.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>WebVTT rendering regions, regionanchor x 50%</title> +<link rel="match" href="regionanchor_x_50_percent-ref.html"> +<style> +html { overflow:hidden } +body { margin:0 } +::cue { + font-family: Ahem, sans-serif; + color: green +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="../media/white.webm" type="video/webm"> + <source src="../media/white.mp4" type="video/mp4"> + <track src="support/regionanchor_x_50_percent.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html new file mode 100644 index 00000000000..db1031093c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent-ref.html @@ -0,0 +1,6 @@ +<!DOCTYPE html> +<title>Reference for WebVTT rendering regions, regionanchor y 50%</title> +<style> +html { overflow:hidden } +body { margin:0 } +</style>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html new file mode 100644 index 00000000000..5067d12e6f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/regionanchor_y_50_percent.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>WebVTT rendering regions, regionanchor y 50%</title> +<link rel="match" href="regionanchor_y_50_percent-ref.html"> +<style> +html { overflow:hidden } +body { margin:0 } +::cue { + font-family: Ahem, sans-serif; + color: green +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="../media/white.webm" type="video/webm"> + <source src="../media/white.mp4" type="video/mp4"> + <track src="support/regionanchor_y_50_percent.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html new file mode 100644 index 00000000000..6a68c722e4d --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up-ref.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<title>Reference for WebVTT rendering regions, scroll up</title> +<style> +html { overflow:hidden } +body { margin:0 } +.video { + display: inline-block; + width: 320px; + height: 180px; + position: relative; + font-size: 9px; +} +.cue { + position: absolute; + top: 0; + left: 0; + right: 0; + text-align: center +} +.cue > span { + font-family: Ahem, sans-serif; + background: rgba(0,0,0,0.8); + color: green; +} +</style> +<div class="video"><span class="cue"><span>This is a second test subtitle<br/>This is a third test subtitle</span></span></div> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html new file mode 100644 index 00000000000..e1619af932a --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/scroll_up.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>WebVTT rendering regions, scroll up</title> +<link rel="match" href="scroll_up-ref.html"> +<style> +html { overflow:hidden } +body { margin:0 } +::cue { + font-family: Ahem, sans-serif; + color: green +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshotDelayed(3000);"> + <source src="../media/white.webm" type="video/webm"> + <source src="../media/white.mp4" type="video/mp4"> + <track src="support/scroll_up.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html new file mode 100644 index 00000000000..a183448cb1b --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left-ref.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<title>Reference for WebVTT rendering regions, single line top left</title> +<style> +html { overflow:hidden } +body { margin:0 } +.video { + display: inline-block; + width: 320px; + height: 180px; + position: relative; + font-size: 9px; +} +.cue { + position: absolute; + top: 0; + left: 0; + right: 0; + text-align: left +} +.cue > span { + font-family: Ahem, sans-serif; + background: rgba(0,0,0,0.8); + color: green; +} +</style> +<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html new file mode 100644 index 00000000000..c2edcb9f626 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/single_line_top_left.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>WebVTT rendering regions, single line top left</title> +<link rel="match" href="single_line_top_left-ref.html"> +<style> +html { overflow:hidden } +body { margin:0 } +::cue { + font-family: Ahem, sans-serif; + color: green +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="../media/white.webm" type="video/webm"> + <source src="../media/white.mp4" type="video/mp4"> + <track src="support/single_line_top_left.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt new file mode 100644 index 00000000000..ed978274793 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/basic.vtt @@ -0,0 +1,7 @@ +WEBVTT + +REGION +id:1 + +00:00:00.000 --> 00:00:05.000 region:1 +This is a test subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt new file mode 100644 index 00000000000..eafea7fff94 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_x_50_percent.vtt @@ -0,0 +1,8 @@ +WEBVTT + +REGION +id:1 +regionanchor:50%,100% + +00:00:00.000 --> 00:00:05.000 region:1 +This is a test subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt new file mode 100644 index 00000000000..d51ad26769b --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/regionanchor_y_50_percent.vtt @@ -0,0 +1,8 @@ +WEBVTT + +REGION +id:1 +regionanchor:0%,50% + +00:00:00.000 --> 00:00:05.000 region:1 +This is a test subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt new file mode 100644 index 00000000000..0b88020d29f --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/scroll_up.vtt @@ -0,0 +1,16 @@ +WEVTT + +REGION +id:1 +lines:2 +regionanchor:0%,0% +scroll:up + +00:00:00.000 --> 00:00:05.000 region:1 +This is a first test subtitle + +00:00:01.000 --> 00:00:05.000 region:1 +This is a second test subtitle + +00:00:01.000 --> 00:00:05.000 region:1 +This is a third test subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt new file mode 100644 index 00000000000..efe9d8793ed --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/single_line_top_left.vtt @@ -0,0 +1,10 @@ +WEBVTT + +REGION +id:1 +viewportanchor:0%,0% +regionanchor:0%,0% +lines:1 + +00:00:00.000 --> 00:00:05.000 region:1 align:left +This is a test subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt new file mode 100644 index 00000000000..afd9876c06d --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_x_50_percent.vtt @@ -0,0 +1,8 @@ +WEBVTT + +REGION +id:1 +viewportanchor:50%,100% + +00:00:00.000 --> 00:00:05.000 region:1 +This is a test subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt new file mode 100644 index 00000000000..62e8a796877 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/viewportanchor_y_50_percent.vtt @@ -0,0 +1,8 @@ +WEBVTT + +REGION +id:1 +viewportanchor:0%,50% + +00:00:00.000 --> 00:00:05.000 region:1 +This is a test subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt new file mode 100644 index 00000000000..9fce99b03b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/support/width_50_percent.vtt @@ -0,0 +1,8 @@ +WEBVTT + +REGION +id:1 +width:50% + +00:00:00.000 --> 00:00:05.000 region:1 +This is a test subtitle diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html new file mode 100644 index 00000000000..c216838a694 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent-ref.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<title>Reference for WebVTT rendering regions, viewportanchor x 50%</title> +<style> +html { overflow:hidden } +body { margin:0 } +.video { + display: inline-block; + width: 320px; + height: 180px; + position: relative; + font-size: 9px; + overflow: hidden; +} +.cue { + position: absolute; + bottom: 0; + left: 50%; + right: -50%; + text-align: center +} +.cue > span { + font-family: Ahem, sans-serif; + background: rgba(0,0,0,0.8); + color: green; +} +</style> +<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html new file mode 100644 index 00000000000..85e699a262b --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_x_50_percent.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>WebVTT rendering regions, viewportanchor x 50%</title> +<link rel="match" href="viewportanchor_x_50_percent-ref.html"> +<style> +html { overflow:hidden } +body { margin:0 } +::cue { + font-family: Ahem, sans-serif; + color: green +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="../media/white.webm" type="video/webm"> + <source src="../media/white.mp4" type="video/mp4"> + <track src="support/viewportanchor_x_50_percent.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html new file mode 100644 index 00000000000..f432047c5a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent-ref.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<title>Reference for WebVTT rendering regions, viewportanchor y 50%</title> +<style> +html { overflow:hidden } +body { margin:0 } +.video { + display: inline-block; + width: 320px; + height: 180px; + position: relative; + font-size: 9px; +} +.cue { + position: absolute; + bottom: 50%; + left: 0; + right: 0; + text-align: center +} +.cue > span { + font-family: Ahem, sans-serif; + background: rgba(0,0,0,0.8); + color: green; +} +</style> +<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html new file mode 100644 index 00000000000..0641b176e6f --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/viewportanchor_y_50_percent.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>WebVTT rendering regions, viewportanchor y 50%</title> +<link rel="match" href="viewportanchor_y_50_percent-ref.html"> +<style> +html { overflow:hidden } +body { margin:0 } +::cue { + font-family: Ahem, sans-serif; + color: green +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="../media/white.webm" type="video/webm"> + <source src="../media/white.mp4" type="video/mp4"> + <track src="support/viewportanchor_y_50_percent.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html new file mode 100644 index 00000000000..fd69b643f56 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent-ref.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<title>Reference for WebVTT rendering regions, width 50%</title> +<style> +html { overflow:hidden } +body { margin:0 } +.video { + display: inline-block; + width: 320px; + height: 180px; + position: relative; + font-size: 9px; +} +.cue { + position: absolute; + bottom: 0; + left: 0; + right: 50%; + text-align: center +} +.cue > span { + font-family: Ahem, sans-serif; + background: rgba(0,0,0,0.8); + color: green; +} +</style> +<div class="video"><span class="cue"><span>This is a test subtitle</span></span></div> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html new file mode 100644 index 00000000000..4377e9b4c03 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/regions/width_50_percent.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>WebVTT rendering regions, width 50%</title> +<link rel="match" href="width_50_percent-ref.html"> +<style> +html { overflow:hidden } +body { margin:0 } +::cue { + font-family: Ahem, sans-serif; + color: green +} +</style> +<script src="/common/reftest-wait.js"></script> +<video width="320" height="180" autoplay onplaying="this.onplaying = null; this.pause(); takeScreenshot();"> + <source src="../media/white.webm" type="video/webm"> + <source src="../media/white.mp4" type="video/mp4"> + <track src="support/width_50_percent.vtt"> + <script> + document.getElementsByTagName('track')[0].track.mode = 'showing'; + </script> +</video> +</html> diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt new file mode 100644 index 00000000000..4b8e14b28b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center.vtt @@ -0,0 +1,4 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.000 align:center +This is a test diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt index 8c89441a974..57c896d04b7 100644 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_long.vtt +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_long.vtt @@ -1,4 +1,4 @@ WEBVTT -00:00:00.000 --> 00:00:05.000 align:middle +00:00:00.000 --> 00:00:05.000 align:center This is a test subtitle that most likely will span over several rows since it is a pretty long cue with a lot of text. diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt new file mode 100644 index 00000000000..21ab82bb084 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_50.vtt @@ -0,0 +1,4 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.000 align:center position:50% +This is a test diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt new file mode 100644 index 00000000000..4d8538a2be7 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_gt_50.vtt @@ -0,0 +1,4 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.000 align:center position:90% +Awesome!!! diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt new file mode 100644 index 00000000000..4ea1e656077 --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50.vtt @@ -0,0 +1,4 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.000 align:center position:10% +Awesome!!! diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt new file mode 100644 index 00000000000..a2e307c9cba --- /dev/null +++ b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_center_position_lt_50_size_gt_maximum_size.vtt @@ -0,0 +1,4 @@ +WEBVTT + +00:00:00.000 --> 00:00:05.000 align:center position:10% size:75% +Awesome!!! diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt deleted file mode 100644 index cdee051d777..00000000000 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle.vtt +++ /dev/null @@ -1,4 +0,0 @@ -WEBVTT - -00:00:00.000 --> 00:00:05.000 align:middle -This is a test diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt deleted file mode 100644 index c443773984e..00000000000 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_50.vtt +++ /dev/null @@ -1,4 +0,0 @@ -WEBVTT - -00:00:00.000 --> 00:00:05.000 align:middle position:50% -This is a test diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt deleted file mode 100644 index 186ae1ecd23..00000000000 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_gt_50.vtt +++ /dev/null @@ -1,4 +0,0 @@ -WEBVTT - -00:00:00.000 --> 00:00:05.000 align:middle position:90% -Awesome!!! diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt deleted file mode 100644 index 6928c5dc218..00000000000 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50.vtt +++ /dev/null @@ -1,4 +0,0 @@ -WEBVTT - -00:00:00.000 --> 00:00:05.000 align:middle position:10% -Awesome!!! diff --git a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt b/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt deleted file mode 100644 index 32bc4ed3fc8..00000000000 --- a/tests/wpt/web-platform-tests/webvtt/rendering/cues-with-video/processing-model/support/align_middle_position_lt_50_size_gt_maximum_size.vtt +++ /dev/null @@ -1,4 +0,0 @@ -WEBVTT - -00:00:00.000 --> 00:00:05.000 align:middle position:10% size:75% -Awesome!!! diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js index d73cf8d44e9..5437513b304 100644 --- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js +++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js @@ -112,7 +112,6 @@ function forEachWebxrObject(callback) { callback(window.XRCoordinateSystem, 'XRCoordinateSystem'); callback(window.XRFrameOfReference, 'XRFrameOfReference'); callback(window.XRStageBounds, 'XRStageBounds'); - callback(window.XRStageBoundsPoint, 'XRStageBoundsPoint'); callback(window.XRSessionEvent, 'XRSessionEvent'); callback(window.XRCoordinateSystemEvent, 'XRCoordinateSystemEvent'); } diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js index e3f61867c5b..f51a821d181 100644 --- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js +++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any.js @@ -9,8 +9,8 @@ function import_blob_url_test(testCase) { const blob = new Blob([`import "${importURL}";`], { type: 'text/javascript' }); const blobURL = URL.createObjectURL(blob); - const worker = new Worker(blobURL, { type: 'module'}); + worker.postMessage('Send message for tests from main script.'); const msgEvent = await new Promise((resolve, reject) => { worker.onmessage = resolve; worker.onerror = (error) => reject(error && error.message); diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js index 10bac0dfbf7..0d8510da0c2 100644 --- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js +++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import-data-url.any.js @@ -13,6 +13,7 @@ function import_data_url_test(testCase) { const dataURL = `data:text/javascript,import "${importURL}";`; const worker = new Worker(dataURL, { type: 'module'}); + worker.postMessage('Send message for tests from main script.'); const msgEvent = await new Promise(resolve => worker.onmessage = resolve); assert_array_equals(msgEvent.data, testCase.expectation); }, testCase.description); diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js index 805dbf3288c..308c5e74c15 100644 --- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js +++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-import.any.js @@ -6,6 +6,7 @@ function import_test(testCase) { promise_test(async () => { const worker = new Worker(testCase.scriptURL, { type: 'module' }); + worker.postMessage('Send message for tests from main script.'); const msgEvent = await new Promise((resolve, reject) => { worker.onmessage = resolve; worker.onerror = (error) => reject(error && error.message); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js index 39ab5c237e2..9a386e63be5 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js @@ -1,2 +1,20 @@ -import('./export-on-static-import-script.js') - .then(module => postMessage(module.importedModules)); +// This script is meant to be imported by a module worker. It receives a +// message from the worker and responds with the list of imported modules. +const sourcePromise = new Promise(resolve => { + self.onmessage = e => { + // DedicatedWorkerGlobalScope doesn't fill in e.source, + // so use e.target instead. + const source = e.source ? e.source : e.target; + resolve(source); + }; +}); + +const importedModulesPromise = + import('./export-on-static-import-script.js') + .then(module => module.importedModules) + .catch(error => `Failed to do dynamic import: ${error}`); + +Promise.all([sourcePromise, importedModulesPromise]).then(results => { + const [source, importedModules] = results; + source.postMessage(importedModules); +}); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js index cd321fe2460..07f4df9db3e 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js @@ -1,2 +1,20 @@ -import('./export-on-load-script.js') - .then(module => postMessage(module.importedModules)); +// This script is meant to be imported by a module worker. It receives a +// message from the worker and responds with the list of imported modules. +const sourcePromise = new Promise(resolve => { + self.onmessage = e => { + // DedicatedWorkerGlobalScope doesn't fill in e.source, + // so use e.target instead. + const source = e.source ? e.source : e.target; + resolve(source); + }; +}); + +const importedModulesPromise = + import('./export-on-load-script.js') + .then(module => module.importedModules) + .catch(error => `Failed to do dynamic import: ${error}`); + +Promise.all([sourcePromise, importedModulesPromise]).then(results => { + const [source, importedModules] = results; + source.postMessage(importedModules); +}); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js index e92aff21a88..af57b19f98d 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js @@ -1,3 +1,18 @@ -const code = "import('./export-on-load-script.js')" + - " .then(module => postMessage(module.importedModules));" +// This script is meant to be imported by a module worker. It receives a +// message from the worker and responds with the list of imported modules. +const code = + "const sourcePromise = new Promise(resolve => {" + + " self.onmessage = e => {" + + " const source = e.source ? e.source : e.target;" + + " resolve(source);" + + " };" + + "});" + + "const importedModulesPromise =" + + " import('./export-on-load-script.js')" + + " .then(module => module.importedModules)" + + " .catch(error => `Failed to do dynamic import: ${error}`);" + + "Promise.all([sourcePromise, importedModulesPromise]).then(results => {" + + " const [source, importedModules] = results;" + + " source.postMessage(importedModules);" + + "});"; eval(code); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js b/tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js index 8d172c324d3..bab7cb48d24 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/export-on-dynamic-import-script.js @@ -3,5 +3,6 @@ export let importedModules = ['export-on-dynamic-import-script.js']; export let ready = import('./export-on-load-script.js') .then(module => { - Array.prototype.push.apply(importedModules, module.importedModules); + Array.prototype.push.apply(importedModules, module.importedModules); + return importedModules; }); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js b/tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js index 919c20e0d4c..c5830e97eeb 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/import-test-cases.js @@ -1,11 +1,11 @@ const testCases = [ { - scriptURL: 'resources/static-import-worker.js', + scriptURL: '/workers/modules/resources/static-import-worker.js', expectation: ['export-on-load-script.js'], description: 'Static import.' }, { - scriptURL: 'resources/nested-static-import-worker.js', + scriptURL: '/workers/modules/resources/nested-static-import-worker.js', expectation: [ 'export-on-static-import-script.js', 'export-on-load-script.js' @@ -13,7 +13,7 @@ const testCases = [ description: 'Nested static import.' }, { - scriptURL: 'resources/static-import-and-then-dynamic-import-worker.js', + scriptURL: '/workers/modules/resources/static-import-and-then-dynamic-import-worker.js', expectation: [ 'export-on-dynamic-import-script.js', 'export-on-load-script.js' @@ -21,12 +21,12 @@ const testCases = [ description: 'Static import and then dynamic import.' }, { - scriptURL: 'resources/dynamic-import-worker.js', + scriptURL: '/workers/modules/resources/dynamic-import-worker.js', expectation: ['export-on-load-script.js'], description: 'Dynamic import.' }, { - scriptURL: 'resources/nested-dynamic-import-worker.js', + scriptURL: '/workers/modules/resources/nested-dynamic-import-worker.js', expectation: [ 'export-on-dynamic-import-script.js', 'export-on-load-script.js' @@ -34,7 +34,7 @@ const testCases = [ description: 'Nested dynamic import.' }, { - scriptURL: 'resources/dynamic-import-and-then-static-import-worker.js', + scriptURL: '/workers/modules/resources/dynamic-import-and-then-static-import-worker.js', expectation: [ 'export-on-static-import-script.js', 'export-on-load-script.js' @@ -42,7 +42,7 @@ const testCases = [ description: 'Dynamic import and then static import.' }, { - scriptURL: 'resources/eval-dynamic-import-worker.js', + scriptURL: '/workers/modules/resources/eval-dynamic-import-worker.js', expectation: ['export-on-load-script.js'], description: 'eval(import()).' } diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js index 5ae82f8aa05..cb37f6e20f6 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js @@ -1,5 +1,22 @@ -import('./export-on-dynamic-import-script.js') - .then(async module => { - await module.ready; - postMessage(module.importedModules); - }); +// This script is meant to be imported by a module worker. It receives a +// message from the worker and responds with the list of imported modules. + +const sourcePromise = new Promise(resolve => { + self.onmessage = e => { + // DedicatedWorkerGlobalScope doesn't fill in e.source, + // so use e.target instead. + const source = e.source ? e.source : e.target; + resolve(source); + }; +}); + +const importedModulesPromise = + import('./export-on-dynamic-import-script.js') + .then(module => module.ready) + .then(importedModules => importedModules) + .catch(error => `Failed to do dynamic import: ${error}`); + +Promise.all([sourcePromise, importedModulesPromise]).then(results => { + const [source, importedModules] = results; + source.postMessage(importedModules); +}); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js index 72ab31cb1c6..7599faaa099 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js @@ -1,2 +1,9 @@ +// This script is meant to be imported by a module worker. It receives a +// message from the worker and responds with the list of imported modules. import * as module from './export-on-static-import-script.js'; -postMessage(module.importedModules); +self.onmessage = e => { + // DedicatedWorkerGlobalScope doesn't fill in e.source, + // so use e.target instead. + const source = e.source ? e.source : e.target; + source.postMessage(module.importedModules); +}; diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js index 89125e0af7b..cd98d8c17df 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js @@ -1,2 +1,22 @@ +// This script is meant to be imported by a module worker. It receives a +// message from the worker and responds with the list of imported modules. import * as module from './export-on-dynamic-import-script.js'; -module.ready.then(() => postMessage(module.importedModules)); + +const sourcePromise = new Promise(resolve => { + self.onmessage = e => { + // DedicatedWorkerGlobalScope doesn't fill in e.source, + // so use e.target instead. + const source = e.source ? e.source : e.target; + resolve(source); + }; +}); + +export let importedModules = ['export-on-dynamic-import-script.js']; +const importedModulesPromise = module.ready + .then(importedModules => importedModules) + .catch(error => `Failed to do dynamic import: ${error}`); + +Promise.all([sourcePromise, importedModulesPromise]).then(results => { + const [source, importedModules] = results; + source.postMessage(importedModules); +}); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js index f0639153a94..48751dbe03b 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js @@ -1,2 +1,9 @@ +// This script is meant to be imported by a module worker. It receives a +// message from the worker and responds with the list of imported modules. import * as module from './export-on-load-script.js'; -postMessage(module.importedModules); +self.onmessage = e => { + // DedicatedWorkerGlobalScope doesn't fill in e.source, + // so use e.target instead. + const source = e.source ? e.source : e.target; + source.postMessage(module.importedModules); +}; diff --git a/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js b/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js index 192a696759c..3f57e9a48f0 100644 --- a/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js +++ b/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js @@ -2,6 +2,16 @@ const testURL = "resources/status.py?type=" + encodeURIComponent("text/plain;cha async_test(t => { const client = new XMLHttpRequest(); + client.onload = t.step_func_done(() => { + assert_equals(client.responseText, "\uFFFD\uFFFD"); + }); + client.overrideMimeType("text/plain;charset=UTF-8"); + client.open("GET", testURL); + client.send(); +}, "overrideMimeType() is not reset by open(), basic"); + +async_test(t => { + const client = new XMLHttpRequest(); let secondTime = false; client.onload = t.step_func(() => { if(!secondTime) { @@ -10,14 +20,14 @@ async_test(t => { client.open("GET", testURL); client.send(); } else { - assert_equals(client.responseText, "Âð"); + assert_equals(client.responseText, "\uFFFD\uFFFD"); t.done(); } }); client.open("GET", testURL); client.overrideMimeType("text/plain;charset=UTF-8") client.send(); -}, "overrideMimeType() state needs to be reset across requests"); +}, "overrideMimeType() is not reset by open()"); async_test(t => { const client = new XMLHttpRequest(); diff --git a/tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py b/tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py index 12dd33595f0..e71f671ced3 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py +++ b/tests/wpt/web-platform-tests/xhr/resources/inspect-headers.py @@ -5,11 +5,9 @@ def get_response(raw_headers, filter_value, filter_name): return "Syntax error: missing CRLF: " + line line = line[:-2] - if ':' not in line: - return "Syntax error: no colon found: " + line - name, value = line.split(':', 1) - if len(value) > 1 and value[0] == ' ': - value = value[1:] + if ': ' not in line: + return "Syntax error: no colon and space found: " + line + name, value = line.split(': ', 1) if filter_value: if value == filter_value: |