diff --git a/tests/wpt/metadata-layout-2020/WebIDL/ecmascript-binding/legacy-factor-function-subclass.window.js.ini b/tests/wpt/metadata-layout-2020/WebIDL/ecmascript-binding/legacy-factor-function-subclass.window.js.ini new file mode 100644 index 00000000000..bce94513c4e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/WebIDL/ecmascript-binding/legacy-factor-function-subclass.window.js.ini @@ -0,0 +1,4 @@ +[legacy-factor-function-subclass.window.html] + [[LegacyFactoryFunction\] can be subclassed and correctly handles NewTarget] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini new file mode 100644 index 00000000000..baa9f1a7541 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-005.html] + [Miss clipped float] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-animations/svg-transform-animation.html.ini b/tests/wpt/metadata-layout-2020/css/css-animations/svg-transform-animation.html.ini new file mode 100644 index 00000000000..3252a59aea4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-animations/svg-transform-animation.html.ini @@ -0,0 +1,2 @@ +[svg-transform-animation.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-color/color-mix-basic-001.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/css-color/color-mix-basic-001.tentative.html.ini new file mode 100644 index 00000000000..97173a456f5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-color/color-mix-basic-001.tentative.html.ini @@ -0,0 +1,22 @@ +[color-mix-basic-001.tentative.html] + [From blue to red at 0.5] + expected: FAIL + + [From blue to green at 0.5] + expected: FAIL + + [From rgb(255, 0, 0, .2) to red at 0.5] + expected: FAIL + + [From blue to red at 0.9] + expected: FAIL + + [From blue to red at 0] + expected: FAIL + + [From currentColor to white at 0.5] + expected: FAIL + + [From currentColor to rgba(0, 0, 0, .5) at 0.5] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-001.html.ini index 00d67ac8b7d..0434753d57a 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-001.html.ini @@ -479,156 +479,6 @@ [left percentage(%) / events] expected: FAIL - [margin-right length(cm) / events] - expected: FAIL - - [margin-right length(in) / events] - expected: FAIL - - [margin-top length(pt) / events] - expected: FAIL - - [margin-top length(pc) / events] - expected: FAIL - - [margin-top length(px) / events] - expected: FAIL - - [margin-top length(em) / events] - expected: FAIL - - [margin-top length(ex) / events] - expected: FAIL - - [margin-top length(mm) / events] - expected: FAIL - - [margin-top length(cm) / events] - expected: FAIL - - [margin-top length(in) / events] - expected: FAIL - - [height length(pt) / events] - expected: FAIL - - [height length(pc) / events] - expected: FAIL - - [height length(px) / events] - expected: FAIL - - [height length(em) / events] - expected: FAIL - - [height length(ex) / events] - expected: FAIL - - [height length(mm) / events] - expected: FAIL - - [height length(cm) / events] - expected: FAIL - - [height length(in) / events] - expected: FAIL - - [height percentage(%) / events] - expected: FAIL - - [width length(pt) / events] - expected: FAIL - - [width length(pc) / events] - expected: FAIL - - [width length(px) / events] - expected: FAIL - - [width length(em) / events] - expected: FAIL - - [width length(ex) / events] - expected: FAIL - - [width length(mm) / events] - expected: FAIL - - [width length(cm) / events] - expected: FAIL - - [width length(in) / events] - expected: FAIL - - [width percentage(%) / events] - expected: FAIL - - [min-height length(pt) / events] - expected: FAIL - - [min-height length(pc) / events] - expected: FAIL - - [min-height length(px) / events] - expected: FAIL - - [min-height length(em) / events] - expected: FAIL - - [min-height length(ex) / events] - expected: FAIL - - [min-height length(mm) / events] - expected: FAIL - - [min-height length(cm) / events] - expected: FAIL - - [min-height length(in) / events] - expected: FAIL - - [min-height percentage(%) / events] - expected: FAIL - - [min-width length(pt) / events] - expected: FAIL - - [min-width length(pc) / events] - expected: FAIL - - [min-width length(px) / events] - expected: FAIL - - [min-width length(em) / events] - expected: FAIL - - [min-width length(ex) / events] - expected: FAIL - - [min-width length(mm) / events] - expected: FAIL - - [min-width length(cm) / events] - expected: FAIL - - [min-width length(in) / events] - expected: FAIL - - [min-width percentage(%) / events] - expected: FAIL - - [max-height length(pt) / events] - expected: FAIL - - [max-height length(pc) / events] - expected: FAIL - - [max-height length(px) / events] - expected: FAIL - - [max-height length(em) / events] - expected: FAIL - [color color(rgba) / events] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini index 02b619a775c..492f1b2bd2e 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-inherit-002.html.ini @@ -326,453 +326,3 @@ [margin-right length(mm) / values] expected: FAIL - [margin-right length(cm) / values] - expected: FAIL - - [margin-right length(in) / values] - expected: FAIL - - [margin-top length(pt) / values] - expected: FAIL - - [margin-top length(pc) / values] - expected: FAIL - - [margin-top length(px) / values] - expected: FAIL - - [margin-top length(em) / values] - expected: FAIL - - [margin-top length(ex) / values] - expected: FAIL - - [margin-top length(mm) / values] - expected: FAIL - - [margin-top length(cm) / values] - expected: FAIL - - [margin-top length(in) / values] - expected: FAIL - - [height length(pt) / values] - expected: FAIL - - [height length(pc) / values] - expected: FAIL - - [height length(px) / values] - expected: FAIL - - [height length(em) / values] - expected: FAIL - - [height length(ex) / values] - expected: FAIL - - [height length(mm) / values] - expected: FAIL - - [height length(cm) / values] - expected: FAIL - - [height length(in) / values] - expected: FAIL - - [height percentage(%) / values] - expected: FAIL - - [width length(pt) / values] - expected: FAIL - - [width length(pc) / values] - expected: FAIL - - [width length(px) / values] - expected: FAIL - - [width length(em) / values] - expected: FAIL - - [width length(ex) / values] - expected: FAIL - - [width length(mm) / values] - expected: FAIL - - [width length(cm) / values] - expected: FAIL - - [width length(in) / values] - expected: FAIL - - [width percentage(%) / values] - expected: FAIL - - [min-height length(pt) / values] - expected: FAIL - - [min-height length(pc) / values] - expected: FAIL - - [min-height length(px) / values] - expected: FAIL - - [min-height length(em) / values] - expected: FAIL - - [min-height length(ex) / values] - expected: FAIL - - [min-height length(mm) / values] - expected: FAIL - - [min-height length(cm) / values] - expected: FAIL - - [min-height length(in) / values] - expected: FAIL - - [min-height percentage(%) / values] - expected: FAIL - - [min-width length(pt) / values] - expected: FAIL - - [min-width length(pc) / values] - expected: FAIL - - [min-width length(px) / values] - expected: FAIL - - [min-width length(em) / values] - expected: FAIL - - [min-width length(ex) / values] - expected: FAIL - - [min-width length(mm) / values] - expected: FAIL - - [min-width length(cm) / values] - expected: FAIL - - [min-width length(in) / values] - expected: FAIL - - [min-width percentage(%) / values] - expected: FAIL - - [max-height length(pt) / values] - expected: FAIL - - [max-height length(pc) / values] - expected: FAIL - - [max-height length(px) / values] - expected: FAIL - - [max-height length(em) / values] - expected: FAIL - - [max-height length(ex) / values] - expected: FAIL - - [max-height length(mm) / values] - expected: FAIL - - [max-height length(cm) / values] - expected: FAIL - - [max-height length(in) / values] - expected: FAIL - - [max-height percentage(%) / values] - expected: FAIL - - [max-width length(pt) / values] - expected: FAIL - - [max-width length(pc) / values] - expected: FAIL - - [max-width length(px) / values] - expected: FAIL - - [max-width length(em) / values] - expected: FAIL - - [max-width length(ex) / values] - expected: FAIL - - [max-width length(mm) / values] - expected: FAIL - - [max-width length(cm) / values] - expected: FAIL - - [max-width length(in) / values] - expected: FAIL - - [max-width percentage(%) / values] - expected: FAIL - - [top length(pt) / values] - expected: FAIL - - [top length(pc) / values] - expected: FAIL - - [top length(px) / values] - expected: FAIL - - [top length(em) / values] - expected: FAIL - - [top length(ex) / values] - expected: FAIL - - [top length(mm) / values] - expected: FAIL - - [top length(cm) / values] - expected: FAIL - - [top length(in) / values] - expected: FAIL - - [top percentage(%) / values] - expected: FAIL - - [right length(pt) / values] - expected: FAIL - - [right length(pc) / values] - expected: FAIL - - [right length(px) / values] - expected: FAIL - - [right length(em) / values] - expected: FAIL - - [right length(ex) / values] - expected: FAIL - - [right length(mm) / values] - expected: FAIL - - [right length(cm) / values] - expected: FAIL - - [right length(in) / values] - expected: FAIL - - [right percentage(%) / values] - expected: FAIL - - [bottom length(pt) / values] - expected: FAIL - - [bottom length(pc) / values] - expected: FAIL - - [bottom length(px) / values] - expected: FAIL - - [bottom length(em) / values] - expected: FAIL - - [bottom length(ex) / values] - expected: FAIL - - [bottom length(mm) / values] - expected: FAIL - - [bottom length(cm) / values] - expected: FAIL - - [bottom length(in) / values] - expected: FAIL - - [bottom percentage(%) / values] - expected: FAIL - - [left length(pt) / values] - expected: FAIL - - [left length(pc) / values] - expected: FAIL - - [left length(px) / values] - expected: FAIL - - [left length(em) / values] - expected: FAIL - - [left length(ex) / values] - expected: FAIL - - [left length(mm) / values] - expected: FAIL - - [left length(cm) / values] - expected: FAIL - - [left length(in) / values] - expected: FAIL - - [left percentage(%) / values] - expected: FAIL - - [color color(rgba) / values] - expected: FAIL - - [font-size length(pt) / values] - expected: FAIL - - [font-size length(pc) / values] - expected: FAIL - - [font-size length(px) / values] - expected: FAIL - - [font-size length(em) / values] - expected: FAIL - - [font-size length(ex) / values] - expected: FAIL - - [font-size length(mm) / values] - expected: FAIL - - [font-size length(cm) / values] - expected: FAIL - - [font-size length(in) / values] - expected: FAIL - - [font-size percentage(%) / values] - expected: FAIL - - [font-weight font-weight(keyword) / values] - expected: FAIL - - [font-weight font-weight(numeric) / values] - expected: FAIL - - [line-height number(integer) / values] - expected: FAIL - - [line-height number(decimal) / values] - expected: FAIL - - [line-height length(pt) / values] - expected: FAIL - - [line-height length(pc) / values] - expected: FAIL - - [line-height length(px) / values] - expected: FAIL - - [line-height length(em) / values] - expected: FAIL - - [line-height length(ex) / values] - expected: FAIL - - [line-height length(mm) / values] - expected: FAIL - - [line-height length(cm) / values] - expected: FAIL - - [line-height length(in) / values] - expected: FAIL - - [line-height percentage(%) / values] - expected: FAIL - - [letter-spacing length(pt) / values] - expected: FAIL - - [letter-spacing length(pc) / values] - expected: FAIL - - [letter-spacing length(px) / values] - expected: FAIL - - [letter-spacing length(em) / values] - expected: FAIL - - [letter-spacing length(ex) / values] - expected: FAIL - - [letter-spacing length(mm) / values] - expected: FAIL - - [letter-spacing length(cm) / values] - expected: FAIL - - [letter-spacing length(in) / values] - expected: FAIL - - [word-spacing length(pt) / values] - expected: FAIL - - [word-spacing length(pc) / values] - expected: FAIL - - [word-spacing length(px) / values] - expected: FAIL - - [word-spacing length(em) / values] - expected: FAIL - - [word-spacing length(ex) / values] - expected: FAIL - - [word-spacing length(mm) / values] - expected: FAIL - - [word-spacing length(cm) / values] - expected: FAIL - - [word-spacing length(in) / values] - expected: FAIL - - [word-spacing percentage(%) / values] - expected: FAIL - - [text-indent length(pt) / values] - expected: FAIL - - [text-indent length(pc) / values] - expected: FAIL - - [text-indent length(px) / values] - expected: FAIL - - [text-indent length(em) / values] - expected: FAIL - - [text-indent length(ex) / values] - expected: FAIL - - [text-indent length(mm) / values] - expected: FAIL - - [text-indent length(cm) / values] - expected: FAIL - - [text-indent length(in) / values] - expected: FAIL - - [text-indent percentage(%) / values] - expected: FAIL - - [text-shadow shadow(shadow) / values] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini new file mode 100644 index 00000000000..e38782d8c85 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini @@ -0,0 +1,4 @@ +[elementFromPoint-001.html] + [CSSOM View - 5 - extensions to the Document interface] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/custom-elements/state/tentative/ElementInternals-states.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/state/tentative/ElementInternals-states.html.ini index ad694b733cb..e40204e0de4 100644 --- a/tests/wpt/metadata-layout-2020/custom-elements/state/tentative/ElementInternals-states.html.ini +++ b/tests/wpt/metadata-layout-2020/custom-elements/state/tentative/ElementInternals-states.html.ini @@ -17,3 +17,6 @@ [CustomStateSet behavior of ElementInternals.states: Modifications] expected: FAIL + [Updating a CustomStateSet while iterating it should work] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/content-length/api-and-duplicate-headers.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-length/api-and-duplicate-headers.any.js.ini new file mode 100644 index 00000000000..d9c34cced72 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/content-length/api-and-duplicate-headers.any.js.ini @@ -0,0 +1,15 @@ +[api-and-duplicate-headers.any.html] + [fetch() and duplicate Content-Length/Content-Type headers] + expected: FAIL + + [XMLHttpRequest and duplicate Content-Length/Content-Type headers] + expected: FAIL + + +[api-and-duplicate-headers.any.worker.html] + [fetch() and duplicate Content-Length/Content-Type headers] + expected: FAIL + + [XMLHttpRequest and duplicate Content-Length/Content-Type headers] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index bbd92b1e257..e5c0a7ebfc5 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini @@ -312,9 +312,12 @@ [ + diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-iframe-gets-focus-inner.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-iframe-gets-focus-inner.html new file mode 100644 index 00000000000..bab32c08796 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-iframe-gets-focus-inner.html @@ -0,0 +1,31 @@ + + + + + Focus event inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-middle.sub.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-middle.sub.html new file mode 100644 index 00000000000..ba2a9c76573 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-middle.sub.html @@ -0,0 +1,27 @@ + + +Focus event after different site iframe gets focus middle +

Middle


+ + diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-outer.sub.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-outer.sub.html new file mode 100644 index 00000000000..12af71e8aae --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-innermost-different-site-iframe-gets-focus-outer.sub.html @@ -0,0 +1,30 @@ + + +Focus event after innermost different site iframe gets focus outer + + diff --git a/tests/wpt/web-platform-tests/focus/support/focus-event-after-same-site-iframe-gets-focus-outer.html b/tests/wpt/web-platform-tests/focus/support/focus-event-after-same-site-iframe-gets-focus-outer.html new file mode 100644 index 00000000000..b191be580ea --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/focus-event-after-same-site-iframe-gets-focus-outer.html @@ -0,0 +1,30 @@ + + +Focus event after same site iframe gets focus outer + + diff --git a/tests/wpt/web-platform-tests/html/browsers/the-windowproxy-exotic-object/document-tree-child-browsing-context-name-property-set.sub.html b/tests/wpt/web-platform-tests/html/browsers/the-windowproxy-exotic-object/document-tree-child-browsing-context-name-property-set.sub.html new file mode 100644 index 00000000000..171aa019991 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/the-windowproxy-exotic-object/document-tree-child-browsing-context-name-property-set.sub.html @@ -0,0 +1,26 @@ + + +document-tree child browsing context name property set + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir-slots-directionality.tentative.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir-slots-directionality.tentative.html new file mode 100644 index 00000000000..851fd2edba7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir-slots-directionality.tentative.html @@ -0,0 +1,38 @@ + +HTML Test: dir=auto|rtl with slots, and direction should be RTL + + + + + + +
+
+ +
اختبر
+
+ diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html b/tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html index 5f677b5f0f6..45ac762bd18 100644 --- a/tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html @@ -39,8 +39,10 @@ The baselines for different widgets, as implemented in Firefox, are as follows: with 'appearance: auto' with 'appearance: auto' - At the border-box edge. (Since baseline at border-box edge isn't a behavior CSS has normally, we - fake it in the references with the 'no-margin-bottom' class.) + At the bottom of the content-box edge (and whether there's a border depends + on the platform). + + This is not usually how CSS works so we fake it with a negative margin-bottom. At the content-box edge. @@ -85,11 +87,13 @@ The baselines for different widgets, as implemented in Firefox, are as follows: margin: 10px 0; /* Note: a border is not specified because that would imply 'appearance: none' for some widgets */ } + .ref button img { height: 100%; width: 100%; display: block; } + /* Use inline-grid instead of inline-block here to more easily center the text inside */ .ref .fake-input-text { display: inline-grid; @@ -99,9 +103,11 @@ The baselines for different widgets, as implemented in Firefox, are as follows: .ref .inline-block { display: inline-block; } -.ref td > img.no-margin-bottom { - margin-bottom: 0; + +.ref-file-input-like button { + font-size: unset; } + [style*="appearance: none;"] { -webkit-appearance: none; /* TODO(zcorpan) remove this when unprefixed appearance is supported */ } @@ -114,7 +120,7 @@ The sibling element is there to control where the baseline for the line box will --> " + - "" + "
ref-text-input-like x -
ref-checkbox-input-appearance-auto-like +
ref-checkbox-input-appearance-auto-like
ref-color-input-like
ref-file-input-like
ref-image-input-showing-alt-overflow-visible-like x @@ -160,6 +166,13 @@ This table gets populated by the script. const templateTable = document.querySelector('#template-table'); const testTBody = document.querySelector('#test-table tbody'); + { + const checkboxBorder = getComputedStyle(document.querySelector("input[type=checkbox]")).borderTopWidth; + const checkboxLike = document.querySelector(".auto-checkbox"); + checkboxLike.style.border = checkboxBorder + " solid"; + checkboxLike.style.marginBottom = "-" + checkboxBorder; + } + const templateRows = templateTable.querySelectorAll('tr'); for (const templateRow of templateRows) { for (const appearanceValue of ["auto", "none"]) { @@ -213,14 +226,11 @@ This table gets populated by the script. for (const row of testTBody.children) { const input = row.firstChild.lastElementChild; - // FIXME: This test makes assumptions about default form control styling - // that don't hold in all platforms. - const allowedDelta = 3; // This is not using test() because promise_setup() only allows promise_test(). promise_test(async () => { assert_equals(input.type, input.getAttribute('type'), 'input type should be supported') const offsetTopActual = row.firstChild.firstChild.offsetTop; - assert_approx_equals(offsetTopActual, expectedOffsetTop(input), allowedDelta, '.offsetTop'); + assert_equals(offsetTopActual, expectedOffsetTop(input), '.offsetTop'); }, testName(input.outerHTML)); } }); diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/input-date-content-size-ref.html b/tests/wpt/web-platform-tests/html/rendering/widgets/input-date-content-size-ref.html new file mode 100644 index 00000000000..18019c56b1b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/input-date-content-size-ref.html @@ -0,0 +1,9 @@ + +Test reference + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/input-date-content-size.html b/tests/wpt/web-platform-tests/html/rendering/widgets/input-date-content-size.html new file mode 100644 index 00000000000..d026771f3c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/input-date-content-size.html @@ -0,0 +1,11 @@ + +Test: the date field's min-content and max-content sizes should be the same as its automatic size + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/input-time-content-size-ref.html b/tests/wpt/web-platform-tests/html/rendering/widgets/input-time-content-size-ref.html new file mode 100644 index 00000000000..938d2659a8a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/input-time-content-size-ref.html @@ -0,0 +1,9 @@ + +Test reference + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/input-time-content-size.html b/tests/wpt/web-platform-tests/html/rendering/widgets/input-time-content-size.html new file mode 100644 index 00000000000..4a378f6923a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/widgets/input-time-content-size.html @@ -0,0 +1,11 @@ + +Test: the time field's min-content and max-content sizes should be the same as its automatic size + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html index 151923ac2fd..38f92c3d356 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/object-events.html @@ -62,7 +62,7 @@ async_test(function(t) { async_test(function(t) { var obj = document.createElement("object"); obj.onload = t.step_func_done(function(e){ - assert_true(obj.contentWindow instanceof Window, "The object element should represent a nested browsing context.") + assert_true(obj.contentWindow instanceof obj.contentWindow.Window, "The object element should represent a nested browsing context.") assert_equals(Object.getPrototypeOf(e).constructor, Event, "The load event should use the Event interface."); assert_true(e.isTrusted, "The load event should be a trusted event."); assert_false(e.cancelable, "The load event should not be a cancelable event."); diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/cloning-steps.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/cloning-steps.html index 9e6c46fd7aa..52cd57705e4 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/cloning-steps.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/cloning-steps.html @@ -10,8 +10,8 @@ - diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/proxy-modifier-click-to-associated-element.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/proxy-modifier-click-to-associated-element.tentative.html new file mode 100644 index 00000000000..fa50c080250 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-label-element/proxy-modifier-click-to-associated-element.tentative.html @@ -0,0 +1,67 @@ + +clicks on label element with modifier keys should be proxied to its associated control + + + + + + + +
+
+ + + + +
+ diff --git a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html index 5c561e162d0..73c9ee95bc5 100644 --- a/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html +++ b/tests/wpt/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html @@ -1,5 +1,6 @@ + Test dialog form submission diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents-during-evaluation.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents-during-evaluation.html new file mode 100644 index 00000000000..e4cd887c614 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/moving-between-documents-during-evaluation.html @@ -0,0 +1,59 @@ + + +Moving script elements between documents during evaluation + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-template-element/additions-to-parsing-xhtml-documents/tag-name.xhtml b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-template-element/additions-to-parsing-xhtml-documents/tag-name.xhtml new file mode 100644 index 00000000000..a1e293d1cbf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-template-element/additions-to-parsing-xhtml-documents/tag-name.xhtml @@ -0,0 +1,16 @@ + + + tagName in template + + + + + +
+ + + diff --git a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-deleting-range-across-editing-host-boundaries.tentative.html b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-deleting-range-across-editing-host-boundaries.tentative.html new file mode 100644 index 00000000000..04f632a9299 --- /dev/null +++ b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-deleting-range-across-editing-host-boundaries.tentative.html @@ -0,0 +1,598 @@ + + +InputEvent.getTargetRanges() of deleting a range across editing host boundaries +
+ + + + + + + diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-while-scrolled.html b/tests/wpt/web-platform-tests/layout-instability/shift-while-scrolled.html index 88eeedea877..3cdd3571a37 100644 --- a/tests/wpt/web-platform-tests/layout-instability/shift-while-scrolled.html +++ b/tests/wpt/web-platform-tests/layout-instability/shift-while-scrolled.html @@ -26,9 +26,8 @@ promise_test(async () => { // Generate a layout shift. document.querySelector("#shift").style = "top: 60px"; - // Impact region: width * (height - scrollTop + moveDistance) - const expectedScore = computeExpectedScore( - 300 * (200 - 100 + 60), 60); + const moveDistanceInView = 100 - 60; + const expectedScore = computeExpectedScore(300 * 200, moveDistanceInView); await watcher.promise; assert_equals(watcher.score, expectedScore); diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-with-counter-scroll-and-transform.html b/tests/wpt/web-platform-tests/layout-instability/shift-with-counter-scroll-and-transform.html new file mode 100644 index 00000000000..b4e4a99c1c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/shift-with-counter-scroll-and-transform.html @@ -0,0 +1,62 @@ + +Layout Instability: shift with counter scroll and transform not counted + + +
+
+
+
+
+
+
+
+
+
+ + + + diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll-2.html b/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll-2.html new file mode 100644 index 00000000000..d99723010ef --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll-2.html @@ -0,0 +1,59 @@ + +Layout Instability: shift with counterscroll not counted, with 2 scrollers + + +
+
+
+
+
+
+
+
+
+
+ + + + diff --git a/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll.html b/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll.html index 8ad1a463443..85a8ed93364 100644 --- a/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll.html +++ b/tests/wpt/web-platform-tests/layout-instability/shift-with-counterscroll.html @@ -52,5 +52,3 @@ promise_test(async () => { }, "Shift with counterscroll not counted."); - - diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore index 0b95e5a9f50..4c826d0d408 100644 --- a/tests/wpt/web-platform-tests/lint.ignore +++ b/tests/wpt/web-platform-tests/lint.ignore @@ -129,6 +129,7 @@ PARSE-FAILED: dom/nodes/Document-createElement-namespace-tests/empty.xml PARSE-FAILED: dom/nodes/Document-createElement-namespace-tests/minimal_html.svg PARSE-FAILED: dom/nodes/Document-createElement-namespace-tests/minimal_html.xhtml PARSE-FAILED: dom/nodes/Document-createElement-namespace-tests/minimal_html.xml +PARSE-FAILED: custom-elements/xhtml-crash.xhtml # setTimeout usage (should probably mostly be fixed) SET TIMEOUT: *-manual.* diff --git a/tests/wpt/web-platform-tests/resource-timing/cross-origin-status-codes.html b/tests/wpt/web-platform-tests/resource-timing/cross-origin-status-codes.html index e8ece5ff2fe..512e4372222 100644 --- a/tests/wpt/web-platform-tests/resource-timing/cross-origin-status-codes.html +++ b/tests/wpt/web-platform-tests/resource-timing/cross-origin-status-codes.html @@ -1,6 +1,9 @@ +Resource Timing: PerformanceResourceTiming attributes shouldn't change + if the HTTP status code changes + @@ -15,34 +18,53 @@ diff --git a/tests/wpt/web-platform-tests/resource-timing/entry-attributes.html b/tests/wpt/web-platform-tests/resource-timing/entry-attributes.html index 013f4d7989c..5f330bb1fdb 100644 --- a/tests/wpt/web-platform-tests/resource-timing/entry-attributes.html +++ b/tests/wpt/web-platform-tests/resource-timing/entry-attributes.html @@ -93,32 +93,61 @@ function assert_http_resource(entry) { ]); } -promise_test(async () => { - // Clear out everything that isn't the one ResourceTiming entry under test. - performance.clearResourceTimings(); - await load_image("resources/fake_responses.py#hash=1"); - const entry_list = performance.getEntriesByType("resource"); - if (entry_list.length != 1) { - throw new Error("There should be one entry for one resource"); - } - const entry = entry_list[0]; - assert_true(entry.name.includes('#hash=1'), - "There should be a hash in the resource name"); +function assert_same_origin_redirected_resource(entry) { + assert_positive(entry, [ + "redirectStart", + ]); - assert_http_resource(entry); -}, "Image resources should generate conformant entries"); + assert_equals(entry.redirectStart, entry.startTime, + "redirectStart should be equal to startTime"); -promise_test(async () => { - // Clear out everything that isn't the one ResourceTiming entry under test. - performance.clearResourceTimings(); - await load_font("/fonts/Ahem.ttf"); - const entry_list = performance.getEntriesByType("resource"); - if (entry_list.length != 1) { - throw new Error("There should be one entry for one resource"); - } - assert_http_resource(entry_list[0]); -}, "Font resources should generate conformant entries"); + assert_ordered(entry, [ + "redirectStart", + "redirectEnd", + "fetchStart", + "domainLookupStart", + "domainLookupEnd", + "connectStart", + ]); +} +// Given a resource-loader and a PerformanceResourceTiming validator, loads a +// resource and validates the resulting entry. +function attribute_test(load_resource, validate, test_label) { + promise_test( + async () => { + // Clear out everything that isn't the one ResourceTiming entry under test. + performance.clearResourceTimings(); + + await load_resource(); + + const entry_list = performance.getEntriesByType("resource"); + if (entry_list.length != 1) { + throw new Error(`There should be one entry for one resource (found ${entry_list.length})`); + } + + validate(entry_list[0]); + }, test_label); +} + +attribute_test( + () => load_image("resources/fake_responses.py#hash=1"), + entry => { + assert_true(entry.name.includes('#hash=1'), + "There should be a hash in the resource name"); + assert_http_resource(entry); + }, + "Image resources should generate conformant entries"); + +attribute_test( + () => load_font("/fonts/Ahem.ttf"), + assert_http_resource, + "Font resources should generate conformant entries"); + +attribute_test( + () => load_image("/common/redirect.py?location=resources/fake_responses.py"), + assert_same_origin_redirected_resource, + "Same-origin redirects should populate redirectStart/redirectEnd"); diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_timing_content_length.html b/tests/wpt/web-platform-tests/resource-timing/resource_timing_content_length.html new file mode 100644 index 00000000000..32bd8a97e07 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_timing_content_length.html @@ -0,0 +1,35 @@ + + + + +This test validates the value of encodedBodySize in certain situations. + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_timing_same_origin_redirect.html b/tests/wpt/web-platform-tests/resource-timing/resource_timing_same_origin_redirect.html deleted file mode 100644 index d9fbf944f6c..00000000000 --- a/tests/wpt/web-platform-tests/resource-timing/resource_timing_same_origin_redirect.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - -This test validates the values of the redirectStart/End in resource timing for a same-origin resource redirect. - - - - - - - - - - - - - - - diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/resource-timing-content-length.py b/tests/wpt/web-platform-tests/resource-timing/resources/resource-timing-content-length.py new file mode 100644 index 00000000000..6dbce047b72 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/resource-timing-content-length.py @@ -0,0 +1,19 @@ +def main(request, response): + content = request.GET.first(b"content") + length = request.GET.first(b"length").decode("ascii") + response.add_required_headers = False + + output = b"HTTP/1.1 200 OK\r\n" + output += b"Content-Type: text/plain;charset=UTF-8\r\n" + if length == b"auto" : + output += b"Content-Length:" + output += "{0}".format(len(content)).encode("ascii") + output += b"\r\n" + elif length != b"none" : + output += b"Content-Length:" + output += "{0}".format(length).encode("ascii") + output += b"\r\n" + output += b"\r\n" + output += content + response.writer.write(output) + response.close_connection = True diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js index 21fa7933ed2..a49e604ee2e 100644 --- a/tests/wpt/web-platform-tests/resources/testharness.js +++ b/tests/wpt/web-platform-tests/resources/testharness.js @@ -3541,10 +3541,9 @@ policies and contribution forms [3]. if (assert.stack) { output_location = assert.stack.split("\n", 1)[0].replace(/@?\w+:\/\/[^ "\/]+(?::\d+)?/g, " "); } - return "
" + + return "
" + Test.prototype.status_formats[assert.status] + "
" +
                     output_fn +
                     (output_location ? "\n" + escape_html(output_location) : "") +
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/xhr-content-length-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/xhr-content-length-worker.js
new file mode 100644
index 00000000000..604deece2d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/xhr-content-length-worker.js
@@ -0,0 +1,22 @@
+// Service worker for the xhr-content-length test.
+
+self.addEventListener("fetch", event => {
+  const url = new URL(event.request.url);
+  const type = url.searchParams.get("type");
+
+  if (type === "no-content-length") {
+    event.respondWith(new Response("Hello!"));
+  }
+
+  if (type === "larger-content-length") {
+    event.respondWith(new Response("meeeeh", { headers: [["Content-Length", "10000"]] }));
+  }
+
+  if (type === "double-content-length") {
+    event.respondWith(new Response("meeeeh", { headers: [["Content-Length", "10000"], ["Content-Length", "10000"]] }));
+  }
+
+  if (type === "bogus-content-length") {
+    event.respondWith(new Response("meeeeh", { headers: [["Content-Length", "test"]] }));
+  }
+});
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/xhr-content-length.window.js b/tests/wpt/web-platform-tests/service-workers/service-worker/xhr-content-length.window.js
new file mode 100644
index 00000000000..1ae320e9c3c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/xhr-content-length.window.js
@@ -0,0 +1,55 @@
+// META: script=resources/test-helpers.sub.js
+
+let frame;
+
+promise_test(async (t) => {
+  const scope = "resources/empty.html";
+  const script = "resources/xhr-content-length-worker.js";
+  const registration = await service_worker_unregister_and_register(t, script, scope);
+  await wait_for_state(t, registration.installing, "activated");
+  frame = await with_iframe(scope);
+}, "Setup");
+
+promise_test(async t => {
+  const xhr = new frame.contentWindow.XMLHttpRequest();
+  xhr.open("GET", "test?type=no-content-length");
+  xhr.send();
+  const event = await new Promise(resolve => xhr.onload = resolve);
+  assert_equals(xhr.getResponseHeader("content-length"), null);
+  assert_false(event.lengthComputable);
+  assert_equals(event.total, 0);
+  assert_equals(event.loaded, xhr.responseText.length);
+}, `Synthetic response without Content-Length header`);
+
+promise_test(async t => {
+  const xhr = new frame.contentWindow.XMLHttpRequest();
+  xhr.open("GET", "test?type=larger-content-length");
+  xhr.send();
+  const event = await new Promise(resolve => xhr.onload = resolve);
+  assert_equals(xhr.getResponseHeader("content-length"), "10000");
+  assert_true(event.lengthComputable);
+  assert_equals(event.total, 10000);
+  assert_equals(event.loaded, xhr.responseText.length);
+}, `Synthetic response with Content-Length header with value larger than response body length`);
+
+promise_test(async t => {
+  const xhr = new frame.contentWindow.XMLHttpRequest();
+  xhr.open("GET", "test?type=double-content-length");
+  xhr.send();
+  const event = await new Promise(resolve => xhr.onload = resolve);
+  assert_equals(xhr.getResponseHeader("content-length"), "10000, 10000");
+  assert_true(event.lengthComputable);
+  assert_equals(event.total, 10000);
+  assert_equals(event.loaded, xhr.responseText.length);
+}, `Synthetic response with two Content-Length headers value larger than response body length`);
+
+promise_test(async t => {
+  const xhr = new frame.contentWindow.XMLHttpRequest();
+  xhr.open("GET", "test?type=bogus-content-length");
+  xhr.send();
+  const event = await new Promise(resolve => xhr.onload = resolve);
+  assert_equals(xhr.getResponseHeader("content-length"), "test");
+  assert_false(event.lengthComputable);
+  assert_equals(event.total, 0);
+  assert_equals(event.loaded, xhr.responseText.length);
+}, `Synthetic response with bogus Content-Length header`);
diff --git a/tests/wpt/web-platform-tests/svg/types/elements/SVGGeometryElement-rect.svg b/tests/wpt/web-platform-tests/svg/types/elements/SVGGeometryElement-rect.svg
index d4b278f2836..93d25b6bfdd 100644
--- a/tests/wpt/web-platform-tests/svg/types/elements/SVGGeometryElement-rect.svg
+++ b/tests/wpt/web-platform-tests/svg/types/elements/SVGGeometryElement-rect.svg
@@ -26,7 +26,7 @@
   }, 'getTotalLength and getPointAtLength do not take pathLength into account');
 
   test(function() {
-    assert_true(box.getPointAtLength(210) instanceof DOMPoint);
-  }, 'getPointAtLength() returns instance of DOMPoint');
+    assert_true(box.getPointAtLength(210) instanceof SVGPoint);
+  }, 'getPointAtLength() returns instance of SVGPoint');
   ]]>
 
diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html
index eb5bb1db166..1dfbc77b512 100644
--- a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html
+++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html
@@ -10,9 +10,9 @@ test(function() {
 
   // Check initial viewBox value.
   assert_true(svgElement.viewBox instanceof SVGAnimatedRect);
-  assert_true(svgElement.viewBox.baseVal instanceof DOMRect);
+  assert_true(svgElement.viewBox.baseVal instanceof SVGRect);
   assert_equals(svgElement.viewBox.baseVal.x, 0);
-  assert_true(svgElement.viewBox.animVal instanceof DOMRectReadOnly);
+  assert_true(svgElement.viewBox.animVal instanceof SVGRect);
 
   // Check that rects are dynamic, caching value in a local variable and modifying it, should take effect.
   var numRef = svgElement.viewBox.baseVal;
@@ -29,6 +29,6 @@ test(function() {
   assert_equals(svgElement.viewBox.baseVal.x, 100);
 
   // Check that the viewBox baseVal type has not been changed.
-  assert_true(svgElement.viewBox.baseVal instanceof DOMRect);
+  assert_true(svgElement.viewBox.baseVal instanceof SVGRect);
 });
 
diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.svg b/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.svg
index 8d5808f0db7..893882b3cce 100644
--- a/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.svg
+++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.svg
@@ -11,15 +11,15 @@
     var el = document.createElementNS("http://www.w3.org/2000/svg", "rect");
 
     test(function() {
-        assert_true(el.getBBox() instanceof DOMRect);
-    }, 'getBBox() returns instance of DOMRect');
+        assert_true(el.getBBox() instanceof SVGRect);
+    }, 'getBBox() returns instance of SVGRect');
 
     test(function() {
-        assert_true(el.getCTM() instanceof DOMMatrix);
-    }, 'getCTM() returns instance of DOMMatrix');
+        assert_true(el.getCTM() instanceof SVGMatrix);
+    }, 'getCTM() returns instance of SVGMatrix');
 
     test(function() {
-        assert_true(el.getScreenCTM() instanceof DOMMatrix);
-    }, 'getScreenCTM() returns instance of DOMMatrix');
+        assert_true(el.getScreenCTM() instanceof SVGMatrix);
+    }, 'getScreenCTM() returns instance of SVGMatrix');
   ]]>
 
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
index ea4cbe12b24..81be731b06d 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
@@ -633,28 +633,15 @@ class MarionetteDebugProtocolPart(DebugProtocolPart):
     def load_devtools(self):
         with self.marionette.using_context(self.marionette.CONTEXT_CHROME):
             self.parent.base.execute_script("""
-const DevToolsShim = ChromeUtils.import(
-  "chrome://devtools-startup/content/DevToolsShim.jsm"
-);
+const { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm");
+const { TargetFactory } = require("devtools/client/framework/target");
+const { gDevTools } = require("devtools/client/framework/devtools");
 
 const callback = arguments[arguments.length - 1];
 
 async function loadDevTools() {
-    const tab = window.gBrowser.selectedTab;
-    // showToolboxForTab is available for Firefox 87 or newer.
-    if (typeof DevToolsShim.showToolboxForTab === "function") {
-        await showToolboxForTab(tab, {
-          toolId: "webconsole",
-          hostType: "window"
-        });
-    } else {
-        // This branch can be removed whe wptrunner can only be used with
-        // Firefox 87 or newer.
-        const { TargetFactory } = require("devtools/client/framework/target");
-        const { gDevTools } = require("devtools/client/framework/devtools");
-        const target = await TargetFactory.forTab(tab);
-        await gDevTools.showToolbox(target, "webconsole", "window");
-    }
+    const target = await TargetFactory.forTab(window.gBrowser.selectedTab);
+    await gDevTools.showToolbox(target, "webconsole", "window");
 }
 
 loadDevTools().catch(() => dump("Devtools failed to load"))
diff --git a/tests/wpt/web-platform-tests/uievents/order-of-events/focus-events/focus-contained-manual.html b/tests/wpt/web-platform-tests/uievents/order-of-events/focus-events/focus-contained.html
similarity index 72%
rename from tests/wpt/web-platform-tests/uievents/order-of-events/focus-events/focus-contained-manual.html
rename to tests/wpt/web-platform-tests/uievents/order-of-events/focus-events/focus-contained.html
index 3f6e584d1ea..8df612c1080 100644
--- a/tests/wpt/web-platform-tests/uievents/order-of-events/focus-events/focus-contained-manual.html
+++ b/tests/wpt/web-platform-tests/uievents/order-of-events/focus-events/focus-contained.html
@@ -4,9 +4,11 @@
   
   Focus-related events should fire in the correct order
   
-  
   
   
+  
+  
+  
   
 
 
@@ -35,9 +37,10 @@ var relevantEvents = [
   "focusin",
   "focusout"
 ];
-window.onload = function () {
+window.onload = async function () {
   var a = document.getElementById("a");
   var b = document.getElementById("b");
+  var button = document.getElementById("done");
   var inputs = [a, b];
   EventRecorder.configure({
       objectMap: {
@@ -48,22 +51,22 @@ window.onload = function () {
 
   EventRecorder.addEventListenersForNodes(relevantEvents, inputs, stopPropagation);
   var expected = [
-    {type: "focusin", target: "b"},
     {type: "focus", target: "b"},
-    {type: "focusout", target: "b"},
-    {type: "focusin", target: "a"},
+    {type: "focusin", target: "b"},
     {type: "blur", target: "b"},
-    {type: "focus", target: "a"},
-    {type: "focusout", target: "a"},
-    {type: "focusin", target: "b"},
-    {type: "blur", target: "a"},
-    {type: "focus", target: "b"},
     {type: "focusout", target: "b"},
-    {type: "blur", target: "b"}
+    {type: "focus", target: "a"},
+    {type: "focusin", target: "a"},
+    {type: "blur", target: "a"},
+    {type: "focusout", target: "a"},
+    {type: "focus", target: "b"},
+    {type: "focusin", target: "b"},
+    {type: "blur", target: "b"},
+    {type: "focusout", target: "b"}
   ];
 
   async_test(function(t) {
-    document.getElementById("done").addEventListener("click", function () {
+    button.addEventListener("click", function () {
       t.step(function () {
         assert_true(EventRecorder.checkRecords(expected));
         t.done();
@@ -71,6 +74,21 @@ window.onload = function () {
     }, false);
   }, "Focus-related events should fire in the correct order");
   EventRecorder.start();
+
+  await new test_driver.Actions()
+    .pointerMove(0, 0, {origin: b})
+    .pointerDown()
+    .pointerUp()
+    .pointerMove(0, 0, {origin: a})
+    .pointerDown()
+    .pointerUp()
+    .pointerMove(0, 0, {origin: b})
+    .pointerDown()
+    .pointerUp()
+    .pointerMove(0, 0, {origin: button})
+    .pointerDown()
+    .pointerUp()
+    .send();
 };
 
 
\ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webcodecs/video-track-reader.html b/tests/wpt/web-platform-tests/webcodecs/video-track-reader.html
deleted file mode 100644
index 925e8374f58..00000000000
--- a/tests/wpt/web-platform-tests/webcodecs/video-track-reader.html
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-Test the VideoTrackReader API.
-
-
-
-
-
-
diff --git a/tests/wpt/web-platform-tests/xhr/event-upload-progress.any.js b/tests/wpt/web-platform-tests/xhr/event-upload-progress.any.js
index 87223c172d5..6fe659193b5 100644
--- a/tests/wpt/web-platform-tests/xhr/event-upload-progress.any.js
+++ b/tests/wpt/web-platform-tests/xhr/event-upload-progress.any.js
@@ -7,10 +7,14 @@ const remote = get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/corsenabled.
 [remote, redirect].forEach(url => {
   async_test(test => {
     const client = new XMLHttpRequest();
-    client.upload.onprogress = test.step_func_done();
+    const data = "On time: " + url;
+    client.upload.onprogress = test.step_func_done(e => {
+      assert_true(e.lengthComputable);
+      assert_equals(e.total, data.length);
+    });
     client.onload = test.unreached_func();
     client.open("POST", url);
-    client.send("On time: " + url);
+    client.send(data);
   }, "Upload events registered on time (" + url + ")");
 });
 
diff --git a/tests/wpt/web-platform-tests/xhr/request-content-length.any.js b/tests/wpt/web-platform-tests/xhr/request-content-length.any.js
new file mode 100644
index 00000000000..054d2cce9d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/xhr/request-content-length.any.js
@@ -0,0 +1,31 @@
+async_test(test => {
+  const client = new XMLHttpRequest();
+  const data = "This is 22 bytes long.";
+  let happened = false;
+  client.upload.onprogress = test.step_func(e => {
+    assert_true(e.lengthComputable);
+    assert_equals(e.total, data.length);
+    happened = true;
+  });
+  client.onload = test.step_func_done(() => {
+    assert_true(happened);
+    assert_true(client.responseText.includes(`Content-Length: ${data.length}`));
+  });
+  client.open("POST", "resources/echo-headers.py");
+  client.send(data);
+}, "Uploads need to set the Content-Length header");
+
+async_test(test => {
+  const client = new XMLHttpRequest();
+  const data = "blah";
+  const url = URL.createObjectURL(new Blob([data]));
+  client.open("GET", url);
+  client.send();
+  client.onload = test.step_func_done(e => {
+    assert_true(e.lengthComputable);
+    assert_equals(e.total, data.length);
+    assert_equals(e.loaded, data.length);
+    assert_equals(client.responseText, data);
+    assert_equals(client.getResponseHeader("Content-Length"), String(data.length));
+  });
+}, "Fetched blob: URLs set the Content-Length header");