aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wpt')
-rw-r--r--tests/wpt/meta-legacy-layout/MANIFEST.json3100
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/system-color-hightlights-vs-getSelection-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/parsing/text-transform-computed.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/parsing/text-transform-valid.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transitions/all-with-discrete.tentative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-behavior.html.ini78
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-shorthand.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/dom/parts/basic-dom-part-objects.tentative.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/fetch-later/basic.tentative.https.window.js.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini5
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/private-network-access/iframe.tentative.https.window.js.ini47
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/text/canvas.2d.disconnected.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.center.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.end.ltr.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.end.rtl.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.left.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.right.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.start.ltr.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.start.rtl.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.alphabetic.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.bottom.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.hanging.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.ideographic.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.middle.html.ini (renamed from tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.top.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.top.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fill.maxWidth.bound.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.notinpage.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.repeat.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.basic.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.end.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html.ini)3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.nonspace.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.other.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.space.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html.ini)3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.start.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.stroke.unaffected.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.absolute.spacing.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.absolute.spacing.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.font-relative.spacing.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.font-relative.spacing.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontKerning.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontKerning.with.uppercase.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontStretch.settings.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontStretch.settings.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontVariant.settings.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html.ini)3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.invalid.spacing.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.letterSpacing.change.font.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.letterSpacing.measure.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html.ini)2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.direction.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html.ini)2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.rtl.text.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html.ini)2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.textAlign.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html.ini)2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.nonfinite.spacing.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.textRendering.settings.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.wordSpacing.change.font.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.wordSpacing.measure.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html.ini)2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.font.parse.invalid.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.font.parse.invalid.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.actualBoundingBox.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.advances.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.baselines.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.emHeights.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.fontBoundingBox.ahem.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.fontBoundingBox.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html.ini)3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.basic.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.empty.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.space.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.measure.width.space.html.ini)3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-inherit-rtl.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-rtl.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-2.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-2.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-3.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-3.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-4.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-4.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/text/parent-style-relative-units.html.ini (renamed from tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/parent-style-relative-units.html.ini)0
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html.ini)2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html.ini)2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.worker.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.html.ini (renamed from tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html.ini)1
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/matches-about-blank-base-url.window.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/non-active-document.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini10
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/webmessaging/without-ports/018.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/websockets/stream/tentative/constructor.any.js.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/meta/MANIFEST.json3100
-rw-r--r--tests/wpt/meta/css/css-color/system-color-hightlights-vs-getSelection-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-transitions/all-with-discrete.tentative.html.ini3
-rw-r--r--tests/wpt/meta/css/css-transitions/parsing/transition-behavior.html.ini78
-rw-r--r--tests/wpt/meta/css/css-transitions/parsing/transition-shorthand.html.ini9
-rw-r--r--tests/wpt/meta/css/cssom-view/scroll-behavior-smooth-navigation.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini2
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.align.default.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.align.invalid.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.baseline.default.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.baseline.invalid.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.top.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.default.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.basic.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.complex.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.family.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.invalid.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.system.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.tiny.html.ini3
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.relative_size.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/2d.text.measure.width.space.html.ini4
-rw-r--r--tests/wpt/meta/html/canvas/element/text-styles/parent-style-relative-units.html.ini6
-rw-r--r--tests/wpt/tests/IndexedDB/idbdatabase_deleteObjectStore2.htm31
-rw-r--r--tests/wpt/tests/IndexedDB/idbindex_batchGetAll.tentative.any.js185
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_batchGetAll.tentative.any.js143
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.js118
-rw-r--r--tests/wpt/tests/clear-site-data/support/test_utils.sub.js13
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/resources/check-client-hints.py1
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html.headers2
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html.headers2
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html.headers2
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html.headers2
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html.headers2
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html.headers3
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html.headers3
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html.headers3
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html.headers3
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html24
-rw-r--r--tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html.headers3
-rw-r--r--tests/wpt/tests/close-watcher/abortsignal.html16
-rw-r--r--tests/wpt/tests/close-watcher/after-other-listeners.html26
-rw-r--r--tests/wpt/tests/close-watcher/basic.html179
-rw-r--r--tests/wpt/tests/close-watcher/esc-key.html77
-rw-r--r--tests/wpt/tests/close-watcher/event-properties.html27
-rw-r--r--tests/wpt/tests/close-watcher/frame-removal.html14
-rw-r--r--tests/wpt/tests/close-watcher/inside-event-listeners.html94
-rw-r--r--tests/wpt/tests/close-watcher/popover-closewatcher-multiple-plus-free.html44
-rw-r--r--tests/wpt/tests/close-watcher/popover-closewatcher.html65
-rw-r--r--tests/wpt/tests/close-watcher/resources/helpers.js15
-rw-r--r--tests/wpt/tests/close-watcher/user-activation.html34
-rw-r--r--tests/wpt/tests/cookie-store/META.yml2
-rw-r--r--tests/wpt/tests/cookie-store/cookieStore_set_arguments.https.any.js24
-rw-r--r--tests/wpt/tests/css/css-animations/display-interpolation.html8
-rw-r--r--tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-001-ref.html22
-rw-r--r--tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-002-ref.html41
-rw-r--r--tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-001.html11
-rw-r--r--tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-002.html91
-rw-r--r--tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate.html53
-rw-r--r--tests/wpt/tests/css/css-contain/content-visibility/content-visibility-interpolation.html4
-rw-r--r--tests/wpt/tests/css/css-contain/counter-scoping-004.html24
-rw-r--r--tests/wpt/tests/css/css-contain/reference/counter-scoping-004-ref.html15
-rw-r--r--tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative-ref.html37
-rw-r--r--tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative.html41
-rw-r--r--tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative-ref.html29
-rw-r--r--tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative.html33
-rw-r--r--tests/wpt/tests/css/css-grid/subgrid/independent-tracks-from-parent-grid.html37
-rw-r--r--tests/wpt/tests/css/css-masking/animations/clip-path-interpolation-xywh-rect.html169
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-rect-interpolation-001.html34
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-001.html22
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-002.html22
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-003.html23
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/interpolation.html18
-rw-r--r--tests/wpt/tests/css/css-masking/parsing/clip-path-computed.html10
-rw-r--r--tests/wpt/tests/css/css-masking/parsing/clip-path-invalid.html4
-rw-r--r--tests/wpt/tests/css/css-masking/parsing/clip-path-valid.html7
-rw-r--r--tests/wpt/tests/css/css-nesting/parsing.html45
-rw-r--r--tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop-entry.html2
-rw-r--r--tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop.html2
-rw-r--r--tests/wpt/tests/css/css-position/overlay/overlay-transition-finished.html2
-rw-r--r--tests/wpt/tests/css/css-position/overlay/overlay-transition-in-rendering.html2
-rw-r--r--tests/wpt/tests/css/css-position/overlay/overlay-transition-out-rendering.html2
-rw-r--r--tests/wpt/tests/css/css-position/overlay/overlay-transition.html2
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-custom-ident.html2
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-image.html2
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-mismatched-list.html27
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-function.html2
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-list.html2
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-url.html2
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/resources/utils.js4
-rw-r--r--tests/wpt/tests/css/css-text/parsing/text-transform-computed.html2
-rw-r--r--tests/wpt/tests/css/css-text/parsing/text-transform-invalid.html19
-rw-r--r--tests/wpt/tests/css/css-text/parsing/text-transform-valid.html4
-rw-r--r--tests/wpt/tests/css/css-transitions/all-with-discrete.tentative.html4
-rw-r--r--tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html57
-rw-r--r--tests/wpt/tests/css/css-transitions/parsing/transition-shorthand.html9
-rw-r--r--tests/wpt/tests/css/css-values/acos-asin-atan-atan2-serialize.html1
-rw-r--r--tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-ref.html18
-rw-r--r--tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-translated-ref.html29
-rw-r--r--tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-translated.html49
-rw-r--r--tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child.html45
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-get-computed-style.html16
-rw-r--r--tests/wpt/tests/css/motion/animation/offset-path-interpolation-006.html55
-rw-r--r--tests/wpt/tests/css/motion/offset-path-shape-rect-002-ref.html1
-rw-r--r--tests/wpt/tests/css/motion/offset-path-shape-rect-002.html2
-rw-r--r--tests/wpt/tests/css/motion/offset-path-shape-rect-003-ref.html26
-rw-r--r--tests/wpt/tests/css/motion/offset-path-shape-rect-003.html31
-rw-r--r--tests/wpt/tests/css/motion/parsing/offset-path-computed.html10
-rw-r--r--tests/wpt/tests/css/motion/parsing/offset-path-parsing-invalid.html4
-rw-r--r--tests/wpt/tests/css/motion/parsing/offset-path-parsing-valid.html7
-rw-r--r--tests/wpt/tests/css/support/interpolation-testcommon.js16
-rw-r--r--tests/wpt/tests/dom/events/scrolling/overscroll-deltas.html6
-rw-r--r--tests/wpt/tests/dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html85
-rw-r--r--tests/wpt/tests/dom/parts/basic-dom-part-objects.tentative.html162
-rw-r--r--tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html8
-rw-r--r--tests/wpt/tests/editing/run/undo-redo.html5
-rw-r--r--tests/wpt/tests/fenced-frame/fence-report-event-destination-url.https.html42
-rw-r--r--tests/wpt/tests/fetch/fetch-later/META.yml3
-rw-r--r--tests/wpt/tests/fetch/fetch-later/README.md3
-rw-r--r--tests/wpt/tests/fetch/fetch-later/basic.tentative.https.window.js13
-rw-r--r--tests/wpt/tests/fetch/fetch-later/non-secure.window.js8
-rw-r--r--tests/wpt/tests/fetch/private-network-access/iframe.tentative.https.window.js113
-rw-r--r--tests/wpt/tests/fetch/private-network-access/resources/fenced-frame-local-network-access.https.html12
-rw-r--r--tests/wpt/tests/fetch/private-network-access/resources/support.sub.js10
-rw-r--r--tests/wpt/tests/forced-colors-mode/forced-colors-mode-14-ref.html4
-rw-r--r--tests/wpt/tests/forced-colors-mode/forced-colors-mode-14.html25
-rw-r--r--tests/wpt/tests/forced-colors-mode/forced-colors-mode-53-ref.html2
-rw-r--r--tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.js21
-rw-r--r--tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html64
-rw-r--r--tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html56
-rw-r--r--tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html49
-rw-r--r--tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html49
-rw-r--r--tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html47
-rw-r--r--tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html48
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math-ref.html19
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html20
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.disconnected-ref.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-ref.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.disconnected.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.condensed.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.condensed.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.expanded.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.expanded.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.extra-condensed.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.extra-condensed.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.extra-expanded.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.extra-expanded.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.normal.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.normal.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.semi-condensed.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.semi-condensed.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.semi-expanded.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.semi-expanded.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.ultra-condensed.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.ultra-condensed.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.ultra-expanded.html (renamed from tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.ultra-expanded.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas_text_font_001-ref.htm (renamed from tests/wpt/tests/html/canvas/element/manual/text-styles/canvas_text_font_001-ref.htm)0
-rw-r--r--tests/wpt/tests/html/canvas/element/manual/text/canvas_text_font_001.htm (renamed from tests/wpt/tests/html/canvas/element/manual/text-styles/canvas_text_font_001.htm)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text-styles/2d.text.measure.width.space.html47
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.align.default.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.default.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.align.invalid.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.invalid.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.align.valid.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.valid.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.baseline.default.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.default.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.baseline.invalid.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.invalid.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.baseline.valid.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.valid.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.center.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.end.ltr.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html)36
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.end.rtl.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html)36
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.left.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.right.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.start.ltr.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html)36
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.start.rtl.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html)36
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.alphabetic.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.bottom.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.hanging.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.ideographic.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.middle.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.top.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.top.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.basic-manual.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.basic.png (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png)bin1137 -> 1137 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.NaN.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.bound.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html)28
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html)28
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.large-manual.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.large.png (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png)bin1137 -> 1137 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.negative.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.small.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.zero.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.rtl-manual.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.rtl.png (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png)bin1137 -> 1137 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.unaffected.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html)28
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.notinpage.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html)28
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.repeat.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html)26
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.kern.consistent-manual.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.basic.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html)24
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.end.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html)26
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.nonspace.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html)24
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.other.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html)24
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.space.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html)24
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.start.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html)24
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.basic-manual.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.basic.png (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png)bin1634 -> 1634 bytes
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.unaffected.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.absolute.spacing.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.absolute.spacing.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.font-relative.spacing.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.font-relative.spacing.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontKerning.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontKerning.with.uppercase.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontStretch.settings.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontStretch.settings.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontVariant.settings.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.invalid.spacing.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.letterSpacing.change.font.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html)4
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.letterSpacing.measure.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html)19
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.direction.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html)4
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.rtl.text.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html)11
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.textAlign.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html)4
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.nonfinite.spacing.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.textRendering.settings.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.wordSpacing.change.font.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.wordSpacing.measure.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html)19
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.default.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.default.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.basic.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.basic.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.complex.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.complex.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.complex2.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.complex2.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.family.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.family.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.invalid.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.invalid.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.size.percentage.default.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.size.percentage.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html)2
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.system.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.system.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.tiny.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.tiny.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.font.relative_size.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.relative_size.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.actualBoundingBox.html61
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.advances.html52
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.baselines.html45
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights.html45
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.ahem.html42
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.html44
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.basic.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html)34
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.empty.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html)24
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.space.html43
-rw-r--r--tests/wpt/tests/html/canvas/element/text/direction-inherit-rtl.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/direction-ltr.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-ltr.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/direction-rtl.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/fontVariantCaps-1.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-1.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/fontVariantCaps-2.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-2.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/fontVariantCaps-3.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-3.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/fontVariantCaps-4.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-4.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/fontVariantCaps-5.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-5.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/fontVariantCaps-6.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-6.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/parent-style-relative-units.html (renamed from tests/wpt/tests/html/canvas/element/text-styles/parent-style-relative-units.html)1
-rw-r--r--tests/wpt/tests/html/canvas/element/text/reference/direction-default-ref.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-default-ref.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/reference/direction-rtl-ref.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-1-ref.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-1-ref.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-2-ref.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-2-ref.html)0
-rw-r--r--tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-3-ref.html (renamed from tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-3-ref.html)0
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html41
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js42
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html41
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js42
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html41
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js42
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html41
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js42
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.html39
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js40
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html33
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js34
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html33
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js34
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html1
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js1
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.html33
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html33
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js34
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html37
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js38
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js34
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.html29
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js30
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html31
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js32
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html29
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js30
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html29
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js30
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html29
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js30
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html29
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js30
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html1
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js1
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.html (renamed from tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html)22
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html51
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js46
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.js (renamed from tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js)20
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html1
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js1
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html1
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js1
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.html (renamed from tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html)22
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html51
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js46
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.js (renamed from tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js)20
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html69
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js64
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.html49
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.worker.js50
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.html35
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js36
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html35
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js36
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.html31
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.js27
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html33
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js34
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.html29
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js30
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.html21
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js22
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.html29
-rw-r--r--tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js30
-rw-r--r--tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml15
-rw-r--r--tests/wpt/tests/html/canvas/tools/name2dir.yaml15
-rw-r--r--tests/wpt/tests/html/canvas/tools/templates/testharness_element.html15
-rw-r--r--tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml (renamed from tests/wpt/tests/html/canvas/tools/yaml/offscreen/text.yaml)1404
-rw-r--r--tests/wpt/tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml1077
-rw-r--r--tests/wpt/tests/html/canvas/tools/yaml/element/meta.yaml2
-rw-r--r--tests/wpt/tests/html/canvas/tools/yaml/element/text-styles.yaml457
-rw-r--r--tests/wpt/tests/html/infrastructure/urls/base-url/matches-about-blank-base-url.window.js29
-rw-r--r--tests/wpt/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html5
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size-ref.tentative.html9
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html14
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html19
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned.tentative.html23
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html3
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html10
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow.tentative.html14
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html2
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed.tentative.html2
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html13
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x.tentative.html16
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html3
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js29
-rw-r--r--tests/wpt/tests/lint.ignore2
-rw-r--r--tests/wpt/tests/mathml/presentation-markup/direction/direction.html8
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html15
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font.html20
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html79
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-fraktur.html85
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-italic-ref.html137
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-italic.html143
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-ref.html149
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-sans-serif-ref.html147
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-sans-serif.html153
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-script-ref.html79
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-script.html85
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold.html155
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-case-sensitivity-ref.html163
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-case-sensitivity.html168
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html25
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight.html30
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-ref.html114
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck.html120
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-fraktur-ref.html79
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-fraktur.html85
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-initial-ref.html47
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-initial.html53
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-italic-ref.html139
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-italic.html145
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-looped-ref.html54
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-looped.html60
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-monospace-ref.html89
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-monospace.html95
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic-ref.html137
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic.html143
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-italic-ref.html79
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-italic.html85
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-ref.html89
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif.html95
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-script-ref.html79
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-script.html85
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-stretched-ref.html50
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-stretched.html56
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-tailed-ref.html42
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/mathvariant-tailed.html48
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001-ref.html4
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001.html13
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002-ref.html12
-rw-r--r--tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002.html14
-rwxr-xr-xtests/wpt/tests/mathml/tools/mathvariant-transforms.py11
-rw-r--r--tests/wpt/tests/media-source/mse-for-webcodecs/tentative/mediasource-webcodecs-addsourcebuffer.html12
-rw-r--r--tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/simple-test-for-condition-main-resource.html3
-rw-r--r--tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js18
-rw-r--r--tests/wpt/tests/service-workers/service-worker/tentative/static-router/static-router-main-resource.https.html58
-rw-r--r--tests/wpt/tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html37
-rw-r--r--tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py14
-rw-r--r--tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js23
-rwxr-xr-xtests/wpt/tests/tools/ci/ci_built_diff.sh8
-rw-r--r--tests/wpt/tests/tools/ci/requirements_tc.txt2
-rw-r--r--tests/wpt/tests/tools/requirements_mypy.txt12
-rw-r--r--tests/wpt/tests/tools/requirements_tests.txt2
-rw-r--r--tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py4
-rw-r--r--tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py32
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py3
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py27
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py2
-rw-r--r--tests/wpt/tests/top-level-storage-access-api/tentative/requestStorageAccessFor.sub.https.window.js2
-rw-r--r--tests/wpt/tests/webcodecs/audio-decoder.https.any.js122
-rw-r--r--tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js155
-rw-r--r--tests/wpt/tests/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.helper.html23
-rw-r--r--tests/wpt/tests/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.https.html166
-rw-r--r--tests/wpt/tests/webcodecs/serialization.crossAgentCluster.serviceworker.js61
-rw-r--r--tests/wpt/tests/webcodecs/utils.js16
-rw-r--r--tests/wpt/tests/webcodecs/video-decoder.https.any.js63
-rw-r--r--tests/wpt/tests/webcodecs/video-encoder-config.https.any.js123
-rw-r--r--tests/wpt/tests/webcodecs/video-encoder.https.any.js10
-rw-r--r--tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html8
-rw-r--r--tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.serviceworker.js30
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/__init__.py14
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/__init__.py82
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/clip.py307
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py162
-rw-r--r--tests/wpt/tests/websockets/stream/tentative/abort.any.js16
-rw-r--r--tests/wpt/tests/websockets/stream/tentative/backpressure-receive.any.js2
-rw-r--r--tests/wpt/tests/websockets/stream/tentative/backpressure-send.any.js2
-rw-r--r--tests/wpt/tests/websockets/stream/tentative/close.any.js43
-rw-r--r--tests/wpt/tests/websockets/stream/tentative/constructor.any.js21
-rw-r--r--tests/wpt/tests/webtransport/close.https.any.js1
-rw-r--r--tests/wpt/tests/webtransport/connect.https.any.js1
610 files changed, 10219 insertions, 12749 deletions
diff --git a/tests/wpt/meta-legacy-layout/MANIFEST.json b/tests/wpt/meta-legacy-layout/MANIFEST.json
index 811b5a0e26f..c5caa281730 100644
--- a/tests/wpt/meta-legacy-layout/MANIFEST.json
+++ b/tests/wpt/meta-legacy-layout/MANIFEST.json
@@ -19997,7 +19997,34 @@
},
"canvas": {
"element": {
- "drawing-text-to-the-canvas": {
+ "manual": {
+ "drawing-paths-to-the-canvas": {
+ "canvas_focus_drawFocusIfNeeded_AAPI_001-manual.html": [
+ "bf38fa68b7d0bc0e51a685e0cf0a4c83f36e0419",
+ [
+ null,
+ {}
+ ]
+ ]
+ }
+ },
+ "shadows": {
+ "2d.shadow.blur.high-manual.html": [
+ "aae0a163bb152344592755b06f2e78e834092edd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.shadow.blur.low-manual.html": [
+ "9674d6f0dbaa856fb62ca3e28a15611aa84d476f",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
+ "text": {
"2d.text.draw.fill.basic-manual.html": [
"d3f5df9d018f58d112fb0afc7fe260638bc300a9",
[
@@ -20033,33 +20060,6 @@
{}
]
]
- },
- "manual": {
- "drawing-paths-to-the-canvas": {
- "canvas_focus_drawFocusIfNeeded_AAPI_001-manual.html": [
- "bf38fa68b7d0bc0e51a685e0cf0a4c83f36e0419",
- [
- null,
- {}
- ]
- ]
- }
- },
- "shadows": {
- "2d.shadow.blur.high-manual.html": [
- "aae0a163bb152344592755b06f2e78e834092edd",
- [
- null,
- {}
- ]
- ],
- "2d.shadow.blur.low-manual.html": [
- "9674d6f0dbaa856fb62ca3e28a15611aa84d476f",
- [
- null,
- {}
- ]
- ]
}
},
"offscreen": {
@@ -152268,7 +152268,7 @@
]
],
"system-color-hightlights-vs-getSelection-001.html": [
- "7223ecdc92599db1334b747bb4b5b0605b8cc131",
+ "12495cd7adbcffa40b27d5d874e4e1040596dd96",
[
null,
[
@@ -152280,6 +152280,19 @@
{}
]
],
+ "system-color-hightlights-vs-getSelection-002.html": [
+ "f4025cd3f0382a11875d322d2d9e89b8704b4a00",
+ [
+ null,
+ [
+ [
+ "/css/css-color/reference/system-color-hightlights-vs-getSelection-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"t31-color-currentColor-b.xht": [
"b4ff486168877f9eb7326bb8648b0d19abc5d8ff",
[
@@ -160301,6 +160314,19 @@
{}
]
],
+ "counter-scoping-004.html": [
+ "3aad43f8535a5a222dc710db59c77deefe2b2390",
+ [
+ null,
+ [
+ [
+ "/css/css-contain/reference/counter-scoping-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"quote-scoping-001.html": [
"8c38e45b1ace138cbb795c77fdece555967e043d",
[
@@ -182282,6 +182308,32 @@
]
},
"math-script-level-and-math-style": {
+ "font-size-math-001.tentative.html": [
+ "b9964985600f01aa38e9fdf32cfe5f33a835d052",
+ [
+ null,
+ [
+ [
+ "/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "font-size-math-002.tentative.html": [
+ "7491409f2fa1e15397be8c96cfd68a9e594893ed",
+ [
+ null,
+ [
+ [
+ "/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"math-script-level-003.tentative.html": [
"47b67aa8a819d3c75d205ce493f753108f767829",
[
@@ -191460,6 +191512,19 @@
{}
]
],
+ "independent-tracks-from-parent-grid.html": [
+ "d7647eaafb978d9c986849d53fb55e97449a071b",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"item-percentage-height-001.html": [
"15e996ea3264e4147d8c3e37b464303647ac3e0e",
[
@@ -202740,6 +202805,19 @@
{}
]
],
+ "clip-path-rect-interpolation-001.html": [
+ "f204fb953ad41e469c245e2f378335c4f1572efb",
+ [
+ null,
+ [
+ [
+ "/css/css-masking/clip-path/animations/clip-path-xywh-interpolation-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"clip-path-shape-interpolation-001.html": [
"dae7f24d37cb39b34728664a2d854dfd53bc8c48",
[
@@ -204151,6 +204229,61 @@
{}
]
],
+ "clip-path-rect-001.html": [
+ "1645d45829946a5dfd149ec0d28bfaa049c97c4f",
+ [
+ null,
+ [
+ [
+ "/css/css-masking/clip-path/reference/clip-path-rectangle-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "clip-path-rect-002.html": [
+ "c9032e0a5bb0400529b8d6e82f01610f8b05857b",
+ [
+ null,
+ [
+ [
+ "/css/css-masking/clip-path/reference/clip-path-rectangle-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "clip-path-rect-003.html": [
+ "d61dce8c233c81b08307f4ea364cb49c399bcbd2",
+ [
+ null,
+ [
+ [
+ "/css/css-masking/clip-path/reference/clip-path-xywh-003-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 30
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"clip-path-reference-box-001.html": [
"35b31ebaef1fc184e7f4e6202093d650e6b1db65",
[
@@ -216792,7 +216925,7 @@
},
"overlay": {
"overlay-transition-backdrop-entry.html": [
- "7db33eb85dea74e2c50a3e07e26f98eb97670afc",
+ "8737dc58f92ae012abd9b42785450a1c22b4c35b",
[
null,
[
@@ -216805,7 +216938,7 @@
]
],
"overlay-transition-backdrop.html": [
- "fde933da5dbbbdbd769262944446e1c3f4416a91",
+ "30d40e111f9b676831f9b0cad8e4fb0c86ad4e40",
[
null,
[
@@ -216818,7 +216951,7 @@
]
],
"overlay-transition-finished.html": [
- "b2322389d06f102d5ee06e6979ab9fc1b140aa76",
+ "7e22cb3cf64b9f4840573f35495aa9ed22918f1b",
[
null,
[
@@ -216831,7 +216964,7 @@
]
],
"overlay-transition-in-rendering.html": [
- "dc1b9ffe20caaa6480c800f79fd104d7fba92cc9",
+ "0ada33c33cec13f57fa71a26d8e5bf1017125831",
[
null,
[
@@ -216844,7 +216977,7 @@
]
],
"overlay-transition-out-rendering.html": [
- "fea03951c5e9ae7062301f1bb1af75507ba76af3",
+ "abb01faef7ea994f4abb826ba590031472acbf22",
[
null,
[
@@ -282638,6 +282771,52 @@
}
]
],
+ "capture-with-offscreen-child-translated.html": [
+ "1aa994762eff3143a453adf724dd79c001b5f75e",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/capture-with-offscreen-child-translated-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "capture-with-offscreen-child.html": [
+ "9701524a29512212cdb4d3d54c8338acb9de8132",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/capture-with-offscreen-child-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ [
+ "/css/css-view-transitions/capture-with-offscreen-child.html",
+ "/css/css-view-transitions/capture-with-offscreen-child-ref.html",
+ "=="
+ ],
+ [
+ [
+ 0,
+ 5
+ ],
+ [
+ 0,
+ 200
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"capture-with-opacity-zero-child.html": [
"adcef1b4c5a528481521edc48b53d0f0b9f8c217",
[
@@ -305425,7 +305604,7 @@
]
],
"offset-path-shape-rect-002.html": [
- "c7b60b3660ba7332efa9a95d8b699ebba1cbea95",
+ "114143b18d1440caa926f54ca8ac35d57c0d3457",
[
null,
[
@@ -305434,6 +305613,35 @@
"=="
]
],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 96
+ ],
+ [
+ 0,
+ 440
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "offset-path-shape-rect-003.html": [
+ "597cdb372681008117e41c5d0ea1fbb53cb4c605",
+ [
+ null,
+ [
+ [
+ "/css/motion/offset-path-shape-rect-003-ref.html",
+ "=="
+ ]
+ ],
{}
]
],
@@ -310155,7 +310363,7 @@
]
],
"forced-colors-mode-14.html": [
- "c57193e99dbe5fb27be6082788f8fcb0c5b2ac2f",
+ "3ecc082d7bcaa34d1b1f204be9c1680bca42b8df",
[
null,
[
@@ -310595,125 +310803,6 @@
{}
]
],
- "drawing-text-to-the-canvas": {
- "direction-inherit-rtl.html": [
- "0ad92181a06acfdd4ca1d553b5fc7dfa4970f001",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "direction-ltr.html": [
- "42a39ac589c6da944af4cfc450675044d619be3f",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/direction-default-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "direction-rtl.html": [
- "3cc67c69f585f88dce6e4db4518c4016d5f39b03",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-1.html": [
- "3240476ad0f03e9a1b3f37a242fe781b2a46d613",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-1-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-2.html": [
- "cbcb73b231ce9051cb1386e366a241dc980bc05c",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-2-ref.html",
- "!="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-3.html": [
- "8c0761121efb0bfbdda0871d7d735ceeb5105cd3",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-3-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-4.html": [
- "62fe241838b2a9ab5d1656a4165266232fb4ec0d",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-3-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-5.html": [
- "a21169f8bb64781ca5235cfedcde562a3c8f85e3",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-1-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-6.html": [
- "6126c4e7b2f3ebf17e1fa8e79947750be1728beb",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-2-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ]
- },
"filters": {
"2d.filter.canvasFilterObject.dropShadow.tentative.html": [
"09eb09473d15d30bfd7faa9f20ae4044c13e122c",
@@ -311545,146 +311634,13 @@
}
},
"drawing-text-to-the-canvas": {
- "canvas.2d.disconnected.html": [
- "a1715f6663c96289adac6db909035020b6640d1c",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-ref.html",
- "=="
- ]
- ],
- {
- "fuzzy": [
- [
- null,
- [
- [
- 0,
- 23
- ],
- [
- 0,
- 829
- ]
- ]
- ]
- ]
- }
- ]
- ],
- "canvas.2d.fontStretch.condensed.html": [
- "72db41f007a503f5767b2f3a1812397cd74bad8c",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.expanded.html": [
- "8a13ba13fcb633b4d1176fb3e2f31cb9ddf26dca",
+ "canvas.2d.disconnected-font-size-math.html": [
+ "2cecff68f113c1330637e83dd8e36feff000ecce",
[
null,
[
[
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.extra-condensed.html": [
- "afa910f62cef05a60a1398828069d5752be17fa8",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.extra-expanded.html": [
- "d10d4d931256cd827348162d7fb7c7a454f181ec",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.normal.html": [
- "e8fd66acad92fd00175bfbe77971f6312129d84e",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.semi-condensed.html": [
- "2ac97195958a3b979eb839cfce7016073f667f72",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.semi-expanded.html": [
- "3c9fa278947331ea355d4a60081a52f06ba155f4",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.ultra-condensed.html": [
- "2b0426e976d97beca8873d2eb663c61d0ebb14f5",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.ultra-expanded.html": [
- "5b4979de864b0dcac967a8bae61b265546323a3f",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
+ "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math-ref.html",
"=="
]
],
@@ -312114,14 +312070,160 @@
]
]
},
- "text-styles": {
+ "text": {
+ "canvas.2d.disconnected.html": [
+ "a1715f6663c96289adac6db909035020b6640d1c",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.disconnected-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 23
+ ],
+ [
+ 0,
+ 829
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "canvas.2d.fontStretch.condensed.html": [
+ "72db41f007a503f5767b2f3a1812397cd74bad8c",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.expanded.html": [
+ "8a13ba13fcb633b4d1176fb3e2f31cb9ddf26dca",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.extra-condensed.html": [
+ "afa910f62cef05a60a1398828069d5752be17fa8",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.extra-expanded.html": [
+ "d10d4d931256cd827348162d7fb7c7a454f181ec",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.normal.html": [
+ "e8fd66acad92fd00175bfbe77971f6312129d84e",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.semi-condensed.html": [
+ "2ac97195958a3b979eb839cfce7016073f667f72",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.semi-expanded.html": [
+ "3c9fa278947331ea355d4a60081a52f06ba155f4",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.ultra-condensed.html": [
+ "2b0426e976d97beca8873d2eb663c61d0ebb14f5",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.ultra-expanded.html": [
+ "5b4979de864b0dcac967a8bae61b265546323a3f",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"canvas_text_font_001.htm": [
"923ce71c077c99e61678f1b97759f871324eba03",
[
null,
[
[
- "/html/canvas/element/manual/text-styles/canvas_text_font_001-ref.htm",
+ "/html/canvas/element/manual/text/canvas_text_font_001-ref.htm",
"=="
]
],
@@ -312237,6 +312339,125 @@
{}
]
]
+ },
+ "text": {
+ "direction-inherit-rtl.html": [
+ "0ad92181a06acfdd4ca1d553b5fc7dfa4970f001",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/direction-rtl-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "direction-ltr.html": [
+ "42a39ac589c6da944af4cfc450675044d619be3f",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/direction-default-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "direction-rtl.html": [
+ "3cc67c69f585f88dce6e4db4518c4016d5f39b03",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/direction-rtl-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-1.html": [
+ "3240476ad0f03e9a1b3f37a242fe781b2a46d613",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-2.html": [
+ "cbcb73b231ce9051cb1386e366a241dc980bc05c",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-2-ref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-3.html": [
+ "8c0761121efb0bfbdda0871d7d735ceeb5105cd3",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-3-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-4.html": [
+ "62fe241838b2a9ab5d1656a4165266232fb4ec0d",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-3-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-5.html": [
+ "a21169f8bb64781ca5235cfedcde562a3c8f85e3",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-6.html": [
+ "6126c4e7b2f3ebf17e1fa8e79947750be1728beb",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-2-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ]
}
},
"offscreen": {
@@ -318790,6 +319011,32 @@
]
},
"the-selectmenu-element": {
+ "selectmenu-explicit-size.tentative.html": [
+ "8c09f6c88964d5e72c54539a6fa1338043023e33",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "selectmenu-marker-end-aligned.tentative.html": [
+ "a419108e3d2fdd93a1e1d1508a0aa3311fda3a8a",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectmenu-marker-part.tentative.html": [
"b6e94c947a42730b99c33d6cf2b3b5cf77b601ae",
[
@@ -318816,8 +319063,21 @@
{}
]
],
+ "selectmenu-marker-visible-overflow.tentative.html": [
+ "6d39f6f3c50107fe3fcedf3b04bc4bd32dab2564",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectmenu-option-arbitrary-content-displayed.tentative.html": [
- "05bc651cb7cb3468e4c8e8e5fdda7e47aaaed874",
+ "416f2dc2ac0aa598fb59fc3d1adc7c7fb08e7b4e",
[
null,
[
@@ -318842,6 +319102,19 @@
{}
]
],
+ "selectmenu-overflow-x.tentative.html": [
+ "0e0c3dba5e852d87272931e1418cf7f6465ef64e",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectmenu-selected-value-behavior.tentative.html": [
"799b445114120284e67498c650bb4951496478c2",
[
@@ -323568,123 +323841,6 @@
{}
]
],
- "mathvariant-basic-transforms-with-default-font.html": [
- "24c868c49512a4805bcde64df8f59325cd741f59",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold-fraktur.html": [
- "32d037603bcda2a4ef84aa367c50089ae05b337a",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold-italic.html": [
- "725559a571f471f3c6384e87a29069f28d4a88c1",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-italic-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold-sans-serif.html": [
- "0e0662dff660445f6f8f90deac545e9a08492ea6",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-sans-serif-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold-script.html": [
- "0e775949f9b8034ad87d3bf42d8c97f48e9498ce",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-script-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold.html": [
- "db5f4755bec1d07c41324a7f14086679fef20700",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-case-sensitivity.html": [
- "21c8300a7a7a584b36083fbb430b193237bf97b6",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-case-sensitivity-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-double-struck-font-style-font-weight.html": [
- "2e283e1d7022d69eeee89d85ad562586a5aacd4b",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-double-struck.html": [
- "335234ac3858cbf08c54525defbeea08a0d040c6",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-double-struck-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"mathvariant-font-style-font-weight.html": [
"793c687b097e1076b80d22b15be764c8f7db392d",
[
@@ -323698,149 +323854,6 @@
{}
]
],
- "mathvariant-fraktur.html": [
- "9c95cd06e710d8e275ef600156594ca4d9e2d288",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-fraktur-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-initial.html": [
- "3b0263a1977fbe14c287ef122caa2748c0ef7ed4",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-initial-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-italic.html": [
- "1e6aa6512d326109525044379eaab4a064c4ab13",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-italic-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-looped.html": [
- "b208849368b382caa9f44ca9d21be7db5f2fd508",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-looped-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-monospace.html": [
- "ad5541fe0ecf22ea6ac5d3f8325d96681c47738d",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-monospace-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-sans-serif-bold-italic.html": [
- "d51afe434546357fc8b2ecce9aeef5d2ac680a1a",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-sans-serif-italic.html": [
- "e847ca9bb8d583a4413d589fa47e5bd4c4df54f5",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-sans-serif-italic-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-sans-serif.html": [
- "43a1fa821f3a32e36b9b85e6702a1279b475b8c3",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-sans-serif-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-script.html": [
- "afbdfd9f946d51f4d37f1a4b9087cf801bc7ee32",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-script-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-stretched.html": [
- "99b06fb41be76e6f1adafff6cde98631f2a1e0e6",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-stretched-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-tailed.html": [
- "43fbca5e80d6f2e462d25e532ad526b7019fff7d",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-tailed-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"mi-fontstyle-fontweight.html": [
"b6dd05ea20cb5cbb9c6921f0fe961b11cebd737c",
[
@@ -323924,7 +323937,7 @@
]
},
"presentational-hints-001.html": [
- "842d04b40af759533fe79eddd7cfb262049a196c",
+ "96ee69541bc7d6008d51574123ac5476592d7d99",
[
null,
[
@@ -323937,7 +323950,7 @@
]
],
"presentational-hints-002.html": [
- "fc89b07a37bd5c0b93b2385f237b4cb79a3ab478",
+ "8bb9153b863e91da7f239d7aad8bc623d34696b3",
[
null,
[
@@ -335435,7 +335448,7 @@
[]
],
"test_utils.sub.js": [
- "cce3060a87822861408235ec4902f6ea1688d830",
+ "712c57cbb7ebd7c2e48c9ccd9577e4028f1651bf",
[]
]
}
@@ -335616,14 +335629,54 @@
],
"resources": {
"check-client-hints.py": [
- "f5172300028711ca36c1812230d4ce0148cb0390",
+ "4fc4c331f2cdae227e8bbdbe21885fad42322287",
[]
],
"clear-site-data.py": [
"fd16be9fbcb0ffba3c440b5525e0580efd088f37",
[]
]
- }
+ },
+ "set-client-hints-after-clear-all.https.html.headers": [
+ "9768d865bc40974c031623993720dd090f39a686",
+ []
+ ],
+ "set-client-hints-after-clear-cache.https.html.headers": [
+ "bb61032edea2904eb2f3166835cc8f9f8126149c",
+ []
+ ],
+ "set-client-hints-after-clear-client-hints.https.html.headers": [
+ "e815201076e192c1ccc08f74d263249f9bc55315",
+ []
+ ],
+ "set-client-hints-after-clear-cookies.https.html.headers": [
+ "d0c1afae775b3ca3a2b97adaca25462de2fe3b3e",
+ []
+ ],
+ "set-client-hints-after-clear-storage.https.html.headers": [
+ "d898684cacaef6c23c5aef555b24036fe338e8e7",
+ []
+ ],
+ "set-critical-client-hints-after-clear-all.https.html.headers": [
+ "ebd7a88cc6ce0060d6028cd49c5d3b56bf4c87ad",
+ []
+ ],
+ "set-critical-client-hints-after-clear-cache.https.html.headers": [
+ "03d39b6fd753cffb42b98f864a5cd0992a2be729",
+ []
+ ],
+ "set-critical-client-hints-after-clear-client-hints.https.html.headers": [
+ "f55913cb5b6591d6cfac3e43e2e8bacc280d3af8",
+ []
+ ],
+ "set-critical-client-hints-after-clear-cookies.https.html.headers": [
+ "69c7e720ac0b91b6c786c4c1e610e1f7ad4e745f",
+ []
+ ],
+ "set-critical-client-hints-after-clear-storage.https.html.headers": [
+ "0f18541cf7bd81a1e28a6b979a960fd7e105bb72",
+ []
+ ]
},
"critical-ch": {
"critical-ch.navigation-timing.restart.https.html.headers": [
@@ -336053,7 +336106,7 @@
],
"resources": {
"helpers.js": [
- "4e024a1908528f66e05cea30a470594b07cf092b",
+ "08da0496b3091e9628c577bee20b81da44e6f57b",
[]
]
}
@@ -356796,7 +356849,7 @@
},
"cookie-store": {
"META.yml": [
- "46da8a9fb654cc685e1ba928d2b7adef9c20d4c8",
+ "68c30024552f526e2d34f42eb22416ac3b585114",
[]
],
"README.md": [
@@ -378970,7 +379023,11 @@
],
"reference": {
"system-color-hightlights-vs-getSelection-001-ref.html": [
- "1792869411b1d0aa9f418da53e17fd15762a7a64",
+ "c5d48b4c9f02794779f641bda31c65cafe82620b",
+ []
+ ],
+ "system-color-hightlights-vs-getSelection-002-ref.html": [
+ "67bec9a57e735cd9bee6df099e88a5705af54ed0",
[]
]
},
@@ -380157,6 +380214,10 @@
"49e7b85e878b78af41690bb815bb30a450820598",
[]
],
+ "counter-scoping-004-ref.html": [
+ "f6d8e38fd5f67dc4113a1f80ee57aac9e180089d",
+ []
+ ],
"pass_if_pass_below_clipped.html": [
"044783d1e5488a612d46dca6397346619b539c7b",
[]
@@ -384889,6 +384950,14 @@
]
},
"math-script-level-and-math-style": {
+ "font-size-math-001.tentative-ref.html": [
+ "45e72ffcf57d48778fb8a66a6e678ed6aee8b359",
+ []
+ ],
+ "font-size-math-002.tentative-ref.html": [
+ "caf4183693e4a99f1b41b8bcb1f33ab9aec25137",
+ []
+ ],
"math-script-level-003.tentative-ref.html": [
"d73e71f41c90154f7d72e63c86aa268bd3424c9a",
[]
@@ -398022,7 +398091,7 @@
],
"resources": {
"utils.js": [
- "be51111fd37357e81596b8fbaba8c7a8e7a5093b",
+ "fc3a5993cf566559505c1b92c6ff08d2e9484ad0",
[]
]
},
@@ -409266,6 +409335,14 @@
"859abdfb5f259021120d3810fa3fadce8be968c5",
[]
],
+ "capture-with-offscreen-child-ref.html": [
+ "b8ebf1d0e2fe3ec7e31082c29ae748707778325f",
+ []
+ ],
+ "capture-with-offscreen-child-translated-ref.html": [
+ "d724d0b7f9fa17c48b119279023309fb89ba392a",
+ []
+ ],
"capture-with-visibility-hidden-child-ref.html": [
"10067cc5212f467b6d6b62d7344d3b3a8c4dcaac",
[]
@@ -413797,7 +413874,11 @@
[]
],
"offset-path-shape-rect-002-ref.html": [
- "7e9e07cccf3d26c8090ba98ee788565eca799b07",
+ "bc28974cb5c2d1e2f3396b64c6edf6aac6a2645c",
+ []
+ ],
+ "offset-path-shape-rect-003-ref.html": [
+ "1c742650915aa2b8c23f883a9f765cf58eb15077",
[]
],
"offset-path-shape-xywh-001-ref.html": [
@@ -414721,7 +414802,7 @@
[]
],
"interpolation-testcommon.js": [
- "7934127937674e35f0a4c8be9f3e53b2b24a0c28",
+ "115067465feed31358f6d417e0208e3663589113",
[]
],
"numeric-testcommon.js": [
@@ -419797,6 +419878,16 @@
]
}
},
+ "fetch-later": {
+ "META.yml": [
+ "f8fd46bec3e7d4750c627f2fa6149f5b7b675429",
+ []
+ ],
+ "README.md": [
+ "661e2b918438fabcdee9e160f79ba8dddb2877d4",
+ []
+ ]
+ },
"h1-parsing": {
"README.md": [
"487a892dcffb09acb8bfa8e369757ed51fa17947",
@@ -420270,7 +420361,7 @@
[]
],
"fenced-frame-local-network-access.https.html": [
- "860371f22396477f1af1a8d89aecf04893977222",
+ "98f118432e0ee13b8b089977bd3c640343005497",
[]
],
"fenced-frame-local-network-access.https.html.headers": [
@@ -420322,7 +420413,7 @@
[]
],
"support.sub.js": [
- "f72a57a2c35d2555fb5452c9cbb0bcb777251765",
+ "27d733d8b7f4c09df054982a42779520fbbd0d7d",
[]
],
"worker-blob-fetcher.html": [
@@ -421588,7 +421679,7 @@
[]
],
"forced-colors-mode-14-ref.html": [
- "910b19df036d7e8a477ff41cd73d0fc0f8d51951",
+ "a1dc6851c9acc97c3d9f1b313962f01846587615",
[]
],
"forced-colors-mode-17-ref.html": [
@@ -421696,7 +421787,7 @@
[]
],
"forced-colors-mode-53-ref.html": [
- "443bc21680bcfae65c70fc3bbd2bf2b0a0282f41",
+ "6bfa7710fa337ffba4edf0c33d916d30aa675610",
[]
],
"resources": {
@@ -424389,46 +424480,6 @@
[]
]
},
- "drawing-text-to-the-canvas": {
- "2d.text.draw.fill.basic.png": [
- "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
- []
- ],
- "2d.text.draw.fill.maxWidth.large.png": [
- "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
- []
- ],
- "2d.text.draw.fill.rtl.png": [
- "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
- []
- ],
- "2d.text.draw.stroke.basic.png": [
- "fb3b5b830d345d2aa858e41673e08f99977baf08",
- []
- ],
- "reference": {
- "direction-default-ref.html": [
- "cef6df259c4801e93e7ce8dd1692e6f3157d77bc",
- []
- ],
- "direction-rtl-ref.html": [
- "010526d667b0746a014aa5706b19c001cd16d67e",
- []
- ],
- "fontVariantCaps-1-ref.html": [
- "8ea3c22be13dd3bf1421c3f80b121edcc8b2d3bc",
- []
- ],
- "fontVariantCaps-2-ref.html": [
- "c64f5d0ec2aea8307ea4ba5257498f2f236186e6",
- []
- ],
- "fontVariantCaps-3-ref.html": [
- "069fbfba8823e3e0f5fcf7ada4bd600b6dce1bbd",
- []
- ]
- }
- },
"fill-and-stroke-styles": {
"2d.fillStyle.parse.css-color-4-hsl-1.png": [
"2733836c998fa919d9f6880fd96a32026e82ca2c",
@@ -425027,12 +425078,8 @@
}
},
"drawing-text-to-the-canvas": {
- "canvas.2d.disconnected-ref.html": [
- "b36d29b97f5e3b0065ea13ca008ce0054835efdc",
- []
- ],
- "canvas.2d.fontStretch-ref.html": [
- "00ecdccad3743db0d0a1ec99850f80ea7964d512",
+ "canvas.2d.disconnected-font-size-math-ref.html": [
+ "6c5dab9f41331a77be8be8e59b17adec6f1909ee",
[]
]
},
@@ -425192,7 +425239,15 @@
[]
]
},
- "text-styles": {
+ "text": {
+ "canvas.2d.disconnected-ref.html": [
+ "b36d29b97f5e3b0065ea13ca008ce0054835efdc",
+ []
+ ],
+ "canvas.2d.fontStretch-ref.html": [
+ "00ecdccad3743db0d0a1ec99850f80ea7964d512",
+ []
+ ],
"canvas_text_font_001-ref.htm": [
"1a19757e001541f72bf375bd49c595d5a6ce85b0",
[]
@@ -425642,6 +425697,46 @@
"8764e89b371d41428f0ba45d9c0391e41b0dd8a2",
[]
]
+ },
+ "text": {
+ "2d.text.draw.fill.basic.png": [
+ "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+ []
+ ],
+ "2d.text.draw.fill.maxWidth.large.png": [
+ "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+ []
+ ],
+ "2d.text.draw.fill.rtl.png": [
+ "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+ []
+ ],
+ "2d.text.draw.stroke.basic.png": [
+ "fb3b5b830d345d2aa858e41673e08f99977baf08",
+ []
+ ],
+ "reference": {
+ "direction-default-ref.html": [
+ "cef6df259c4801e93e7ce8dd1692e6f3157d77bc",
+ []
+ ],
+ "direction-rtl-ref.html": [
+ "010526d667b0746a014aa5706b19c001cd16d67e",
+ []
+ ],
+ "fontVariantCaps-1-ref.html": [
+ "8ea3c22be13dd3bf1421c3f80b121edcc8b2d3bc",
+ []
+ ],
+ "fontVariantCaps-2-ref.html": [
+ "c64f5d0ec2aea8307ea4ba5257498f2f236186e6",
+ []
+ ],
+ "fontVariantCaps-3-ref.html": [
+ "069fbfba8823e3e0f5fcf7ada4bd600b6dce1bbd",
+ []
+ ]
+ }
}
},
"offscreen": {
@@ -425998,7 +426093,7 @@
[]
],
"name2dir-canvas.yaml": [
- "c3818ebc76e8d85636ed298a580ec14f8253a6fa",
+ "2ad5197d34c166a15f7f19db2e74affc9e8d8c77",
[]
],
"name2dir-offscreen.yaml": [
@@ -426006,7 +426101,7 @@
[]
],
"name2dir.yaml": [
- "d6871f285298ee7051634a3404ce3bb67c8546a2",
+ "a56fc2ff488e80b78c2c40649869e08bf384fd68",
[]
],
"templates": {
@@ -426027,7 +426122,7 @@
[]
],
"testharness_element.html": [
- "b6bda2835e271e7cfa12bfc688e851caa9028644",
+ "56cde7936a944771ab5026de71191b45f529d559",
[]
],
"testharness_offscreen.html": [
@@ -426045,16 +426140,8 @@
],
"yaml": {
"element": {
- "drawing-text-to-the-canvas.yaml": [
- "5d050477af1ad358eb40cc88b23389ba68d9d19a",
- []
- ],
"meta.yaml": [
- "e8c425042668653f6908e6cf25ad6bf658aeb2f5",
- []
- ],
- "text-styles.yaml": [
- "ee319c4fef183405b9bd855644941c32f995f833",
+ "7b6f28f1713f19c601be350e7ffa12a76f08a42e",
[]
],
"the-canvas-element.yaml": [
@@ -426067,10 +426154,6 @@
"bd761937f40e8796f6192e09741c1c2bccf3df2d",
[]
],
- "text.yaml": [
- "b66ae4f82068061bb3b635b2d387219f245708c5",
- []
- ],
"the-offscreen-canvas.yaml": [
"0bef18bf9d56acccb5a747a791bc038c61857f48",
[]
@@ -426134,6 +426217,10 @@
"366ac0b6072dfaa9de58abbda84525d9fe1806d1",
[]
],
+ "text.yaml": [
+ "88a9a281c404434892c68ae1dbfdbc801bc552a4",
+ []
+ ],
"the-canvas-state.yaml": [
"045208615436efec1596a2f14cb62f02fa8e470a",
[]
@@ -433630,22 +433717,38 @@
]
},
"the-selectmenu-element": {
+ "selectmenu-explicit-size-ref.tentative.html": [
+ "53296f6daac135bfd6a6a5ace7dbb8e102779561",
+ []
+ ],
+ "selectmenu-marker-end-aligned-ref.tentative.html": [
+ "5985df5936bcece5d206527b9030c60b2a8507f6",
+ []
+ ],
"selectmenu-marker-part-ref.html": [
"cec447509eba28a17ca10636744e448ba64c5cb5",
[]
],
"selectmenu-marker-slot-ref.html": [
- "a35fcd9480067e3121af32cd3b6f895d66b02042",
+ "54bdefb76192c5bd138695dae630676fdd2b292e",
+ []
+ ],
+ "selectmenu-marker-visible-overflow-ref.tentative.html": [
+ "674de192e4c43c7fe9b1869e92f4f80b6e43957f",
[]
],
"selectmenu-option-arbitrary-content-displayed-ref.tentative.html": [
- "171829d90f3f28a5ee5e5229086d18fd50b61289",
+ "c890bb63f1bdd4041fc94e869bcfc88f927ff534",
[]
],
"selectmenu-option-arbitrary-content-not-displayed-ref.tentative.html": [
"d12943105f8c47d32f47eec0aa773a9a98046bfa",
[]
],
+ "selectmenu-overflow-x-ref.tentative.html": [
+ "8fd33dbc0722c04ff4711cabfd285e392f0071d6",
+ []
+ ],
"selectmenu-selected-value-behavior-ref.html": [
"bf468c5516cdbdab072983beaf1f506e62ed2251",
[]
@@ -433655,7 +433758,7 @@
[]
],
"selectmenu-selected-value-slot-ref.html": [
- "132058308449978a1d27c5b1be421a748bde2898",
+ "3b322bf79157dd71630050998977185af3b99a70",
[]
],
"selectmenu-writingmode-tb-ref.html": [
@@ -433668,7 +433771,7 @@
[]
],
"fake-selectmenu.js": [
- "84fe52856177fe6092e9fc69ae8128c3ba2a37d6",
+ "f6a99232330c575d1c6c31da4372db6758bcca22",
[]
],
"selectmenu_button_icon.svg": [
@@ -440141,7 +440244,7 @@
]
},
"lint.ignore": [
- "255a50e0d1ce5cafa5905341d097a6535c0135fd",
+ "8bb009db58a9bf527f212d1ef1ee048f10b4b651",
[]
],
"loading": {
@@ -441027,90 +441130,10 @@
"105ba412e6e5734e7dbaa48f655fd57419cc108c",
[]
],
- "mathvariant-basic-transforms-with-default-font-ref.html": [
- "6ebfd75c2fa6cb16b20eae3dd3c3305fc1e37139",
- []
- ],
- "mathvariant-bold-fraktur-ref.html": [
- "44588948e7b85bae66a93de09bdff83be4acf4ce",
- []
- ],
- "mathvariant-bold-italic-ref.html": [
- "9a93a37e35b2314e66d576280f36bc6a385de728",
- []
- ],
- "mathvariant-bold-ref.html": [
- "ac24ab5b003301a3b46c21c0eee985ddf137f384",
- []
- ],
- "mathvariant-bold-sans-serif-ref.html": [
- "78c0cc5ea624f56be0d5f127ad5bc77f3e665985",
- []
- ],
- "mathvariant-bold-script-ref.html": [
- "ef11f7fb8fabd25dd94cdb84ae8791083a8a66fc",
- []
- ],
- "mathvariant-case-sensitivity-ref.html": [
- "28d9acc1f4c2466c0d13c6bacc4e454b3bf365f3",
- []
- ],
- "mathvariant-double-struck-font-style-font-weight-ref.html": [
- "817723a62d3eec1e4f00f0229338f4b34e786e9d",
- []
- ],
- "mathvariant-double-struck-ref.html": [
- "ebdb7a15b0d23c3dacfb4baf6cd2c25808b93cc5",
- []
- ],
"mathvariant-font-style-font-weight-ref.html": [
"c3e586f4dd57b1f0c448f481e751a5a64c2ba127",
[]
],
- "mathvariant-fraktur-ref.html": [
- "3d1dd50a7d4a3145bbc9d5b3b8507a06c7e21373",
- []
- ],
- "mathvariant-initial-ref.html": [
- "5d5b72a1c5c3622413d8b4ee02ed8da7fde3d6f2",
- []
- ],
- "mathvariant-italic-ref.html": [
- "e2078c2948aa4f60c9c90492dd12bf413616690a",
- []
- ],
- "mathvariant-looped-ref.html": [
- "f00e5d87bb5a254581d84a74896b7c5ae027aedb",
- []
- ],
- "mathvariant-monospace-ref.html": [
- "1d4a0c0a52091313407dab41310196333c4b78e4",
- []
- ],
- "mathvariant-sans-serif-bold-italic-ref.html": [
- "f918db9b48ba579bc6342166737de0cdc1766c50",
- []
- ],
- "mathvariant-sans-serif-italic-ref.html": [
- "d7e23248c69bb203f47bd491e96a52865f4c63fc",
- []
- ],
- "mathvariant-sans-serif-ref.html": [
- "ced5272ecb5447aeb7b5089eafd711db7e5e0926",
- []
- ],
- "mathvariant-script-ref.html": [
- "60ced85bc3a64735d4ce78fd6027ffd04451346c",
- []
- ],
- "mathvariant-stretched-ref.html": [
- "454f2004ac1f626930dffc021e7de62baa90bf7d",
- []
- ],
- "mathvariant-tailed-ref.html": [
- "5e1461cd33efb474661ae6bf5d6e7cb66fa262b1",
- []
- ],
"mi-fontstyle-fontweight-ref.html": [
"63e6e2ba9cce50396e66843113a9fbf5e4860a34",
[]
@@ -441140,11 +441163,11 @@
]
},
"presentational-hints-001-ref.html": [
- "3d71d72fb34f35074962afc50fc7909bc55d3975",
+ "ca539440f8a5ccd9673c912cb9ac53d443b0097f",
[]
],
"presentational-hints-002-ref.html": [
- "b8f5458b9bbd169104535f66528a26356cf1ef45",
+ "fa22741efe5a8f9424aa7bbac6e6ad507f687fc9",
[]
],
"transform-ref.html": [
@@ -441323,7 +441346,7 @@
[]
],
"mathvariant-transforms.py": [
- "a7a48eb941238621019dfd817d14b62c5e75202c",
+ "e4857d2a3e326fe981aa3ed2a5c3d0370ea0073b",
[]
],
"operator-dictionary.py": [
@@ -450297,12 +450320,16 @@
"f3d9861c137b2ddfdeff1690c544f57328df7447",
[]
],
+ "simple-test-for-condition-main-resource.html": [
+ "0c3e3e78707b14dcca98bf1a435a34f402b3dadd",
+ []
+ ],
"simple.html": [
"0c3e3e78707b14dcca98bf1a435a34f402b3dadd",
[]
],
"static-router-sw.js": [
- "deb7a3e0b47c58f4ec292ce12a27850d28b1f956",
+ "e698d34c5276e02b68ffec3ab54707eb26401ac3",
[]
],
"test-helpers.sub.js": [
@@ -451092,7 +451119,7 @@
[]
],
"prefetch_nvs_hint.py": [
- "09c5d2eb737289ce0349fbefa8120ea4ab6dd26a",
+ "1de33a75d868805645ac5420a0a4a4f1d7538701",
[]
],
"ruleset.py": [
@@ -451104,7 +451131,7 @@
[]
],
"utils.sub.js": [
- "75cc86c509fbe384d7a1dab29d7bcc9e6bfe58db",
+ "73624c0c25b5d13f3ae116ed3589c1aea30c89c8",
[]
]
}
@@ -453021,7 +453048,7 @@
]
},
"ci_built_diff.sh": [
- "fad946d2973a6215ca5c4c306bdff194bae7e42e",
+ "7cf9b23db1cebac65bb115b02903b35191e13051",
[]
],
"ci_resources_unittest.sh": [
@@ -453081,7 +453108,7 @@
[]
],
"requirements_tc.txt": [
- "9c3a0d639afa52f310915bb2deb570027a5cd59b",
+ "e577a83fe391977e04b626d28a3bfdb4cd6a1a1f",
[]
],
"run_tc.py": [
@@ -453596,7 +453623,7 @@
[]
],
"requirements_mypy.txt": [
- "c31e7f5bce315c95e9f865447aa6760e8d27adf3",
+ "41ab1211b230fe59eed67ebd0ea0004c716d7877",
[]
],
"requirements_pytest.txt": [
@@ -453604,7 +453631,7 @@
[]
],
"requirements_tests.txt": [
- "96e00c745dccdfe16d7a081a741517e3731587b9",
+ "8225875c8e5f2eba554ac2847ca53ddcdd8540f0",
[]
],
"runner": {
@@ -461525,7 +461552,7 @@
[]
],
"error.py": [
- "47f94d83d1300fec18415479436bf317a045f256",
+ "8507a51543dd886a7b8911f913713b298ba0b2f2",
[]
],
"modules": {
@@ -461542,7 +461569,7 @@
[]
],
"browsing_context.py": [
- "b256bd1ae6736aee98bccc601adbfc3a5d12ba28",
+ "8aca3e6f67ffcd71f41cbe0257a1408b6a7fdc0a",
[]
],
"input.py": [
@@ -461905,7 +461932,7 @@
[]
],
"content_shell.py": [
- "04c0ca70c4c9313a2fb68d6b8f971d8252a11bbe",
+ "4bbb42cc2677a128764490bbe75b733af9849af0",
[]
],
"edge.py": [
@@ -462005,7 +462032,7 @@
[]
],
"executorcontentshell.py": [
- "d558ce07f4ab5527964bf4ee989af0078bf94ea4",
+ "1ff25781ba40997f713c52b0018a721e62f436cb",
[]
],
"executormarionette.py": [
@@ -462188,7 +462215,7 @@
[]
],
"testrunner.py": [
- "d2ed58444ab0a2b27f64f2e846f4c8af658b9267",
+ "b405dabd1dd01237fc1e74f8682489ee70fb9e01",
[]
],
"tests": {
@@ -465163,6 +465190,10 @@
"5f8621ef83660c66f0d037ea28fafefb558140f1",
[]
],
+ "encodedVideoChunk-serialization.crossAgentCluster.helper.html": [
+ "424ce927f9a14acdb96d801cdf7fe6c7a7d5349a",
+ []
+ ],
"four-colors-flip.avif": [
"eb081061609efee6e02994f5956d5d3c2c913403",
[]
@@ -465247,6 +465278,10 @@
"85676f29ff5806a32ac6713e601fdcb71dd03777",
[]
],
+ "serialization.crossAgentCluster.serviceworker.js": [
+ "bb3ec0df5b7db20dd70b8c58d19d93e38e731f96",
+ []
+ ],
"sfx-aac.mp4": [
"c7b3417d9c805c978ec863107dd87b879aa465ef",
[]
@@ -465272,7 +465307,7 @@
[]
],
"utils.js": [
- "bbb53e70e0dda0e829cd97bb128008756c161188",
+ "f09334677a6a42385949c262a163066d41f750d9",
[]
],
"video-decoder.crossOriginIsolated.https.any.js.headers": [
@@ -465295,10 +465330,6 @@
"8e751632a1f285b6c0dd50d4fb14cdb10d451816",
[]
],
- "videoFrame-serialization.crossAgentCluster.serviceworker.js": [
- "9b963610befab36124cfb2e61239253ad343a219",
- []
- ],
"videoFrame-utils.js": [
"a4c761306c05d58880e408b30ef2b28f6d6f0cb6",
[]
@@ -465332,7 +465363,7 @@
],
"bidi": {
"__init__.py": [
- "eb412738a83aea7835c9f5f1feed9363a6028fc4",
+ "9d049f0a5482907600bbf2f592082bce10b99aac",
[]
],
"browsing_context": {
@@ -465348,7 +465379,7 @@
},
"capture_screenshot": {
"__init__.py": [
- "64f25b9b861f879127a31f3aa8ed33fffbfb9caf",
+ "6a21f11e7ba8317346583083a5729dd3cc602e6f",
[]
]
},
@@ -473605,13 +473636,6 @@
{}
]
],
- "idbdatabase_deleteObjectStore2.htm": [
- "91f118ef62a3bd009dc2e9961f0dc87f554ccafc",
- [
- null,
- {}
- ]
- ],
"idbdatabase_deleteObjectStore3.htm": [
"3ddbe8ec62b42f24f54445ae3b3cec25793ee3a4",
[
@@ -473945,39 +473969,6 @@
{}
]
],
- "idbindex_batchGetAll.tentative.any.js": [
- "fe21445e83f8c414c3091b2699f451aef7310e2e",
- [
- "IndexedDB/idbindex_batchGetAll.tentative.any.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All Index"
- ],
- [
- "script",
- "resources/support.js"
- ]
- ]
- }
- ],
- [
- "IndexedDB/idbindex_batchGetAll.tentative.any.worker.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All Index"
- ],
- [
- "script",
- "resources/support.js"
- ]
- ]
- }
- ]
- ],
"idbindex_count.htm": [
"5b45b5223bdaccd24a0974dfcb7ebc7f73a177ac",
[
@@ -474520,80 +474511,6 @@
{}
]
],
- "idbobjectstore_batchGetAll.tentative.any.js": [
- "3aeb8553598692f6fd418cb729deb5bd4af1ac32",
- [
- "IndexedDB/idbobjectstore_batchGetAll.tentative.any.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All"
- ],
- [
- "script",
- "resources/support.js"
- ]
- ]
- }
- ],
- [
- "IndexedDB/idbobjectstore_batchGetAll.tentative.any.worker.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All"
- ],
- [
- "script",
- "resources/support.js"
- ]
- ]
- }
- ]
- ],
- "idbobjectstore_batchGetAll_largeValue.tentative.any.js": [
- "497196e642f313070e26371c79aab6769e64bf00",
- [
- "IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All (big value)"
- ],
- [
- "script",
- "resources/support.js"
- ],
- [
- "script",
- "resources/support-promises.js"
- ]
- ]
- }
- ],
- [
- "IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.worker.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All (big value)"
- ],
- [
- "script",
- "resources/support.js"
- ],
- [
- "script",
- "resources/support-promises.js"
- ]
- ]
- }
- ]
- ],
"idbobjectstore_clear.htm": [
"51b6da72d7ee2e01d3295f84049a43ea832333ed",
[
@@ -493361,6 +493278,76 @@
null,
{}
]
+ ],
+ "set-client-hints-after-clear-all.https.html": [
+ "22ee0f98611e27e36e4830ec13a19de01fcfdc9f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-client-hints-after-clear-cache.https.html": [
+ "3436138b2c5ea7fc6d1f5cfaad17b65f466c26a3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-client-hints-after-clear-client-hints.https.html": [
+ "18aeab2f6352afac6805d1c283de0c456ea1048f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-client-hints-after-clear-cookies.https.html": [
+ "db780d3abd662c8f10350f20dc8e343be75479c0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-client-hints-after-clear-storage.https.html": [
+ "30d541b6ed87fba816bcdcba3975f979ea85f3df",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-all.https.html": [
+ "062e72b5446834a08fa12eea857e5905f6af9287",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-cache.https.html": [
+ "ab97fa182b7f520d9ad5995a450333bc69694e22",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-client-hints.https.html": [
+ "cdddb9ff35adaf42f2e90c720528f13a9a2d6091",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-cookies.https.html": [
+ "0060f3aaa0c1d1a6c4911af389bf3255ae191b09",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-storage.https.html": [
+ "9237e28cedce36179a2b60e3f08e560e80e65c76",
+ [
+ null,
+ {}
+ ]
]
},
"critical-ch": {
@@ -494476,7 +494463,7 @@
},
"close-watcher": {
"abortsignal.html": [
- "eb70ffed1b05e58fe4d5f31d49840ce4422846d0",
+ "ddd94526ab25c8313515234538808b01d7520fce",
[
null,
{
@@ -494484,8 +494471,8 @@
}
]
],
- "after-other-listeners.html": [
- "7dfe398012b966883a8585a1c51aab1c0ea82bb9",
+ "basic.html": [
+ "dc2fca5c36bb0cc4850b602bcc979436de93747b",
[
null,
{
@@ -494493,8 +494480,17 @@
}
]
],
- "basic.html": [
- "1c26c0ce15ed99e3cca1cbe950bd21511296d36c",
+ "esc-key.html": [
+ "4d98b3dc318290cced55716fffb31b1eb6934843",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "event-properties.html": [
+ "062693e4953c192fcc3be16574742cc97f4c7060",
[
null,
{
@@ -494503,12 +494499,39 @@
]
],
"frame-removal.html": [
- "b8bbac04f97baaa0d272a444c02ce4a300a9850b",
+ "573b16bb44da4d61bbabcd2e66aa74c200c6b17a",
[
null,
{}
]
],
+ "inside-event-listeners.html": [
+ "26999271799005c9e44a893dec40316153879cb4",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "popover-closewatcher-multiple-plus-free.html": [
+ "2982e29e264fa2f7073f45cab0bdd0b64dc21b58",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "popover-closewatcher.html": [
+ "6695f2bc4912c8aff87225bb56ec0091c9c129eb",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"user-activation-multiple-plus-free.html": [
"8a86624913fc37008fd22263627195c205224474",
[
@@ -494519,7 +494542,7 @@
]
],
"user-activation.html": [
- "64f217533d7e058307a4e3876d6f4eacad736099",
+ "a2bc575ee91bce4e198bd79f7238a1ed138d5bfd",
[
null,
{
@@ -504052,7 +504075,7 @@
]
],
"cookieStore_set_arguments.https.any.js": [
- "aab964d014eca3b341c1e772c677d2af71d8756e",
+ "8ff66bf7772f22076360fda0b735a7894ed6ad8d",
[
"cookie-store/cookieStore_set_arguments.https.any.html",
{
@@ -507906,7 +507929,7 @@
]
],
"display-interpolation.html": [
- "4c3f8f8d217d62114e707b14b6476eb87ed231d7",
+ "fb2503ac8a415566c6770ccf391690860fddec6b",
[
null,
{}
@@ -512007,6 +512030,13 @@
{}
]
],
+ "content-visibility-auto-first-observation-immediate.html": [
+ "5a177d6ea98f15315db595d6bc7b0e8f2da5ac4e",
+ [
+ null,
+ {}
+ ]
+ ],
"content-visibility-auto-state-changed-first-observation.html": [
"1c51851488199db10c8bfef392f48114fd35147e",
[
@@ -512053,7 +512083,7 @@
]
],
"content-visibility-interpolation.html": [
- "4b3cf856494e3ead5f8335abfd5fc6c7f63f11ea",
+ "55f8c7e5af8e6e9a808835dc374c964a958d819b",
[
null,
{}
@@ -521112,6 +521142,13 @@
{}
]
],
+ "clip-path-interpolation-xywh-rect.html": [
+ "8d35c2e9b0058b2c3ed570ebc10a4c1dad8d26c3",
+ [
+ null,
+ {}
+ ]
+ ],
"mask-image-interpolation.html": [
"ac6b266992d5eafffa8a1195abe8aae0403819b2",
[
@@ -521143,7 +521180,7 @@
]
],
"interpolation.html": [
- "e52d9e895916b3a74db21b7e377ca91e5d29ab19",
+ "f580de9c76951a977a88da4375f61bb00bd77de5",
[
null,
{}
@@ -521219,14 +521256,14 @@
]
],
"clip-path-computed.html": [
- "37b0193f461331ea5b44e2c00c6a8305df87b08e",
+ "8ec27a1472eac7cd5e0b4420a96f0b1c7ccfc793",
[
null,
{}
]
],
"clip-path-invalid.html": [
- "376cad3c520f116229e39ce5f3b064c0547a8de4",
+ "40020d91d4b3118641c74f0d6d773a9a4e494322",
[
null,
{}
@@ -521240,7 +521277,7 @@
]
],
"clip-path-valid.html": [
- "f495d46a24822a0008a70c067b4b35d10ee6a263",
+ "aa40dc97da3316a849cb7fe330ae2f6e94a9efa0",
[
null,
{}
@@ -521874,7 +521911,7 @@
]
],
"parsing.html": [
- "b189190f4125795c76997d32e3b5ce48b10fd140",
+ "ee9f35484469cb310fc3428bf0b99d60de92eceb",
[
null,
{}
@@ -522637,7 +522674,7 @@
]
],
"overlay-transition.html": [
- "9eae2115ff07a6f279843142a2a311f3fa3f73e4",
+ "efe402373fffc3d410b508d28b887ebabb6c73f0",
[
null,
{}
@@ -523459,14 +523496,14 @@
]
],
"custom-property-transition-custom-ident.html": [
- "2f5b55459d5b80c7c3e790579eb8f308f602367f",
+ "b7ca1ec785e847cb1b234b9ecb630378440863ba",
[
null,
{}
]
],
"custom-property-transition-image.html": [
- "8498615a936f6d2b66c858ba8b93c77873680994",
+ "4fd3fe649b0ac558b48b430aec46f15b0b432dcd",
[
null,
{}
@@ -523508,7 +523545,7 @@
]
],
"custom-property-transition-mismatched-list.html": [
- "e6ca781ce6409de32e8c3aca9c1e867647c3c1de",
+ "b7d964b92cb5c7c1857f4dc4dbd2934b73028a87",
[
null,
{}
@@ -523564,21 +523601,21 @@
]
],
"custom-property-transition-transform-function.html": [
- "385c222cd0e8a4fb85a1ea22fe435e093767c566",
+ "17ad1067a4dcfcf4f11b2f1e1a0367b1cf45ec96",
[
null,
{}
]
],
"custom-property-transition-transform-list.html": [
- "1e5cef194d09a6afcb59b386e160b22e1c6554cb",
+ "c9d3cb94d143d2fd45e1a6b70b40f14538d32353",
[
null,
{}
]
],
"custom-property-transition-url.html": [
- "600e7ddb1db75dcb5cb1921dca4a1d03e7714c58",
+ "c5d438e54936027beae83ed4d9adc2a1f574cd6d",
[
null,
{}
@@ -530318,21 +530355,21 @@
]
],
"text-transform-computed.html": [
- "391ee019d30bf6a319d6c6afea8519d5241d17db",
+ "1808e6fdca2e37d9d85362450dc3a7259774f2c7",
[
null,
{}
]
],
"text-transform-invalid.html": [
- "41482ab5f2c53da2c45bc1bc732ab143a67c05fd",
+ "3981480d38c8cd29b2078f0b92ce203ac83886be",
[
null,
{}
]
],
"text-transform-valid.html": [
- "fead45c8b8e45da70d4c14d12e4eba38348aed41",
+ "522eb791b0c9c9047d5c5599a969f628a14f6436",
[
null,
{}
@@ -531941,7 +531978,7 @@
]
],
"all-with-discrete.tentative.html": [
- "e328060d680f8dd0bd0f6f1585e3f1b420578ee4",
+ "c8734f28029e70465b5000d61548d652afca1bc3",
[
null,
{}
@@ -532202,6 +532239,13 @@
]
],
"parsing": {
+ "transition-behavior.html": [
+ "08ad3a6adf4da0cea53b4d3110eba16221d6ba6d",
+ [
+ null,
+ {}
+ ]
+ ],
"transition-computed.html": [
"a82551372f160fa77fdd0dcc7ac7d62d546db20d",
[
@@ -532280,7 +532324,7 @@
]
],
"transition-shorthand.html": [
- "caffb3978cf0162cb8616c6723c6cb93e33750b4",
+ "fcd14d2a1415ae6b294fe0d224434a80d4620ea9",
[
null,
{}
@@ -535681,7 +535725,7 @@
]
],
"acos-asin-atan-atan2-serialize.html": [
- "73ededd44ba64b5bd0d95df56c7036c667d6f686",
+ "ac22a703d0722cd5883f77f2b5d3e0dcdcc2eac6",
[
null,
{}
@@ -536915,7 +536959,7 @@
]
],
"pseudo-get-computed-style.html": [
- "8513e8207d37ed5fccaba591dea8ccae8354503c",
+ "268df4718e6dadcb53cc00bd5a53e826d87ca4b7",
[
null,
{}
@@ -540379,7 +540423,7 @@
]
],
"offset-path-interpolation-006.html": [
- "7ea118cb64b63acb491a90b8c88ce6d8b792b175",
+ "8c3e89ab03910bfc753666871037022d99014664",
[
null,
{}
@@ -540486,21 +540530,21 @@
]
],
"offset-path-computed.html": [
- "9e1fca2f5276b440ed49f09fef087ec8748e0d75",
+ "01435968cedff6d618b130fb27dd99cf9d8f553a",
[
null,
{}
]
],
"offset-path-parsing-invalid.html": [
- "f2123d130c026b9a301800de794b576dbcb2ff9e",
+ "6b7c4f5edf84a57b56850cf88806b3d237efb714",
[
null,
{}
]
],
"offset-path-parsing-valid.html": [
- "bad3f1b2cbacb36c85de35a93e7fa19406cd438c",
+ "c3c22754c47349154f2023815616da22b9d914e1",
[
null,
{}
@@ -544851,7 +544895,7 @@
]
],
"overscroll-deltas.html": [
- "21586322503d8507d8f20a7fd5f7d51844654325",
+ "6574a56a1e615e5e37d91d684537a2f28e091126",
[
null,
{
@@ -545013,6 +545057,13 @@
"testdriver": true
}
]
+ ],
+ "scrollend-with-snap-on-fractional-offset.html": [
+ "74dcb0f0bd068f3f6334fa323acb3162fb5f30b9",
+ [
+ null,
+ {}
+ ]
]
},
"shadow-relatedTarget.html": [
@@ -546959,7 +547010,7 @@
},
"parts": {
"basic-dom-part-objects.tentative.html": [
- "ee35298e5dabbbd09b45842c1f4d7f38642e2e74",
+ "3dda4e492c21987e3287b705759312ace27de120",
[
null,
{}
@@ -547799,7 +547850,7 @@
"editing": {
"edit-context": {
"edit-context-basics.tentative.html": [
- "a9d7a3dbf8ac370fdafd958e34e1e9aebc1ff9fb",
+ "27bde6e6ac29763532c744472425878375df1358",
[
null,
{}
@@ -551469,7 +551520,7 @@
]
],
"undo-redo.html": [
- "69bee00c86ffa300c39b6e70f4e8f98921dd06a5",
+ "391349eeef464c2324025f120a9876515bb5ca7d",
[
null,
{
@@ -566209,6 +566260,13 @@
{}
]
],
+ "fence-report-event-destination-url.https.html": [
+ "6c0bdd82dcd0c74e5d455f1a7c3443bdd0ac0b7b",
+ [
+ null,
+ {}
+ ]
+ ],
"fence-report-event.https.html": [
"ce217c7763a33b50b87bdf7d67750ad4d46b4e2b",
[
@@ -575491,6 +575549,44 @@
]
]
},
+ "fetch-later": {
+ "basic.tentative.https.window.js": [
+ "a8ca011a7c992878ddd51df65742939b8fbf6337",
+ [
+ "fetch/fetch-later/basic.tentative.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/testharness.js"
+ ],
+ [
+ "script",
+ "/resources/testharnessreport.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "non-secure.window.js": [
+ "2f2c3ea8d34b9dfaf8bbc6b12acc304a4beb791d",
+ [
+ "fetch/fetch-later/non-secure.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/testharness.js"
+ ],
+ [
+ "script",
+ "/resources/testharnessreport.js"
+ ]
+ ]
+ }
+ ]
+ ]
+ },
"h1-parsing": {
"lone-cr.window.js": [
"6b46ed632f43771fac527dc65c5e3d9dd0d197e6",
@@ -578441,13 +578537,17 @@
]
],
"iframe.tentative.https.window.js": [
- "0208b715eaf22384c1fbdca4d8f95dd0ceb7119e",
+ "0c12970557d234093d77735dc2d422160c2da19f",
[
- "fetch/private-network-access/iframe.tentative.https.window.html",
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=from-local",
{
"script_metadata": [
[
"script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
"/common/dispatcher/dispatcher.js"
],
[
@@ -578461,6 +578561,218 @@
[
"timeout",
"long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=from-private",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=from-public",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=from-treat-as-public",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=grandparent",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
]
],
"timeout": "long"
@@ -585104,7 +585416,7 @@
]
],
"about-srcdoc-navigation-blocked.window.js": [
- "659f7321c0e39207b18e1013c3fde4e81163296c",
+ "58b73494e11655bdea6e81493e0db453ff52a1b4",
[
"html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.html",
{
@@ -591915,316 +592227,6 @@
]
]
},
- "drawing-text-to-the-canvas": {
- "2d.text.draw.align.center.html": [
- "6f54844b29ab66b0548d187c97a14e68e0096364",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.end.ltr.html": [
- "39751e139ca33b48dae855932d0ec9048906fb81",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.end.rtl.html": [
- "86645a91742340a443e512a2c5b57f5a67d6c5ea",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.left.html": [
- "cd01f2588af9fd4537cba3656910e06e92538f13",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.right.html": [
- "64207b06e6e90744680fc219f32ea79f23d2cfa4",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.start.ltr.html": [
- "abf8086e8c1b32185d7df65884dcf30a6cc338e1",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.start.rtl.html": [
- "8c5b819854c535f8f5c78dcbebe25b5ec72e33b1",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.NaN.html": [
- "9705d2883065a566b3bf15f34bf703683cf34888",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.bound.html": [
- "88dc1099238741923c335a6b39c1e3821a4ff7ce",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.fontface.html": [
- "ed241deeb222de3109b7ad53dbfed9a1e27f661c",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.negative.html": [
- "ad50d5760834a117d1f348c144065c87211dce86",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.small.html": [
- "75866af40628ba88e6ab8861956b80a8263476a7",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.zero.html": [
- "a175a5787905548e03336b13c89ee3fe433297d2",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.unaffected.html": [
- "94ed31d1993eb6736c5a0c635bbe80aaa6a5391d",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fontface.html": [
- "cb7d6984d1f9e4380506136661cec3ba7ec09426",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fontface.notinpage.html": [
- "6c347399b2a53a00943ee6a74c0b83b343d44865",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fontface.repeat.html": [
- "d6d33a07681b4ab20ccff156c2918b2cc336aeee",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.space.basic.html": [
- "2c5d4710134417be51c00ba1f8eb18957449407a",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.space.collapse.nonspace.html": [
- "00877c6a0b78b38caba641498a9c53727b2f0cc7",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.stroke.unaffected.html": [
- "76a36476eeb21c32908a10f8da9d24e8a0cb6bfb",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.absolute.spacing.html": [
- "1207f84e2bfbe54281ae94792675e837e8bb5390",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.font-relative.spacing.html": [
- "a232ec16029e5a58b522962791bc8c8473be65e4",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.fontKerning.html": [
- "6de9c6eb504209806ce529bf04522237dacc9694",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.fontKerning.with.uppercase.html": [
- "991f35af0dd841cc3c3671330a6454dbcb7ffe58",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.fontStretch.settings.html": [
- "b19eced89171199dcfb57f1d5aea4b8f7e83c427",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.fontVariant.settings.html": [
- "cff5ad183a084adddc905ef76ff58e7a3ad6a5f9",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.invalid.spacing.html": [
- "a0b8340b2cddff4d38cfdcea6529f7911a17c1a9",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.letterSpacing.change.font.html": [
- "d7543e5d9a829c6c91e987f5e38872d1d04300a5",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.letterSpacing.measure.html": [
- "9b0ce16eafde2685eb145d326fc3531a354434ce",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.nonfinite.spacing.html": [
- "5ba20208e5eb36cde14c5b5a34f877a324a37edf",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.textRendering.settings.html": [
- "dee856842ae8e764ddf454e77749c098e8d8ce6d",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.wordSpacing.change.font.html": [
- "8bad1a0447cba76e0f6178678ddd588f2af07c65",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.wordSpacing.measure.html": [
- "d4f10032eb5b33d51d97f13383eaea174455e585",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.actualBoundingBox.html": [
- "2317493032182fd8e58a71eff64e796e7a05dfbb",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.advances.html": [
- "84d0af46b84052e3244404636d399bed5e07e369",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.baselines.html": [
- "f5d149239611a932da0785cabf6e18db653d1305",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.boundingBox.direction.html": [
- "a00eb7eb9c056c9a994ce6ffaa73cee46eef6cc4",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.boundingBox.textAlign.html": [
- "88f594c7c8f5a6518cf710f1d31a14fc130ba062",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.emHeights.html": [
- "d1085abd6e7c16a2c9873ee866b7b86ce7c0f530",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.fontBoundingBox.ahem.html": [
- "80cbabac8f23cb8a0c432c4c04a77ec9287cd67f",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.fontBoundingBox.html": [
- "03f2dfc04203845edf0ca2fa451817da4ab09f2f",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.rtl.text.html": [
- "a92d5cbd0be86825797744c734bec255c7c98e51",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.width.basic.html": [
- "1d5502d8f0ee5d8d8d33a083e677e31a5d9bbfe3",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.width.empty.html": [
- "ce9e80b3381e8f5cc3b3d2e88473aeea62f6b05d",
- [
- null,
- {}
- ]
- ]
- },
"fill-and-stroke-styles": {
"2d.fillStyle.CSSHSL.html": [
"481d6fe9e51914cb864dd024ab7e37078442646e",
@@ -597068,7 +597070,7 @@
]
]
},
- "text-styles": {
+ "text": {
"2d.text.align.default.html": [
"d32f7831d056202d71ea387333cd090bcf591b8e",
[
@@ -597111,71 +597113,323 @@
{}
]
],
+ "2d.text.draw.align.center.html": [
+ "723ebe876455240c734515a06a7071d28c7fa72c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.end.ltr.html": [
+ "d29da833cc5e1fbe6b1375ab11f16a06e20990c2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.end.rtl.html": [
+ "09a9658ac0939b65be536783aef7580fb1489f3d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.left.html": [
+ "dda5318fbfe071c03e4fda81de08ac458ea9785a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.right.html": [
+ "2b3217278ac9492f20289d331c7a5f563029a516",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.start.ltr.html": [
+ "8e14642fc29e8033b0915dacee76497dd157ff33",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.start.rtl.html": [
+ "fe1ccd113764c332e4e1c51bf4decff2b6362672",
+ [
+ null,
+ {}
+ ]
+ ],
"2d.text.draw.baseline.alphabetic.html": [
- "0f70a475c81d22b9f622b7d6b103a14a3eed4205",
+ "a45db596d02ef8c5fc4751d836a7e62076ad6d7d",
[
null,
{}
]
],
"2d.text.draw.baseline.bottom.html": [
- "706d7743af70db6bf4d84523df32a8c244aa021e",
+ "ed1bf002a10f8f1731261e46dcd85a38b3f6d33c",
[
null,
{}
]
],
"2d.text.draw.baseline.hanging.html": [
- "7b3a0a9373bc87de31ce263c5bd6d2fc482ef43b",
+ "2f274b419930aed64a4cfca35d5fc15d857d1488",
[
null,
{}
]
],
"2d.text.draw.baseline.ideographic.html": [
- "8da9aabb942a17ad8cd63534539be447f9f4d09e",
+ "8d6a12e2623df7ff55e1ec66b8498820b149ad94",
[
null,
{}
]
],
"2d.text.draw.baseline.middle.html": [
- "ebc821c2bbd65f15f73bb043b508808761f2fbe7",
+ "5b021a5877d6dab669c242bb56399f8c9a0cc7a2",
[
null,
{}
]
],
"2d.text.draw.baseline.top.html": [
- "21e505ec7952d2917f73e814f44d05e6929a7b3e",
+ "2011514d33b1ca473c9b990872cf7b574b92d507",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.NaN.html": [
+ "9705d2883065a566b3bf15f34bf703683cf34888",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.bound.html": [
+ "c5f7dcf1194a835a6a0542370043adbc85f1f828",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.fontface.html": [
+ "7df555381512a65ee924cab16f569f82871f2d0e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.negative.html": [
+ "ad50d5760834a117d1f348c144065c87211dce86",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.small.html": [
+ "75866af40628ba88e6ab8861956b80a8263476a7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.zero.html": [
+ "a175a5787905548e03336b13c89ee3fe433297d2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.unaffected.html": [
+ "94ed31d1993eb6736c5a0c635bbe80aaa6a5391d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fontface.html": [
+ "c46ac2084e23af9938ee4d0b77641d4060f7cc22",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fontface.notinpage.html": [
+ "92891fb04fd4e6122889c7bc98d3f78c34b16ef7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fontface.repeat.html": [
+ "d597540b97f13a27944d71022d13dad24b2ffc0c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.space.basic.html": [
+ "d4447402aa0b4541eba7ad6c7966d211069d7f3c",
[
null,
{}
]
],
"2d.text.draw.space.collapse.end.html": [
- "aebdd0e87e5de65b7d7e8f28b19c6f623218aee3",
+ "5a14dbd5146a7c0862a4e529ac184ac0a0d85c22",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.space.collapse.nonspace.html": [
+ "1fc4203b90a711c73434397635af605fc75e1cd1",
[
null,
{}
]
],
"2d.text.draw.space.collapse.other.html": [
- "1400d7c5d83fb16b902a3dadc5539f72850885cf",
+ "ffc82929b530f82ebb57df89308cebce289d6203",
[
null,
{}
]
],
"2d.text.draw.space.collapse.space.html": [
- "271c9bacaddb028db307f3326296c54e5fcf9935",
+ "64c14d1a545df8b77317f6c4449bcff0d6790ba3",
[
null,
{}
]
],
"2d.text.draw.space.collapse.start.html": [
- "6f1b81e533eb42fd950c8fc4251a0af40c7d1971",
+ "272432c3be73a409ed2903c65ed10dfca4e4bd68",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.stroke.unaffected.html": [
+ "76a36476eeb21c32908a10f8da9d24e8a0cb6bfb",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.absolute.spacing.html": [
+ "1207f84e2bfbe54281ae94792675e837e8bb5390",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.font-relative.spacing.html": [
+ "a232ec16029e5a58b522962791bc8c8473be65e4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.fontKerning.html": [
+ "6de9c6eb504209806ce529bf04522237dacc9694",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.fontKerning.with.uppercase.html": [
+ "991f35af0dd841cc3c3671330a6454dbcb7ffe58",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.fontStretch.settings.html": [
+ "b19eced89171199dcfb57f1d5aea4b8f7e83c427",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.fontVariant.settings.html": [
+ "cff5ad183a084adddc905ef76ff58e7a3ad6a5f9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.invalid.spacing.html": [
+ "a0b8340b2cddff4d38cfdcea6529f7911a17c1a9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.letterSpacing.change.font.html": [
+ "74774b5cce5eb6e34708af22d96ec592fa640e0a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.letterSpacing.measure.html": [
+ "611ea0b2f0af6618786b6d78191d5d0a359fef6a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.measure.direction.html": [
+ "abe696b196cd2323be7e44d24d5d3b3b86117cce",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.measure.rtl.text.html": [
+ "e521b092363d332a38051e493c7ca24e5355a1e4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.measure.textAlign.html": [
+ "2d5a4718c5b1d06308113e4ce64913dbeefdab7b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.nonfinite.spacing.html": [
+ "5ba20208e5eb36cde14c5b5a34f877a324a37edf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.textRendering.settings.html": [
+ "dee856842ae8e764ddf454e77749c098e8d8ce6d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.wordSpacing.change.font.html": [
+ "8bad1a0447cba76e0f6178678ddd588f2af07c65",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.wordSpacing.measure.html": [
+ "802646d03017cb718800b929bd0bdd8da73b2c9b",
[
null,
{}
@@ -597231,7 +597485,7 @@
]
],
"2d.text.font.parse.size.percentage.html": [
- "519a1eb0b4a357c8b1e04bc642c00da25ec5f6b6",
+ "520231a804c368c095e8afd700853d30c922178d",
[
null,
{}
@@ -597258,15 +597512,71 @@
{}
]
],
+ "2d.text.measure.actualBoundingBox.html": [
+ "d0672b23dcd3f4902f1ca6375a3be62560f96902",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.advances.html": [
+ "84f04dd677f836bc1b747497071248ac811c1005",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.baselines.html": [
+ "9d947eb361879bdc55306d2b9313fcf221769016",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.emHeights.html": [
+ "e39fc06c411b7ffb8cbca2bde5a89c990fa6494d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.fontBoundingBox.ahem.html": [
+ "0044f4d1e7c76887df7b35d8c85cbfa8a8c5b50c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.fontBoundingBox.html": [
+ "375910593aac5edf56af87be3609e39407650dc1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.width.basic.html": [
+ "36dc468b4e90585b616e684d3a3667c24ab94752",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.width.empty.html": [
+ "39ddad9789e8ad4c3fca8337cfcb33847171083d",
+ [
+ null,
+ {}
+ ]
+ ],
"2d.text.measure.width.space.html": [
- "1cf93c032d43b8e6c9bafd46c231dc494e408b95",
+ "7fd8095e28257fa53657cd72a7367ffcf613a100",
[
null,
{}
]
],
"parent-style-relative-units.html": [
- "ee44c0b75023fb3f8e844bdfc97d8e298e93cae5",
+ "b9a6b314c6ff2b8cff34740ef13d708ecdc976eb",
[
null,
{}
@@ -608463,182 +608773,182 @@
]
],
"2d.text.draw.align.center.html": [
- "f855930f302eea94a15ebf42938ff3a8827aa84f",
+ "0f7a2f4a0278b2b9b4de0e44646f0758244d2c1d",
[
null,
{}
]
],
"2d.text.draw.align.center.worker.js": [
- "a24b839d2f894ed36ae14fe3d7f35c3541bd152e",
+ "44f093cdac24cc03a0ae89ceaa9fc6c4eb4e8c03",
[
"html/canvas/offscreen/text/2d.text.draw.align.center.worker.html",
{}
]
],
"2d.text.draw.align.end.ltr.html": [
- "ae69277be74fa630e7848637a7c13af388252a30",
+ "a9e6dfe9010091bbda4e29f2aa886c9c25dd9017",
[
null,
{}
]
],
"2d.text.draw.align.end.ltr.worker.js": [
- "64dc013b444968039b7d64d957df09d0f9e5ea7a",
+ "4bd0f5a31476cf8f916bf1f149a924d42a88600a",
[
"html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.html",
{}
]
],
"2d.text.draw.align.end.rtl.html": [
- "cabc85e55943f8db87978def88018130daf274fb",
+ "b0d0b66a9cadb9ab9a2cfc5c4046a8219757b3d1",
[
null,
{}
]
],
"2d.text.draw.align.end.rtl.worker.js": [
- "b177d0e9617061cb685304e0543ab34cdc097069",
+ "b3e62d85380676013421fe5224ca8bb6c37148a8",
[
"html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.html",
{}
]
],
"2d.text.draw.align.left.html": [
- "0166b9b309db445e62a5c2ca2f0899ba964af59e",
+ "563596d7571390dbd60e7a3b5c77758ff0f114c0",
[
null,
{}
]
],
"2d.text.draw.align.left.worker.js": [
- "be8a4e188e255308dc073b00e172862e7b0d37cb",
+ "c7dc0bed42bd2568281eaae882fca5ee59318217",
[
"html/canvas/offscreen/text/2d.text.draw.align.left.worker.html",
{}
]
],
"2d.text.draw.align.right.html": [
- "011f6dccd9cbbbb12f3c58fbc063d09cd3e35b2e",
+ "227a8f981f94bfee62f74e25ed9bdecc86a7fc0a",
[
null,
{}
]
],
"2d.text.draw.align.right.worker.js": [
- "43f00dcb95c6fe314ad74efe58257c3629becc58",
+ "58fe85e0b76bf04f81bf423558f646d7235aa293",
[
"html/canvas/offscreen/text/2d.text.draw.align.right.worker.html",
{}
]
],
"2d.text.draw.align.start.ltr.html": [
- "b15fb4c0481828c22c62f2ede4bc02832865d6af",
+ "bd7e69451d56cdb9c74952848cf8bfd1bf8e8bee",
[
null,
{}
]
],
"2d.text.draw.align.start.ltr.worker.js": [
- "a3204938c0ab73278866ceec1eb74c196b01a94c",
+ "c0793d9af6fcbf30d4ee14fc794a89027300f248",
[
"html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.html",
{}
]
],
"2d.text.draw.align.start.rtl.html": [
- "c8a0de20b67700721d720705051989ebe10bd519",
+ "cadc8a46449c3505316c246e504fd2fd2b86bc0a",
[
null,
{}
]
],
"2d.text.draw.align.start.rtl.worker.js": [
- "ad03dd5c46928a7f613ce638e876446220e5d354",
+ "ed706c287a17fe90d1175c52d89e184adf13f9b3",
[
"html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.html",
{}
]
],
"2d.text.draw.baseline.alphabetic.html": [
- "6cb550fde7a91b36f37c80774ac9c1d255c29ece",
+ "ff72b3219df446268d69eec81cae1f64636f604a",
[
null,
{}
]
],
"2d.text.draw.baseline.alphabetic.worker.js": [
- "ed2c3f88b024e674a843416bfa33562fd42ee8ea",
+ "a98a5863d92ed6ebf634e78c424749b3a2aba0a1",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.html",
{}
]
],
"2d.text.draw.baseline.bottom.html": [
- "398b4a9b0a569f3dad9c0dd4fb0d6b95483e6d41",
+ "f75a94243d6e6ef2b6a88fba31c0f1cbda7ddc66",
[
null,
{}
]
],
"2d.text.draw.baseline.bottom.worker.js": [
- "727376391f7a5facf97a6d4939033934384e076e",
+ "30f60c574b92218df3cf89e5c030ed918ca2ae7c",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.html",
{}
]
],
"2d.text.draw.baseline.hanging.html": [
- "0b8228343289fe59d269b4ccf63dc48b6008edda",
+ "a29db78385928aba00daa76a7892683de65fb589",
[
null,
{}
]
],
"2d.text.draw.baseline.hanging.worker.js": [
- "fca74d6938184d68f11790b86fbdb0240cd11d8e",
+ "638506a2792c345b67fe378b072b5df2dc2985d4",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.html",
{}
]
],
"2d.text.draw.baseline.ideographic.html": [
- "c996444b860a079402dbeb20344578c94877e58d",
+ "6bda1b4f307ad66f407882bfb53d5a8193bf4f00",
[
null,
{}
]
],
"2d.text.draw.baseline.ideographic.worker.js": [
- "0ffa6fe299a0cb9a03778f0f32a57141074d0b7c",
+ "7c682fb5f145180d44aa995204495c750d68d359",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.html",
{}
]
],
"2d.text.draw.baseline.middle.html": [
- "911da8bef2c20759daa2361a5ac3b18f14c88632",
+ "b0186e6549ae2f0f9eb347e270a075f0e0c079bb",
[
null,
{}
]
],
"2d.text.draw.baseline.middle.worker.js": [
- "eeb32eafc111ed289a6ddeccd58cde22ac7cc7f6",
+ "c373ab6c7293c6a38ddacf3f91fd3c314f9a2658",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.html",
{}
]
],
"2d.text.draw.baseline.top.html": [
- "56b5bb7d83cfecaab4385f2c9e1926d678c4e06b",
+ "163d27dec766f0371742b2a8797b96850098336d",
[
null,
{}
]
],
"2d.text.draw.baseline.top.worker.js": [
- "d4341c6900abfb9c0578898cc1895dc0a7f0cd20",
+ "effc4418c34df245474b2b38b4ee68881af9412e",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.html",
{}
@@ -608659,28 +608969,28 @@
]
],
"2d.text.draw.fill.maxWidth.bound.html": [
- "ae21607af95b8e5b3b2f253a8470188c371069d3",
+ "2dca5a75efac971873c46ffe709978435c24d2ed",
[
null,
{}
]
],
"2d.text.draw.fill.maxWidth.bound.worker.js": [
- "240bffeed41832c7fa626f97ff6abcb844a35dc6",
+ "adcb45faaae178c52897a5e2261082a4135987f2",
[
"html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.html",
{}
]
],
"2d.text.draw.fill.maxWidth.fontface.html": [
- "259fdc738ac6918604f93fcc9f8b90a7baa0aa43",
+ "fa7277ed7ab7b92d72441d324a337a3a54abf22c",
[
null,
{}
]
],
"2d.text.draw.fill.maxWidth.fontface.worker.js": [
- "7aa3f470f5fa865b2b5b311143c757899a73eb41",
+ "8df519b7d1c473cadeb3577a1cf03c5971721f6a",
[
"html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.html",
{}
@@ -608715,27 +609025,17 @@
]
],
"2d.text.draw.fill.maxWidth.zero.html": [
- "0056d75126ce19e62c0eaa6d31a33f295835dab7",
+ "a789a84dbe793facb830cc55f374277cbd5cb6ca",
[
null,
- {
- "timeout": "long"
- }
+ {}
]
],
"2d.text.draw.fill.maxWidth.zero.worker.js": [
- "65e67cce2c76dc4ec96a0d02441757b576192714",
+ "7dea281f98ae3ce6828abc01496ad575c2b2cdec",
[
"html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.html",
- {
- "script_metadata": [
- [
- "timeout",
- "long"
- ]
- ],
- "timeout": "long"
- }
+ {}
]
],
"2d.text.draw.fill.unaffected.html": [
@@ -608753,126 +609053,126 @@
]
],
"2d.text.draw.fontface.html": [
- "f8d9085f55b0ca752f3901892a599f6aba3ece32",
+ "5d4f93b4f3511c9e8dc8c6d0fa5623d964365ebd",
[
null,
{}
]
],
"2d.text.draw.fontface.notinpage.html": [
- "da552d11cc9ee28f9e74fbd69375caf206b7b428",
+ "82c9b31e662032048565794a1a34941996264584",
[
null,
{}
]
],
"2d.text.draw.fontface.notinpage.worker.js": [
- "3bfb0be818826c1f1e515d33ac6f6f1e9181bd16",
+ "628cb395069c5ca0080c1f44c4e7d24dea13b144",
[
"html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.html",
{}
]
],
"2d.text.draw.fontface.repeat.html": [
- "3a14462bcd6733037cff24752a65e0cd045fa536",
+ "1a6ba78fb9f16262ad9f4fff7b748746b2a8a7b0",
[
null,
{}
]
],
"2d.text.draw.fontface.repeat.worker.js": [
- "f2210a3239e4d3b15c5da6105de48ff9649415f3",
+ "7567c095580e17e9607583563f54d02e7ca19bea",
[
"html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.html",
{}
]
],
"2d.text.draw.fontface.worker.js": [
- "1c7e727c5eac308d521cfc41d946df95b9c418d1",
+ "02257f0a06e48bddc0233f122a6a58c199205e39",
[
"html/canvas/offscreen/text/2d.text.draw.fontface.worker.html",
{}
]
],
"2d.text.draw.space.basic.html": [
- "fa2fa86c36eb678b9b44d43e2fd84c7a1010a93f",
+ "55828fc72c76201c36141cce503e1d30eca11116",
[
null,
{}
]
],
"2d.text.draw.space.basic.worker.js": [
- "75cacf9ca28e6250136a372b749cb23f11ec7caf",
+ "ef09925c551d62f5e1ff56c17ecad06b45aba06d",
[
"html/canvas/offscreen/text/2d.text.draw.space.basic.worker.html",
{}
]
],
"2d.text.draw.space.collapse.end.html": [
- "060f41bb976358c6f3fd7e21b9308af77216bc8d",
+ "f00a187e23e79c73b5ab0d6f6c15c87f6f9fb2c4",
[
null,
{}
]
],
"2d.text.draw.space.collapse.end.worker.js": [
- "4c436006e3b13e773a39adcfdc9a954ed640839c",
+ "9a9afa1e74516b10aeca97392ea26d03fcd6175d",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.html",
{}
]
],
"2d.text.draw.space.collapse.nonspace.html": [
- "18289e51edf729da0d88e90e99443e9c2c9cf815",
+ "792abe4deb68e9e692dd56a03eaa381104bc807f",
[
null,
{}
]
],
"2d.text.draw.space.collapse.nonspace.worker.js": [
- "2aa7f67a57583a50d72edc1d2e875e9f5b9a2e04",
+ "a12c2f9a48447991395f142cf94b1c1b04ffe0a0",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.html",
{}
]
],
"2d.text.draw.space.collapse.other.html": [
- "41bca9bce6a017d2a434755b5a2e0f4adffb7592",
+ "83e89270f983e2dbddca259549e6c723d161de6e",
[
null,
{}
]
],
"2d.text.draw.space.collapse.other.worker.js": [
- "a662955bec09d3eb5501b532c9dd60774d7b2e0e",
+ "bbf9e684be7dd11ab8f1781b54423352aa2fe5a5",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.html",
{}
]
],
"2d.text.draw.space.collapse.space.html": [
- "6a2b305b7474c2f5bf6f5d93080466d4c45d572b",
+ "5fc96ffd7d6685f18bf7c81b8988bdbd5b0798c8",
[
null,
{}
]
],
"2d.text.draw.space.collapse.space.worker.js": [
- "b1e8d8e872d4f068c9542c237c10755724eee3b0",
+ "e5ab7b67f4a4e878b1110f3860299f1068859b55",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.html",
{}
]
],
"2d.text.draw.space.collapse.start.html": [
- "cadb1c3b60a1879094484de320924d7b819a1665",
+ "c07994360d630026f9dd0d45b25b138c4440790a",
[
null,
{}
]
],
"2d.text.draw.space.collapse.start.worker.js": [
- "d7ae819eea3de72f3d29ce240e8f29985d5d3d58",
+ "20fec7801f821bcce9dbf9640ed7a2b6e836b7cf",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.html",
{}
@@ -608977,14 +609277,14 @@
]
],
"2d.text.drawing.style.invalid.spacing.html": [
- "3a99352295c720bbd7f13bcd8ed999c99bc8c1e9",
+ "d16b175ad6716e97cfc52225aaebfd226293dc37",
[
null,
{}
]
],
"2d.text.drawing.style.invalid.spacing.worker.js": [
- "271858500e96537b156c09e2cc6205f29c8cc156",
+ "06207b2c6c688d1dfd38dd245cccd502d3221318",
[
"html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.html",
{}
@@ -609004,31 +609304,17 @@
{}
]
],
- "2d.text.drawing.style.letterSpacing.measure.absolute.html": [
- "46cd55a5cafd9246b15d14b9080e6973af4304b7",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.letterSpacing.measure.absolute.worker.js": [
- "8c82aebb3c076a0e9f76097857017f8080427229",
- [
- "html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.html",
- {}
- ]
- ],
- "2d.text.drawing.style.letterSpacing.measure.relative.html": [
- "296c929dc31a4bc3df86f6c9c52f62544e5701b5",
+ "2d.text.drawing.style.letterSpacing.measure.html": [
+ "63169486badaa1bb44253141073fabf5343c52d7",
[
null,
{}
]
],
- "2d.text.drawing.style.letterSpacing.measure.relative.worker.js": [
- "d6afa71abaf6a731037c6cbab1b2aa102a6fa033",
+ "2d.text.drawing.style.letterSpacing.measure.worker.js": [
+ "585166fca01f0b9398d000499bcbcd1d6d7a35d8",
[
- "html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.html",
+ "html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.html",
{}
]
],
@@ -609075,28 +609361,28 @@
]
],
"2d.text.drawing.style.nonfinite.spacing.html": [
- "ca50f13a69bf40f7a6a9115f799a39758e58cb38",
+ "48a592b839a73647af11e3ca830b8851ca436172",
[
null,
{}
]
],
"2d.text.drawing.style.nonfinite.spacing.worker.js": [
- "801b8b5c73bb20c631766efb535ae3651ba296d6",
+ "4cf20b28c078d83864c40b0c23bc90120ee713d9",
[
"html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.html",
{}
]
],
"2d.text.drawing.style.textRendering.settings.html": [
- "3fc07d547886caac218c9cac27d9a2c835d466ea",
+ "52b34deaab91bc90888dd6e36cb7cc09f305bbcb",
[
null,
{}
]
],
"2d.text.drawing.style.textRendering.settings.worker.js": [
- "c37f2e342f20d68898a656b97e96891b52aaa0b9",
+ "a4381963f7b14d40140160b5c9676d84f6c68a7a",
[
"html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.html",
{}
@@ -609116,31 +609402,17 @@
{}
]
],
- "2d.text.drawing.style.wordSpacing.measure.absolute.html": [
- "458f12b008fb8a3350a09dbbf5d33c67627470ae",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.wordSpacing.measure.absolute.worker.js": [
- "36d1fefc23d2a2ea16444032eecb48c55c7f4ade",
- [
- "html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.html",
- {}
- ]
- ],
- "2d.text.drawing.style.wordSpacing.measure.relative.html": [
- "11988ae157ddfe78da2e5458f09516210f2ef93c",
+ "2d.text.drawing.style.wordSpacing.measure.html": [
+ "69bf6e979c60473f05aa9697016748b80c453f8c",
[
null,
{}
]
],
- "2d.text.drawing.style.wordSpacing.measure.relative.worker.js": [
- "f5295e915e819824bd494f5a6268c0b7f6829165",
+ "2d.text.drawing.style.wordSpacing.measure.worker.js": [
+ "d899b8c32824718aae9010c458cd8c03d72a6a9a",
[
- "html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.html",
+ "html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.html",
{}
]
],
@@ -609271,112 +609543,126 @@
]
],
"2d.text.measure.actualBoundingBox.html": [
- "96b37702c48a68cd4bd552492b253189579d281c",
+ "105efc07948a4de537689bb8bbc7ee1548f187bf",
[
null,
{}
]
],
"2d.text.measure.actualBoundingBox.worker.js": [
- "b16ed415ca82cca9c9eec989b99b253c11a38bf2",
+ "c3d18ff8786d188fc95ad80d46acbda264d35eb4",
[
"html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.html",
{}
]
],
"2d.text.measure.advances.html": [
- "f3bedd41ef53b060ca6655a7a0214aacc5208c3f",
+ "2eec005cb84c42e2d9ccc7ada883a3aba0afb8f3",
[
null,
{}
]
],
"2d.text.measure.advances.worker.js": [
- "55c744aaeb1bfeaee929e5ca98dd159818de7483",
+ "4b02f06f2dd5c9335848af2ea1a7cb004e786088",
[
"html/canvas/offscreen/text/2d.text.measure.advances.worker.html",
{}
]
],
"2d.text.measure.baselines.html": [
- "09fd0f408223fae715cfea3cdb00000e76f9fcb2",
+ "9d0cc1268d5314a7a4e06de3c60421ea7ea1795c",
[
null,
{}
]
],
"2d.text.measure.baselines.worker.js": [
- "c6288a569da0172d7c5f43bdb6c08d3a0e5b2256",
+ "ddb48f4fe02ee5de8c13fb65452b540f1287657f",
[
"html/canvas/offscreen/text/2d.text.measure.baselines.worker.html",
{}
]
],
"2d.text.measure.emHeights.html": [
- "6a93bac04aa51f26c589c5d176862989a24fe2ae",
+ "a92ce58a00e7a1f0f928137fd9e218ad82f9f4f3",
[
null,
{}
]
],
"2d.text.measure.emHeights.worker.js": [
- "1dd5f7ce48c08cca97743d9eb7ce2626e8100f9a",
+ "68db6de88d0f0d354bb9e63c3728daa8c15bab74",
[
"html/canvas/offscreen/text/2d.text.measure.emHeights.worker.html",
{}
]
],
+ "2d.text.measure.fontBoundingBox.ahem.html": [
+ "cb8b0c558dbbcde67b7e96a9f1e11f6bad44014a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.fontBoundingBox.ahem.worker.js": [
+ "255bcd108aac7f3590ae641604741324bbf7a080",
+ [
+ "html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.html",
+ {}
+ ]
+ ],
"2d.text.measure.fontBoundingBox.html": [
- "f36bfd6f9d2bab3ef050af1e32d0acc0adf70ed8",
+ "e32780334262f971a5431ac97d3a1d27a016f4d4",
[
null,
{}
]
],
"2d.text.measure.fontBoundingBox.worker.js": [
- "cfbfe77e6bdadf5fbf21ece0ea90eb0fc90fecdd",
+ "ca272760fd410f4397df1697181c0b24e2c98220",
[
"html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.html",
{}
]
],
"2d.text.measure.width.basic.html": [
- "fa47879836be978c7b6a526325fc7e25de95cf85",
+ "fea19040833cbf381d5c3cbf77f8fea791603bed",
[
null,
{}
]
],
"2d.text.measure.width.basic.worker.js": [
- "265843ae66e8c5c4575cdb4a9bbf9952561213fd",
+ "866ad8b3c5c096d1226c8d443c1b29b270d30a85",
[
"html/canvas/offscreen/text/2d.text.measure.width.basic.worker.html",
{}
]
],
"2d.text.measure.width.empty.html": [
- "7d412008b04e2a430bc04d8c78dec113493c0901",
+ "11bd029433078ef1c328938c4667ae0802c2d68b",
[
null,
{}
]
],
"2d.text.measure.width.empty.worker.js": [
- "68bba39e9d2762473b7a02907ccbfe3cb5cef04c",
+ "6fb89c5ba73aa957ef429452969cad8fb67f2b91",
[
"html/canvas/offscreen/text/2d.text.measure.width.empty.worker.html",
{}
]
],
"2d.text.measure.width.space.html": [
- "6ef4255b834ec995cc2d4cfb8455912ce6014719",
+ "38d5084298a9041e08f428fb48d07a32af23a502",
[
null,
{}
]
],
"2d.text.measure.width.space.worker.js": [
- "5ee4ee3ff74a000465a1d2fc4cc2f7bd8d931dec",
+ "d832feec5fc0fa9621a35d2d33a0bc864edc7ed0",
[
"html/canvas/offscreen/text/2d.text.measure.width.space.worker.html",
{}
@@ -616442,6 +616728,13 @@
"html/infrastructure/urls/base-url/document-base-url-window-open-about-blank.https.window.html",
{}
]
+ ],
+ "matches-about-blank-base-url.window.js": [
+ "b2a0740ddf7cfcd7a2b40846c7e53fa805c503cc",
+ [
+ "html/infrastructure/urls/base-url/matches-about-blank-base-url.window.html",
+ {}
+ ]
]
},
"dynamic-changes-to-base-urls": {
@@ -624698,7 +624991,7 @@
]
],
"dirname-only-if-applies.html": [
- "7d542111896e68e7df0b271b247126b99b3c1972",
+ "1fd0476e3140422825d5ec1f7e431b1fc212cbdb",
[
null,
{}
@@ -643597,7 +643890,7 @@
"presentation-markup": {
"direction": {
"direction.html": [
- "657d048211132f98c97a8ecffa7da8460cc6168d",
+ "dfb1671e4cc0b10393b5a2baef0900466d464a93",
[
null,
{}
@@ -645828,7 +646121,7 @@
"mse-for-webcodecs": {
"tentative": {
"mediasource-webcodecs-addsourcebuffer.html": [
- "cc9cdc2b50185c7a5acae91a9a221b8ea164b8b0",
+ "e29600f99c6b4b1fc5ca0e8c9b0cd939cb27c1e1",
[
null,
{}
@@ -680326,6 +680619,13 @@
],
"tentative": {
"static-router": {
+ "static-router-main-resource.https.html": [
+ "5a55783af57a4fef8090bef9d888b45ae6c456b6",
+ [
+ null,
+ {}
+ ]
+ ],
"static-router-subresource.https.html": [
"721c2797603bb568172c6804b07e195d14d2018e",
[
@@ -683340,7 +683640,7 @@
],
"no-vary-search": {
"prefetch-single-with-hint.https.html": [
- "1c9e5b4173104008cc669393c460f068f8bea1b5",
+ "1cbd7e8e717b30a8b6ad9e1248f23f1835c1831e",
[
"speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?1-1",
{}
@@ -683410,7 +683710,19 @@
{}
],
[
- "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?25-last",
+ "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?25-25",
+ {}
+ ],
+ [
+ "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?26-26",
+ {}
+ ],
+ [
+ "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?27-27",
+ {}
+ ],
+ [
+ "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?28-last",
{}
],
[
@@ -693675,7 +693987,7 @@
]
],
"requestStorageAccessFor.sub.https.window.js": [
- "e82cce699fab9b2d3cd6e8d928cc66850083658a",
+ "8af30c497f243b43944a57f965611e39c9dd9721",
[
"top-level-storage-access-api/tentative/requestStorageAccessFor.sub.https.window.html",
{
@@ -707583,7 +707895,7 @@
]
],
"audio-decoder.https.any.js": [
- "4374e904a3305b05ae4ba28987830f17d75451ec",
+ "f83efe17a0ffd24042c3f7ae21f810dc25efab8b",
[
"webcodecs/audio-decoder.https.any.html",
{
@@ -707634,7 +707946,7 @@
]
],
"audio-encoder-config.https.any.js": [
- "52ff3dc16e6c093b9867a9498b85f41377cb901f",
+ "845b399744ec142e55735cd36e94082ebbb5e039",
[
"webcodecs/audio-encoder-config.https.any.html",
{
@@ -708309,6 +708621,13 @@
}
]
],
+ "encodedVideoChunk-serialization.crossAgentCluster.https.html": [
+ "fb104a3a1b1aacbf8772371dafce3c2b35084126",
+ [
+ null,
+ {}
+ ]
+ ],
"full-cycle-test.https.any.js": [
"56671e683610ff412d08ba7999843246554ac7f4",
[
@@ -710117,7 +710436,7 @@
]
],
"video-decoder.https.any.js": [
- "565134271d6dd4b1f7b60a31e1562837e2836072",
+ "3c4ca479ce40134f3ccb4c843b5859c19851f575",
[
"webcodecs/video-decoder.https.any.html",
{
@@ -710150,7 +710469,7 @@
]
],
"video-encoder-config.https.any.js": [
- "fbb6d91b9b881adb8842d12309b84506d212bec6",
+ "be2574f7901b08eb8779d2093a061d5dddcf4ba7",
[
"webcodecs/video-encoder-config.https.any.html",
{
@@ -710183,7 +710502,7 @@
]
],
"video-encoder.https.any.js": [
- "229ae32edd44307d8683ad8793641d16d9d28c1c",
+ "c8db068e12fa29ee2bb5c39840af6e1ab2636255",
[
"webcodecs/video-encoder.https.any.html",
{
@@ -711147,7 +711466,7 @@
]
],
"videoFrame-serialization.crossAgentCluster.https.html": [
- "27f624a8449ce4debdd77477f37a0ba18b65ba36",
+ "11b5e23124ecc4cb146570803a6c5d208bdcb36e",
[
null,
{}
@@ -727462,7 +727781,7 @@
"stream": {
"tentative": {
"abort.any.js": [
- "6742bf2b38fb1d0121982fa1ba689534d0b7182d",
+ "9047f246f968f60a1145a4f6b3df12a682717665",
[
"websockets/stream/tentative/abort.any.html?wpt_flags=h2",
{
@@ -727713,7 +728032,7 @@
]
],
"backpressure-receive.any.js": [
- "cce5bf2a47eb88518c34e049fdf3ea67a52aa1bb",
+ "236bb2e40fac1a6db1506958e5828cf2dc29d79a",
[
"websockets/stream/tentative/backpressure-receive.any.html?wpt_flags=h2",
{
@@ -727972,7 +728291,7 @@
]
],
"backpressure-send.any.js": [
- "c17f1cc2b8b16e2e4733c23328313851529a2d07",
+ "e4a80f6e1c071b33b032e699ba3e0de2c1c8572e",
[
"websockets/stream/tentative/backpressure-send.any.html?wpt_flags=h2",
{
@@ -728231,7 +728550,7 @@
]
],
"close.any.js": [
- "0ed91cc8a64390c00662b23837ec0b2411adee8a",
+ "2be9034872e909b834d8d2bab3975e1c2f8b25e9",
[
"websockets/stream/tentative/close.any.html?wpt_flags=h2",
{
@@ -728450,7 +728769,7 @@
]
],
"constructor.any.js": [
- "454dd4c09425b00a563eb5c7406546fe1bdaef48",
+ "4d67d81cf288cba2eb3a12a8050dbd323dfd1c55",
[
"websockets/stream/tentative/constructor.any.html?wpt_flags=h2",
{
@@ -729276,7 +729595,7 @@
]
],
"close.https.any.js": [
- "77b3055c1de27fc5cd0268f3c434efa2b6a39958",
+ "0d8579584fbb21e74595588f663ef21c3b028c63",
[
"webtransport/close.https.any.html",
{
@@ -729296,13 +729615,8 @@
[
"script",
"/common/utils.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729324,13 +729638,8 @@
[
"script",
"/common/utils.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729352,13 +729661,8 @@
[
"script",
"/common/utils.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729380,18 +729684,13 @@
[
"script",
"/common/utils.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
]
],
"connect.https.any.js": [
- "6bd18ae8de4e0bcdcee35ac9b49a1603550dc40c",
+ "93df5fe3f478df382918a49368d1a3ad0c5242aa",
[
"webtransport/connect.https.any.html",
{
@@ -729407,13 +729706,8 @@
[
"script",
"resources/webtransport-test-helpers.sub.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729431,13 +729725,8 @@
[
"script",
"resources/webtransport-test-helpers.sub.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729455,13 +729744,8 @@
[
"script",
"resources/webtransport-test-helpers.sub.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729479,13 +729763,8 @@
[
"script",
"resources/webtransport-test-helpers.sub.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
]
],
@@ -760885,6 +761164,13 @@
{}
]
],
+ "clip.py": [
+ "4cc83f2c221de8b872ecbfcfbb2cb69783a78b6e",
+ [
+ null,
+ {}
+ ]
+ ],
"frame.py": [
"bab97a31d209f30e0861e7ba768109c717523a4a",
[
@@ -760893,7 +761179,7 @@
]
],
"invalid.py": [
- "885baf229d36bb4c600874825c8f389c0dd51d56",
+ "c6efbbbb7ae0d789f0d598d0b5df552ffe8ba756",
[
null,
{}
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/system-color-hightlights-vs-getSelection-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/system-color-hightlights-vs-getSelection-001.html.ini
deleted file mode 100644
index be50491553a..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-color/system-color-hightlights-vs-getSelection-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[system-color-hightlights-vs-getSelection-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-transform-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-transform-computed.html.ini
new file mode 100644
index 00000000000..2e312c14722
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-transform-computed.html.ini
@@ -0,0 +1,3 @@
+[text-transform-computed.html]
+ [Property text-transform value 'math-auto']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-transform-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-transform-valid.html.ini
new file mode 100644
index 00000000000..e7983889883
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/parsing/text-transform-valid.html.ini
@@ -0,0 +1,3 @@
+[text-transform-valid.html]
+ [e.style['text-transform'\] = "math-auto" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transitions/all-with-discrete.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-transitions/all-with-discrete.tentative.html.ini
index ff695ed450d..0a425b104e1 100644
--- a/tests/wpt/meta-legacy-layout/css/css-transitions/all-with-discrete.tentative.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-transitions/all-with-discrete.tentative.html.ini
@@ -7,3 +7,6 @@
[transition:all with transition-animation-type:discrete should animate discrete properties.]
expected: FAIL
+
+ [transition:all with transition-behavior:allow-discrete should animate discrete properties.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-behavior.html.ini b/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-behavior.html.ini
new file mode 100644
index 00000000000..246320aaa88
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-behavior.html.ini
@@ -0,0 +1,78 @@
+[transition-behavior.html]
+ [e.style['transition-behavior'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [Property transition-behavior value 'normal']
+ expected: FAIL
+
+ [e.style['transition-behavior'\] = "allow-discrete" should set the property value]
+ expected: FAIL
+
+ [Property transition-behavior value 'allow-discrete']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display 3s" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display 3s']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display 3s 1s" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display 3s 1s']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display 3s ease-in-out" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display 3s ease-in-out']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display 3s ease-in-out 1s" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display 3s ease-in-out 1s']
+ expected: FAIL
+
+ [e.style['transition'\] = "display allow-discrete 3s ease-in-out 1s" should set the property value]
+ expected: FAIL
+
+ [e.style['transition'\] = "display 3s allow-discrete ease-in-out 1s" should set the property value]
+ expected: FAIL
+
+ [e.style['transition'\] = "display 3s ease-in-out allow-discrete 1s" should set the property value]
+ expected: FAIL
+
+ [e.style['transition'\] = "display 3s ease-in-out 1s allow-discrete" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'display allow-discrete 3s ease-in-out 1s']
+ expected: FAIL
+
+ [Property transition value 'display 3s allow-discrete ease-in-out 1s']
+ expected: FAIL
+
+ [Property transition value 'display 3s ease-in-out allow-discrete 1s']
+ expected: FAIL
+
+ [Property transition value 'display 3s ease-in-out 1s allow-discrete']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display, normal opacity, color" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display, normal opacity, color']
+ expected: FAIL
+
+ [e.style['transition'\] = "normal opacity, color, allow-discrete display" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'normal opacity, color, allow-discrete display']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-shorthand.html.ini
new file mode 100644
index 00000000000..e112487133b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transitions/parsing/transition-shorthand.html.ini
@@ -0,0 +1,9 @@
+[transition-shorthand.html]
+ [e.style['transition'\] = "1s -3s cubic-bezier(0, -2, 1, 3) top" should set transition-behavior]
+ expected: FAIL
+
+ [e.style['transition'\] = "1s -3s, cubic-bezier(0, -2, 1, 3) top" should set transition-behavior]
+ expected: FAIL
+
+ [e.style['transition'\] = "cubic-bezier(0, -2, 1, 3) top, 1s -3s" should set transition-behavior]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini
new file mode 100644
index 00000000000..a3e30250229
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/scroll-behavior-smooth-navigation.html.ini
@@ -0,0 +1,6 @@
+[scroll-behavior-smooth-navigation.html]
+ [Instant scrolling while doing history navigation.]
+ expected: FAIL
+
+ [Smooth scrolling while doing history navigation.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html.ini b/tests/wpt/meta-legacy-layout/dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html.ini
new file mode 100644
index 00000000000..b886f774a0a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html.ini
@@ -0,0 +1,3 @@
+[scrollend-with-snap-on-fractional-offset.html]
+ [snap to fractional offset fires scrollend exactly once.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/dom/parts/basic-dom-part-objects.tentative.html.ini b/tests/wpt/meta-legacy-layout/dom/parts/basic-dom-part-objects.tentative.html.ini
index f58726dcbd8..5daf7b7abad 100644
--- a/tests/wpt/meta-legacy-layout/dom/parts/basic-dom-part-objects.tentative.html.ini
+++ b/tests/wpt/meta-legacy-layout/dom/parts/basic-dom-part-objects.tentative.html.ini
@@ -67,3 +67,15 @@
[Basic declarative DOM Parts (Clone)]
expected: FAIL
+
+ [Corner case ChildNodePart construction and cloning (Document)]
+ expected: FAIL
+
+ [Corner case ChildNodePart construction and cloning (DocumentFragment)]
+ expected: FAIL
+
+ [Basic declarative DOM Parts (PartClone)]
+ expected: FAIL
+
+ [Basic declarative DOM Parts (DeclarativeShadowDOM)]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/fetch-later/basic.tentative.https.window.js.ini b/tests/wpt/meta-legacy-layout/fetch/fetch-later/basic.tentative.https.window.js.ini
new file mode 100644
index 00000000000..4a6e75b55f7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/fetch/fetch-later/basic.tentative.https.window.js.ini
@@ -0,0 +1,6 @@
+[basic.tentative.https.window.html]
+ [fetchLater() cannot be called without request.]
+ expected: FAIL
+
+ [fetchLater()'s return tells the deferred request is not yet sent.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini
index 571eddcad27..0d48169e3cc 100644
--- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini
@@ -147,8 +147,5 @@
[list-style-image sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
- [background-image sec-fetch-user - Not sent to non-trustworthy same-origin destination]
+ [background-image sec-fetch-site - HTTPS downgrade (header not sent)]
expected: TIMEOUT
-
- [border-image sec-fetch-user - Not sent to non-trustworthy same-origin destination]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/private-network-access/iframe.tentative.https.window.js.ini b/tests/wpt/meta-legacy-layout/fetch/private-network-access/iframe.tentative.https.window.js.ini
index 5b0348afa74..22ec14fd43c 100644
--- a/tests/wpt/meta-legacy-layout/fetch/private-network-access/iframe.tentative.https.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/private-network-access/iframe.tentative.https.window.js.ini
@@ -34,3 +34,50 @@
[public to local, grandparent navigates: success.]
expected: FAIL
+
+
+[iframe.tentative.https.window.html?include=grandparent]
+ [public to local, grandparent navigates: failure.]
+ expected: FAIL
+
+ [public to local, grandparent navigates: success.]
+ expected: FAIL
+
+
+[iframe.tentative.https.window.html?include=from-private]
+ [private to local: failed preflight.]
+ expected: FAIL
+
+ [private to local: success.]
+ expected: FAIL
+
+
+[iframe.tentative.https.window.html?include=from-public]
+ [public to local: failed preflight.]
+ expected: FAIL
+
+ [public to local: success.]
+ expected: FAIL
+
+ [public to private: failed preflight.]
+ expected: FAIL
+
+ [public to private: success.]
+ expected: FAIL
+
+
+[iframe.tentative.https.window.html?include=from-treat-as-public]
+ [treat-as-public-address to local: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public-address to local: success.]
+ expected: FAIL
+
+ [treat-as-public-address to private: failed preflight.]
+ expected: FAIL
+
+ [treat-as-public-address to private: success.]
+ expected: FAIL
+
+
+[iframe.tentative.https.window.html?include=from-local]
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini
index 1d68034a37d..ab9ac6e835e 100644
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini
@@ -1,12 +1,13 @@
[failure-check-sequence.https.html]
+ expected: TIMEOUT
[CSP check precedes COEP check - CSP header first]
- expected: FAIL
+ expected: NOTRUN
[COEP check precedes X-Frame-Options check]
- expected: FAIL
+ expected: NOTRUN
[CSP check precedes COEP check - COEP header first]
- expected: FAIL
+ expected: NOTRUN
[CSP check precedes X-Frame-Options check]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
index 1bca09f21d6..c5fc1407992 100644
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
@@ -1,4 +1,5 @@
[iframe-src-aboutblank-navigate-immediately.html]
+ expected: TIMEOUT
[Navigating to a different document with window.open]
expected: FAIL
@@ -6,4 +7,4 @@
expected: FAIL
[Navigating to a different document with form submission]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
index 51fd557bd7f..149bcb4ff8c 100644
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini
@@ -7,3 +7,6 @@
[load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank#foo']
expected: FAIL
+
+ [load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
new file mode 100644
index 00000000000..7dc346632a4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
@@ -0,0 +1,3 @@
+[navigation-unload-same-origin.window.html]
+ [Same-origin navigation started from unload handler must be ignored]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..ba0aed26689
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,3 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini
index 90eb9ed743b..24c9e5d3926 100644
--- a/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini
@@ -1,4 +1,5 @@
[cross-origin-objects.html]
+ expected: TIMEOUT
[Basic sanity-checking (cross-origin)]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html.ini
deleted file mode 100644
index a94c7f3a91c..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.align.center.html]
- [textAlign center is the center of the em squares (not the bounding box)]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html.ini
deleted file mode 100644
index e87fa1ae542..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.align.end.ltr.html]
- [textAlign end with ltr is the right edge]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html.ini
deleted file mode 100644
index 4546e4efe3d..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.align.end.rtl.html]
- [textAlign end with rtl is the left edge]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html.ini
deleted file mode 100644
index 9403b25f6f1..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.align.start.ltr.html]
- [textAlign start with ltr is the left edge]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html.ini
deleted file mode 100644
index c6ff9f76168..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.measure.advances.html]
- [Testing width advances]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html.ini
deleted file mode 100644
index 9d0d26f9399..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.measure.baselines.html]
- [Testing baselines]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html.ini
deleted file mode 100644
index 89c77c39bbb..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.measure.emHeights.html]
- [Testing emHeights]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/text/canvas.2d.disconnected.html.ini
index 5cdcce07c65..5cdcce07c65 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/text/canvas.2d.disconnected.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html.ini
deleted file mode 100644
index 4969502107f..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.baseline.middle.html]
- [textBaseline middle is the middle of the em square (not the bounding box)]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html.ini
deleted file mode 100644
index 488f1783649..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.draw.space.collapse.other.html]
- [Space characters are converted to U+0020, and collapsed (per CSS)]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.center.html.ini
index a94c7f3a91c..41fa983ddcf 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.center.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.align.center.html]
[textAlign center is the center of the em squares (not the bounding box)]
expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.end.ltr.html.ini
index e87fa1ae542..b2791db60af 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.end.ltr.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.align.end.ltr.html]
[textAlign end with ltr is the right edge]
expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.end.rtl.html.ini
index 4546e4efe3d..050805892c3 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.end.rtl.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.align.end.rtl.html]
[textAlign end with rtl is the left edge]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.left.html.ini
index 44e7bfc3349..ed0f7d666fe 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.left.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.align.left.html]
[textAlign left is the left of the first em square (not the bounding box)]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.right.html.ini
index ab6ee4d84cf..709ca126edd 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.right.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.align.right.html]
[textAlign right is the right of the last em square (not the bounding box)]
expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.start.ltr.html.ini
index 9403b25f6f1..312d5c3cb74 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.start.ltr.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.align.start.ltr.html]
[textAlign start with ltr is the left edge]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.start.rtl.html.ini
index 297adfc6827..53648219cef 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.align.start.rtl.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.align.start.rtl.html]
[textAlign start with rtl is the right edge]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.alphabetic.html.ini
index 93b0cf0b169..eb77a98f379 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.alphabetic.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.baseline.alphabetic.html]
[Canvas test: 2d.text.draw.baseline.alphabetic]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.bottom.html.ini
index a7c97c18e6e..57379d7652f 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.bottom.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.baseline.bottom.html]
[textBaseline bottom is the bottom of the em square (not the bounding box)]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.hanging.html.ini
index 4b933de9c99..e86ff837081 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.hanging.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.baseline.hanging.html]
[Canvas test: 2d.text.draw.baseline.hanging]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.ideographic.html.ini
index b099ac007ca..6666ef57b21 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.ideographic.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.baseline.ideographic.html]
[Canvas test: 2d.text.draw.baseline.ideographic]
expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.middle.html.ini
index 4969502107f..fb00ebe5c37 100644
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.middle.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.baseline.middle.html]
[textBaseline middle is the middle of the em square (not the bounding box)]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.top.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.top.html.ini
index fde10ed8b71..eb6c9eb1b9e 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.baseline.top.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.baseline.top.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.baseline.top.html]
[textBaseline top is the top of the em square (not the bounding box)]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fill.maxWidth.bound.html.ini
index 1a92a639587..42046658284 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fill.maxWidth.bound.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.fill.maxWidth.bound.html]
[fillText handles maxWidth based on line size, not bounding box size]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html.ini
new file mode 100644
index 00000000000..df06827dabe
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html.ini
@@ -0,0 +1,3 @@
+[2d.text.draw.fill.maxWidth.fontface.html]
+ [fillText works on @font-face fonts]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.html.ini
index a536e29790e..a536e29790e 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.html.ini
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.notinpage.html.ini
index 5de0c0d20bb..5de0c0d20bb 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.notinpage.html.ini
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.repeat.html.ini
index c0261adb627..c0261adb627 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.fontface.repeat.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.basic.html.ini
index b24ad7daaf5..e13152a0022 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.basic.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.space.basic.html]
[U+0020 is rendered the correct size (1em wide)]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.end.html.ini
index 6977cd809fb..e436e087653 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.end.html.ini
@@ -1,6 +1,3 @@
[2d.text.draw.space.collapse.end.html]
- [Space characters at the end of a line are collapsed (per CSS)]
- expected: FAIL
-
[Space characters at the end of a line are NOT collapsed]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.nonspace.html.ini
index 403c4063ea3..7368e324836 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.nonspace.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.space.collapse.nonspace.html]
[Non-space characters are not converted to U+0020 and collapsed]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.other.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.other.html.ini
new file mode 100644
index 00000000000..1bf6ebc60fc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.other.html.ini
@@ -0,0 +1,3 @@
+[2d.text.draw.space.collapse.other.html]
+ [Space characters are converted to U+0020, and are NOT collapsed]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.space.html.ini
index 29a17e29f3c..dd23d585ef7 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.space.html.ini
@@ -1,6 +1,3 @@
[2d.text.draw.space.collapse.space.html]
- [Space characters are converted to U+0020, and collapsed (per CSS)]
- expected: FAIL
-
[Space characters are converted to U+0020, and are NOT collapsed]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.start.html.ini
index 14a3cd3ba4d..14a3cd3ba4d 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.space.collapse.start.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.stroke.unaffected.html.ini
index 837a7012c75..ee1c951650e 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.draw.stroke.unaffected.html.ini
@@ -1,4 +1,3 @@
[2d.text.draw.stroke.unaffected.html]
[strokeText does not start a new path or subpath]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.absolute.spacing.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.absolute.spacing.html.ini
index fa550b0b5b9..fa550b0b5b9 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.absolute.spacing.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.absolute.spacing.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.font-relative.spacing.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.font-relative.spacing.html.ini
index f6753a01f6a..f6753a01f6a 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.font-relative.spacing.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.font-relative.spacing.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontKerning.html.ini
index 080d8d3fdaf..0e0aba7b436 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontKerning.html.ini
@@ -1,4 +1,3 @@
[2d.text.drawing.style.fontKerning.html]
[Testing basic functionalities of fontKerning for canvas]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontKerning.with.uppercase.html.ini
index e86dd669bb7..6b194e1743c 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontKerning.with.uppercase.html.ini
@@ -1,4 +1,3 @@
[2d.text.drawing.style.fontKerning.with.uppercase.html]
[Testing basic functionalities of fontKerning for canvas]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontStretch.settings.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontStretch.settings.html.ini
index 1bf6b9bb1c6..1bf6b9bb1c6 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontStretch.settings.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontStretch.settings.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontVariant.settings.html.ini
index 3f02c8abdf5..c65e85a07fd 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.fontVariant.settings.html.ini
@@ -1,6 +1,3 @@
[2d.text.drawing.style.fontVariant.settings.html]
- [Testing basic functionalities of fontKerning for canvas]
- expected: FAIL
-
[Testing basic functionalities of fontVariant for canvas]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.invalid.spacing.html.ini
index 15f86853a36..15f86853a36 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.invalid.spacing.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.letterSpacing.change.font.html.ini
index c99943f4860..c99943f4860 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.letterSpacing.change.font.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.letterSpacing.measure.html.ini
index 708eee4c24f..1652d8b6f19 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.letterSpacing.measure.html.ini
@@ -1,3 +1,3 @@
[2d.text.drawing.style.letterSpacing.measure.html]
- [Testing letter spacing and word spacing]
+ [Testing letter spacing with different length units]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.direction.html.ini
index ff54ff88e70..f58a30c9dce 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.direction.html.ini
@@ -1,3 +1,3 @@
-[2d.text.measure.boundingBox.direction.html]
+[2d.text.drawing.style.measure.direction.html]
[Measurement should follow text direction]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.rtl.text.html.ini
index 9976da88f60..370a19f75d2 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.rtl.text.html.ini
@@ -1,3 +1,3 @@
-[2d.text.measure.rtl.text.html]
+[2d.text.drawing.style.measure.rtl.text.html]
[Measurement should follow canvas direction instead text direction]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.textAlign.html.ini
index f890a67746b..6d8e70c072f 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.measure.textAlign.html.ini
@@ -1,3 +1,3 @@
-[2d.text.measure.boundingBox.textAlign.html]
+[2d.text.drawing.style.measure.textAlign.html]
[Measurement should be related to textAlignment]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.nonfinite.spacing.html.ini
index d452f9ee821..d452f9ee821 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.nonfinite.spacing.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.textRendering.settings.html.ini
index 1380fbe4652..e3706705cfb 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.textRendering.settings.html.ini
@@ -1,4 +1,3 @@
[2d.text.drawing.style.textRendering.settings.html]
[Testing basic functionalities of textRendering in Canvas]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.wordSpacing.change.font.html.ini
index 8c8ff7d2136..8c8ff7d2136 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.wordSpacing.change.font.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.wordSpacing.measure.html.ini
index 21d30292a8b..fd07f5deb5c 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.drawing.style.wordSpacing.measure.html.ini
@@ -1,3 +1,3 @@
[2d.text.drawing.style.wordSpacing.measure.html]
- [Testing if word spacing is working properly]
+ [Testing word spacing with different length units]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.font.parse.invalid.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.font.parse.invalid.html.ini
index 3c74f7f5570..372bd2d6acf 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.font.parse.invalid.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.font.parse.invalid.html.ini
@@ -1,4 +1,3 @@
[2d.text.font.parse.invalid.html]
[Canvas test: 2d.text.font.parse.invalid]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.actualBoundingBox.html.ini
index 93a00d9d776..05ac2768b66 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.actualBoundingBox.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.actualBoundingBox.html]
[Testing actualBoundingBox]
expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.advances.html.ini
index c6ff9f76168..b02749afbf1 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.advances.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.advances.html]
[Testing width advances]
expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.baselines.html.ini
index 9d0d26f9399..b9ed0e903b2 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.baselines.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.baselines.html]
[Testing baselines]
expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.emHeights.html.ini
index 89c77c39bbb..f05f02b77ce 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.emHeights.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.emHeights.html]
[Testing emHeights]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.fontBoundingBox.ahem.html.ini
index 88eb801ad00..b1020bc5853 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.fontBoundingBox.ahem.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.fontBoundingBox.ahem.html]
[Testing fontBoundingBox for font ahem]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.fontBoundingBox.html.ini
index ec57f1b22cd..80b5f32b933 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.fontBoundingBox.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.fontBoundingBox.html]
- [Testing fontBoundingBox]
+ [Testing fontBoundingBox measurements]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.basic.html.ini
index 73a7796ad93..7dfc4268e8c 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.basic.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.width.basic.html]
[The width of character is same as font used]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.empty.html.ini
index 77304a852d8..ccc33dcec72 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.empty.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.width.empty.html]
[The empty string has zero width]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.measure.width.space.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.space.html.ini
index e2d0be20f73..1fa3f9dd235 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/2d.text.measure.width.space.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/2d.text.measure.width.space.html.ini
@@ -1,6 +1,3 @@
[2d.text.measure.width.space.html]
- [Space characters are converted to U+0020 and collapsed (per CSS)]
- expected: FAIL
-
[Space characters are converted to U+0020 and NOT collapsed]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-inherit-rtl.html.ini
index 3b5c4cfa6b3..3b5c4cfa6b3 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-inherit-rtl.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-rtl.html.ini
index 850216c2612..850216c2612 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/direction-rtl.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-2.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-2.html.ini
index 484b3668394..484b3668394 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-2.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-2.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-3.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-3.html.ini
index dfe4880591e..dfe4880591e 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-3.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-3.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-4.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-4.html.ini
index c38d3a21e62..c38d3a21e62 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-4.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/fontVariantCaps-4.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/parent-style-relative-units.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/text/parent-style-relative-units.html.ini
index 93b6a7e3452..93b6a7e3452 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/text-styles/parent-style-relative-units.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/text/parent-style-relative-units.html.ini
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html.ini
deleted file mode 100644
index 6a8206c0505..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.letterSpacing.measure.absolute.html]
- [Testing letter spacing with absolute length]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js.ini
deleted file mode 100644
index eaae7cc8c84..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.letterSpacing.measure.absolute.worker.html]
- [Testing letter spacing with absolute length]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.html.ini
index 708eee4c24f..1652d8b6f19 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.html.ini
@@ -1,3 +1,3 @@
[2d.text.drawing.style.letterSpacing.measure.html]
- [Testing letter spacing and word spacing]
+ [Testing letter spacing with different length units]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html.ini
deleted file mode 100644
index 9cb3a0a857b..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.letterSpacing.measure.relative.html]
- [Testing letter spacing with font-relative length]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js.ini
deleted file mode 100644
index eca264d6801..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.letterSpacing.measure.relative.worker.html]
- [Testing letter spacing with font-relative length]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.js.ini
new file mode 100644
index 00000000000..52a9e878999
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.js.ini
@@ -0,0 +1,3 @@
+[2d.text.drawing.style.letterSpacing.measure.worker.html]
+ [Testing letter spacing with different length units]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html.ini
deleted file mode 100644
index 2d3e39dc1ab..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.wordSpacing.measure.absolute.html]
- [Testing if word spacing is working properly with absolute length]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js.ini
deleted file mode 100644
index dc9c3e064a6..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.wordSpacing.measure.absolute.worker.html]
- [Testing if word spacing is working properly with absolute length]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.html.ini
index 21d30292a8b..fd07f5deb5c 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.html.ini
@@ -1,3 +1,3 @@
[2d.text.drawing.style.wordSpacing.measure.html]
- [Testing if word spacing is working properly]
+ [Testing word spacing with different length units]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html.ini
deleted file mode 100644
index 7a3721c0c12..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.wordSpacing.measure.relative.html]
- [Testing if word spacing is working properly with font-relative length]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js.ini
deleted file mode 100644
index 2142c126098..00000000000
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.wordSpacing.measure.relative.worker.html]
- [Testing if word spacing is working properly with font-relative length]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.js.ini
new file mode 100644
index 00000000000..12319674861
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.js.ini
@@ -0,0 +1,3 @@
+[2d.text.drawing.style.wordSpacing.measure.worker.html]
+ [Testing word spacing with different length units]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html.ini
index 63e0d7211b4..c384e5f342c 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html.ini
@@ -2,3 +2,5 @@
[Testing actualBoundingBox for OffscreenCanvas]
expected: FAIL
+ [Testing actualBoundingBox]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js.ini
index 12a20d87916..f53735e9a12 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js.ini
@@ -2,3 +2,5 @@
[Testing actualBoundingBox for OffscreenCanvas]
expected: FAIL
+ [Testing actualBoundingBox]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.html.ini
index d4d10c1a9ff..bc157b5d8a5 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.html.ini
@@ -2,3 +2,5 @@
[Testing width advances for OffscreenCanvas]
expected: FAIL
+ [Testing width advances]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.worker.js.ini
index 631e5f51138..6be6240a0bf 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.advances.worker.js.ini
@@ -2,3 +2,5 @@
[Testing width advances for OffscreenCanvas]
expected: FAIL
+ [Testing width advances]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.html.ini
index dacda0474e0..5a755947f1c 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.html.ini
@@ -2,3 +2,5 @@
[Testing baselines for OffscreenCanvas]
expected: FAIL
+ [Testing baselines]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js.ini
index a5ea22a47b5..58155d00cb4 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js.ini
@@ -2,3 +2,5 @@
[Testing baselines for OffscreenCanvas]
expected: FAIL
+ [Testing baselines]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.html.ini
index 80212ec5dc0..2a02941652d 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.html.ini
@@ -2,3 +2,5 @@
[Testing emHeights for OffscreenCanvas]
expected: FAIL
+ [Testing emHeights]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js.ini
index d101015d3b5..598ab74c47d 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js.ini
@@ -2,3 +2,5 @@
[Testing emHeights for OffscreenCanvas]
expected: FAIL
+ [Testing emHeights]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.html.ini
index 88eb801ad00..b1020bc5853 100644
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.html.ini
@@ -1,4 +1,3 @@
[2d.text.measure.fontBoundingBox.ahem.html]
[Testing fontBoundingBox for font ahem]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.js.ini
new file mode 100644
index 00000000000..f951d3c405d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.js.ini
@@ -0,0 +1,3 @@
+[2d.text.measure.fontBoundingBox.ahem.worker.html]
+ [Testing fontBoundingBox for font ahem]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html.ini
index 71d6e8bf76b..76ec859524b 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html.ini
@@ -2,3 +2,5 @@
[Testing fontBoundingBox for OffscreenCanvas]
expected: FAIL
+ [Testing fontBoundingBox measurements]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js.ini
index e11570b0aa4..8ded9356b4b 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js.ini
@@ -2,3 +2,5 @@
[Testing fontBoundingBox for OffscreenCanvas]
expected: FAIL
+ [Testing fontBoundingBox measurements]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.html.ini
index 9146392b646..5a3add615f5 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.html.ini
@@ -2,3 +2,5 @@
[The width of character is same as font used for OffscreenCanvas]
expected: FAIL
+ [The width of character is same as font used]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js.ini
index b2e48b2d5b9..ab0d27ad05d 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js.ini
@@ -2,3 +2,5 @@
[The width of character is same as font used for OffscreenCanvas]
expected: FAIL
+ [The width of character is same as font used]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.html.ini
index 3f013857951..e7133922d3d 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.html.ini
@@ -2,3 +2,5 @@
[The empty string has zero width for OffscreenCanvas]
expected: FAIL
+ [The empty string has zero width]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js.ini
index f78fd87f7e7..7ee1ec7b0f9 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js.ini
@@ -2,3 +2,5 @@
[The empty string has zero width for OffscreenCanvas]
expected: FAIL
+ [The empty string has zero width]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/matches-about-blank-base-url.window.js.ini b/tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/matches-about-blank-base-url.window.js.ini
new file mode 100644
index 00000000000..70293dab41c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/infrastructure/urls/base-url/matches-about-blank-base-url.window.js.ini
@@ -0,0 +1,3 @@
+[matches-about-blank-base-url.window.html]
+ [about:blank and about:blank?foo#bar both 'match about:blank']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini
deleted file mode 100644
index 09c049e4b58..00000000000
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[media_fragment_seek.html]
- [Video should seek to time specified in media fragment syntax]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index 2d3fbf0f308..25d9964f057 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,5 +1,4 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
- expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index f9138fb999a..6f7461b9472 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
- expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index ff6467094b8..d5fd800f09d 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,3 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html]
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
index 3cdeb8ebcbc..47b45e65a1c 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
@@ -1,3 +1,9 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
+
+ [createHTMLDocument]
+ expected: FAIL
+
+ [<template>]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html.ini
new file mode 100644
index 00000000000..b73b3cee21b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html.ini
@@ -0,0 +1,6 @@
+[dirname-only-if-applies.html]
+ [Submit input element directionality to FormData, if dirname applies.]
+ expected: FAIL
+
+ [Submit input element directionality, if dirname applies.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini
new file mode 100644
index 00000000000..5d8289307cc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/historical.html.ini
@@ -0,0 +1,3 @@
+[historical.html]
+ [<input name=isindex> should not be supported]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html.ini
new file mode 100644
index 00000000000..df4bebcfec0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html.ini
@@ -0,0 +1,2 @@
+[selectmenu-explicit-size.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
index cc18f512574..071b4378add 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html.ini
@@ -11,6 +11,3 @@
[Check that rel=noopener with target=_parent does a normal load]
expected: FAIL
-
- [Check that rel=noopener with target=_self does a normal load]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini
deleted file mode 100644
index 53acb938c1b..00000000000
--- a/tests/wpt/meta-legacy-layout/html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[module-static-import-delayed.html]
- [document.write in an imported module]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
index e55f8f2ce3c..8845054116d 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini
@@ -3,6 +3,3 @@
expected: TIMEOUT
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
-
- [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
index 6dcac6f75ac..dbe1def99e3 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini
@@ -1,5 +1,4 @@
[promise-job-entry-different-function-realm.html]
- expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
@@ -13,4 +12,4 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
index 8bcf3a07de4..aa8e590fb27 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html.ini
@@ -1,19 +1,19 @@
[promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
- expected: FAIL
+ expected: TIMEOUT
[Rejection handler on pending-then-rejected promise]
- expected: TIMEOUT
+ expected: FAIL
[Sanity check: this all works as expected with no promises involved]
- expected: FAIL
+ expected: TIMEOUT
[Thenable resolution]
expected: FAIL
[Rejection handler on rejected promise]
- expected: FAIL
+ expected: TIMEOUT
[Fulfillment handler on pending-then-fulfilled promise]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
index 1d71471b73c..4a48dd15a9d 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini
@@ -1,7 +1,6 @@
[promise-rejection-events.html]
- expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
- expected: TIMEOUT
+ expected: FAIL
[unhandledrejection: from createImageBitmap which is UA triggered]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
index 04c2032c723..39d039a0132 100644
--- a/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
+++ b/tests/wpt/meta-legacy-layout/webmessaging/broadcastchannel/cross-partition.https.tentative.html.ini
@@ -1,5 +1,5 @@
[cross-partition.https.tentative.html]
- expected: TIMEOUT
+ expected: CRASH
[BroadcastChannel messages aren't received from a cross-partition iframe]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/webmessaging/without-ports/018.html.ini b/tests/wpt/meta-legacy-layout/webmessaging/without-ports/018.html.ini
deleted file mode 100644
index b7b36c1d3a4..00000000000
--- a/tests/wpt/meta-legacy-layout/webmessaging/without-ports/018.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[018.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, javascript:]
- expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/websockets/stream/tentative/constructor.any.js.ini b/tests/wpt/meta-legacy-layout/websockets/stream/tentative/constructor.any.js.ini
index 9b4bd0894c8..206f0ef2554 100644
--- a/tests/wpt/meta-legacy-layout/websockets/stream/tentative/constructor.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/websockets/stream/tentative/constructor.any.js.ini
@@ -84,6 +84,9 @@
[wss.connection should resolve to the right types]
expected: FAIL
+ [wss.opened should resolve to the right types]
+ expected: FAIL
+
[constructor.any.worker.html?wpt_flags=h2]
[constructing with no URL should throw]
@@ -110,6 +113,9 @@
[wss.connection should resolve to the right types]
expected: FAIL
+ [wss.opened should resolve to the right types]
+ expected: FAIL
+
[constructor.any.sharedworker.html?wpt_flags=h2]
expected: ERROR
@@ -142,6 +148,9 @@
[wss.connection should resolve to the right types]
expected: FAIL
+ [wss.opened should resolve to the right types]
+ expected: FAIL
+
[constructor.any.sharedworker.html?wss]
expected: ERROR
@@ -170,3 +179,6 @@
[wss.connection should resolve to the right types]
expected: FAIL
+
+ [wss.opened should resolve to the right types]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/meta-legacy-layout/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/meta-legacy-layout/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json
index affca8b52e0..206c345fd72 100644
--- a/tests/wpt/meta/MANIFEST.json
+++ b/tests/wpt/meta/MANIFEST.json
@@ -19997,7 +19997,34 @@
},
"canvas": {
"element": {
- "drawing-text-to-the-canvas": {
+ "manual": {
+ "drawing-paths-to-the-canvas": {
+ "canvas_focus_drawFocusIfNeeded_AAPI_001-manual.html": [
+ "bf38fa68b7d0bc0e51a685e0cf0a4c83f36e0419",
+ [
+ null,
+ {}
+ ]
+ ]
+ }
+ },
+ "shadows": {
+ "2d.shadow.blur.high-manual.html": [
+ "aae0a163bb152344592755b06f2e78e834092edd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.shadow.blur.low-manual.html": [
+ "9674d6f0dbaa856fb62ca3e28a15611aa84d476f",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
+ "text": {
"2d.text.draw.fill.basic-manual.html": [
"d3f5df9d018f58d112fb0afc7fe260638bc300a9",
[
@@ -20033,33 +20060,6 @@
{}
]
]
- },
- "manual": {
- "drawing-paths-to-the-canvas": {
- "canvas_focus_drawFocusIfNeeded_AAPI_001-manual.html": [
- "bf38fa68b7d0bc0e51a685e0cf0a4c83f36e0419",
- [
- null,
- {}
- ]
- ]
- }
- },
- "shadows": {
- "2d.shadow.blur.high-manual.html": [
- "aae0a163bb152344592755b06f2e78e834092edd",
- [
- null,
- {}
- ]
- ],
- "2d.shadow.blur.low-manual.html": [
- "9674d6f0dbaa856fb62ca3e28a15611aa84d476f",
- [
- null,
- {}
- ]
- ]
}
},
"offscreen": {
@@ -152268,7 +152268,7 @@
]
],
"system-color-hightlights-vs-getSelection-001.html": [
- "7223ecdc92599db1334b747bb4b5b0605b8cc131",
+ "12495cd7adbcffa40b27d5d874e4e1040596dd96",
[
null,
[
@@ -152280,6 +152280,19 @@
{}
]
],
+ "system-color-hightlights-vs-getSelection-002.html": [
+ "f4025cd3f0382a11875d322d2d9e89b8704b4a00",
+ [
+ null,
+ [
+ [
+ "/css/css-color/reference/system-color-hightlights-vs-getSelection-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"t31-color-currentColor-b.xht": [
"b4ff486168877f9eb7326bb8648b0d19abc5d8ff",
[
@@ -160301,6 +160314,19 @@
{}
]
],
+ "counter-scoping-004.html": [
+ "3aad43f8535a5a222dc710db59c77deefe2b2390",
+ [
+ null,
+ [
+ [
+ "/css/css-contain/reference/counter-scoping-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"quote-scoping-001.html": [
"8c38e45b1ace138cbb795c77fdece555967e043d",
[
@@ -182282,6 +182308,32 @@
]
},
"math-script-level-and-math-style": {
+ "font-size-math-001.tentative.html": [
+ "b9964985600f01aa38e9fdf32cfe5f33a835d052",
+ [
+ null,
+ [
+ [
+ "/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "font-size-math-002.tentative.html": [
+ "7491409f2fa1e15397be8c96cfd68a9e594893ed",
+ [
+ null,
+ [
+ [
+ "/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"math-script-level-003.tentative.html": [
"47b67aa8a819d3c75d205ce493f753108f767829",
[
@@ -191460,6 +191512,19 @@
{}
]
],
+ "independent-tracks-from-parent-grid.html": [
+ "d7647eaafb978d9c986849d53fb55e97449a071b",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"item-percentage-height-001.html": [
"15e996ea3264e4147d8c3e37b464303647ac3e0e",
[
@@ -202740,6 +202805,19 @@
{}
]
],
+ "clip-path-rect-interpolation-001.html": [
+ "f204fb953ad41e469c245e2f378335c4f1572efb",
+ [
+ null,
+ [
+ [
+ "/css/css-masking/clip-path/animations/clip-path-xywh-interpolation-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"clip-path-shape-interpolation-001.html": [
"dae7f24d37cb39b34728664a2d854dfd53bc8c48",
[
@@ -204151,6 +204229,61 @@
{}
]
],
+ "clip-path-rect-001.html": [
+ "1645d45829946a5dfd149ec0d28bfaa049c97c4f",
+ [
+ null,
+ [
+ [
+ "/css/css-masking/clip-path/reference/clip-path-rectangle-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "clip-path-rect-002.html": [
+ "c9032e0a5bb0400529b8d6e82f01610f8b05857b",
+ [
+ null,
+ [
+ [
+ "/css/css-masking/clip-path/reference/clip-path-rectangle-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "clip-path-rect-003.html": [
+ "d61dce8c233c81b08307f4ea364cb49c399bcbd2",
+ [
+ null,
+ [
+ [
+ "/css/css-masking/clip-path/reference/clip-path-xywh-003-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 30
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"clip-path-reference-box-001.html": [
"35b31ebaef1fc184e7f4e6202093d650e6b1db65",
[
@@ -216792,7 +216925,7 @@
},
"overlay": {
"overlay-transition-backdrop-entry.html": [
- "7db33eb85dea74e2c50a3e07e26f98eb97670afc",
+ "8737dc58f92ae012abd9b42785450a1c22b4c35b",
[
null,
[
@@ -216805,7 +216938,7 @@
]
],
"overlay-transition-backdrop.html": [
- "fde933da5dbbbdbd769262944446e1c3f4416a91",
+ "30d40e111f9b676831f9b0cad8e4fb0c86ad4e40",
[
null,
[
@@ -216818,7 +216951,7 @@
]
],
"overlay-transition-finished.html": [
- "b2322389d06f102d5ee06e6979ab9fc1b140aa76",
+ "7e22cb3cf64b9f4840573f35495aa9ed22918f1b",
[
null,
[
@@ -216831,7 +216964,7 @@
]
],
"overlay-transition-in-rendering.html": [
- "dc1b9ffe20caaa6480c800f79fd104d7fba92cc9",
+ "0ada33c33cec13f57fa71a26d8e5bf1017125831",
[
null,
[
@@ -216844,7 +216977,7 @@
]
],
"overlay-transition-out-rendering.html": [
- "fea03951c5e9ae7062301f1bb1af75507ba76af3",
+ "abb01faef7ea994f4abb826ba590031472acbf22",
[
null,
[
@@ -282638,6 +282771,52 @@
}
]
],
+ "capture-with-offscreen-child-translated.html": [
+ "1aa994762eff3143a453adf724dd79c001b5f75e",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/capture-with-offscreen-child-translated-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "capture-with-offscreen-child.html": [
+ "9701524a29512212cdb4d3d54c8338acb9de8132",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/capture-with-offscreen-child-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ [
+ "/css/css-view-transitions/capture-with-offscreen-child.html",
+ "/css/css-view-transitions/capture-with-offscreen-child-ref.html",
+ "=="
+ ],
+ [
+ [
+ 0,
+ 5
+ ],
+ [
+ 0,
+ 200
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"capture-with-opacity-zero-child.html": [
"adcef1b4c5a528481521edc48b53d0f0b9f8c217",
[
@@ -305425,7 +305604,7 @@
]
],
"offset-path-shape-rect-002.html": [
- "c7b60b3660ba7332efa9a95d8b699ebba1cbea95",
+ "114143b18d1440caa926f54ca8ac35d57c0d3457",
[
null,
[
@@ -305434,6 +305613,35 @@
"=="
]
],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 96
+ ],
+ [
+ 0,
+ 440
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "offset-path-shape-rect-003.html": [
+ "597cdb372681008117e41c5d0ea1fbb53cb4c605",
+ [
+ null,
+ [
+ [
+ "/css/motion/offset-path-shape-rect-003-ref.html",
+ "=="
+ ]
+ ],
{}
]
],
@@ -310155,7 +310363,7 @@
]
],
"forced-colors-mode-14.html": [
- "c57193e99dbe5fb27be6082788f8fcb0c5b2ac2f",
+ "3ecc082d7bcaa34d1b1f204be9c1680bca42b8df",
[
null,
[
@@ -310595,125 +310803,6 @@
{}
]
],
- "drawing-text-to-the-canvas": {
- "direction-inherit-rtl.html": [
- "0ad92181a06acfdd4ca1d553b5fc7dfa4970f001",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "direction-ltr.html": [
- "42a39ac589c6da944af4cfc450675044d619be3f",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/direction-default-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "direction-rtl.html": [
- "3cc67c69f585f88dce6e4db4518c4016d5f39b03",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-1.html": [
- "3240476ad0f03e9a1b3f37a242fe781b2a46d613",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-1-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-2.html": [
- "cbcb73b231ce9051cb1386e366a241dc980bc05c",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-2-ref.html",
- "!="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-3.html": [
- "8c0761121efb0bfbdda0871d7d735ceeb5105cd3",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-3-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-4.html": [
- "62fe241838b2a9ab5d1656a4165266232fb4ec0d",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-3-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-5.html": [
- "a21169f8bb64781ca5235cfedcde562a3c8f85e3",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-1-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "fontVariantCaps-6.html": [
- "6126c4e7b2f3ebf17e1fa8e79947750be1728beb",
- [
- null,
- [
- [
- "/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-2-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ]
- },
"filters": {
"2d.filter.canvasFilterObject.dropShadow.tentative.html": [
"09eb09473d15d30bfd7faa9f20ae4044c13e122c",
@@ -311545,146 +311634,13 @@
}
},
"drawing-text-to-the-canvas": {
- "canvas.2d.disconnected.html": [
- "a1715f6663c96289adac6db909035020b6640d1c",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-ref.html",
- "=="
- ]
- ],
- {
- "fuzzy": [
- [
- null,
- [
- [
- 0,
- 23
- ],
- [
- 0,
- 829
- ]
- ]
- ]
- ]
- }
- ]
- ],
- "canvas.2d.fontStretch.condensed.html": [
- "72db41f007a503f5767b2f3a1812397cd74bad8c",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.expanded.html": [
- "8a13ba13fcb633b4d1176fb3e2f31cb9ddf26dca",
+ "canvas.2d.disconnected-font-size-math.html": [
+ "2cecff68f113c1330637e83dd8e36feff000ecce",
[
null,
[
[
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.extra-condensed.html": [
- "afa910f62cef05a60a1398828069d5752be17fa8",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.extra-expanded.html": [
- "d10d4d931256cd827348162d7fb7c7a454f181ec",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.normal.html": [
- "e8fd66acad92fd00175bfbe77971f6312129d84e",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.semi-condensed.html": [
- "2ac97195958a3b979eb839cfce7016073f667f72",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.semi-expanded.html": [
- "3c9fa278947331ea355d4a60081a52f06ba155f4",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.ultra-condensed.html": [
- "2b0426e976d97beca8873d2eb663c61d0ebb14f5",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "canvas.2d.fontStretch.ultra-expanded.html": [
- "5b4979de864b0dcac967a8bae61b265546323a3f",
- [
- null,
- [
- [
- "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html",
+ "/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math-ref.html",
"=="
]
],
@@ -312114,14 +312070,160 @@
]
]
},
- "text-styles": {
+ "text": {
+ "canvas.2d.disconnected.html": [
+ "a1715f6663c96289adac6db909035020b6640d1c",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.disconnected-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 23
+ ],
+ [
+ 0,
+ 829
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "canvas.2d.fontStretch.condensed.html": [
+ "72db41f007a503f5767b2f3a1812397cd74bad8c",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.expanded.html": [
+ "8a13ba13fcb633b4d1176fb3e2f31cb9ddf26dca",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.extra-condensed.html": [
+ "afa910f62cef05a60a1398828069d5752be17fa8",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.extra-expanded.html": [
+ "d10d4d931256cd827348162d7fb7c7a454f181ec",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.normal.html": [
+ "e8fd66acad92fd00175bfbe77971f6312129d84e",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.semi-condensed.html": [
+ "2ac97195958a3b979eb839cfce7016073f667f72",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.semi-expanded.html": [
+ "3c9fa278947331ea355d4a60081a52f06ba155f4",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.ultra-condensed.html": [
+ "2b0426e976d97beca8873d2eb663c61d0ebb14f5",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "canvas.2d.fontStretch.ultra-expanded.html": [
+ "5b4979de864b0dcac967a8bae61b265546323a3f",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"canvas_text_font_001.htm": [
"923ce71c077c99e61678f1b97759f871324eba03",
[
null,
[
[
- "/html/canvas/element/manual/text-styles/canvas_text_font_001-ref.htm",
+ "/html/canvas/element/manual/text/canvas_text_font_001-ref.htm",
"=="
]
],
@@ -312237,6 +312339,125 @@
{}
]
]
+ },
+ "text": {
+ "direction-inherit-rtl.html": [
+ "0ad92181a06acfdd4ca1d553b5fc7dfa4970f001",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/direction-rtl-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "direction-ltr.html": [
+ "42a39ac589c6da944af4cfc450675044d619be3f",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/direction-default-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "direction-rtl.html": [
+ "3cc67c69f585f88dce6e4db4518c4016d5f39b03",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/direction-rtl-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-1.html": [
+ "3240476ad0f03e9a1b3f37a242fe781b2a46d613",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-2.html": [
+ "cbcb73b231ce9051cb1386e366a241dc980bc05c",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-2-ref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-3.html": [
+ "8c0761121efb0bfbdda0871d7d735ceeb5105cd3",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-3-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-4.html": [
+ "62fe241838b2a9ab5d1656a4165266232fb4ec0d",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-3-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-5.html": [
+ "a21169f8bb64781ca5235cfedcde562a3c8f85e3",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "fontVariantCaps-6.html": [
+ "6126c4e7b2f3ebf17e1fa8e79947750be1728beb",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/reference/fontVariantCaps-2-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ]
}
},
"offscreen": {
@@ -318790,6 +319011,32 @@
]
},
"the-selectmenu-element": {
+ "selectmenu-explicit-size.tentative.html": [
+ "8c09f6c88964d5e72c54539a6fa1338043023e33",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "selectmenu-marker-end-aligned.tentative.html": [
+ "a419108e3d2fdd93a1e1d1508a0aa3311fda3a8a",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectmenu-marker-part.tentative.html": [
"b6e94c947a42730b99c33d6cf2b3b5cf77b601ae",
[
@@ -318816,8 +319063,21 @@
{}
]
],
+ "selectmenu-marker-visible-overflow.tentative.html": [
+ "6d39f6f3c50107fe3fcedf3b04bc4bd32dab2564",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectmenu-option-arbitrary-content-displayed.tentative.html": [
- "05bc651cb7cb3468e4c8e8e5fdda7e47aaaed874",
+ "416f2dc2ac0aa598fb59fc3d1adc7c7fb08e7b4e",
[
null,
[
@@ -318842,6 +319102,19 @@
{}
]
],
+ "selectmenu-overflow-x.tentative.html": [
+ "0e0c3dba5e852d87272931e1418cf7f6465ef64e",
+ [
+ null,
+ [
+ [
+ "/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectmenu-selected-value-behavior.tentative.html": [
"799b445114120284e67498c650bb4951496478c2",
[
@@ -323568,123 +323841,6 @@
{}
]
],
- "mathvariant-basic-transforms-with-default-font.html": [
- "24c868c49512a4805bcde64df8f59325cd741f59",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold-fraktur.html": [
- "32d037603bcda2a4ef84aa367c50089ae05b337a",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold-italic.html": [
- "725559a571f471f3c6384e87a29069f28d4a88c1",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-italic-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold-sans-serif.html": [
- "0e0662dff660445f6f8f90deac545e9a08492ea6",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-sans-serif-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold-script.html": [
- "0e775949f9b8034ad87d3bf42d8c97f48e9498ce",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-script-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-bold.html": [
- "db5f4755bec1d07c41324a7f14086679fef20700",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-bold-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-case-sensitivity.html": [
- "21c8300a7a7a584b36083fbb430b193237bf97b6",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-case-sensitivity-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-double-struck-font-style-font-weight.html": [
- "2e283e1d7022d69eeee89d85ad562586a5aacd4b",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-double-struck.html": [
- "335234ac3858cbf08c54525defbeea08a0d040c6",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-double-struck-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"mathvariant-font-style-font-weight.html": [
"793c687b097e1076b80d22b15be764c8f7db392d",
[
@@ -323698,149 +323854,6 @@
{}
]
],
- "mathvariant-fraktur.html": [
- "9c95cd06e710d8e275ef600156594ca4d9e2d288",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-fraktur-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-initial.html": [
- "3b0263a1977fbe14c287ef122caa2748c0ef7ed4",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-initial-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-italic.html": [
- "1e6aa6512d326109525044379eaab4a064c4ab13",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-italic-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-looped.html": [
- "b208849368b382caa9f44ca9d21be7db5f2fd508",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-looped-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-monospace.html": [
- "ad5541fe0ecf22ea6ac5d3f8325d96681c47738d",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-monospace-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-sans-serif-bold-italic.html": [
- "d51afe434546357fc8b2ecce9aeef5d2ac680a1a",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-sans-serif-italic.html": [
- "e847ca9bb8d583a4413d589fa47e5bd4c4df54f5",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-sans-serif-italic-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-sans-serif.html": [
- "43a1fa821f3a32e36b9b85e6702a1279b475b8c3",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-sans-serif-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-script.html": [
- "afbdfd9f946d51f4d37f1a4b9087cf801bc7ee32",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-script-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-stretched.html": [
- "99b06fb41be76e6f1adafff6cde98631f2a1e0e6",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-stretched-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "mathvariant-tailed.html": [
- "43fbca5e80d6f2e462d25e532ad526b7019fff7d",
- [
- null,
- [
- [
- "/mathml/relations/css-styling/mathvariant-tailed-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"mi-fontstyle-fontweight.html": [
"b6dd05ea20cb5cbb9c6921f0fe961b11cebd737c",
[
@@ -323924,7 +323937,7 @@
]
},
"presentational-hints-001.html": [
- "842d04b40af759533fe79eddd7cfb262049a196c",
+ "96ee69541bc7d6008d51574123ac5476592d7d99",
[
null,
[
@@ -323937,7 +323950,7 @@
]
],
"presentational-hints-002.html": [
- "fc89b07a37bd5c0b93b2385f237b4cb79a3ab478",
+ "8bb9153b863e91da7f239d7aad8bc623d34696b3",
[
null,
[
@@ -335435,7 +335448,7 @@
[]
],
"test_utils.sub.js": [
- "cce3060a87822861408235ec4902f6ea1688d830",
+ "712c57cbb7ebd7c2e48c9ccd9577e4028f1651bf",
[]
]
}
@@ -335616,14 +335629,54 @@
],
"resources": {
"check-client-hints.py": [
- "f5172300028711ca36c1812230d4ce0148cb0390",
+ "4fc4c331f2cdae227e8bbdbe21885fad42322287",
[]
],
"clear-site-data.py": [
"fd16be9fbcb0ffba3c440b5525e0580efd088f37",
[]
]
- }
+ },
+ "set-client-hints-after-clear-all.https.html.headers": [
+ "9768d865bc40974c031623993720dd090f39a686",
+ []
+ ],
+ "set-client-hints-after-clear-cache.https.html.headers": [
+ "bb61032edea2904eb2f3166835cc8f9f8126149c",
+ []
+ ],
+ "set-client-hints-after-clear-client-hints.https.html.headers": [
+ "e815201076e192c1ccc08f74d263249f9bc55315",
+ []
+ ],
+ "set-client-hints-after-clear-cookies.https.html.headers": [
+ "d0c1afae775b3ca3a2b97adaca25462de2fe3b3e",
+ []
+ ],
+ "set-client-hints-after-clear-storage.https.html.headers": [
+ "d898684cacaef6c23c5aef555b24036fe338e8e7",
+ []
+ ],
+ "set-critical-client-hints-after-clear-all.https.html.headers": [
+ "ebd7a88cc6ce0060d6028cd49c5d3b56bf4c87ad",
+ []
+ ],
+ "set-critical-client-hints-after-clear-cache.https.html.headers": [
+ "03d39b6fd753cffb42b98f864a5cd0992a2be729",
+ []
+ ],
+ "set-critical-client-hints-after-clear-client-hints.https.html.headers": [
+ "f55913cb5b6591d6cfac3e43e2e8bacc280d3af8",
+ []
+ ],
+ "set-critical-client-hints-after-clear-cookies.https.html.headers": [
+ "69c7e720ac0b91b6c786c4c1e610e1f7ad4e745f",
+ []
+ ],
+ "set-critical-client-hints-after-clear-storage.https.html.headers": [
+ "0f18541cf7bd81a1e28a6b979a960fd7e105bb72",
+ []
+ ]
},
"critical-ch": {
"critical-ch.navigation-timing.restart.https.html.headers": [
@@ -336053,7 +336106,7 @@
],
"resources": {
"helpers.js": [
- "4e024a1908528f66e05cea30a470594b07cf092b",
+ "08da0496b3091e9628c577bee20b81da44e6f57b",
[]
]
}
@@ -356796,7 +356849,7 @@
},
"cookie-store": {
"META.yml": [
- "46da8a9fb654cc685e1ba928d2b7adef9c20d4c8",
+ "68c30024552f526e2d34f42eb22416ac3b585114",
[]
],
"README.md": [
@@ -378970,7 +379023,11 @@
],
"reference": {
"system-color-hightlights-vs-getSelection-001-ref.html": [
- "1792869411b1d0aa9f418da53e17fd15762a7a64",
+ "c5d48b4c9f02794779f641bda31c65cafe82620b",
+ []
+ ],
+ "system-color-hightlights-vs-getSelection-002-ref.html": [
+ "67bec9a57e735cd9bee6df099e88a5705af54ed0",
[]
]
},
@@ -380157,6 +380214,10 @@
"49e7b85e878b78af41690bb815bb30a450820598",
[]
],
+ "counter-scoping-004-ref.html": [
+ "f6d8e38fd5f67dc4113a1f80ee57aac9e180089d",
+ []
+ ],
"pass_if_pass_below_clipped.html": [
"044783d1e5488a612d46dca6397346619b539c7b",
[]
@@ -384889,6 +384950,14 @@
]
},
"math-script-level-and-math-style": {
+ "font-size-math-001.tentative-ref.html": [
+ "45e72ffcf57d48778fb8a66a6e678ed6aee8b359",
+ []
+ ],
+ "font-size-math-002.tentative-ref.html": [
+ "caf4183693e4a99f1b41b8bcb1f33ab9aec25137",
+ []
+ ],
"math-script-level-003.tentative-ref.html": [
"d73e71f41c90154f7d72e63c86aa268bd3424c9a",
[]
@@ -398022,7 +398091,7 @@
],
"resources": {
"utils.js": [
- "be51111fd37357e81596b8fbaba8c7a8e7a5093b",
+ "fc3a5993cf566559505c1b92c6ff08d2e9484ad0",
[]
]
},
@@ -409266,6 +409335,14 @@
"859abdfb5f259021120d3810fa3fadce8be968c5",
[]
],
+ "capture-with-offscreen-child-ref.html": [
+ "b8ebf1d0e2fe3ec7e31082c29ae748707778325f",
+ []
+ ],
+ "capture-with-offscreen-child-translated-ref.html": [
+ "d724d0b7f9fa17c48b119279023309fb89ba392a",
+ []
+ ],
"capture-with-visibility-hidden-child-ref.html": [
"10067cc5212f467b6d6b62d7344d3b3a8c4dcaac",
[]
@@ -413797,7 +413874,11 @@
[]
],
"offset-path-shape-rect-002-ref.html": [
- "7e9e07cccf3d26c8090ba98ee788565eca799b07",
+ "bc28974cb5c2d1e2f3396b64c6edf6aac6a2645c",
+ []
+ ],
+ "offset-path-shape-rect-003-ref.html": [
+ "1c742650915aa2b8c23f883a9f765cf58eb15077",
[]
],
"offset-path-shape-xywh-001-ref.html": [
@@ -414721,7 +414802,7 @@
[]
],
"interpolation-testcommon.js": [
- "7934127937674e35f0a4c8be9f3e53b2b24a0c28",
+ "115067465feed31358f6d417e0208e3663589113",
[]
],
"numeric-testcommon.js": [
@@ -419797,6 +419878,16 @@
]
}
},
+ "fetch-later": {
+ "META.yml": [
+ "f8fd46bec3e7d4750c627f2fa6149f5b7b675429",
+ []
+ ],
+ "README.md": [
+ "661e2b918438fabcdee9e160f79ba8dddb2877d4",
+ []
+ ]
+ },
"h1-parsing": {
"README.md": [
"487a892dcffb09acb8bfa8e369757ed51fa17947",
@@ -420270,7 +420361,7 @@
[]
],
"fenced-frame-local-network-access.https.html": [
- "860371f22396477f1af1a8d89aecf04893977222",
+ "98f118432e0ee13b8b089977bd3c640343005497",
[]
],
"fenced-frame-local-network-access.https.html.headers": [
@@ -420322,7 +420413,7 @@
[]
],
"support.sub.js": [
- "f72a57a2c35d2555fb5452c9cbb0bcb777251765",
+ "27d733d8b7f4c09df054982a42779520fbbd0d7d",
[]
],
"worker-blob-fetcher.html": [
@@ -421588,7 +421679,7 @@
[]
],
"forced-colors-mode-14-ref.html": [
- "910b19df036d7e8a477ff41cd73d0fc0f8d51951",
+ "a1dc6851c9acc97c3d9f1b313962f01846587615",
[]
],
"forced-colors-mode-17-ref.html": [
@@ -421696,7 +421787,7 @@
[]
],
"forced-colors-mode-53-ref.html": [
- "443bc21680bcfae65c70fc3bbd2bf2b0a0282f41",
+ "6bfa7710fa337ffba4edf0c33d916d30aa675610",
[]
],
"resources": {
@@ -424389,46 +424480,6 @@
[]
]
},
- "drawing-text-to-the-canvas": {
- "2d.text.draw.fill.basic.png": [
- "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
- []
- ],
- "2d.text.draw.fill.maxWidth.large.png": [
- "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
- []
- ],
- "2d.text.draw.fill.rtl.png": [
- "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
- []
- ],
- "2d.text.draw.stroke.basic.png": [
- "fb3b5b830d345d2aa858e41673e08f99977baf08",
- []
- ],
- "reference": {
- "direction-default-ref.html": [
- "cef6df259c4801e93e7ce8dd1692e6f3157d77bc",
- []
- ],
- "direction-rtl-ref.html": [
- "010526d667b0746a014aa5706b19c001cd16d67e",
- []
- ],
- "fontVariantCaps-1-ref.html": [
- "8ea3c22be13dd3bf1421c3f80b121edcc8b2d3bc",
- []
- ],
- "fontVariantCaps-2-ref.html": [
- "c64f5d0ec2aea8307ea4ba5257498f2f236186e6",
- []
- ],
- "fontVariantCaps-3-ref.html": [
- "069fbfba8823e3e0f5fcf7ada4bd600b6dce1bbd",
- []
- ]
- }
- },
"fill-and-stroke-styles": {
"2d.fillStyle.parse.css-color-4-hsl-1.png": [
"2733836c998fa919d9f6880fd96a32026e82ca2c",
@@ -425027,12 +425078,8 @@
}
},
"drawing-text-to-the-canvas": {
- "canvas.2d.disconnected-ref.html": [
- "b36d29b97f5e3b0065ea13ca008ce0054835efdc",
- []
- ],
- "canvas.2d.fontStretch-ref.html": [
- "00ecdccad3743db0d0a1ec99850f80ea7964d512",
+ "canvas.2d.disconnected-font-size-math-ref.html": [
+ "6c5dab9f41331a77be8be8e59b17adec6f1909ee",
[]
]
},
@@ -425192,7 +425239,15 @@
[]
]
},
- "text-styles": {
+ "text": {
+ "canvas.2d.disconnected-ref.html": [
+ "b36d29b97f5e3b0065ea13ca008ce0054835efdc",
+ []
+ ],
+ "canvas.2d.fontStretch-ref.html": [
+ "00ecdccad3743db0d0a1ec99850f80ea7964d512",
+ []
+ ],
"canvas_text_font_001-ref.htm": [
"1a19757e001541f72bf375bd49c595d5a6ce85b0",
[]
@@ -425642,6 +425697,46 @@
"8764e89b371d41428f0ba45d9c0391e41b0dd8a2",
[]
]
+ },
+ "text": {
+ "2d.text.draw.fill.basic.png": [
+ "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+ []
+ ],
+ "2d.text.draw.fill.maxWidth.large.png": [
+ "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+ []
+ ],
+ "2d.text.draw.fill.rtl.png": [
+ "70d7b046cb226cfcb2bfeebe3477d3b580d8270a",
+ []
+ ],
+ "2d.text.draw.stroke.basic.png": [
+ "fb3b5b830d345d2aa858e41673e08f99977baf08",
+ []
+ ],
+ "reference": {
+ "direction-default-ref.html": [
+ "cef6df259c4801e93e7ce8dd1692e6f3157d77bc",
+ []
+ ],
+ "direction-rtl-ref.html": [
+ "010526d667b0746a014aa5706b19c001cd16d67e",
+ []
+ ],
+ "fontVariantCaps-1-ref.html": [
+ "8ea3c22be13dd3bf1421c3f80b121edcc8b2d3bc",
+ []
+ ],
+ "fontVariantCaps-2-ref.html": [
+ "c64f5d0ec2aea8307ea4ba5257498f2f236186e6",
+ []
+ ],
+ "fontVariantCaps-3-ref.html": [
+ "069fbfba8823e3e0f5fcf7ada4bd600b6dce1bbd",
+ []
+ ]
+ }
}
},
"offscreen": {
@@ -425998,7 +426093,7 @@
[]
],
"name2dir-canvas.yaml": [
- "c3818ebc76e8d85636ed298a580ec14f8253a6fa",
+ "2ad5197d34c166a15f7f19db2e74affc9e8d8c77",
[]
],
"name2dir-offscreen.yaml": [
@@ -426006,7 +426101,7 @@
[]
],
"name2dir.yaml": [
- "d6871f285298ee7051634a3404ce3bb67c8546a2",
+ "a56fc2ff488e80b78c2c40649869e08bf384fd68",
[]
],
"templates": {
@@ -426027,7 +426122,7 @@
[]
],
"testharness_element.html": [
- "b6bda2835e271e7cfa12bfc688e851caa9028644",
+ "56cde7936a944771ab5026de71191b45f529d559",
[]
],
"testharness_offscreen.html": [
@@ -426045,16 +426140,8 @@
],
"yaml": {
"element": {
- "drawing-text-to-the-canvas.yaml": [
- "5d050477af1ad358eb40cc88b23389ba68d9d19a",
- []
- ],
"meta.yaml": [
- "e8c425042668653f6908e6cf25ad6bf658aeb2f5",
- []
- ],
- "text-styles.yaml": [
- "ee319c4fef183405b9bd855644941c32f995f833",
+ "7b6f28f1713f19c601be350e7ffa12a76f08a42e",
[]
],
"the-canvas-element.yaml": [
@@ -426067,10 +426154,6 @@
"bd761937f40e8796f6192e09741c1c2bccf3df2d",
[]
],
- "text.yaml": [
- "b66ae4f82068061bb3b635b2d387219f245708c5",
- []
- ],
"the-offscreen-canvas.yaml": [
"0bef18bf9d56acccb5a747a791bc038c61857f48",
[]
@@ -426134,6 +426217,10 @@
"366ac0b6072dfaa9de58abbda84525d9fe1806d1",
[]
],
+ "text.yaml": [
+ "88a9a281c404434892c68ae1dbfdbc801bc552a4",
+ []
+ ],
"the-canvas-state.yaml": [
"045208615436efec1596a2f14cb62f02fa8e470a",
[]
@@ -433630,22 +433717,38 @@
]
},
"the-selectmenu-element": {
+ "selectmenu-explicit-size-ref.tentative.html": [
+ "53296f6daac135bfd6a6a5ace7dbb8e102779561",
+ []
+ ],
+ "selectmenu-marker-end-aligned-ref.tentative.html": [
+ "5985df5936bcece5d206527b9030c60b2a8507f6",
+ []
+ ],
"selectmenu-marker-part-ref.html": [
"cec447509eba28a17ca10636744e448ba64c5cb5",
[]
],
"selectmenu-marker-slot-ref.html": [
- "a35fcd9480067e3121af32cd3b6f895d66b02042",
+ "54bdefb76192c5bd138695dae630676fdd2b292e",
+ []
+ ],
+ "selectmenu-marker-visible-overflow-ref.tentative.html": [
+ "674de192e4c43c7fe9b1869e92f4f80b6e43957f",
[]
],
"selectmenu-option-arbitrary-content-displayed-ref.tentative.html": [
- "171829d90f3f28a5ee5e5229086d18fd50b61289",
+ "c890bb63f1bdd4041fc94e869bcfc88f927ff534",
[]
],
"selectmenu-option-arbitrary-content-not-displayed-ref.tentative.html": [
"d12943105f8c47d32f47eec0aa773a9a98046bfa",
[]
],
+ "selectmenu-overflow-x-ref.tentative.html": [
+ "8fd33dbc0722c04ff4711cabfd285e392f0071d6",
+ []
+ ],
"selectmenu-selected-value-behavior-ref.html": [
"bf468c5516cdbdab072983beaf1f506e62ed2251",
[]
@@ -433655,7 +433758,7 @@
[]
],
"selectmenu-selected-value-slot-ref.html": [
- "132058308449978a1d27c5b1be421a748bde2898",
+ "3b322bf79157dd71630050998977185af3b99a70",
[]
],
"selectmenu-writingmode-tb-ref.html": [
@@ -433668,7 +433771,7 @@
[]
],
"fake-selectmenu.js": [
- "84fe52856177fe6092e9fc69ae8128c3ba2a37d6",
+ "f6a99232330c575d1c6c31da4372db6758bcca22",
[]
],
"selectmenu_button_icon.svg": [
@@ -440141,7 +440244,7 @@
]
},
"lint.ignore": [
- "255a50e0d1ce5cafa5905341d097a6535c0135fd",
+ "8bb009db58a9bf527f212d1ef1ee048f10b4b651",
[]
],
"loading": {
@@ -441027,90 +441130,10 @@
"105ba412e6e5734e7dbaa48f655fd57419cc108c",
[]
],
- "mathvariant-basic-transforms-with-default-font-ref.html": [
- "6ebfd75c2fa6cb16b20eae3dd3c3305fc1e37139",
- []
- ],
- "mathvariant-bold-fraktur-ref.html": [
- "44588948e7b85bae66a93de09bdff83be4acf4ce",
- []
- ],
- "mathvariant-bold-italic-ref.html": [
- "9a93a37e35b2314e66d576280f36bc6a385de728",
- []
- ],
- "mathvariant-bold-ref.html": [
- "ac24ab5b003301a3b46c21c0eee985ddf137f384",
- []
- ],
- "mathvariant-bold-sans-serif-ref.html": [
- "78c0cc5ea624f56be0d5f127ad5bc77f3e665985",
- []
- ],
- "mathvariant-bold-script-ref.html": [
- "ef11f7fb8fabd25dd94cdb84ae8791083a8a66fc",
- []
- ],
- "mathvariant-case-sensitivity-ref.html": [
- "28d9acc1f4c2466c0d13c6bacc4e454b3bf365f3",
- []
- ],
- "mathvariant-double-struck-font-style-font-weight-ref.html": [
- "817723a62d3eec1e4f00f0229338f4b34e786e9d",
- []
- ],
- "mathvariant-double-struck-ref.html": [
- "ebdb7a15b0d23c3dacfb4baf6cd2c25808b93cc5",
- []
- ],
"mathvariant-font-style-font-weight-ref.html": [
"c3e586f4dd57b1f0c448f481e751a5a64c2ba127",
[]
],
- "mathvariant-fraktur-ref.html": [
- "3d1dd50a7d4a3145bbc9d5b3b8507a06c7e21373",
- []
- ],
- "mathvariant-initial-ref.html": [
- "5d5b72a1c5c3622413d8b4ee02ed8da7fde3d6f2",
- []
- ],
- "mathvariant-italic-ref.html": [
- "e2078c2948aa4f60c9c90492dd12bf413616690a",
- []
- ],
- "mathvariant-looped-ref.html": [
- "f00e5d87bb5a254581d84a74896b7c5ae027aedb",
- []
- ],
- "mathvariant-monospace-ref.html": [
- "1d4a0c0a52091313407dab41310196333c4b78e4",
- []
- ],
- "mathvariant-sans-serif-bold-italic-ref.html": [
- "f918db9b48ba579bc6342166737de0cdc1766c50",
- []
- ],
- "mathvariant-sans-serif-italic-ref.html": [
- "d7e23248c69bb203f47bd491e96a52865f4c63fc",
- []
- ],
- "mathvariant-sans-serif-ref.html": [
- "ced5272ecb5447aeb7b5089eafd711db7e5e0926",
- []
- ],
- "mathvariant-script-ref.html": [
- "60ced85bc3a64735d4ce78fd6027ffd04451346c",
- []
- ],
- "mathvariant-stretched-ref.html": [
- "454f2004ac1f626930dffc021e7de62baa90bf7d",
- []
- ],
- "mathvariant-tailed-ref.html": [
- "5e1461cd33efb474661ae6bf5d6e7cb66fa262b1",
- []
- ],
"mi-fontstyle-fontweight-ref.html": [
"63e6e2ba9cce50396e66843113a9fbf5e4860a34",
[]
@@ -441140,11 +441163,11 @@
]
},
"presentational-hints-001-ref.html": [
- "3d71d72fb34f35074962afc50fc7909bc55d3975",
+ "ca539440f8a5ccd9673c912cb9ac53d443b0097f",
[]
],
"presentational-hints-002-ref.html": [
- "b8f5458b9bbd169104535f66528a26356cf1ef45",
+ "fa22741efe5a8f9424aa7bbac6e6ad507f687fc9",
[]
],
"transform-ref.html": [
@@ -441323,7 +441346,7 @@
[]
],
"mathvariant-transforms.py": [
- "a7a48eb941238621019dfd817d14b62c5e75202c",
+ "e4857d2a3e326fe981aa3ed2a5c3d0370ea0073b",
[]
],
"operator-dictionary.py": [
@@ -450297,12 +450320,16 @@
"f3d9861c137b2ddfdeff1690c544f57328df7447",
[]
],
+ "simple-test-for-condition-main-resource.html": [
+ "0c3e3e78707b14dcca98bf1a435a34f402b3dadd",
+ []
+ ],
"simple.html": [
"0c3e3e78707b14dcca98bf1a435a34f402b3dadd",
[]
],
"static-router-sw.js": [
- "deb7a3e0b47c58f4ec292ce12a27850d28b1f956",
+ "e698d34c5276e02b68ffec3ab54707eb26401ac3",
[]
],
"test-helpers.sub.js": [
@@ -451092,7 +451119,7 @@
[]
],
"prefetch_nvs_hint.py": [
- "09c5d2eb737289ce0349fbefa8120ea4ab6dd26a",
+ "1de33a75d868805645ac5420a0a4a4f1d7538701",
[]
],
"ruleset.py": [
@@ -451104,7 +451131,7 @@
[]
],
"utils.sub.js": [
- "75cc86c509fbe384d7a1dab29d7bcc9e6bfe58db",
+ "73624c0c25b5d13f3ae116ed3589c1aea30c89c8",
[]
]
}
@@ -453025,7 +453052,7 @@
]
},
"ci_built_diff.sh": [
- "fad946d2973a6215ca5c4c306bdff194bae7e42e",
+ "7cf9b23db1cebac65bb115b02903b35191e13051",
[]
],
"ci_resources_unittest.sh": [
@@ -453085,7 +453112,7 @@
[]
],
"requirements_tc.txt": [
- "9c3a0d639afa52f310915bb2deb570027a5cd59b",
+ "e577a83fe391977e04b626d28a3bfdb4cd6a1a1f",
[]
],
"run_tc.py": [
@@ -453600,7 +453627,7 @@
[]
],
"requirements_mypy.txt": [
- "c31e7f5bce315c95e9f865447aa6760e8d27adf3",
+ "41ab1211b230fe59eed67ebd0ea0004c716d7877",
[]
],
"requirements_pytest.txt": [
@@ -453608,7 +453635,7 @@
[]
],
"requirements_tests.txt": [
- "96e00c745dccdfe16d7a081a741517e3731587b9",
+ "8225875c8e5f2eba554ac2847ca53ddcdd8540f0",
[]
],
"runner": {
@@ -461529,7 +461556,7 @@
[]
],
"error.py": [
- "47f94d83d1300fec18415479436bf317a045f256",
+ "8507a51543dd886a7b8911f913713b298ba0b2f2",
[]
],
"modules": {
@@ -461546,7 +461573,7 @@
[]
],
"browsing_context.py": [
- "b256bd1ae6736aee98bccc601adbfc3a5d12ba28",
+ "8aca3e6f67ffcd71f41cbe0257a1408b6a7fdc0a",
[]
],
"input.py": [
@@ -461909,7 +461936,7 @@
[]
],
"content_shell.py": [
- "04c0ca70c4c9313a2fb68d6b8f971d8252a11bbe",
+ "4bbb42cc2677a128764490bbe75b733af9849af0",
[]
],
"edge.py": [
@@ -462009,7 +462036,7 @@
[]
],
"executorcontentshell.py": [
- "d558ce07f4ab5527964bf4ee989af0078bf94ea4",
+ "1ff25781ba40997f713c52b0018a721e62f436cb",
[]
],
"executormarionette.py": [
@@ -462192,7 +462219,7 @@
[]
],
"testrunner.py": [
- "d2ed58444ab0a2b27f64f2e846f4c8af658b9267",
+ "b405dabd1dd01237fc1e74f8682489ee70fb9e01",
[]
],
"tests": {
@@ -465167,6 +465194,10 @@
"5f8621ef83660c66f0d037ea28fafefb558140f1",
[]
],
+ "encodedVideoChunk-serialization.crossAgentCluster.helper.html": [
+ "424ce927f9a14acdb96d801cdf7fe6c7a7d5349a",
+ []
+ ],
"four-colors-flip.avif": [
"eb081061609efee6e02994f5956d5d3c2c913403",
[]
@@ -465251,6 +465282,10 @@
"85676f29ff5806a32ac6713e601fdcb71dd03777",
[]
],
+ "serialization.crossAgentCluster.serviceworker.js": [
+ "bb3ec0df5b7db20dd70b8c58d19d93e38e731f96",
+ []
+ ],
"sfx-aac.mp4": [
"c7b3417d9c805c978ec863107dd87b879aa465ef",
[]
@@ -465276,7 +465311,7 @@
[]
],
"utils.js": [
- "bbb53e70e0dda0e829cd97bb128008756c161188",
+ "f09334677a6a42385949c262a163066d41f750d9",
[]
],
"video-decoder.crossOriginIsolated.https.any.js.headers": [
@@ -465299,10 +465334,6 @@
"8e751632a1f285b6c0dd50d4fb14cdb10d451816",
[]
],
- "videoFrame-serialization.crossAgentCluster.serviceworker.js": [
- "9b963610befab36124cfb2e61239253ad343a219",
- []
- ],
"videoFrame-utils.js": [
"a4c761306c05d58880e408b30ef2b28f6d6f0cb6",
[]
@@ -465336,7 +465367,7 @@
],
"bidi": {
"__init__.py": [
- "eb412738a83aea7835c9f5f1feed9363a6028fc4",
+ "9d049f0a5482907600bbf2f592082bce10b99aac",
[]
],
"browsing_context": {
@@ -465352,7 +465383,7 @@
},
"capture_screenshot": {
"__init__.py": [
- "64f25b9b861f879127a31f3aa8ed33fffbfb9caf",
+ "6a21f11e7ba8317346583083a5729dd3cc602e6f",
[]
]
},
@@ -473609,13 +473640,6 @@
{}
]
],
- "idbdatabase_deleteObjectStore2.htm": [
- "91f118ef62a3bd009dc2e9961f0dc87f554ccafc",
- [
- null,
- {}
- ]
- ],
"idbdatabase_deleteObjectStore3.htm": [
"3ddbe8ec62b42f24f54445ae3b3cec25793ee3a4",
[
@@ -473949,39 +473973,6 @@
{}
]
],
- "idbindex_batchGetAll.tentative.any.js": [
- "fe21445e83f8c414c3091b2699f451aef7310e2e",
- [
- "IndexedDB/idbindex_batchGetAll.tentative.any.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All Index"
- ],
- [
- "script",
- "resources/support.js"
- ]
- ]
- }
- ],
- [
- "IndexedDB/idbindex_batchGetAll.tentative.any.worker.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All Index"
- ],
- [
- "script",
- "resources/support.js"
- ]
- ]
- }
- ]
- ],
"idbindex_count.htm": [
"5b45b5223bdaccd24a0974dfcb7ebc7f73a177ac",
[
@@ -474524,80 +474515,6 @@
{}
]
],
- "idbobjectstore_batchGetAll.tentative.any.js": [
- "3aeb8553598692f6fd418cb729deb5bd4af1ac32",
- [
- "IndexedDB/idbobjectstore_batchGetAll.tentative.any.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All"
- ],
- [
- "script",
- "resources/support.js"
- ]
- ]
- }
- ],
- [
- "IndexedDB/idbobjectstore_batchGetAll.tentative.any.worker.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All"
- ],
- [
- "script",
- "resources/support.js"
- ]
- ]
- }
- ]
- ],
- "idbobjectstore_batchGetAll_largeValue.tentative.any.js": [
- "497196e642f313070e26371c79aab6769e64bf00",
- [
- "IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All (big value)"
- ],
- [
- "script",
- "resources/support.js"
- ],
- [
- "script",
- "resources/support-promises.js"
- ]
- ]
- }
- ],
- [
- "IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.worker.html",
- {
- "script_metadata": [
- [
- "title",
- "Batch Get All (big value)"
- ],
- [
- "script",
- "resources/support.js"
- ],
- [
- "script",
- "resources/support-promises.js"
- ]
- ]
- }
- ]
- ],
"idbobjectstore_clear.htm": [
"51b6da72d7ee2e01d3295f84049a43ea832333ed",
[
@@ -493365,6 +493282,76 @@
null,
{}
]
+ ],
+ "set-client-hints-after-clear-all.https.html": [
+ "22ee0f98611e27e36e4830ec13a19de01fcfdc9f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-client-hints-after-clear-cache.https.html": [
+ "3436138b2c5ea7fc6d1f5cfaad17b65f466c26a3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-client-hints-after-clear-client-hints.https.html": [
+ "18aeab2f6352afac6805d1c283de0c456ea1048f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-client-hints-after-clear-cookies.https.html": [
+ "db780d3abd662c8f10350f20dc8e343be75479c0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-client-hints-after-clear-storage.https.html": [
+ "30d541b6ed87fba816bcdcba3975f979ea85f3df",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-all.https.html": [
+ "062e72b5446834a08fa12eea857e5905f6af9287",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-cache.https.html": [
+ "ab97fa182b7f520d9ad5995a450333bc69694e22",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-client-hints.https.html": [
+ "cdddb9ff35adaf42f2e90c720528f13a9a2d6091",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-cookies.https.html": [
+ "0060f3aaa0c1d1a6c4911af389bf3255ae191b09",
+ [
+ null,
+ {}
+ ]
+ ],
+ "set-critical-client-hints-after-clear-storage.https.html": [
+ "9237e28cedce36179a2b60e3f08e560e80e65c76",
+ [
+ null,
+ {}
+ ]
]
},
"critical-ch": {
@@ -494480,7 +494467,7 @@
},
"close-watcher": {
"abortsignal.html": [
- "eb70ffed1b05e58fe4d5f31d49840ce4422846d0",
+ "ddd94526ab25c8313515234538808b01d7520fce",
[
null,
{
@@ -494488,8 +494475,8 @@
}
]
],
- "after-other-listeners.html": [
- "7dfe398012b966883a8585a1c51aab1c0ea82bb9",
+ "basic.html": [
+ "dc2fca5c36bb0cc4850b602bcc979436de93747b",
[
null,
{
@@ -494497,8 +494484,17 @@
}
]
],
- "basic.html": [
- "1c26c0ce15ed99e3cca1cbe950bd21511296d36c",
+ "esc-key.html": [
+ "4d98b3dc318290cced55716fffb31b1eb6934843",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "event-properties.html": [
+ "062693e4953c192fcc3be16574742cc97f4c7060",
[
null,
{
@@ -494507,12 +494503,39 @@
]
],
"frame-removal.html": [
- "b8bbac04f97baaa0d272a444c02ce4a300a9850b",
+ "573b16bb44da4d61bbabcd2e66aa74c200c6b17a",
[
null,
{}
]
],
+ "inside-event-listeners.html": [
+ "26999271799005c9e44a893dec40316153879cb4",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "popover-closewatcher-multiple-plus-free.html": [
+ "2982e29e264fa2f7073f45cab0bdd0b64dc21b58",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "popover-closewatcher.html": [
+ "6695f2bc4912c8aff87225bb56ec0091c9c129eb",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"user-activation-multiple-plus-free.html": [
"8a86624913fc37008fd22263627195c205224474",
[
@@ -494523,7 +494546,7 @@
]
],
"user-activation.html": [
- "64f217533d7e058307a4e3876d6f4eacad736099",
+ "a2bc575ee91bce4e198bd79f7238a1ed138d5bfd",
[
null,
{
@@ -504056,7 +504079,7 @@
]
],
"cookieStore_set_arguments.https.any.js": [
- "aab964d014eca3b341c1e772c677d2af71d8756e",
+ "8ff66bf7772f22076360fda0b735a7894ed6ad8d",
[
"cookie-store/cookieStore_set_arguments.https.any.html",
{
@@ -507910,7 +507933,7 @@
]
],
"display-interpolation.html": [
- "4c3f8f8d217d62114e707b14b6476eb87ed231d7",
+ "fb2503ac8a415566c6770ccf391690860fddec6b",
[
null,
{}
@@ -512011,6 +512034,13 @@
{}
]
],
+ "content-visibility-auto-first-observation-immediate.html": [
+ "5a177d6ea98f15315db595d6bc7b0e8f2da5ac4e",
+ [
+ null,
+ {}
+ ]
+ ],
"content-visibility-auto-state-changed-first-observation.html": [
"1c51851488199db10c8bfef392f48114fd35147e",
[
@@ -512057,7 +512087,7 @@
]
],
"content-visibility-interpolation.html": [
- "4b3cf856494e3ead5f8335abfd5fc6c7f63f11ea",
+ "55f8c7e5af8e6e9a808835dc374c964a958d819b",
[
null,
{}
@@ -521116,6 +521146,13 @@
{}
]
],
+ "clip-path-interpolation-xywh-rect.html": [
+ "8d35c2e9b0058b2c3ed570ebc10a4c1dad8d26c3",
+ [
+ null,
+ {}
+ ]
+ ],
"mask-image-interpolation.html": [
"ac6b266992d5eafffa8a1195abe8aae0403819b2",
[
@@ -521147,7 +521184,7 @@
]
],
"interpolation.html": [
- "e52d9e895916b3a74db21b7e377ca91e5d29ab19",
+ "f580de9c76951a977a88da4375f61bb00bd77de5",
[
null,
{}
@@ -521223,14 +521260,14 @@
]
],
"clip-path-computed.html": [
- "37b0193f461331ea5b44e2c00c6a8305df87b08e",
+ "8ec27a1472eac7cd5e0b4420a96f0b1c7ccfc793",
[
null,
{}
]
],
"clip-path-invalid.html": [
- "376cad3c520f116229e39ce5f3b064c0547a8de4",
+ "40020d91d4b3118641c74f0d6d773a9a4e494322",
[
null,
{}
@@ -521244,7 +521281,7 @@
]
],
"clip-path-valid.html": [
- "f495d46a24822a0008a70c067b4b35d10ee6a263",
+ "aa40dc97da3316a849cb7fe330ae2f6e94a9efa0",
[
null,
{}
@@ -521878,7 +521915,7 @@
]
],
"parsing.html": [
- "b189190f4125795c76997d32e3b5ce48b10fd140",
+ "ee9f35484469cb310fc3428bf0b99d60de92eceb",
[
null,
{}
@@ -522641,7 +522678,7 @@
]
],
"overlay-transition.html": [
- "9eae2115ff07a6f279843142a2a311f3fa3f73e4",
+ "efe402373fffc3d410b508d28b887ebabb6c73f0",
[
null,
{}
@@ -523463,14 +523500,14 @@
]
],
"custom-property-transition-custom-ident.html": [
- "2f5b55459d5b80c7c3e790579eb8f308f602367f",
+ "b7ca1ec785e847cb1b234b9ecb630378440863ba",
[
null,
{}
]
],
"custom-property-transition-image.html": [
- "8498615a936f6d2b66c858ba8b93c77873680994",
+ "4fd3fe649b0ac558b48b430aec46f15b0b432dcd",
[
null,
{}
@@ -523512,7 +523549,7 @@
]
],
"custom-property-transition-mismatched-list.html": [
- "e6ca781ce6409de32e8c3aca9c1e867647c3c1de",
+ "b7d964b92cb5c7c1857f4dc4dbd2934b73028a87",
[
null,
{}
@@ -523568,21 +523605,21 @@
]
],
"custom-property-transition-transform-function.html": [
- "385c222cd0e8a4fb85a1ea22fe435e093767c566",
+ "17ad1067a4dcfcf4f11b2f1e1a0367b1cf45ec96",
[
null,
{}
]
],
"custom-property-transition-transform-list.html": [
- "1e5cef194d09a6afcb59b386e160b22e1c6554cb",
+ "c9d3cb94d143d2fd45e1a6b70b40f14538d32353",
[
null,
{}
]
],
"custom-property-transition-url.html": [
- "600e7ddb1db75dcb5cb1921dca4a1d03e7714c58",
+ "c5d438e54936027beae83ed4d9adc2a1f574cd6d",
[
null,
{}
@@ -530322,21 +530359,21 @@
]
],
"text-transform-computed.html": [
- "391ee019d30bf6a319d6c6afea8519d5241d17db",
+ "1808e6fdca2e37d9d85362450dc3a7259774f2c7",
[
null,
{}
]
],
"text-transform-invalid.html": [
- "41482ab5f2c53da2c45bc1bc732ab143a67c05fd",
+ "3981480d38c8cd29b2078f0b92ce203ac83886be",
[
null,
{}
]
],
"text-transform-valid.html": [
- "fead45c8b8e45da70d4c14d12e4eba38348aed41",
+ "522eb791b0c9c9047d5c5599a969f628a14f6436",
[
null,
{}
@@ -531945,7 +531982,7 @@
]
],
"all-with-discrete.tentative.html": [
- "e328060d680f8dd0bd0f6f1585e3f1b420578ee4",
+ "c8734f28029e70465b5000d61548d652afca1bc3",
[
null,
{}
@@ -532206,6 +532243,13 @@
]
],
"parsing": {
+ "transition-behavior.html": [
+ "08ad3a6adf4da0cea53b4d3110eba16221d6ba6d",
+ [
+ null,
+ {}
+ ]
+ ],
"transition-computed.html": [
"a82551372f160fa77fdd0dcc7ac7d62d546db20d",
[
@@ -532284,7 +532328,7 @@
]
],
"transition-shorthand.html": [
- "caffb3978cf0162cb8616c6723c6cb93e33750b4",
+ "fcd14d2a1415ae6b294fe0d224434a80d4620ea9",
[
null,
{}
@@ -535685,7 +535729,7 @@
]
],
"acos-asin-atan-atan2-serialize.html": [
- "73ededd44ba64b5bd0d95df56c7036c667d6f686",
+ "ac22a703d0722cd5883f77f2b5d3e0dcdcc2eac6",
[
null,
{}
@@ -536919,7 +536963,7 @@
]
],
"pseudo-get-computed-style.html": [
- "8513e8207d37ed5fccaba591dea8ccae8354503c",
+ "268df4718e6dadcb53cc00bd5a53e826d87ca4b7",
[
null,
{}
@@ -540383,7 +540427,7 @@
]
],
"offset-path-interpolation-006.html": [
- "7ea118cb64b63acb491a90b8c88ce6d8b792b175",
+ "8c3e89ab03910bfc753666871037022d99014664",
[
null,
{}
@@ -540490,21 +540534,21 @@
]
],
"offset-path-computed.html": [
- "9e1fca2f5276b440ed49f09fef087ec8748e0d75",
+ "01435968cedff6d618b130fb27dd99cf9d8f553a",
[
null,
{}
]
],
"offset-path-parsing-invalid.html": [
- "f2123d130c026b9a301800de794b576dbcb2ff9e",
+ "6b7c4f5edf84a57b56850cf88806b3d237efb714",
[
null,
{}
]
],
"offset-path-parsing-valid.html": [
- "bad3f1b2cbacb36c85de35a93e7fa19406cd438c",
+ "c3c22754c47349154f2023815616da22b9d914e1",
[
null,
{}
@@ -544855,7 +544899,7 @@
]
],
"overscroll-deltas.html": [
- "21586322503d8507d8f20a7fd5f7d51844654325",
+ "6574a56a1e615e5e37d91d684537a2f28e091126",
[
null,
{
@@ -545017,6 +545061,13 @@
"testdriver": true
}
]
+ ],
+ "scrollend-with-snap-on-fractional-offset.html": [
+ "74dcb0f0bd068f3f6334fa323acb3162fb5f30b9",
+ [
+ null,
+ {}
+ ]
]
},
"shadow-relatedTarget.html": [
@@ -546963,7 +547014,7 @@
},
"parts": {
"basic-dom-part-objects.tentative.html": [
- "ee35298e5dabbbd09b45842c1f4d7f38642e2e74",
+ "3dda4e492c21987e3287b705759312ace27de120",
[
null,
{}
@@ -547803,7 +547854,7 @@
"editing": {
"edit-context": {
"edit-context-basics.tentative.html": [
- "a9d7a3dbf8ac370fdafd958e34e1e9aebc1ff9fb",
+ "27bde6e6ac29763532c744472425878375df1358",
[
null,
{}
@@ -551473,7 +551524,7 @@
]
],
"undo-redo.html": [
- "69bee00c86ffa300c39b6e70f4e8f98921dd06a5",
+ "391349eeef464c2324025f120a9876515bb5ca7d",
[
null,
{
@@ -566213,6 +566264,13 @@
{}
]
],
+ "fence-report-event-destination-url.https.html": [
+ "6c0bdd82dcd0c74e5d455f1a7c3443bdd0ac0b7b",
+ [
+ null,
+ {}
+ ]
+ ],
"fence-report-event.https.html": [
"ce217c7763a33b50b87bdf7d67750ad4d46b4e2b",
[
@@ -575495,6 +575553,44 @@
]
]
},
+ "fetch-later": {
+ "basic.tentative.https.window.js": [
+ "a8ca011a7c992878ddd51df65742939b8fbf6337",
+ [
+ "fetch/fetch-later/basic.tentative.https.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/testharness.js"
+ ],
+ [
+ "script",
+ "/resources/testharnessreport.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "non-secure.window.js": [
+ "2f2c3ea8d34b9dfaf8bbc6b12acc304a4beb791d",
+ [
+ "fetch/fetch-later/non-secure.window.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/resources/testharness.js"
+ ],
+ [
+ "script",
+ "/resources/testharnessreport.js"
+ ]
+ ]
+ }
+ ]
+ ]
+ },
"h1-parsing": {
"lone-cr.window.js": [
"6b46ed632f43771fac527dc65c5e3d9dd0d197e6",
@@ -578445,13 +578541,17 @@
]
],
"iframe.tentative.https.window.js": [
- "0208b715eaf22384c1fbdca4d8f95dd0ceb7119e",
+ "0c12970557d234093d77735dc2d422160c2da19f",
[
- "fetch/private-network-access/iframe.tentative.https.window.html",
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=from-local",
{
"script_metadata": [
[
"script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
"/common/dispatcher/dispatcher.js"
],
[
@@ -578465,6 +578565,218 @@
[
"timeout",
"long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=from-private",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=from-public",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=from-treat-as-public",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "fetch/private-network-access/iframe.tentative.https.window.html?include=grandparent",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "/common/subset-tests-by-key.js"
+ ],
+ [
+ "script",
+ "/common/dispatcher/dispatcher.js"
+ ],
+ [
+ "script",
+ "/common/utils.js"
+ ],
+ [
+ "script",
+ "resources/support.sub.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ],
+ [
+ "variant",
+ "?include=from-local"
+ ],
+ [
+ "variant",
+ "?include=from-private"
+ ],
+ [
+ "variant",
+ "?include=from-public"
+ ],
+ [
+ "variant",
+ "?include=from-treat-as-public"
+ ],
+ [
+ "variant",
+ "?include=grandparent"
]
],
"timeout": "long"
@@ -585108,7 +585420,7 @@
]
],
"about-srcdoc-navigation-blocked.window.js": [
- "659f7321c0e39207b18e1013c3fde4e81163296c",
+ "58b73494e11655bdea6e81493e0db453ff52a1b4",
[
"html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.html",
{
@@ -591919,316 +592231,6 @@
]
]
},
- "drawing-text-to-the-canvas": {
- "2d.text.draw.align.center.html": [
- "6f54844b29ab66b0548d187c97a14e68e0096364",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.end.ltr.html": [
- "39751e139ca33b48dae855932d0ec9048906fb81",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.end.rtl.html": [
- "86645a91742340a443e512a2c5b57f5a67d6c5ea",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.left.html": [
- "cd01f2588af9fd4537cba3656910e06e92538f13",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.right.html": [
- "64207b06e6e90744680fc219f32ea79f23d2cfa4",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.start.ltr.html": [
- "abf8086e8c1b32185d7df65884dcf30a6cc338e1",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.align.start.rtl.html": [
- "8c5b819854c535f8f5c78dcbebe25b5ec72e33b1",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.NaN.html": [
- "9705d2883065a566b3bf15f34bf703683cf34888",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.bound.html": [
- "88dc1099238741923c335a6b39c1e3821a4ff7ce",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.fontface.html": [
- "ed241deeb222de3109b7ad53dbfed9a1e27f661c",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.negative.html": [
- "ad50d5760834a117d1f348c144065c87211dce86",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.small.html": [
- "75866af40628ba88e6ab8861956b80a8263476a7",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.maxWidth.zero.html": [
- "a175a5787905548e03336b13c89ee3fe433297d2",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fill.unaffected.html": [
- "94ed31d1993eb6736c5a0c635bbe80aaa6a5391d",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fontface.html": [
- "cb7d6984d1f9e4380506136661cec3ba7ec09426",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fontface.notinpage.html": [
- "6c347399b2a53a00943ee6a74c0b83b343d44865",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.fontface.repeat.html": [
- "d6d33a07681b4ab20ccff156c2918b2cc336aeee",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.space.basic.html": [
- "2c5d4710134417be51c00ba1f8eb18957449407a",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.space.collapse.nonspace.html": [
- "00877c6a0b78b38caba641498a9c53727b2f0cc7",
- [
- null,
- {}
- ]
- ],
- "2d.text.draw.stroke.unaffected.html": [
- "76a36476eeb21c32908a10f8da9d24e8a0cb6bfb",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.absolute.spacing.html": [
- "1207f84e2bfbe54281ae94792675e837e8bb5390",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.font-relative.spacing.html": [
- "a232ec16029e5a58b522962791bc8c8473be65e4",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.fontKerning.html": [
- "6de9c6eb504209806ce529bf04522237dacc9694",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.fontKerning.with.uppercase.html": [
- "991f35af0dd841cc3c3671330a6454dbcb7ffe58",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.fontStretch.settings.html": [
- "b19eced89171199dcfb57f1d5aea4b8f7e83c427",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.fontVariant.settings.html": [
- "cff5ad183a084adddc905ef76ff58e7a3ad6a5f9",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.invalid.spacing.html": [
- "a0b8340b2cddff4d38cfdcea6529f7911a17c1a9",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.letterSpacing.change.font.html": [
- "d7543e5d9a829c6c91e987f5e38872d1d04300a5",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.letterSpacing.measure.html": [
- "9b0ce16eafde2685eb145d326fc3531a354434ce",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.nonfinite.spacing.html": [
- "5ba20208e5eb36cde14c5b5a34f877a324a37edf",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.textRendering.settings.html": [
- "dee856842ae8e764ddf454e77749c098e8d8ce6d",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.wordSpacing.change.font.html": [
- "8bad1a0447cba76e0f6178678ddd588f2af07c65",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.wordSpacing.measure.html": [
- "d4f10032eb5b33d51d97f13383eaea174455e585",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.actualBoundingBox.html": [
- "2317493032182fd8e58a71eff64e796e7a05dfbb",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.advances.html": [
- "84d0af46b84052e3244404636d399bed5e07e369",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.baselines.html": [
- "f5d149239611a932da0785cabf6e18db653d1305",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.boundingBox.direction.html": [
- "a00eb7eb9c056c9a994ce6ffaa73cee46eef6cc4",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.boundingBox.textAlign.html": [
- "88f594c7c8f5a6518cf710f1d31a14fc130ba062",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.emHeights.html": [
- "d1085abd6e7c16a2c9873ee866b7b86ce7c0f530",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.fontBoundingBox.ahem.html": [
- "80cbabac8f23cb8a0c432c4c04a77ec9287cd67f",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.fontBoundingBox.html": [
- "03f2dfc04203845edf0ca2fa451817da4ab09f2f",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.rtl.text.html": [
- "a92d5cbd0be86825797744c734bec255c7c98e51",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.width.basic.html": [
- "1d5502d8f0ee5d8d8d33a083e677e31a5d9bbfe3",
- [
- null,
- {}
- ]
- ],
- "2d.text.measure.width.empty.html": [
- "ce9e80b3381e8f5cc3b3d2e88473aeea62f6b05d",
- [
- null,
- {}
- ]
- ]
- },
"fill-and-stroke-styles": {
"2d.fillStyle.CSSHSL.html": [
"481d6fe9e51914cb864dd024ab7e37078442646e",
@@ -597072,7 +597074,7 @@
]
]
},
- "text-styles": {
+ "text": {
"2d.text.align.default.html": [
"d32f7831d056202d71ea387333cd090bcf591b8e",
[
@@ -597115,71 +597117,323 @@
{}
]
],
+ "2d.text.draw.align.center.html": [
+ "723ebe876455240c734515a06a7071d28c7fa72c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.end.ltr.html": [
+ "d29da833cc5e1fbe6b1375ab11f16a06e20990c2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.end.rtl.html": [
+ "09a9658ac0939b65be536783aef7580fb1489f3d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.left.html": [
+ "dda5318fbfe071c03e4fda81de08ac458ea9785a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.right.html": [
+ "2b3217278ac9492f20289d331c7a5f563029a516",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.start.ltr.html": [
+ "8e14642fc29e8033b0915dacee76497dd157ff33",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.align.start.rtl.html": [
+ "fe1ccd113764c332e4e1c51bf4decff2b6362672",
+ [
+ null,
+ {}
+ ]
+ ],
"2d.text.draw.baseline.alphabetic.html": [
- "0f70a475c81d22b9f622b7d6b103a14a3eed4205",
+ "a45db596d02ef8c5fc4751d836a7e62076ad6d7d",
[
null,
{}
]
],
"2d.text.draw.baseline.bottom.html": [
- "706d7743af70db6bf4d84523df32a8c244aa021e",
+ "ed1bf002a10f8f1731261e46dcd85a38b3f6d33c",
[
null,
{}
]
],
"2d.text.draw.baseline.hanging.html": [
- "7b3a0a9373bc87de31ce263c5bd6d2fc482ef43b",
+ "2f274b419930aed64a4cfca35d5fc15d857d1488",
[
null,
{}
]
],
"2d.text.draw.baseline.ideographic.html": [
- "8da9aabb942a17ad8cd63534539be447f9f4d09e",
+ "8d6a12e2623df7ff55e1ec66b8498820b149ad94",
[
null,
{}
]
],
"2d.text.draw.baseline.middle.html": [
- "ebc821c2bbd65f15f73bb043b508808761f2fbe7",
+ "5b021a5877d6dab669c242bb56399f8c9a0cc7a2",
[
null,
{}
]
],
"2d.text.draw.baseline.top.html": [
- "21e505ec7952d2917f73e814f44d05e6929a7b3e",
+ "2011514d33b1ca473c9b990872cf7b574b92d507",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.NaN.html": [
+ "9705d2883065a566b3bf15f34bf703683cf34888",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.bound.html": [
+ "c5f7dcf1194a835a6a0542370043adbc85f1f828",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.fontface.html": [
+ "7df555381512a65ee924cab16f569f82871f2d0e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.negative.html": [
+ "ad50d5760834a117d1f348c144065c87211dce86",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.small.html": [
+ "75866af40628ba88e6ab8861956b80a8263476a7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.maxWidth.zero.html": [
+ "a175a5787905548e03336b13c89ee3fe433297d2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fill.unaffected.html": [
+ "94ed31d1993eb6736c5a0c635bbe80aaa6a5391d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fontface.html": [
+ "c46ac2084e23af9938ee4d0b77641d4060f7cc22",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fontface.notinpage.html": [
+ "92891fb04fd4e6122889c7bc98d3f78c34b16ef7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.fontface.repeat.html": [
+ "d597540b97f13a27944d71022d13dad24b2ffc0c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.space.basic.html": [
+ "d4447402aa0b4541eba7ad6c7966d211069d7f3c",
[
null,
{}
]
],
"2d.text.draw.space.collapse.end.html": [
- "aebdd0e87e5de65b7d7e8f28b19c6f623218aee3",
+ "5a14dbd5146a7c0862a4e529ac184ac0a0d85c22",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.space.collapse.nonspace.html": [
+ "1fc4203b90a711c73434397635af605fc75e1cd1",
[
null,
{}
]
],
"2d.text.draw.space.collapse.other.html": [
- "1400d7c5d83fb16b902a3dadc5539f72850885cf",
+ "ffc82929b530f82ebb57df89308cebce289d6203",
[
null,
{}
]
],
"2d.text.draw.space.collapse.space.html": [
- "271c9bacaddb028db307f3326296c54e5fcf9935",
+ "64c14d1a545df8b77317f6c4449bcff0d6790ba3",
[
null,
{}
]
],
"2d.text.draw.space.collapse.start.html": [
- "6f1b81e533eb42fd950c8fc4251a0af40c7d1971",
+ "272432c3be73a409ed2903c65ed10dfca4e4bd68",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.draw.stroke.unaffected.html": [
+ "76a36476eeb21c32908a10f8da9d24e8a0cb6bfb",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.absolute.spacing.html": [
+ "1207f84e2bfbe54281ae94792675e837e8bb5390",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.font-relative.spacing.html": [
+ "a232ec16029e5a58b522962791bc8c8473be65e4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.fontKerning.html": [
+ "6de9c6eb504209806ce529bf04522237dacc9694",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.fontKerning.with.uppercase.html": [
+ "991f35af0dd841cc3c3671330a6454dbcb7ffe58",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.fontStretch.settings.html": [
+ "b19eced89171199dcfb57f1d5aea4b8f7e83c427",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.fontVariant.settings.html": [
+ "cff5ad183a084adddc905ef76ff58e7a3ad6a5f9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.invalid.spacing.html": [
+ "a0b8340b2cddff4d38cfdcea6529f7911a17c1a9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.letterSpacing.change.font.html": [
+ "74774b5cce5eb6e34708af22d96ec592fa640e0a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.letterSpacing.measure.html": [
+ "611ea0b2f0af6618786b6d78191d5d0a359fef6a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.measure.direction.html": [
+ "abe696b196cd2323be7e44d24d5d3b3b86117cce",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.measure.rtl.text.html": [
+ "e521b092363d332a38051e493c7ca24e5355a1e4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.measure.textAlign.html": [
+ "2d5a4718c5b1d06308113e4ce64913dbeefdab7b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.nonfinite.spacing.html": [
+ "5ba20208e5eb36cde14c5b5a34f877a324a37edf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.textRendering.settings.html": [
+ "dee856842ae8e764ddf454e77749c098e8d8ce6d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.wordSpacing.change.font.html": [
+ "8bad1a0447cba76e0f6178678ddd588f2af07c65",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.drawing.style.wordSpacing.measure.html": [
+ "802646d03017cb718800b929bd0bdd8da73b2c9b",
[
null,
{}
@@ -597235,7 +597489,7 @@
]
],
"2d.text.font.parse.size.percentage.html": [
- "519a1eb0b4a357c8b1e04bc642c00da25ec5f6b6",
+ "520231a804c368c095e8afd700853d30c922178d",
[
null,
{}
@@ -597262,15 +597516,71 @@
{}
]
],
+ "2d.text.measure.actualBoundingBox.html": [
+ "d0672b23dcd3f4902f1ca6375a3be62560f96902",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.advances.html": [
+ "84f04dd677f836bc1b747497071248ac811c1005",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.baselines.html": [
+ "9d947eb361879bdc55306d2b9313fcf221769016",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.emHeights.html": [
+ "e39fc06c411b7ffb8cbca2bde5a89c990fa6494d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.fontBoundingBox.ahem.html": [
+ "0044f4d1e7c76887df7b35d8c85cbfa8a8c5b50c",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.fontBoundingBox.html": [
+ "375910593aac5edf56af87be3609e39407650dc1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.width.basic.html": [
+ "36dc468b4e90585b616e684d3a3667c24ab94752",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.width.empty.html": [
+ "39ddad9789e8ad4c3fca8337cfcb33847171083d",
+ [
+ null,
+ {}
+ ]
+ ],
"2d.text.measure.width.space.html": [
- "1cf93c032d43b8e6c9bafd46c231dc494e408b95",
+ "7fd8095e28257fa53657cd72a7367ffcf613a100",
[
null,
{}
]
],
"parent-style-relative-units.html": [
- "ee44c0b75023fb3f8e844bdfc97d8e298e93cae5",
+ "b9a6b314c6ff2b8cff34740ef13d708ecdc976eb",
[
null,
{}
@@ -608467,182 +608777,182 @@
]
],
"2d.text.draw.align.center.html": [
- "f855930f302eea94a15ebf42938ff3a8827aa84f",
+ "0f7a2f4a0278b2b9b4de0e44646f0758244d2c1d",
[
null,
{}
]
],
"2d.text.draw.align.center.worker.js": [
- "a24b839d2f894ed36ae14fe3d7f35c3541bd152e",
+ "44f093cdac24cc03a0ae89ceaa9fc6c4eb4e8c03",
[
"html/canvas/offscreen/text/2d.text.draw.align.center.worker.html",
{}
]
],
"2d.text.draw.align.end.ltr.html": [
- "ae69277be74fa630e7848637a7c13af388252a30",
+ "a9e6dfe9010091bbda4e29f2aa886c9c25dd9017",
[
null,
{}
]
],
"2d.text.draw.align.end.ltr.worker.js": [
- "64dc013b444968039b7d64d957df09d0f9e5ea7a",
+ "4bd0f5a31476cf8f916bf1f149a924d42a88600a",
[
"html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.html",
{}
]
],
"2d.text.draw.align.end.rtl.html": [
- "cabc85e55943f8db87978def88018130daf274fb",
+ "b0d0b66a9cadb9ab9a2cfc5c4046a8219757b3d1",
[
null,
{}
]
],
"2d.text.draw.align.end.rtl.worker.js": [
- "b177d0e9617061cb685304e0543ab34cdc097069",
+ "b3e62d85380676013421fe5224ca8bb6c37148a8",
[
"html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.html",
{}
]
],
"2d.text.draw.align.left.html": [
- "0166b9b309db445e62a5c2ca2f0899ba964af59e",
+ "563596d7571390dbd60e7a3b5c77758ff0f114c0",
[
null,
{}
]
],
"2d.text.draw.align.left.worker.js": [
- "be8a4e188e255308dc073b00e172862e7b0d37cb",
+ "c7dc0bed42bd2568281eaae882fca5ee59318217",
[
"html/canvas/offscreen/text/2d.text.draw.align.left.worker.html",
{}
]
],
"2d.text.draw.align.right.html": [
- "011f6dccd9cbbbb12f3c58fbc063d09cd3e35b2e",
+ "227a8f981f94bfee62f74e25ed9bdecc86a7fc0a",
[
null,
{}
]
],
"2d.text.draw.align.right.worker.js": [
- "43f00dcb95c6fe314ad74efe58257c3629becc58",
+ "58fe85e0b76bf04f81bf423558f646d7235aa293",
[
"html/canvas/offscreen/text/2d.text.draw.align.right.worker.html",
{}
]
],
"2d.text.draw.align.start.ltr.html": [
- "b15fb4c0481828c22c62f2ede4bc02832865d6af",
+ "bd7e69451d56cdb9c74952848cf8bfd1bf8e8bee",
[
null,
{}
]
],
"2d.text.draw.align.start.ltr.worker.js": [
- "a3204938c0ab73278866ceec1eb74c196b01a94c",
+ "c0793d9af6fcbf30d4ee14fc794a89027300f248",
[
"html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.html",
{}
]
],
"2d.text.draw.align.start.rtl.html": [
- "c8a0de20b67700721d720705051989ebe10bd519",
+ "cadc8a46449c3505316c246e504fd2fd2b86bc0a",
[
null,
{}
]
],
"2d.text.draw.align.start.rtl.worker.js": [
- "ad03dd5c46928a7f613ce638e876446220e5d354",
+ "ed706c287a17fe90d1175c52d89e184adf13f9b3",
[
"html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.html",
{}
]
],
"2d.text.draw.baseline.alphabetic.html": [
- "6cb550fde7a91b36f37c80774ac9c1d255c29ece",
+ "ff72b3219df446268d69eec81cae1f64636f604a",
[
null,
{}
]
],
"2d.text.draw.baseline.alphabetic.worker.js": [
- "ed2c3f88b024e674a843416bfa33562fd42ee8ea",
+ "a98a5863d92ed6ebf634e78c424749b3a2aba0a1",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.html",
{}
]
],
"2d.text.draw.baseline.bottom.html": [
- "398b4a9b0a569f3dad9c0dd4fb0d6b95483e6d41",
+ "f75a94243d6e6ef2b6a88fba31c0f1cbda7ddc66",
[
null,
{}
]
],
"2d.text.draw.baseline.bottom.worker.js": [
- "727376391f7a5facf97a6d4939033934384e076e",
+ "30f60c574b92218df3cf89e5c030ed918ca2ae7c",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.html",
{}
]
],
"2d.text.draw.baseline.hanging.html": [
- "0b8228343289fe59d269b4ccf63dc48b6008edda",
+ "a29db78385928aba00daa76a7892683de65fb589",
[
null,
{}
]
],
"2d.text.draw.baseline.hanging.worker.js": [
- "fca74d6938184d68f11790b86fbdb0240cd11d8e",
+ "638506a2792c345b67fe378b072b5df2dc2985d4",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.html",
{}
]
],
"2d.text.draw.baseline.ideographic.html": [
- "c996444b860a079402dbeb20344578c94877e58d",
+ "6bda1b4f307ad66f407882bfb53d5a8193bf4f00",
[
null,
{}
]
],
"2d.text.draw.baseline.ideographic.worker.js": [
- "0ffa6fe299a0cb9a03778f0f32a57141074d0b7c",
+ "7c682fb5f145180d44aa995204495c750d68d359",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.html",
{}
]
],
"2d.text.draw.baseline.middle.html": [
- "911da8bef2c20759daa2361a5ac3b18f14c88632",
+ "b0186e6549ae2f0f9eb347e270a075f0e0c079bb",
[
null,
{}
]
],
"2d.text.draw.baseline.middle.worker.js": [
- "eeb32eafc111ed289a6ddeccd58cde22ac7cc7f6",
+ "c373ab6c7293c6a38ddacf3f91fd3c314f9a2658",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.html",
{}
]
],
"2d.text.draw.baseline.top.html": [
- "56b5bb7d83cfecaab4385f2c9e1926d678c4e06b",
+ "163d27dec766f0371742b2a8797b96850098336d",
[
null,
{}
]
],
"2d.text.draw.baseline.top.worker.js": [
- "d4341c6900abfb9c0578898cc1895dc0a7f0cd20",
+ "effc4418c34df245474b2b38b4ee68881af9412e",
[
"html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.html",
{}
@@ -608663,28 +608973,28 @@
]
],
"2d.text.draw.fill.maxWidth.bound.html": [
- "ae21607af95b8e5b3b2f253a8470188c371069d3",
+ "2dca5a75efac971873c46ffe709978435c24d2ed",
[
null,
{}
]
],
"2d.text.draw.fill.maxWidth.bound.worker.js": [
- "240bffeed41832c7fa626f97ff6abcb844a35dc6",
+ "adcb45faaae178c52897a5e2261082a4135987f2",
[
"html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.html",
{}
]
],
"2d.text.draw.fill.maxWidth.fontface.html": [
- "259fdc738ac6918604f93fcc9f8b90a7baa0aa43",
+ "fa7277ed7ab7b92d72441d324a337a3a54abf22c",
[
null,
{}
]
],
"2d.text.draw.fill.maxWidth.fontface.worker.js": [
- "7aa3f470f5fa865b2b5b311143c757899a73eb41",
+ "8df519b7d1c473cadeb3577a1cf03c5971721f6a",
[
"html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.html",
{}
@@ -608719,27 +609029,17 @@
]
],
"2d.text.draw.fill.maxWidth.zero.html": [
- "0056d75126ce19e62c0eaa6d31a33f295835dab7",
+ "a789a84dbe793facb830cc55f374277cbd5cb6ca",
[
null,
- {
- "timeout": "long"
- }
+ {}
]
],
"2d.text.draw.fill.maxWidth.zero.worker.js": [
- "65e67cce2c76dc4ec96a0d02441757b576192714",
+ "7dea281f98ae3ce6828abc01496ad575c2b2cdec",
[
"html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.html",
- {
- "script_metadata": [
- [
- "timeout",
- "long"
- ]
- ],
- "timeout": "long"
- }
+ {}
]
],
"2d.text.draw.fill.unaffected.html": [
@@ -608757,126 +609057,126 @@
]
],
"2d.text.draw.fontface.html": [
- "f8d9085f55b0ca752f3901892a599f6aba3ece32",
+ "5d4f93b4f3511c9e8dc8c6d0fa5623d964365ebd",
[
null,
{}
]
],
"2d.text.draw.fontface.notinpage.html": [
- "da552d11cc9ee28f9e74fbd69375caf206b7b428",
+ "82c9b31e662032048565794a1a34941996264584",
[
null,
{}
]
],
"2d.text.draw.fontface.notinpage.worker.js": [
- "3bfb0be818826c1f1e515d33ac6f6f1e9181bd16",
+ "628cb395069c5ca0080c1f44c4e7d24dea13b144",
[
"html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.html",
{}
]
],
"2d.text.draw.fontface.repeat.html": [
- "3a14462bcd6733037cff24752a65e0cd045fa536",
+ "1a6ba78fb9f16262ad9f4fff7b748746b2a8a7b0",
[
null,
{}
]
],
"2d.text.draw.fontface.repeat.worker.js": [
- "f2210a3239e4d3b15c5da6105de48ff9649415f3",
+ "7567c095580e17e9607583563f54d02e7ca19bea",
[
"html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.html",
{}
]
],
"2d.text.draw.fontface.worker.js": [
- "1c7e727c5eac308d521cfc41d946df95b9c418d1",
+ "02257f0a06e48bddc0233f122a6a58c199205e39",
[
"html/canvas/offscreen/text/2d.text.draw.fontface.worker.html",
{}
]
],
"2d.text.draw.space.basic.html": [
- "fa2fa86c36eb678b9b44d43e2fd84c7a1010a93f",
+ "55828fc72c76201c36141cce503e1d30eca11116",
[
null,
{}
]
],
"2d.text.draw.space.basic.worker.js": [
- "75cacf9ca28e6250136a372b749cb23f11ec7caf",
+ "ef09925c551d62f5e1ff56c17ecad06b45aba06d",
[
"html/canvas/offscreen/text/2d.text.draw.space.basic.worker.html",
{}
]
],
"2d.text.draw.space.collapse.end.html": [
- "060f41bb976358c6f3fd7e21b9308af77216bc8d",
+ "f00a187e23e79c73b5ab0d6f6c15c87f6f9fb2c4",
[
null,
{}
]
],
"2d.text.draw.space.collapse.end.worker.js": [
- "4c436006e3b13e773a39adcfdc9a954ed640839c",
+ "9a9afa1e74516b10aeca97392ea26d03fcd6175d",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.html",
{}
]
],
"2d.text.draw.space.collapse.nonspace.html": [
- "18289e51edf729da0d88e90e99443e9c2c9cf815",
+ "792abe4deb68e9e692dd56a03eaa381104bc807f",
[
null,
{}
]
],
"2d.text.draw.space.collapse.nonspace.worker.js": [
- "2aa7f67a57583a50d72edc1d2e875e9f5b9a2e04",
+ "a12c2f9a48447991395f142cf94b1c1b04ffe0a0",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.html",
{}
]
],
"2d.text.draw.space.collapse.other.html": [
- "41bca9bce6a017d2a434755b5a2e0f4adffb7592",
+ "83e89270f983e2dbddca259549e6c723d161de6e",
[
null,
{}
]
],
"2d.text.draw.space.collapse.other.worker.js": [
- "a662955bec09d3eb5501b532c9dd60774d7b2e0e",
+ "bbf9e684be7dd11ab8f1781b54423352aa2fe5a5",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.html",
{}
]
],
"2d.text.draw.space.collapse.space.html": [
- "6a2b305b7474c2f5bf6f5d93080466d4c45d572b",
+ "5fc96ffd7d6685f18bf7c81b8988bdbd5b0798c8",
[
null,
{}
]
],
"2d.text.draw.space.collapse.space.worker.js": [
- "b1e8d8e872d4f068c9542c237c10755724eee3b0",
+ "e5ab7b67f4a4e878b1110f3860299f1068859b55",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.html",
{}
]
],
"2d.text.draw.space.collapse.start.html": [
- "cadb1c3b60a1879094484de320924d7b819a1665",
+ "c07994360d630026f9dd0d45b25b138c4440790a",
[
null,
{}
]
],
"2d.text.draw.space.collapse.start.worker.js": [
- "d7ae819eea3de72f3d29ce240e8f29985d5d3d58",
+ "20fec7801f821bcce9dbf9640ed7a2b6e836b7cf",
[
"html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.html",
{}
@@ -608981,14 +609281,14 @@
]
],
"2d.text.drawing.style.invalid.spacing.html": [
- "3a99352295c720bbd7f13bcd8ed999c99bc8c1e9",
+ "d16b175ad6716e97cfc52225aaebfd226293dc37",
[
null,
{}
]
],
"2d.text.drawing.style.invalid.spacing.worker.js": [
- "271858500e96537b156c09e2cc6205f29c8cc156",
+ "06207b2c6c688d1dfd38dd245cccd502d3221318",
[
"html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.html",
{}
@@ -609008,31 +609308,17 @@
{}
]
],
- "2d.text.drawing.style.letterSpacing.measure.absolute.html": [
- "46cd55a5cafd9246b15d14b9080e6973af4304b7",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.letterSpacing.measure.absolute.worker.js": [
- "8c82aebb3c076a0e9f76097857017f8080427229",
- [
- "html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.html",
- {}
- ]
- ],
- "2d.text.drawing.style.letterSpacing.measure.relative.html": [
- "296c929dc31a4bc3df86f6c9c52f62544e5701b5",
+ "2d.text.drawing.style.letterSpacing.measure.html": [
+ "63169486badaa1bb44253141073fabf5343c52d7",
[
null,
{}
]
],
- "2d.text.drawing.style.letterSpacing.measure.relative.worker.js": [
- "d6afa71abaf6a731037c6cbab1b2aa102a6fa033",
+ "2d.text.drawing.style.letterSpacing.measure.worker.js": [
+ "585166fca01f0b9398d000499bcbcd1d6d7a35d8",
[
- "html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.html",
+ "html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.html",
{}
]
],
@@ -609079,28 +609365,28 @@
]
],
"2d.text.drawing.style.nonfinite.spacing.html": [
- "ca50f13a69bf40f7a6a9115f799a39758e58cb38",
+ "48a592b839a73647af11e3ca830b8851ca436172",
[
null,
{}
]
],
"2d.text.drawing.style.nonfinite.spacing.worker.js": [
- "801b8b5c73bb20c631766efb535ae3651ba296d6",
+ "4cf20b28c078d83864c40b0c23bc90120ee713d9",
[
"html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.html",
{}
]
],
"2d.text.drawing.style.textRendering.settings.html": [
- "3fc07d547886caac218c9cac27d9a2c835d466ea",
+ "52b34deaab91bc90888dd6e36cb7cc09f305bbcb",
[
null,
{}
]
],
"2d.text.drawing.style.textRendering.settings.worker.js": [
- "c37f2e342f20d68898a656b97e96891b52aaa0b9",
+ "a4381963f7b14d40140160b5c9676d84f6c68a7a",
[
"html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.html",
{}
@@ -609120,31 +609406,17 @@
{}
]
],
- "2d.text.drawing.style.wordSpacing.measure.absolute.html": [
- "458f12b008fb8a3350a09dbbf5d33c67627470ae",
- [
- null,
- {}
- ]
- ],
- "2d.text.drawing.style.wordSpacing.measure.absolute.worker.js": [
- "36d1fefc23d2a2ea16444032eecb48c55c7f4ade",
- [
- "html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.html",
- {}
- ]
- ],
- "2d.text.drawing.style.wordSpacing.measure.relative.html": [
- "11988ae157ddfe78da2e5458f09516210f2ef93c",
+ "2d.text.drawing.style.wordSpacing.measure.html": [
+ "69bf6e979c60473f05aa9697016748b80c453f8c",
[
null,
{}
]
],
- "2d.text.drawing.style.wordSpacing.measure.relative.worker.js": [
- "f5295e915e819824bd494f5a6268c0b7f6829165",
+ "2d.text.drawing.style.wordSpacing.measure.worker.js": [
+ "d899b8c32824718aae9010c458cd8c03d72a6a9a",
[
- "html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.html",
+ "html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.html",
{}
]
],
@@ -609275,112 +609547,126 @@
]
],
"2d.text.measure.actualBoundingBox.html": [
- "96b37702c48a68cd4bd552492b253189579d281c",
+ "105efc07948a4de537689bb8bbc7ee1548f187bf",
[
null,
{}
]
],
"2d.text.measure.actualBoundingBox.worker.js": [
- "b16ed415ca82cca9c9eec989b99b253c11a38bf2",
+ "c3d18ff8786d188fc95ad80d46acbda264d35eb4",
[
"html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.html",
{}
]
],
"2d.text.measure.advances.html": [
- "f3bedd41ef53b060ca6655a7a0214aacc5208c3f",
+ "2eec005cb84c42e2d9ccc7ada883a3aba0afb8f3",
[
null,
{}
]
],
"2d.text.measure.advances.worker.js": [
- "55c744aaeb1bfeaee929e5ca98dd159818de7483",
+ "4b02f06f2dd5c9335848af2ea1a7cb004e786088",
[
"html/canvas/offscreen/text/2d.text.measure.advances.worker.html",
{}
]
],
"2d.text.measure.baselines.html": [
- "09fd0f408223fae715cfea3cdb00000e76f9fcb2",
+ "9d0cc1268d5314a7a4e06de3c60421ea7ea1795c",
[
null,
{}
]
],
"2d.text.measure.baselines.worker.js": [
- "c6288a569da0172d7c5f43bdb6c08d3a0e5b2256",
+ "ddb48f4fe02ee5de8c13fb65452b540f1287657f",
[
"html/canvas/offscreen/text/2d.text.measure.baselines.worker.html",
{}
]
],
"2d.text.measure.emHeights.html": [
- "6a93bac04aa51f26c589c5d176862989a24fe2ae",
+ "a92ce58a00e7a1f0f928137fd9e218ad82f9f4f3",
[
null,
{}
]
],
"2d.text.measure.emHeights.worker.js": [
- "1dd5f7ce48c08cca97743d9eb7ce2626e8100f9a",
+ "68db6de88d0f0d354bb9e63c3728daa8c15bab74",
[
"html/canvas/offscreen/text/2d.text.measure.emHeights.worker.html",
{}
]
],
+ "2d.text.measure.fontBoundingBox.ahem.html": [
+ "cb8b0c558dbbcde67b7e96a9f1e11f6bad44014a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "2d.text.measure.fontBoundingBox.ahem.worker.js": [
+ "255bcd108aac7f3590ae641604741324bbf7a080",
+ [
+ "html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.html",
+ {}
+ ]
+ ],
"2d.text.measure.fontBoundingBox.html": [
- "f36bfd6f9d2bab3ef050af1e32d0acc0adf70ed8",
+ "e32780334262f971a5431ac97d3a1d27a016f4d4",
[
null,
{}
]
],
"2d.text.measure.fontBoundingBox.worker.js": [
- "cfbfe77e6bdadf5fbf21ece0ea90eb0fc90fecdd",
+ "ca272760fd410f4397df1697181c0b24e2c98220",
[
"html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.html",
{}
]
],
"2d.text.measure.width.basic.html": [
- "fa47879836be978c7b6a526325fc7e25de95cf85",
+ "fea19040833cbf381d5c3cbf77f8fea791603bed",
[
null,
{}
]
],
"2d.text.measure.width.basic.worker.js": [
- "265843ae66e8c5c4575cdb4a9bbf9952561213fd",
+ "866ad8b3c5c096d1226c8d443c1b29b270d30a85",
[
"html/canvas/offscreen/text/2d.text.measure.width.basic.worker.html",
{}
]
],
"2d.text.measure.width.empty.html": [
- "7d412008b04e2a430bc04d8c78dec113493c0901",
+ "11bd029433078ef1c328938c4667ae0802c2d68b",
[
null,
{}
]
],
"2d.text.measure.width.empty.worker.js": [
- "68bba39e9d2762473b7a02907ccbfe3cb5cef04c",
+ "6fb89c5ba73aa957ef429452969cad8fb67f2b91",
[
"html/canvas/offscreen/text/2d.text.measure.width.empty.worker.html",
{}
]
],
"2d.text.measure.width.space.html": [
- "6ef4255b834ec995cc2d4cfb8455912ce6014719",
+ "38d5084298a9041e08f428fb48d07a32af23a502",
[
null,
{}
]
],
"2d.text.measure.width.space.worker.js": [
- "5ee4ee3ff74a000465a1d2fc4cc2f7bd8d931dec",
+ "d832feec5fc0fa9621a35d2d33a0bc864edc7ed0",
[
"html/canvas/offscreen/text/2d.text.measure.width.space.worker.html",
{}
@@ -616446,6 +616732,13 @@
"html/infrastructure/urls/base-url/document-base-url-window-open-about-blank.https.window.html",
{}
]
+ ],
+ "matches-about-blank-base-url.window.js": [
+ "b2a0740ddf7cfcd7a2b40846c7e53fa805c503cc",
+ [
+ "html/infrastructure/urls/base-url/matches-about-blank-base-url.window.html",
+ {}
+ ]
]
},
"dynamic-changes-to-base-urls": {
@@ -624702,7 +624995,7 @@
]
],
"dirname-only-if-applies.html": [
- "7d542111896e68e7df0b271b247126b99b3c1972",
+ "1fd0476e3140422825d5ec1f7e431b1fc212cbdb",
[
null,
{}
@@ -643601,7 +643894,7 @@
"presentation-markup": {
"direction": {
"direction.html": [
- "657d048211132f98c97a8ecffa7da8460cc6168d",
+ "dfb1671e4cc0b10393b5a2baef0900466d464a93",
[
null,
{}
@@ -645832,7 +646125,7 @@
"mse-for-webcodecs": {
"tentative": {
"mediasource-webcodecs-addsourcebuffer.html": [
- "cc9cdc2b50185c7a5acae91a9a221b8ea164b8b0",
+ "e29600f99c6b4b1fc5ca0e8c9b0cd939cb27c1e1",
[
null,
{}
@@ -680330,6 +680623,13 @@
],
"tentative": {
"static-router": {
+ "static-router-main-resource.https.html": [
+ "5a55783af57a4fef8090bef9d888b45ae6c456b6",
+ [
+ null,
+ {}
+ ]
+ ],
"static-router-subresource.https.html": [
"721c2797603bb568172c6804b07e195d14d2018e",
[
@@ -683344,7 +683644,7 @@
],
"no-vary-search": {
"prefetch-single-with-hint.https.html": [
- "1c9e5b4173104008cc669393c460f068f8bea1b5",
+ "1cbd7e8e717b30a8b6ad9e1248f23f1835c1831e",
[
"speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?1-1",
{}
@@ -683414,7 +683714,19 @@
{}
],
[
- "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?25-last",
+ "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?25-25",
+ {}
+ ],
+ [
+ "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?26-26",
+ {}
+ ],
+ [
+ "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?27-27",
+ {}
+ ],
+ [
+ "speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html?28-last",
{}
],
[
@@ -693679,7 +693991,7 @@
]
],
"requestStorageAccessFor.sub.https.window.js": [
- "e82cce699fab9b2d3cd6e8d928cc66850083658a",
+ "8af30c497f243b43944a57f965611e39c9dd9721",
[
"top-level-storage-access-api/tentative/requestStorageAccessFor.sub.https.window.html",
{
@@ -707587,7 +707899,7 @@
]
],
"audio-decoder.https.any.js": [
- "4374e904a3305b05ae4ba28987830f17d75451ec",
+ "f83efe17a0ffd24042c3f7ae21f810dc25efab8b",
[
"webcodecs/audio-decoder.https.any.html",
{
@@ -707638,7 +707950,7 @@
]
],
"audio-encoder-config.https.any.js": [
- "52ff3dc16e6c093b9867a9498b85f41377cb901f",
+ "845b399744ec142e55735cd36e94082ebbb5e039",
[
"webcodecs/audio-encoder-config.https.any.html",
{
@@ -708313,6 +708625,13 @@
}
]
],
+ "encodedVideoChunk-serialization.crossAgentCluster.https.html": [
+ "fb104a3a1b1aacbf8772371dafce3c2b35084126",
+ [
+ null,
+ {}
+ ]
+ ],
"full-cycle-test.https.any.js": [
"56671e683610ff412d08ba7999843246554ac7f4",
[
@@ -710121,7 +710440,7 @@
]
],
"video-decoder.https.any.js": [
- "565134271d6dd4b1f7b60a31e1562837e2836072",
+ "3c4ca479ce40134f3ccb4c843b5859c19851f575",
[
"webcodecs/video-decoder.https.any.html",
{
@@ -710154,7 +710473,7 @@
]
],
"video-encoder-config.https.any.js": [
- "fbb6d91b9b881adb8842d12309b84506d212bec6",
+ "be2574f7901b08eb8779d2093a061d5dddcf4ba7",
[
"webcodecs/video-encoder-config.https.any.html",
{
@@ -710187,7 +710506,7 @@
]
],
"video-encoder.https.any.js": [
- "229ae32edd44307d8683ad8793641d16d9d28c1c",
+ "c8db068e12fa29ee2bb5c39840af6e1ab2636255",
[
"webcodecs/video-encoder.https.any.html",
{
@@ -711151,7 +711470,7 @@
]
],
"videoFrame-serialization.crossAgentCluster.https.html": [
- "27f624a8449ce4debdd77477f37a0ba18b65ba36",
+ "11b5e23124ecc4cb146570803a6c5d208bdcb36e",
[
null,
{}
@@ -727466,7 +727785,7 @@
"stream": {
"tentative": {
"abort.any.js": [
- "6742bf2b38fb1d0121982fa1ba689534d0b7182d",
+ "9047f246f968f60a1145a4f6b3df12a682717665",
[
"websockets/stream/tentative/abort.any.html?wpt_flags=h2",
{
@@ -727717,7 +728036,7 @@
]
],
"backpressure-receive.any.js": [
- "cce5bf2a47eb88518c34e049fdf3ea67a52aa1bb",
+ "236bb2e40fac1a6db1506958e5828cf2dc29d79a",
[
"websockets/stream/tentative/backpressure-receive.any.html?wpt_flags=h2",
{
@@ -727976,7 +728295,7 @@
]
],
"backpressure-send.any.js": [
- "c17f1cc2b8b16e2e4733c23328313851529a2d07",
+ "e4a80f6e1c071b33b032e699ba3e0de2c1c8572e",
[
"websockets/stream/tentative/backpressure-send.any.html?wpt_flags=h2",
{
@@ -728235,7 +728554,7 @@
]
],
"close.any.js": [
- "0ed91cc8a64390c00662b23837ec0b2411adee8a",
+ "2be9034872e909b834d8d2bab3975e1c2f8b25e9",
[
"websockets/stream/tentative/close.any.html?wpt_flags=h2",
{
@@ -728454,7 +728773,7 @@
]
],
"constructor.any.js": [
- "454dd4c09425b00a563eb5c7406546fe1bdaef48",
+ "4d67d81cf288cba2eb3a12a8050dbd323dfd1c55",
[
"websockets/stream/tentative/constructor.any.html?wpt_flags=h2",
{
@@ -729280,7 +729599,7 @@
]
],
"close.https.any.js": [
- "77b3055c1de27fc5cd0268f3c434efa2b6a39958",
+ "0d8579584fbb21e74595588f663ef21c3b028c63",
[
"webtransport/close.https.any.html",
{
@@ -729300,13 +729619,8 @@
[
"script",
"/common/utils.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729328,13 +729642,8 @@
[
"script",
"/common/utils.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729356,13 +729665,8 @@
[
"script",
"/common/utils.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729384,18 +729688,13 @@
[
"script",
"/common/utils.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
]
],
"connect.https.any.js": [
- "6bd18ae8de4e0bcdcee35ac9b49a1603550dc40c",
+ "93df5fe3f478df382918a49368d1a3ad0c5242aa",
[
"webtransport/connect.https.any.html",
{
@@ -729411,13 +729710,8 @@
[
"script",
"resources/webtransport-test-helpers.sub.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729435,13 +729729,8 @@
[
"script",
"resources/webtransport-test-helpers.sub.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729459,13 +729748,8 @@
[
"script",
"resources/webtransport-test-helpers.sub.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
],
[
@@ -729483,13 +729767,8 @@
[
"script",
"resources/webtransport-test-helpers.sub.js"
- ],
- [
- "timeout",
- "long"
]
- ],
- "timeout": "long"
+ ]
}
]
],
@@ -760889,6 +761168,13 @@
{}
]
],
+ "clip.py": [
+ "4cc83f2c221de8b872ecbfcfbb2cb69783a78b6e",
+ [
+ null,
+ {}
+ ]
+ ],
"frame.py": [
"bab97a31d209f30e0861e7ba768109c717523a4a",
[
@@ -760897,7 +761183,7 @@
]
],
"invalid.py": [
- "885baf229d36bb4c600874825c8f389c0dd51d56",
+ "c6efbbbb7ae0d789f0d598d0b5df552ffe8ba756",
[
null,
{}
diff --git a/tests/wpt/meta/css/css-color/system-color-hightlights-vs-getSelection-001.html.ini b/tests/wpt/meta/css/css-color/system-color-hightlights-vs-getSelection-001.html.ini
deleted file mode 100644
index be50491553a..00000000000
--- a/tests/wpt/meta/css/css-color/system-color-hightlights-vs-getSelection-001.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[system-color-hightlights-vs-getSelection-001.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-transitions/all-with-discrete.tentative.html.ini b/tests/wpt/meta/css/css-transitions/all-with-discrete.tentative.html.ini
index ff695ed450d..0a425b104e1 100644
--- a/tests/wpt/meta/css/css-transitions/all-with-discrete.tentative.html.ini
+++ b/tests/wpt/meta/css/css-transitions/all-with-discrete.tentative.html.ini
@@ -7,3 +7,6 @@
[transition:all with transition-animation-type:discrete should animate discrete properties.]
expected: FAIL
+
+ [transition:all with transition-behavior:allow-discrete should animate discrete properties.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-transitions/parsing/transition-behavior.html.ini b/tests/wpt/meta/css/css-transitions/parsing/transition-behavior.html.ini
new file mode 100644
index 00000000000..246320aaa88
--- /dev/null
+++ b/tests/wpt/meta/css/css-transitions/parsing/transition-behavior.html.ini
@@ -0,0 +1,78 @@
+[transition-behavior.html]
+ [e.style['transition-behavior'\] = "normal" should set the property value]
+ expected: FAIL
+
+ [Property transition-behavior value 'normal']
+ expected: FAIL
+
+ [e.style['transition-behavior'\] = "allow-discrete" should set the property value]
+ expected: FAIL
+
+ [Property transition-behavior value 'allow-discrete']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display 3s" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display 3s']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display 3s 1s" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display 3s 1s']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display 3s ease-in-out" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display 3s ease-in-out']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display 3s ease-in-out 1s" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display 3s ease-in-out 1s']
+ expected: FAIL
+
+ [e.style['transition'\] = "display allow-discrete 3s ease-in-out 1s" should set the property value]
+ expected: FAIL
+
+ [e.style['transition'\] = "display 3s allow-discrete ease-in-out 1s" should set the property value]
+ expected: FAIL
+
+ [e.style['transition'\] = "display 3s ease-in-out allow-discrete 1s" should set the property value]
+ expected: FAIL
+
+ [e.style['transition'\] = "display 3s ease-in-out 1s allow-discrete" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'display allow-discrete 3s ease-in-out 1s']
+ expected: FAIL
+
+ [Property transition value 'display 3s allow-discrete ease-in-out 1s']
+ expected: FAIL
+
+ [Property transition value 'display 3s ease-in-out allow-discrete 1s']
+ expected: FAIL
+
+ [Property transition value 'display 3s ease-in-out 1s allow-discrete']
+ expected: FAIL
+
+ [e.style['transition'\] = "allow-discrete display, normal opacity, color" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'allow-discrete display, normal opacity, color']
+ expected: FAIL
+
+ [e.style['transition'\] = "normal opacity, color, allow-discrete display" should set the property value]
+ expected: FAIL
+
+ [Property transition value 'normal opacity, color, allow-discrete display']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-transitions/parsing/transition-shorthand.html.ini b/tests/wpt/meta/css/css-transitions/parsing/transition-shorthand.html.ini
new file mode 100644
index 00000000000..e112487133b
--- /dev/null
+++ b/tests/wpt/meta/css/css-transitions/parsing/transition-shorthand.html.ini
@@ -0,0 +1,9 @@
+[transition-shorthand.html]
+ [e.style['transition'\] = "1s -3s cubic-bezier(0, -2, 1, 3) top" should set transition-behavior]
+ expected: FAIL
+
+ [e.style['transition'\] = "1s -3s, cubic-bezier(0, -2, 1, 3) top" should set transition-behavior]
+ expected: FAIL
+
+ [e.style['transition'\] = "cubic-bezier(0, -2, 1, 3) top, 1s -3s" should set transition-behavior]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/cssom-view/scroll-behavior-smooth-navigation.html.ini b/tests/wpt/meta/css/cssom-view/scroll-behavior-smooth-navigation.html.ini
index a3e30250229..977ef8f774c 100644
--- a/tests/wpt/meta/css/cssom-view/scroll-behavior-smooth-navigation.html.ini
+++ b/tests/wpt/meta/css/cssom-view/scroll-behavior-smooth-navigation.html.ini
@@ -1,6 +1,3 @@
[scroll-behavior-smooth-navigation.html]
[Instant scrolling while doing history navigation.]
expected: FAIL
-
- [Smooth scrolling while doing history navigation.]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html.ini
deleted file mode 100644
index 44e7bfc3349..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.align.left.html]
- [textAlign left is the left of the first em square (not the bounding box)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html.ini
deleted file mode 100644
index ab6ee4d84cf..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.align.right.html]
- [textAlign right is the right of the last em square (not the bounding box)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html.ini
deleted file mode 100644
index 297adfc6827..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.align.start.rtl.html]
- [textAlign start with rtl is the right edge]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html.ini
deleted file mode 100644
index 1a92a639587..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.fill.maxWidth.bound.html]
- [fillText handles maxWidth based on line size, not bounding box size]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html.ini
deleted file mode 100644
index b24ad7daaf5..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.space.basic.html]
- [U+0020 is rendered the correct size (1em wide)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html.ini
deleted file mode 100644
index 403c4063ea3..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.space.collapse.nonspace.html]
- [Non-space characters are not converted to U+0020 and collapsed]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html.ini
deleted file mode 100644
index 837a7012c75..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.stroke.unaffected.html]
- [strokeText does not start a new path or subpath]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html.ini
deleted file mode 100644
index 080d8d3fdaf..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.drawing.style.fontKerning.html]
- [Testing basic functionalities of fontKerning for canvas]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html.ini
deleted file mode 100644
index e86dd669bb7..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.drawing.style.fontKerning.with.uppercase.html]
- [Testing basic functionalities of fontKerning for canvas]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html.ini
deleted file mode 100644
index 3db28a14187..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.drawing.style.fontVariant.settings.html]
- [Testing basic functionalities of fontKerning for canvas]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html.ini
deleted file mode 100644
index 15f86853a36..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.invalid.spacing.html]
- [Testing letter spacing and word spacing with invalid units]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html.ini
deleted file mode 100644
index c99943f4860..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.letterSpacing.change.font.html]
- [Set letter spacing and word spacing to font dependent value and verify it works after font change.]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html.ini
deleted file mode 100644
index d452f9ee821..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.nonfinite.spacing.html]
- [Testing letter spacing and word spacing with nonfinite inputs]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html.ini
deleted file mode 100644
index 1380fbe4652..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.drawing.style.textRendering.settings.html]
- [Testing basic functionalities of textRendering in Canvas]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html.ini
deleted file mode 100644
index 8c8ff7d2136..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.drawing.style.wordSpacing.change.font.html]
- [Set word spacing and word spacing to font dependent value and verify it works after font change.]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html.ini
deleted file mode 100644
index 93a00d9d776..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.measure.actualBoundingBox.html]
- [Testing actualBoundingBox]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html.ini
deleted file mode 100644
index ff54ff88e70..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.measure.boundingBox.direction.html]
- [Measurement should follow text direction]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html.ini
deleted file mode 100644
index f890a67746b..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.measure.boundingBox.textAlign.html]
- [Measurement should be related to textAlignment]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html.ini
deleted file mode 100644
index ec57f1b22cd..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.measure.fontBoundingBox.html]
- [Testing fontBoundingBox]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html.ini
deleted file mode 100644
index 9976da88f60..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.measure.rtl.text.html]
- [Measurement should follow canvas direction instead text direction]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html.ini
deleted file mode 100644
index 73a7796ad93..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.measure.width.basic.html]
- [The width of character is same as font used]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html.ini b/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html.ini
deleted file mode 100644
index 77304a852d8..00000000000
--- a/tests/wpt/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.measure.width.empty.html]
- [The empty string has zero width]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini b/tests/wpt/meta/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
deleted file mode 100644
index 5cdcce07c65..00000000000
--- a/tests/wpt/meta/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[canvas.2d.disconnected.html]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.align.default.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.align.default.html.ini
deleted file mode 100644
index 2b8793d28be..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.align.default.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.align.default.html]
- [Canvas test: 2d.text.align.default]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.align.invalid.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.align.invalid.html.ini
deleted file mode 100644
index 100c6551344..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.align.invalid.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.align.invalid.html]
- [Canvas test: 2d.text.align.invalid]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.baseline.default.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.baseline.default.html.ini
deleted file mode 100644
index f09249c129c..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.baseline.default.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.baseline.default.html]
- [Canvas test: 2d.text.baseline.default]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.baseline.invalid.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.baseline.invalid.html.ini
deleted file mode 100644
index 23f93163a60..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.baseline.invalid.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.baseline.invalid.html]
- [Canvas test: 2d.text.baseline.invalid]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html.ini
deleted file mode 100644
index 93b0cf0b169..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.baseline.alphabetic.html]
- [Canvas test: 2d.text.draw.baseline.alphabetic]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html.ini
deleted file mode 100644
index a7c97c18e6e..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.baseline.bottom.html]
- [textBaseline bottom is the bottom of the em square (not the bounding box)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html.ini
deleted file mode 100644
index 4b933de9c99..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.baseline.hanging.html]
- [Canvas test: 2d.text.draw.baseline.hanging]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html.ini
deleted file mode 100644
index b099ac007ca..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.baseline.ideographic.html]
- [Canvas test: 2d.text.draw.baseline.ideographic]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.top.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.top.html.ini
deleted file mode 100644
index fde10ed8b71..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.baseline.top.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.baseline.top.html]
- [textBaseline top is the top of the em square (not the bounding box)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html.ini
deleted file mode 100644
index cb95d477d9f..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.space.collapse.end.html]
- [Space characters at the end of a line are collapsed (per CSS)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html.ini
deleted file mode 100644
index 1eb038b12c4..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.space.collapse.other.html]
- [Space characters are converted to U+0020, and collapsed (per CSS)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html.ini
deleted file mode 100644
index 6aebf256e44..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.draw.space.collapse.space.html]
- [Space characters are converted to U+0020, and collapsed (per CSS)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html.ini
deleted file mode 100644
index cb362816aec..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.draw.space.collapse.start.html]
- [Space characters at the start of a line are collapsed (per CSS)]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.default.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.default.html.ini
deleted file mode 100644
index 71a00e76d9d..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.default.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.font.default.html]
- [Canvas test: 2d.text.font.default]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.basic.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.basic.html.ini
deleted file mode 100644
index 3a1a5ca5d81..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.basic.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.font.parse.basic.html]
- [Canvas test: 2d.text.font.parse.basic]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.complex.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.complex.html.ini
deleted file mode 100644
index 6c349803d6b..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.complex.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.font.parse.complex.html]
- [Canvas test: 2d.text.font.parse.complex]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.family.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.family.html.ini
deleted file mode 100644
index 9da2c367ec6..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.family.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.font.parse.family.html]
- [Canvas test: 2d.text.font.parse.family]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.invalid.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.invalid.html.ini
deleted file mode 100644
index 3c74f7f5570..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.invalid.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.font.parse.invalid.html]
- [Canvas test: 2d.text.font.parse.invalid]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html.ini
deleted file mode 100644
index 5832d9c40ff..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.font.parse.size.percentage.default.html]
- [Canvas test: 2d.text.font.parse.size.percentage.default]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html.ini
deleted file mode 100644
index c1c5ee6fd7e..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.font.parse.size.percentage.html]
- [Canvas test: 2d.text.font.parse.size.percentage]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.system.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.system.html.ini
deleted file mode 100644
index 4011e6441bf..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.system.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.font.parse.system.html]
- [System fonts must be computed to explicit values]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.tiny.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.tiny.html.ini
deleted file mode 100644
index 2fd55db7f98..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.parse.tiny.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[2d.text.font.parse.tiny.html]
- [Canvas test: 2d.text.font.parse.tiny]
- expected: FAIL
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.relative_size.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.relative_size.html.ini
deleted file mode 100644
index 5353ddbe2dc..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.font.relative_size.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.font.relative_size.html]
- [Canvas test: 2d.text.font.relative_size]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.measure.width.space.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/2d.text.measure.width.space.html.ini
deleted file mode 100644
index 471785ac065..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/2d.text.measure.width.space.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[2d.text.measure.width.space.html]
- [Space characters are converted to U+0020 and collapsed (per CSS)]
- expected: FAIL
-
diff --git a/tests/wpt/meta/html/canvas/element/text-styles/parent-style-relative-units.html.ini b/tests/wpt/meta/html/canvas/element/text-styles/parent-style-relative-units.html.ini
deleted file mode 100644
index 0fd5ef5bae6..00000000000
--- a/tests/wpt/meta/html/canvas/element/text-styles/parent-style-relative-units.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[parent-style-relative-units.html]
- [Font-size based on canvas element line-height]
- expected: FAIL
-
- [Font-size based on canvas element font-size]
- expected: FAIL
diff --git a/tests/wpt/tests/IndexedDB/idbdatabase_deleteObjectStore2.htm b/tests/wpt/tests/IndexedDB/idbdatabase_deleteObjectStore2.htm
deleted file mode 100644
index 91f118ef62a..00000000000
--- a/tests/wpt/tests/IndexedDB/idbdatabase_deleteObjectStore2.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<title>IDBDatabase.deleteObjectStore() - attempt to remove an object store outside of a version change transaction </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
-
-var t = async_test(),
- open_rq = createdb(t);
-
-open_rq.onupgradeneeded = function(e)
-{
- var db = e.target.result,
- objStore = db.createObjectStore("delete_outside");
-
- e.target.transaction.oncomplete = t.step_func(function (e)
- {
- assert_throws_dom('InvalidStateError',
- function() { db.deleteObjectStore("delete_outside"); });
- t.done();
- });
-}
-
-</script>
-
-
-<div id="log"></div>
-
-
diff --git a/tests/wpt/tests/IndexedDB/idbindex_batchGetAll.tentative.any.js b/tests/wpt/tests/IndexedDB/idbindex_batchGetAll.tentative.any.js
deleted file mode 100644
index fe21445e83f..00000000000
--- a/tests/wpt/tests/IndexedDB/idbindex_batchGetAll.tentative.any.js
+++ /dev/null
@@ -1,185 +0,0 @@
-// META: title=Batch Get All Index
-// META: script=resources/support.js
-
-'use strict';
-
-const alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
-const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
-
-function batchgetall_test(storeName, func, name) {
- indexeddb_test((t, connection, tx) => {
- var store;
- var index;
- switch (storeName) {
- case 'generated':
- store = connection.createObjectStore(
- 'generated', {autoIncrement: true, keyPath: 'id'});
- index = store.createIndex('test_idx', 'upper');
- alphabet.forEach(letter => {
- store.put({ch: letter, upper: letter.toUpperCase()});
- });
- break;
- case 'out-of-line':
- store = connection.createObjectStore('out-of-line', null);
- index = store.createIndex('test_idx', 'upper');
- alphabet.forEach(letter => {
- store.put({ch: letter, upper: letter.toUpperCase()}, letter);
- });
- break;
- case 'out-of-line-not-unique':
- store = connection.createObjectStore('out-of-line-not-unique', null);
- index = store.createIndex('test_idx', 'half');
- alphabet.forEach(letter => {
- if (letter <= 'd')
- store.put({ch: letter, half: 'first'}, letter);
- else if (letter < 'x')
- store.put({ch: letter, half: 'second'}, letter);
- else
- store.put({ch: letter, half: 'third'}, letter);
- });
- break;
- case 'out-of-line-multi':
- store = connection.createObjectStore('out-of-line-multi', null);
- index = store.createIndex('test_idx', 'attribs', {multiEntry: true});
- alphabet.forEach(function(letter) {
- let attrs = [];
- if (['a', 'e', 'i', 'o', 'u'].indexOf(letter) != -1)
- attrs.push('vowel');
- else
- attrs.push('consonant');
- if (letter == 'a')
- attrs.push('first');
- if (letter == 'z')
- attrs.push('last');
- store.put({ch: letter, attribs: attrs}, letter);
- });
- break;
- case 'empty':
- store = connection.createObjectStore('empty', null);
- store.createIndex('test_idx', 'upper');
- break;
- default:
- t.fail(`Unsupported storeName: ${storeName}`);
- }
- }, func, name);
-}
-
-function createBatchGetAllRequest(t, storeName, connection, ranges, maxCount) {
- const transaction = connection.transaction(storeName, 'readonly');
- const store = transaction.objectStore(storeName);
- const index = store.index('test_idx');
- const req = index.batchGetAll(ranges, maxCount);
- req.onerror = t.unreached_func('batchGetsAll request should succeed');
- return req;
-}
-
-function assertTwoDArrayEquals(result, expected) {
- assert_equals(JSON.stringify(result), JSON.stringify(expected));
-}
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(t, 'out-of-line', connection, ['C']);
- req.onsuccess = t.step_func(evt => {
- let expected = [[{'ch': 'c', 'upper': 'C'}]];
- let result = evt.target.result;
- assert_class_string(result, 'Array', 'result should be an array');
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Single getAll');
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req =
- createBatchGetAllRequest(t, 'out-of-line', connection, ['C', 'D', 'E']);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [
- [{'ch': 'c', 'upper': 'C'}], [{'ch': 'd', 'upper': 'D'}],
- [{'ch': 'e', 'upper': 'E'}]
- ];
- assert_class_string(result, 'Array', 'result should be an array');
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Multiple getAll');
-
-batchgetall_test('out-of-line', (t, connection) => {
- var req = createBatchGetAllRequest(
- t, 'out-of-line', connection, [IDBKeyRange.bound('C', 'E')]);
- req.onsuccess = t.step_func(function(evt) {
- let result = evt.target.result;
- let expected = [[
- {'ch': 'c', 'upper': 'C'}, {'ch': 'd', 'upper': 'D'},
- {'ch': 'e', 'upper': 'E'}
- ]];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get bound range');
-
-batchgetall_test('out-of-line', (t, connection) => {
- var req = createBatchGetAllRequest(
- t, 'out-of-line', connection,
- [IDBKeyRange.bound('C', 'M'), IDBKeyRange.bound('O', 'Z')], 3);
- req.onsuccess = t.step_func(function(evt) {
- let result = evt.target.result;
- let expected = [
- [
- {'ch': 'c', 'upper': 'C'}, {'ch': 'd', 'upper': 'D'},
- {'ch': 'e', 'upper': 'E'}
- ],
- [
- {'ch': 'o', 'upper': 'O'}, {'ch': 'p', 'upper': 'P'},
- {'ch': 'q', 'upper': 'Q'}
- ]
- ];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get bound range with maxCount');
-
-batchgetall_test('out-of-line', (t, connection) => {
- var req = createBatchGetAllRequest(
- t, 'out-of-line', connection, ['Doesn\'t exist1', 'Doesn\'t exist2']);
- req.onsuccess = t.step_func(function(evt) {
- let result = evt.target.result;
- let expected = [[], []];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Non existent key');
-
-batchgetall_test('out-of-line-not-unique', (t, connection) => {
- var req = createBatchGetAllRequest(
- t, 'out-of-line-not-unique', connection, ['first', 'third']);
- req.onsuccess = t.step_func(function(evt) {
- let result = evt.target.result;
- let expected = [
- [
- {'ch': 'a', 'half': 'first'}, {'ch': 'b', 'half': 'first'},
- {'ch': 'c', 'half': 'first'}, {'ch': 'd', 'half': 'first'}
- ],
- [
- {'ch': 'x', 'half': 'third'}, {'ch': 'y', 'half': 'third'},
- {'ch': 'z', 'half': 'third'}
- ]
- ];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Retrieve multiEntry key');
-
-batchgetall_test('out-of-line-multi', (t, connection) => {
- var req =
- createBatchGetAllRequest(t, 'out-of-line-multi', connection, ['vowel']);
- req.onsuccess = t.step_func(function(evt) {
- let result = evt.target.result;
- let expected = [[
- {'ch': 'a', 'attribs': ['vowel', 'first']},
- {'ch': 'e', 'attribs': ['vowel']}, {'ch': 'i', 'attribs': ['vowel']},
- {'ch': 'o', 'attribs': ['vowel']}, {'ch': 'u', 'attribs': ['vowel']}
- ]];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Retrieve one key multiple values'); \ No newline at end of file
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_batchGetAll.tentative.any.js b/tests/wpt/tests/IndexedDB/idbobjectstore_batchGetAll.tentative.any.js
deleted file mode 100644
index 3aeb8553598..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_batchGetAll.tentative.any.js
+++ /dev/null
@@ -1,143 +0,0 @@
-// META: title=Batch Get All
-// META: script=resources/support.js
-
-'use strict';
-
-const alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
-
-function batchgetall_test(storeName, func, name) {
- indexeddb_test((t, connection, tx) => {
- var store;
- switch (storeName) {
- case 'generated':
- store = connection.createObjectStore(
- 'generated', {autoIncrement: true, keyPath: 'id'});
- alphabet.forEach(letter => {
- store.put({ch: letter});
- });
- break;
- case 'out-of-line':
- store = connection.createObjectStore('out-of-line', null);
- alphabet.forEach(letter => {
- store.put(`value-${letter}`, letter);
- });
- break;
- case 'empty':
- store = connection.createObjectStore('empty', null);
- break;
- default:
- t.fail(`Unsupported storeName: ${storeName}`);
- }
- }, func, name);
-}
-
-function createBatchGetAllRequest(t, storeName, connection, ranges, maxCount) {
- const transaction = connection.transaction(storeName, 'readonly');
- const store = transaction.objectStore(storeName);
- const req = store.batchGetAll(ranges, maxCount);
- req.onerror = t.unreached_func('batchGetAll request should succeed');
- return req;
-}
-
-function assertTwoDArrayEquals(result, expected) {
- assert_equals(JSON.stringify(result), JSON.stringify(expected));
-}
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(t, 'out-of-line', connection, ['c']);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [['value-c']];
- assertTwoDArrayEquals(result, expected)
- t.done();
- });
-}, 'Single item get');
-
-batchgetall_test('empty', (t, connection) => {
- const req = createBatchGetAllRequest(t, 'empty', connection);
- req.onsuccess = t.step_func(evt => {
- assert_array_equals(
- evt.target.result, [],
- 'getAll() on empty object store should return an empty array');
- t.done();
- });
-}, 'batchGetAll on empty object store');
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(
- t, 'out-of-line', connection, ['c', 'dd', 'e', 'ff']);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [['value-c'], [], ['value-e'], []];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'batchGetAll with non-existing values');
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(
- t, 'out-of-line', connection, [IDBKeyRange.bound('a', 'z')], 5);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [['value-a', 'value-b', 'value-c', 'value-d', 'value-e']];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get bound range with maxCount');
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(
- t, 'out-of-line', connection, [IDBKeyRange.bound('a', 'e')]);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [['value-a', 'value-b', 'value-c', 'value-d', 'value-e']];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get bound range');
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(t, 'out-of-line', connection, [
- IDBKeyRange.bound('g', 'k', false, true),
- IDBKeyRange.bound('g', 'k', true, false)
- ]);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [
- ['value-g', 'value-h', 'value-i', 'value-j'],
- ['value-h', 'value-i', 'value-j', 'value-k']
- ];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get upper/lower excluded');
-
-batchgetall_test('generated', (t, connection) => {
- const req = createBatchGetAllRequest(
- t, 'generated', connection,
- [IDBKeyRange.bound(4, 15), IDBKeyRange.bound(5, 15)], 3);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [
- [{ch: 'd', id: 4}, {ch: 'e', id: 5}, {ch: 'f', id: 6}],
- [{ch: 'e', id: 5}, {ch: 'f', id: 6}, {ch: 'g', id: 7}]
- ];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get bound range (generated) with maxCount');
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(
- t, 'out-of-line', connection, [IDBKeyRange.bound('a', 'e')], 0);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [['value-a', 'value-b', 'value-c', 'value-d', 'value-e']];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'zero maxCount'); \ No newline at end of file
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.js b/tests/wpt/tests/IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.js
deleted file mode 100644
index 497196e642f..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_batchGetAll_largeValue.tentative.any.js
+++ /dev/null
@@ -1,118 +0,0 @@
-// META: title=Batch Get All (big value)
-// META: script=resources/support.js
-// META: script=resources/support-promises.js
-
-'use strict';
-
-// engines that have special code paths for large values.
-const wrapThreshold = 128 * 1024;
-const keys = Array.from({length: 10}, (item, index) => index);
-const values =
- Array.from(keys, (item, index) => largeValue(wrapThreshold, index));
-
-function batchgetall_test(storeName, func, name) {
- indexeddb_test((t, connection, tx) => {
- let store = connection.createObjectStore(storeName, null);
- for (let i = 0; i < keys.length; i++) {
- store.put(values[i], keys[i])
- }
- }, func, name);
-}
-
-function createBatchGetAllRequest(t, storeName, connection, ranges, maxCount) {
- const transaction = connection.transaction(storeName, 'readonly');
- const store = transaction.objectStore(storeName);
- const req = store.batchGetAll(ranges, maxCount);
- req.onerror = t.unreached_func('batchGetAll request should succeed');
- return req;
-}
-
-function assertTwoDArrayEquals(result, expected) {
- assert_equals(JSON.stringify(result), JSON.stringify(expected));
-}
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(t, 'out-of-line', connection, [2]);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [[values[2]]];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Single item get');
-
-
-batchgetall_test('empty', (t, connection) => {
- const req = createBatchGetAllRequest(t, 'empty', connection);
- req.onsuccess = t.step_func(evt => {
- assert_array_equals(
- evt.target.result, [],
- 'getAll() on empty object store should return an empty array');
- t.done();
- });
-}, 'batchGetAll on empty object store');
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req =
- createBatchGetAllRequest(t, 'out-of-line', connection, [1, 'a', 4, 'z']);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [[values[1]], [], [values[4]], []];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'batchGetAll with non-existing values');
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(
- t, 'out-of-line', connection, [IDBKeyRange.bound(0, 10)], 5);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [[values[0], values[1], values[2], values[3], values[4]]];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get bound range with maxCount');
-
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(
- t, 'out-of-line', connection, [IDBKeyRange.bound(0, 4)]);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [[values[0], values[1], values[2], values[3], values[4]]];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get bound range');
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(t, 'out-of-line', connection, [
- IDBKeyRange.bound(0, 4, false, true), IDBKeyRange.bound(0, 4, true, false)
- ]);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [
- [values[0], values[1], values[2], values[3]],
- [values[1], values[2], values[3], values[4]]
- ];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'Get upper/lower excluded');
-
-
-batchgetall_test('out-of-line', (t, connection) => {
- const req = createBatchGetAllRequest(
- t, 'out-of-line', connection, [IDBKeyRange.bound(1, 4)], 0);
- req.onsuccess = t.step_func(evt => {
- let result = evt.target.result;
- let expected = [[values[1], values[2], values[3], values[4]]];
- assertTwoDArrayEquals(result, expected);
- t.done();
- });
-}, 'zero maxCount'); \ No newline at end of file
diff --git a/tests/wpt/tests/clear-site-data/support/test_utils.sub.js b/tests/wpt/tests/clear-site-data/support/test_utils.sub.js
index cce3060a878..712c57cbb7e 100644
--- a/tests/wpt/tests/clear-site-data/support/test_utils.sub.js
+++ b/tests/wpt/tests/clear-site-data/support/test_utils.sub.js
@@ -133,6 +133,19 @@ var TestUtils = (function() {
}
},
{
+ "name": "Storage Buckets",
+ "supported": function() { return !!navigator.storageBuckets; },
+ "add": function() {
+ return navigator.storageBuckets.open('inbox_bucket');
+ },
+ "isEmpty": function() {
+ return new Promise(async function(resolve, reject) {
+ var keys = await navigator.storageBuckets.keys();
+ resolve(!keys.includes('inbox_bucket'));
+ });
+ }
+ },
+ {
"name": "WebSQL",
"supported": function() { return !!window.openDatabase; },
"add": function() {
diff --git a/tests/wpt/tests/client-hints/clear-site-data/resources/check-client-hints.py b/tests/wpt/tests/client-hints/clear-site-data/resources/check-client-hints.py
index f5172300028..4fc4c331f2c 100644
--- a/tests/wpt/tests/client-hints/clear-site-data/resources/check-client-hints.py
+++ b/tests/wpt/tests/client-hints/clear-site-data/resources/check-client-hints.py
@@ -1,5 +1,6 @@
"""
Step 2/6 (/client-hints/clear-site-data/clear-site-data-{}.https.html)
+Step 3/4 (/client-hints/clear-site-data/set-client-hints-{}-clear-{}.https.html)
"""
def main(request, response):
if b"sec-ch-device-memory" in request.headers:
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html
new file mode 100644
index 00000000000..22ee0f98611
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for all shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html.headers
new file mode 100644
index 00000000000..9768d865bc4
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-all.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "*"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html
new file mode 100644
index 00000000000..3436138b2c5
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for cache shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html.headers
new file mode 100644
index 00000000000..bb61032edea
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cache.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "cache"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html
new file mode 100644
index 00000000000..18aeab2f635
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for client hints shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html.headers
new file mode 100644
index 00000000000..e815201076e
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-client-hints.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "clientHints"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html
new file mode 100644
index 00000000000..db780d3abd6
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for cookies shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html.headers
new file mode 100644
index 00000000000..d0c1afae775
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-cookies.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "cookies"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html
new file mode 100644
index 00000000000..30d541b6ed8
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting client hints after Clear-Site-Data for storage should allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html.headers
new file mode 100644
index 00000000000..d898684caca
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-client-hints-after-clear-storage.https.html.headers
@@ -0,0 +1,2 @@
+Clear-Site-Data: "storage"
+Accept-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html
new file mode 100644
index 00000000000..062e72b5446
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for all shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html.headers
new file mode 100644
index 00000000000..ebd7a88cc6c
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-all.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "*"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html
new file mode 100644
index 00000000000..ab97fa182b7
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for cache shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html.headers
new file mode 100644
index 00000000000..03d39b6fd75
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cache.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "cache"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html
new file mode 100644
index 00000000000..cdddb9ff35a
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for client hints shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html.headers
new file mode 100644
index 00000000000..f55913cb5b6
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-client-hints.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "clientHints"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html
new file mode 100644
index 00000000000..0060f3aaa0c
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints not sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "MissingDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for cookies shouldn't allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html.headers
new file mode 100644
index 00000000000..69c7e720ac0
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-cookies.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "cookies"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html
new file mode 100644
index 00000000000..9237e28cedc
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+// Here's the set-up for this test:
+// Step 1 (first window) Set client hints in the same header that clears them.
+// Step 2 (first window) Open second window.
+// Step 3 (second window) Message first window about client hints sent.
+// Step 4 (first window) Asserts client hints sent.
+async_test(t => {
+ // Step 4
+ window.addEventListener("message", t.step_func(e => {
+ assert_equals(e.data, "HadDeviceMemory");
+ t.done();
+ }), {once: true});
+
+ // Step 2
+ new_window = window.open("/client-hints/clear-site-data/resources/check-client-hints.py");
+ t.add_cleanup(new_window.close);
+}, "Setting critical client hints after Clear-Site-Data for storage should allow the client hints to take.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html.headers b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html.headers
new file mode 100644
index 00000000000..0f18541cf7b
--- /dev/null
+++ b/tests/wpt/tests/client-hints/clear-site-data/set-critical-client-hints-after-clear-storage.https.html.headers
@@ -0,0 +1,3 @@
+Clear-Site-Data: "storage"
+Accept-CH: Sec-CH-Device-Memory
+Critical-CH: Sec-CH-Device-Memory
diff --git a/tests/wpt/tests/close-watcher/abortsignal.html b/tests/wpt/tests/close-watcher/abortsignal.html
index eb70ffed1b0..ddd94526ab2 100644
--- a/tests/wpt/tests/close-watcher/abortsignal.html
+++ b/tests/wpt/tests/close-watcher/abortsignal.html
@@ -17,11 +17,11 @@ test(() => {
watcher.oncancel = () => oncancel_called = true;
watcher.onclose = () => onclose_called = true;
- watcher.close();
+ watcher.requestClose();
assert_false(oncancel_called);
assert_false(onclose_called);
-}, "already-aborted AbortSignal then close() fires no events");
+}, "already-aborted AbortSignal then requestClose() fires no events");
test(() => {
let controller = new AbortController();
@@ -32,11 +32,11 @@ test(() => {
watcher.onclose = () => onclose_called = true;
controller.abort();
- watcher.close();
+ watcher.requestClose();
assert_false(oncancel_called);
assert_false(onclose_called);
-}, "abortController.abort() then close() fires no events");
+}, "abortController.abort() then requestClose() fires no events");
test(() => {
let controller = new AbortController();
@@ -46,12 +46,12 @@ test(() => {
watcher.oncancel = () => oncancel_call_count_++;
watcher.onclose = () => onclose_call_count_++;
- watcher.close();
+ watcher.requestClose();
controller.abort();
assert_equals(oncancel_call_count_, 0);
assert_equals(onclose_call_count_, 1);
-}, "close() then abortController.abort() fires only one close event");
+}, "requestClose() then abortController.abort() fires only one close event");
promise_test(async () => {
let watcher = new CloseWatcher({ signal: AbortSignal.abort() });
@@ -110,7 +110,7 @@ promise_test(async t => {
watcher.oncancel = () => { controller.abort(); }
watcher.onclose = t.unreached_func("onclose");
await test_driver.bless("give user activation so that cancel will fire", () => {
- watcher.close();
+ watcher.requestClose();
});
}, "abortController.abort() inside oncancel");
@@ -118,6 +118,6 @@ test(t => {
let controller = new AbortController();
let watcher = new CloseWatcher({ signal: controller.signal });
watcher.onclose = () => { controller.abort(); }
- watcher.close();
+ watcher.requestClose();
}, "abortController.abort() inside onclose is benign");
</script>
diff --git a/tests/wpt/tests/close-watcher/after-other-listeners.html b/tests/wpt/tests/close-watcher/after-other-listeners.html
deleted file mode 100644
index 7dfe398012b..00000000000
--- a/tests/wpt/tests/close-watcher/after-other-listeners.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!doctype html>
-<link rel=author href="mailto:jarhar@chromium.org">
-<link rel=author href="mailto:japhet@chromium.org">
-<link rel=help href="https://bugs.chromium.org/p/chromium/issues/detail?id=1312594">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-<script src="/resources/testdriver-actions.js"></script>
-
-<div id='d' style='height: 100px; width: 100px'></div>
-<script>
-// *not* \uu001B; see https://w3c.github.io/webdriver/#keyboard-actions
-const ESC = '\uE00C';
-
-promise_test(async t => {
- let watcher = new CloseWatcher();
- let onclose_called = false;
- watcher.onclose = () => onclose_called = true;
-
- window.onkeydown = e => e.preventDefault();
-
- await test_driver.send_keys(document.getElementById('d'), ESC);
- assert_false(onclose_called);
-}, "normal event listeners come before CloseWatcher");
-</script>
diff --git a/tests/wpt/tests/close-watcher/basic.html b/tests/wpt/tests/close-watcher/basic.html
index 1c26c0ce15e..dc2fca5c36b 100644
--- a/tests/wpt/tests/close-watcher/basic.html
+++ b/tests/wpt/tests/close-watcher/basic.html
@@ -4,164 +4,79 @@
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="/resources/testdriver-actions.js"></script>
+<script src="resources/helpers.js"></script>
<div id='d' style='height: 100px; width: 100px'></div>
<script>
-// *not* \uu001B; see https://w3c.github.io/webdriver/#keyboard-actions
-const ESC = '\uE00C';
-
-test(() => {
- let watcher = new CloseWatcher();
- let oncancel_called = false;
- let onclose_called = false;
- watcher.oncancel = () => oncancel_called = true;
- watcher.onclose = e => {
- assert_equals(e.constructor, Event);
- assert_false(e.cancelable);
- assert_false(e.bubbles);
- onclose_called = true;
- }
+test(t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
- watcher.close();
+ watcher.requestClose();
- assert_false(oncancel_called);
- assert_true(onclose_called);
-}, "close() with no user activation only fires close");
+ assert_array_equals(events, ["close"]);
+}, "requestClose() with no user activation only fires close");
-test(() => {
- let watcher = new CloseWatcher();
- let oncancel_called = false;
- let onclose_called = false;
- watcher.oncancel = () => oncancel_called = true;
- watcher.onclose = () => onclose_called = true;
+test(t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
watcher.destroy();
- watcher.close();
+ watcher.requestClose();
- assert_false(oncancel_called);
- assert_false(onclose_called);
-}, "destroy() then close() fires no events");
+ assert_array_equals(events, []);
+}, "destroy() then requestClose() fires no events");
-test(() => {
- let watcher = new CloseWatcher();
- let oncancel_call_count_ = 0;
- let onclose_call_count_ = 0;
- watcher.oncancel = () => oncancel_call_count_++;
- watcher.onclose = () => onclose_call_count_++;
+test(t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
watcher.close();
- watcher.destroy();
- assert_equals(oncancel_call_count_, 0);
- assert_equals(onclose_call_count_, 1);
-}, "close() then destroy() fires only one close event");
+ assert_array_equals(events, ["close"]);
-promise_test(async t => {
- let watcher = new CloseWatcher();
- let oncancel_called = false;
- let onclose_called = false;
- watcher.oncancel = () => oncancel_called = true;
- watcher.onclose = () => onclose_called = true;
+ watcher.requestClose();
+ assert_array_equals(events, ["close"]);
+}, "close() then requestClose() fires only one close event");
- await test_driver.send_keys(document.getElementById('d'), ESC);
-
- assert_false(oncancel_called);
- assert_true(onclose_called);
-}, "Esc key does not count as user activation, so it fires close but not cancel");
+test(t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
-promise_test(async t => {
- let watcher = new CloseWatcher();
- let oncancel_called = false;
- let onclose_called = false;
- watcher.oncancel = () => oncancel_called = true;
- watcher.onclose = () => onclose_called = true;
+ watcher.requestClose();
+ assert_array_equals(events, ["close"]);
watcher.destroy();
- await test_driver.send_keys(document.getElementById('d'), ESC);
-
- assert_false(oncancel_called);
- assert_false(onclose_called);
-}, "destroy() then close via Esc key fires no events");
-
-promise_test(async t => {
- let watcher = new CloseWatcher();
- let oncancel_call_count_ = 0;
- let onclose_call_count_ = 0;
- watcher.oncancel = () => oncancel_call_count_++;
- watcher.onclose = () => onclose_call_count_++;
-
- await test_driver.send_keys(document.getElementById('d'), ESC);
- watcher.destroy();
-
- assert_equals(oncancel_call_count_, 0);
- assert_equals(onclose_call_count_, 1);
-}, "Esc key then destroy() fires only one close event");
+ assert_array_equals(events, ["close"]);
+}, "requestClose() then destroy() fires only one close event");
test(t => {
- let watcher = new CloseWatcher();
- let oncancel_called = false;
- let onclose_called = false;
- watcher.oncancel = () => oncancel_called = true;
- watcher.onclose = () => onclose_called = true;
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
- t.add_cleanup(() => watcher.destroy());
+ watcher.close();
+ assert_array_equals(events, ["close"]);
- let keydown = new KeyboardEvent('keydown', {'key': 'Escape', 'keyCode': 27});
- window.dispatchEvent(keydown);
- let keyup = new KeyboardEvent('keyup', {'key': 'Escape', 'keyCode': 27});
- window.dispatchEvent(keyup);
+ watcher.destroy();
+ assert_array_equals(events, ["close"]);
+}, "close() then destroy() fires only one close event");
- assert_false(oncancel_called);
- assert_false(onclose_called);
+promise_test(async t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
- let keyup2 = document.createEvent("Event");
- keyup2.initEvent("keyup", true);
- window.dispatchEvent(keyup2);
+ watcher.destroy();
+ await sendCloseSignal();
- assert_false(oncancel_called);
- assert_false(onclose_called);
-}, "close via synthesized escape key should not work");
+ assert_array_equals(events, []);
+}, "destroy() then close signal fires no events");
promise_test(async t => {
- let watcher = new CloseWatcher();
- watcher.oncancel = () => { watcher.destroy(); }
- watcher.onclose = t.unreached_func("onclose");
- await test_driver.bless("give user activation so that cancel will fire", () => {
- watcher.close();
- });
-}, "destroy inside oncancel");
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
-test(t => {
- let watcher = new CloseWatcher();
- watcher.onclose = () => { watcher.destroy(); }
- watcher.close();
-}, "destroy inside onclose is benign");
-
-promise_test(async t => {
- let watcher = new CloseWatcher();
- watcher.oncancel = () => { watcher.close(); }
- await test_driver.bless("give user activation so that cancel will fire", () => {
- watcher.close();
- });
-}, "close inside oncancel should not trigger an infinite loop");
+ await sendCloseSignal();
+ watcher.destroy();
-test(t => {
- let watcher = new CloseWatcher();
- watcher.onclose = () => { watcher.close(); }
- watcher.close();
-}, "close inside onclose should not trigger an infinite loop");
-
-promise_test(async () => {
- let watcher = new CloseWatcher();
- let oncancel_called = false;
- let onclose_called = false;
- watcher.addEventListener("cancel", () => oncancel_called = true);
- watcher.addEventListener("close", () => onclose_called = true);
-
- await test_driver.bless("give user activation so that cancel will fire", () => {
- watcher.close();
- });
-
- assert_true(oncancel_called);
- assert_true(onclose_called);
-}, "close with events added via addEventListener");
+ assert_array_equals(events, ["close"]);
+}, "Close signal then destroy() fires only one close event");
</script>
diff --git a/tests/wpt/tests/close-watcher/esc-key.html b/tests/wpt/tests/close-watcher/esc-key.html
new file mode 100644
index 00000000000..4d98b3dc318
--- /dev/null
+++ b/tests/wpt/tests/close-watcher/esc-key.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="resources/helpers.js"></script>
+
+<!--
+ Tests in this file are around the interaction of the Esc key specifically, not
+ the general concept of close signals. Ideally, all other tests would work
+ as-is if you changed the implementation of sendCloseSignal(). These tests
+ assume that Esc is the close signal for the platform being tested.
+-->
+
+<div id='d' style='height: 100px; width: 100px'></div>
+<script>
+promise_test(async t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ await sendEscKey();
+
+ assert_array_equals(events, ["close"]);
+}, "Esc key does not count as user activation, so if it is the sole user interaction, that fires close but not cancel");
+
+promise_test(async t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ window.onkeydown = e => e.preventDefault();
+
+ await sendEscKey();
+
+ assert_array_equals(events, []);
+}, "A keydown listener can prevent the Esc keypress from being interpreted as a close signal");
+
+promise_test(async t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ window.onkeyup = e => e.preventDefault();
+
+ await sendEscKey();
+
+ assert_array_equals(events, []);
+}, "A keyup listener can prevent the Esc keypress from being interpreted as a close signal");
+
+promise_test(async t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ window.onkeypress = e => e.preventDefault();
+
+ await sendEscKey();
+
+ assert_array_equals(events, []);
+}, "A keypress listener can prevent the Esc keypress from being interpreted as a close signal");
+
+test(t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ let keydown = new KeyboardEvent('keydown', {'key': 'Escape', 'keyCode': 27});
+ window.dispatchEvent(keydown);
+ let keyup = new KeyboardEvent('keyup', {'key': 'Escape', 'keyCode': 27});
+ window.dispatchEvent(keyup);
+
+ assert_array_equals(events, []);
+
+ let keyup2 = document.createEvent("Event");
+ keyup2.initEvent("keyup", true);
+ window.dispatchEvent(keyup2);
+
+ assert_array_equals(events, []);
+}, "close via synthesized Esc key must not work");
+</script>
diff --git a/tests/wpt/tests/close-watcher/event-properties.html b/tests/wpt/tests/close-watcher/event-properties.html
new file mode 100644
index 00000000000..062693e4953
--- /dev/null
+++ b/tests/wpt/tests/close-watcher/event-properties.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="resources/helpers.js"></script>
+
+<div id='d' style='height: 100px; width: 100px'></div>
+<script>
+promise_test(async t => {
+ let closeEvent, cancelEvent;
+ const watcher = new CloseWatcher();
+ watcher.oncancel = e => { cancelEvent = e; };
+ watcher.onclose = e => { closeEvent = e; };
+
+ await test_driver.bless("call requestClose()", () => watcher.requestClose());
+
+ assert_equals(cancelEvent.constructor, Event, "cancel constructor");
+ assert_false(cancelEvent.bubbles, "cancel bubles");
+ assert_true(cancelEvent.cancelable, "cancel cancelable");
+
+ assert_equals(closeEvent.constructor, Event, "close constructor");
+ assert_false(closeEvent.bubbles, "close bubles");
+ assert_false(closeEvent.cancelable, "close cancelable");
+}, "cancel and close event properties are correct");
+</script>
diff --git a/tests/wpt/tests/close-watcher/frame-removal.html b/tests/wpt/tests/close-watcher/frame-removal.html
index b8bbac04f97..573b16bb44d 100644
--- a/tests/wpt/tests/close-watcher/frame-removal.html
+++ b/tests/wpt/tests/close-watcher/frame-removal.html
@@ -10,7 +10,7 @@ promise_test(async (t) => {
watcher.oncancel = () => i.remove();
watcher.onclose = () => t.unreached_func("close event must not fire");
- watcher.close();
+ watcher.requestClose();
}, "detaching the iframe during the cancel event");
promise_test(async (t) => {
@@ -18,7 +18,7 @@ promise_test(async (t) => {
const watcher = new i.contentWindow.CloseWatcher();
watcher.onclose = () => i.remove();
- watcher.close();
+ watcher.requestClose();
}, "detaching the iframe during the close event");
promise_test(async (t) => {
@@ -41,6 +41,16 @@ promise_test(async (t) => {
promise_test(async (t) => {
const i = await setupIframe();
+ const watcher = new i.contentWindow.CloseWatcher();
+ watcher.oncancel = () => t.unreached_func("cancel event must not fire");
+ watcher.onclose = () => t.unreached_func("close event must not fire");
+ i.remove();
+
+ watcher.requestClose();
+}, "detaching the iframe then calling requestClose()");
+
+promise_test(async (t) => {
+ const i = await setupIframe();
const iCloseWatcher = i.contentWindow.CloseWatcher;
const iDOMException = i.contentWindow.DOMException;
i.remove();
diff --git a/tests/wpt/tests/close-watcher/inside-event-listeners.html b/tests/wpt/tests/close-watcher/inside-event-listeners.html
new file mode 100644
index 00000000000..26999271799
--- /dev/null
+++ b/tests/wpt/tests/close-watcher/inside-event-listeners.html
@@ -0,0 +1,94 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="resources/helpers.js"></script>
+
+<div id='d' style='height: 100px; width: 100px'></div>
+<script>
+promise_test(async t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ watcher.oncancel = () => { watcher.destroy(); }
+
+ await test_driver.bless("give user activation so that cancel will fire", () => {
+ watcher.requestClose();
+ });
+ assert_array_equals(events, ["cancel"]);
+
+ watcher.requestClose();
+ assert_array_equals(events, ["cancel"], "since it was inactive, no more events fired");
+}, "destroy() inside oncancel");
+
+test(t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ watcher.onclose = () => { watcher.destroy(); }
+
+ watcher.requestClose();
+ assert_array_equals(events, ["close"]);
+
+ watcher.requestClose();
+ assert_array_equals(events, ["close"], "since it was inactive, no more events fired");
+}, "destroy() inside onclose");
+
+promise_test(async t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ watcher.oncancel = () => { watcher.close(); }
+
+ await test_driver.bless("give user activation so that cancel will fire", () => {
+ watcher.requestClose();
+ });
+ assert_array_equals(events, ["cancel", "close"]);
+
+ watcher.requestClose();
+ assert_array_equals(events, ["cancel", "close"], "since it was inactive, no more events fired");
+}, "close() inside oncancel");
+
+test(t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ watcher.onclose = () => { watcher.close(); }
+
+ watcher.requestClose();
+ assert_array_equals(events, ["close"]);
+
+ watcher.requestClose();
+ assert_array_equals(events, ["close"], "since it was inactive, no more events fired");
+}, "close() inside onclose");
+
+promise_test(async t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ watcher.oncancel = () => { watcher.requestClose(); }
+
+ await test_driver.bless("give user activation so that cancel will fire", () => {
+ watcher.requestClose();
+ });
+ assert_array_equals(events, ["cancel", "close"]);
+
+ watcher.requestClose();
+ assert_array_equals(events, ["cancel", "close"], "since it was inactive, no more events fired");
+}, "requestClose() inside oncancel");
+
+test(t => {
+ let events = [];
+ let watcher = createRecordingCloseWatcher(t, events);
+
+ watcher.onclose = () => { watcher.requestClose(); }
+
+ watcher.requestClose();
+ assert_array_equals(events, ["close"]);
+
+ watcher.requestClose();
+ assert_array_equals(events, ["close"], "since it was inactive, no more events fired");
+}, "requestClose() inside onclose");
+</script>
diff --git a/tests/wpt/tests/close-watcher/popover-closewatcher-multiple-plus-free.html b/tests/wpt/tests/close-watcher/popover-closewatcher-multiple-plus-free.html
new file mode 100644
index 00000000000..2982e29e264
--- /dev/null
+++ b/tests/wpt/tests/close-watcher/popover-closewatcher-multiple-plus-free.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=help href="https://github.com/whatwg/html/pull/9462">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+
+<button id=b0>b0</button>
+
+<div id=p1 popover=auto>
+ <button id=b1>b1</button>
+
+ <div id=p2 popover=auto>
+ <button id=b2>b2</button>
+
+ <div id=p3 popover=auto>p3</div>
+ </div>
+</div>
+
+<script>
+const escapeKey = '\uE00C';
+
+promise_test(async () => {
+ p1.showPopover();
+ await test_driver.click(b1);
+ p2.showPopover();
+ p3.showPopover();
+ assert_true(p1.matches(':popover-open'), 'p1 should be open.');
+ assert_true(p2.matches(':popover-open'), 'p2 should be open.');
+ assert_true(p3.matches(':popover-open'), 'p3 should be open.');
+
+ await test_driver.send_keys(p3, escapeKey);
+ assert_true(p1.matches(':popover-open'), 'first escape: p1 should be open.');
+ assert_false(p2.matches(':popover-open'), 'first escape: p2 should be closed.');
+ assert_false(p3.matches(':popover-open'), 'first escape: p3 should be closed.');
+
+ await test_driver.send_keys(p1, escapeKey);
+ assert_false(p1.matches(':popover-open'), 'second escape: p1 should be closed.');
+ assert_false(p2.matches(':popover-open'), 'second escape: p2 should be closed.');
+ assert_false(p3.matches(':popover-open'), 'second escape: p3 should be closed.');
+}, 'Multiple popovers opened from a single user activation close together, but original popover closes separately.');
+</script>
diff --git a/tests/wpt/tests/close-watcher/popover-closewatcher.html b/tests/wpt/tests/close-watcher/popover-closewatcher.html
new file mode 100644
index 00000000000..6695f2bc491
--- /dev/null
+++ b/tests/wpt/tests/close-watcher/popover-closewatcher.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=help href="https://github.com/whatwg/html/pull/9462">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+
+<button id=b0>b0</button>
+
+<div id=p1 popover=auto>
+ <button id=b1>b1</button>
+
+ <div id=p2 popover=auto>
+ <button id=b2>b2</button>
+
+ <div id=p3 popover=auto>p3</div>
+ </div>
+</div>
+
+<script>
+const escapeKey = '\uE00C';
+
+promise_test(async () => {
+ p1.showPopover();
+ p2.showPopover();
+ p3.showPopover();
+ assert_true(p1.matches(':popover-open'), 'p1 should be open.');
+ assert_true(p2.matches(':popover-open'), 'p2 should be open.');
+ assert_true(p3.matches(':popover-open'), 'p3 should be open.');
+
+ await test_driver.send_keys(p3, escapeKey);
+ assert_false(p1.matches(':popover-open'), 'p1 should be closed.');
+ assert_false(p2.matches(':popover-open'), 'p2 should be closed.');
+ assert_false(p3.matches(':popover-open'), 'p3 should be closed.');
+}, 'Opening multiple popovers without user activation causes them all to be closed with one close signal.');
+
+promise_test(async () => {
+ await test_driver.click(b0);
+ p1.showPopover();
+ await test_driver.click(b1);
+ p2.showPopover();
+ await test_driver.click(b2);
+ p3.showPopover();
+ assert_true(p1.matches(':popover-open'), 'p1 should be open.');
+ assert_true(p2.matches(':popover-open'), 'p2 should be open.');
+ assert_true(p3.matches(':popover-open'), 'p3 should be open.');
+
+ await test_driver.send_keys(p3, escapeKey);
+ assert_true(p1.matches(':popover-open'), 'first escape: p1 should be open.');
+ assert_true(p2.matches(':popover-open'), 'first escape: p2 should be open.');
+ assert_false(p3.matches(':popover-open'), 'first escape: p3 should be closed.');
+
+ await test_driver.send_keys(p2, escapeKey);
+ assert_true(p1.matches(':popover-open'), 'second escape: p1 should be open.');
+ assert_false(p2.matches(':popover-open'), 'second escape: p2 should be closed.');
+ assert_false(p3.matches(':popover-open'), 'second escape: p3 should be closed.');
+
+ await test_driver.send_keys(p1, escapeKey);
+ assert_false(p1.matches(':popover-open'), 'third escape: p1 should be closed.');
+ assert_false(p2.matches(':popover-open'), 'third escape: p2 should be closed.');
+ assert_false(p3.matches(':popover-open'), 'third escape: p3 should be closed.');
+}, 'Opening multiple popovers with user activation should close one at a time with close signals.');
+</script>
diff --git a/tests/wpt/tests/close-watcher/resources/helpers.js b/tests/wpt/tests/close-watcher/resources/helpers.js
index 4e024a19085..08da0496b30 100644
--- a/tests/wpt/tests/close-watcher/resources/helpers.js
+++ b/tests/wpt/tests/close-watcher/resources/helpers.js
@@ -1,10 +1,12 @@
// TODO(domenic): consider using these in all test files.
window.createRecordingCloseWatcher = (t, events, name) => {
+ const prefix = name === undefined ? "" : name + " ";;
+
const watcher = new CloseWatcher();
t.add_cleanup(() => watcher.destroy());
- watcher.oncancel = () => events.push(name + " cancel");
- watcher.onclose = () => events.push(name + " close");
+ watcher.addEventListener("cancel", () => events.push(prefix + "cancel"));
+ watcher.addEventListener("close", () => events.push(prefix + "close"));
return watcher;
};
@@ -13,9 +15,16 @@ window.createBlessedRecordingCloseWatcher = (t, events, name) => {
return test_driver.bless("create " + name, () => createRecordingCloseWatcher(t, events, name));
};
-window.sendCloseSignal = () => {
+window.sendEscKey = () => {
// *not* \uu001B; see https://w3c.github.io/webdriver/#keyboard-actions
const ESC = '\uE00C';
return test_driver.send_keys(document.getElementById("d"), ESC);
};
+
+// For now, we always use the Esc keypress as our close signal. In
+// theory, in the future, we could add a WebDriver command or similar
+// for the close signal, which would allow different tests on platforms
+// with different close signals. In that case, we'd update this
+// function, but not update the sendEscKey function above.
+window.sendCloseSignal = window.sendEscKey;
diff --git a/tests/wpt/tests/close-watcher/user-activation.html b/tests/wpt/tests/close-watcher/user-activation.html
index 64f217533d7..a2bc575ee91 100644
--- a/tests/wpt/tests/close-watcher/user-activation.html
+++ b/tests/wpt/tests/close-watcher/user-activation.html
@@ -12,20 +12,30 @@ promise_test(async t => {
const events = [];
const freeWatcher = createRecordingCloseWatcher(t, events, "freeWatcher");
- await test_driver.bless("call close()", () => freeWatcher.close());
+ await test_driver.bless("call requestClose()", () => freeWatcher.requestClose());
assert_array_equals(events, ["freeWatcher cancel", "freeWatcher close"]);
-}, "CloseWatchers created without user activation, but close()d via user activation, fires cancel");
+}, "CloseWatchers created without user activation, but requestClose()d via user activation, fires cancel");
promise_test(async t => {
const events = [];
const freeWatcher = createRecordingCloseWatcher(t, events, "freeWatcher");
freeWatcher.addEventListener("cancel", e => e.preventDefault());
- await test_driver.bless("call close()", () => freeWatcher.close());
+ await test_driver.bless("call requestClose()", () => freeWatcher.requestClose());
assert_array_equals(events, ["freeWatcher cancel"]);
-}, "CloseWatchers created without user activation, but close()d via user activation, fires cancel, which can be preventDefault()ed");
+}, "CloseWatchers created without user activation, but requestClose()d via user activation, fires cancel, which can be preventDefault()ed");
+
+promise_test(async t => {
+ const events = [];
+ const freeWatcher = createRecordingCloseWatcher(t, events, "freeWatcher");
+ freeWatcher.addEventListener("cancel", e => e.preventDefault());
+
+ await test_driver.bless("call close()", () => freeWatcher.close());
+
+ assert_array_equals(events, ["freeWatcher close"]);
+}, "CloseWatchers created without user activation, but close()d via user activation, do not fire cancel");
promise_test(async t => {
const events = [];
@@ -73,12 +83,12 @@ promise_test(async t => {
const freeWatcher = createRecordingCloseWatcher(t, events, "freeWatcher");
const activationWatcher = await createBlessedRecordingCloseWatcher(t, events, "activationWatcher");
- await test_driver.bless("call activationWatcher.close()", () => activationWatcher.close());
+ await test_driver.bless("call activationWatcher.requestClose()", () => activationWatcher.requestClose());
assert_array_equals(events, ["activationWatcher cancel", "activationWatcher close"]);
- await test_driver.bless("call freeWatcher.close()", () => freeWatcher.close());
+ await test_driver.bless("call freeWatcher.requestClose()", () => freeWatcher.requestClose());
assert_array_equals(events, ["activationWatcher cancel", "activationWatcher close", "freeWatcher cancel", "freeWatcher close"]);
-}, "Creating a CloseWatcher from user activation, and close()ing CloseWatchers with user activation, fires cancel");
+}, "Creating a CloseWatcher from user activation, and requestClose()ing CloseWatchers with user activation, fires cancel");
promise_test(async t => {
const events = [];
@@ -132,14 +142,14 @@ promise_test(async t => {
const activationWatcher1 = await createBlessedRecordingCloseWatcher(t, events, "activationWatcher1");
activationWatcher1.addEventListener("cancel", e => e.preventDefault());
- await test_driver.bless("call activationWatcher1.close()", () => activationWatcher1.close());
+ await test_driver.bless("call activationWatcher1.requestClose()", () => activationWatcher1.requestClose());
assert_array_equals(events, ["activationWatcher1 cancel"]);
// This time we go straight to close, without a second cancel.
- activationWatcher1.close();
+ activationWatcher1.requestClose();
assert_array_equals(events, ["activationWatcher1 cancel", "activationWatcher1 close"]);
- freeWatcher.close();
+ freeWatcher.requestClose();
assert_array_equals(events, ["activationWatcher1 cancel", "activationWatcher1 close", "freeWatcher close"]);
}, "3 user activations let you have 2 close watchers with 1 cancel event, even if the first cancel event is prevented");
@@ -160,14 +170,14 @@ promise_test(async t => {
const events = [];
const freeWatcher1 = createRecordingCloseWatcher(t, events, "freeWatcher1");
- freeWatcher1.close();
+ freeWatcher1.requestClose();
assert_array_equals(events, ["freeWatcher1 close"]);
const freeWatcher2 = createRecordingCloseWatcher(t, events, "freeWatcher2");
await sendCloseSignal();
assert_array_equals(events, ["freeWatcher1 close", "freeWatcher2 close"]);
-}, "close()ing the free CloseWatcher allows a new free one to be created without user activation, and it receives the close signal");
+}, "requestClose()ing the free CloseWatcher allows a new free one to be created without user activation, and it receives the close signal");
promise_test(async t => {
const events = [];
diff --git a/tests/wpt/tests/cookie-store/META.yml b/tests/wpt/tests/cookie-store/META.yml
index 46da8a9fb65..68c30024552 100644
--- a/tests/wpt/tests/cookie-store/META.yml
+++ b/tests/wpt/tests/cookie-store/META.yml
@@ -1,4 +1,4 @@
spec: https://wicg.github.io/cookie-store/
suggested_reviewers:
- inexorabletash
- - pwnall
+ - ayuishii
diff --git a/tests/wpt/tests/cookie-store/cookieStore_set_arguments.https.any.js b/tests/wpt/tests/cookie-store/cookieStore_set_arguments.https.any.js
index aab964d014e..8ff66bf7772 100644
--- a/tests/wpt/tests/cookie-store/cookieStore_set_arguments.https.any.js
+++ b/tests/wpt/tests/cookie-store/cookieStore_set_arguments.https.any.js
@@ -285,3 +285,27 @@ promise_test(async testCase => {
assert_equals(cookie.name, 'cookie-name');
assert_equals(cookie.value, 'new-cookie-value');
}, 'cookieStore.set with get result');
+
+promise_test(async testCase => {
+ // The maximum attribute value size is specified as 1024 bytes at https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size.
+ await cookieStore.delete('cookie-name');
+
+ await promise_rejects_js(testCase, TypeError, cookieStore.set(
+ { name: 'cookie-name',
+ value: 'cookie-value',
+ path: '/' + 'a'.repeat(1023) + '/' }));
+ const cookie = await cookieStore.get('cookie-name');
+ assert_equals(cookie, null);
+}, 'cookieStore.set checks if the path is too long');
+
+promise_test(async testCase => {
+ // The maximum attribute value size is specified as 1024 bytes at https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size.
+ await cookieStore.delete('cookie-name');
+
+ await promise_rejects_js(testCase, TypeError, cookieStore.set(
+ { name: 'cookie-name',
+ value: 'cookie-value',
+ domain: 'a'.repeat(1025) }));
+ const cookie = await cookieStore.get('cookie-name');
+ assert_equals(cookie, null);
+}, 'cookieStore.set checks if the domain is too long');
diff --git a/tests/wpt/tests/css/css-animations/display-interpolation.html b/tests/wpt/tests/css/css-animations/display-interpolation.html
index 4c3f8f8d217..fb2503ac8a4 100644
--- a/tests/wpt/tests/css/css-animations/display-interpolation.html
+++ b/tests/wpt/tests/css/css-animations/display-interpolation.html
@@ -26,7 +26,7 @@ const alwaysNone = [
test_interpolation({
property: 'display',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
from: 'block',
to: 'none',
}, [
@@ -43,7 +43,7 @@ test_interpolation({
// can be worked around by using @initial.
test_interpolation({
property: 'display',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
from: 'none',
to: 'block',
'CSS Transitions with transition: all': alwaysBlock,
@@ -65,14 +65,14 @@ test_no_interpolation({
test_interpolation({
property: 'display',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
from: 'block',
to: 'block'
}, alwaysBlock);
test_interpolation({
property: 'display',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
from: 'none',
to: 'none'
}, alwaysNone);
diff --git a/tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-001-ref.html b/tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-001-ref.html
index 1792869411b..c5d48b4c9f0 100644
--- a/tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-001-ref.html
+++ b/tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-001-ref.html
@@ -1,13 +1,12 @@
<!DOCTYPE html>
<meta charset="UTF-8">
-
<title>CSS Reference Test</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<style>
- div , table
+ div
{
font-size: 40px;
line-height: 1;
@@ -26,27 +25,8 @@
color: HighlightText;
}
- table
- {
- border-spacing: 0px;
- margin: 0px;
- width: 100%;
- }
-
- td
- {
- padding: 0px;
- }
</style>
<div><span>With system-color-highlight</span></div>
<div><span>With getSelection()</span><br></div>
-
- <div><span>With getSelection()</span></div>
-
- <table>
- <tr>
- <td><span style="white-space: nowrap;">With system-color-highlight</span></td><td style="background-color: yellow; width: 100%;"></td>
- </tr>
- </table>
diff --git a/tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-002-ref.html b/tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-002-ref.html
new file mode 100644
index 00000000000..67bec9a57e7
--- /dev/null
+++ b/tests/wpt/tests/css/css-color/reference/system-color-hightlights-vs-getSelection-002-ref.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+ <title>CSS Reference Test</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+
+ <style>
+ div
+ {
+ font-size: 40px;
+ line-height: 1;
+ }
+
+ /*
+ https://www.w3.org/TR/css-pseudo-4/#highlight-bounds
+ For text, the corresponding overlay must cover at least
+ the entire em box and may extend further above/below the
+ em box to the line box edges.
+ */
+
+ span
+ {
+ background-color: Highlight;
+ color: HighlightText;
+ }
+
+ .yellow {
+ background-color: yellow;
+ }
+
+
+ </style>
+
+ <div class="yellow">
+ <span>With getSelection()</span>
+ </div>
+
+ <div class="yellow">
+ <span>With system-color-highlight</span>
+ </div>
diff --git a/tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-001.html b/tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-001.html
index 7223ecdc925..12495cd7adb 100644
--- a/tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-001.html
+++ b/tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-001.html
@@ -13,7 +13,7 @@
Created: March 29th 2023
- Last modified: April 9th 2023
+ Last modified: July 12th 2023
Chromium bug report 932343 comment #c20: Issue 932343: Support text decoration properties in ::selection
https://bugs.chromium.org/p/chromium/issues/detail?id=932343#c20
@@ -27,7 +27,7 @@
-->
<meta content="" name="flags">
- <meta content="This test checks that color and background color generated by window.getSelection().addRange(targetRange) correspond to system color highlights values. This must be true even if there is a non-transparent background color behind the tested range of text." name="assert">
+ <meta content="This test checks that color and background color generated by window.getSelection().addRange(targetRange) correspond to system color highlights values." name="assert">
<style>
div
@@ -85,7 +85,6 @@
<div><span class="system-color-highlight">With system-color-highlight</span></div>
- <div id="getSelection">With getSelection()<br>
- <span style="background-color: yellow;">With getSelection()</span></div>
-
- <div style="background-color: yellow;"><span class="system-color-highlight">With system-color-highlight</span></div>
+ <div>
+ <span id="getSelection">With getSelection()</span>
+ </div>
diff --git a/tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-002.html b/tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-002.html
new file mode 100644
index 00000000000..f4025cd3f03
--- /dev/null
+++ b/tests/wpt/tests/css/css-color/system-color-hightlights-vs-getSelection-002.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+
+ <meta charset="UTF-8">
+
+ <title>CSS Color Test: system color highlights values versus getSelection().addRange(targetRange)</title>
+
+ <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
+ <link rel="help" href="https://www.w3.org/TR/css-color-4/#css-system-colors">
+ <link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
+ <link rel="match" href="reference/system-color-hightlights-vs-getSelection-002-ref.html">
+
+ <!--
+
+ Created: March 29th 2023
+
+ Last modified: July 12th 2023
+
+ Chromium bug report 932343 comment #c20: Issue 932343: Support text decoration properties in ::selection
+ https://bugs.chromium.org/p/chromium/issues/detail?id=932343#c20
+
+ Chromium bug report 1429019: Issue 1429019: [CSS4 Color] [CSS4 Pseudo] getSelection() color and background color should match system color highlights
+ https://bugs.chromium.org/p/chromium/issues/detail?id=1429019
+
+ WebKit Bug report 254691: [CSS4 Color] [CSS4 Pseudo] getSelection() color and background color should match system color highlights
+ https://bugs.webkit.org/show_bug.cgi?id=254691
+
+ -->
+
+ <meta content="" name="flags">
+ <meta content="This test checks that color and background color generated by window.getSelection().addRange(targetRange) correspond to system color highlights values when there is a non-transparent background color behind the tested range of text." name="assert">
+
+ <style>
+ div
+ {
+ font-size: 40px;
+ line-height: 1;
+ }
+
+ /*
+ https://www.w3.org/TR/css-pseudo-4/#highlight-bounds
+ For text, the corresponding overlay must cover at least
+ the entire em box and may extend further above/below the
+ em box to the line box edges.
+ */
+
+ span.system-color-highlight
+ {
+ background-color: Highlight;
+ color: HighlightText;
+ }
+
+ /*
+
+ Highlight
+ Background of item(s) selected in a control.
+ https://www.w3.org/TR/css-color-4/#valdef-system-color-highlight
+
+ HighlightText
+ Text of item(s) selected in a control.
+ https://www.w3.org/TR/css-color-4/#valdef-system-color-highlighttext
+
+ CSS4 Color Module
+ 5.2 System Colors
+ https://www.w3.org/TR/css-color-4/#css-system-colors
+
+ */
+ </style>
+
+ <script type="text/javascript">
+ function startTest()
+ {
+ /* We first create an empty range */
+ var targetRange = document.createRange();
+
+ /* Then we select the node */
+ targetRange.selectNode(document.getElementById("getSelection"));
+
+ /* Finally, we now select such range of content */
+ window.getSelection().addRange(targetRange);
+ }
+
+ </script>
+
+ <body onload="startTest();">
+ <div style="background-color: yellow;">
+ <span id="getSelection">With getSelection()</span>
+ </div>
+
+ <div style="background-color: yellow;">
+ <span class="system-color-highlight">With system-color-highlight</span>
+ </div>
diff --git a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate.html b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate.html
new file mode 100644
index 00000000000..5a177d6ea98
--- /dev/null
+++ b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate.html
@@ -0,0 +1,53 @@
+<!doctype HTML>
+<html>
+<meta charset="utf8">
+<title>Content Visibility: first visibility determination happens before resize observer.</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-contain/#content-visibility">
+<meta name="assert" content="first visibility determination happens before resize observer">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+#target {
+ content-visibility: auto;
+ contain-intrinsic-size: 10px;
+}
+#child {
+ height: 100px;
+}
+</style>
+
+<div id=container></div>
+
+<script>
+promise_test(t => new Promise(async (resolve, reject) => {
+ requestAnimationFrame(() => {
+ let target = document.createElement("div");
+ target.id = "target";
+
+ let child = document.createElement("div");
+ child.id = "child";
+ target.appendChild(child);
+
+ const resizeObserver = new ResizeObserver((entries) => {
+ for (const entry of entries) {
+ if (entry.contentBoxSize) {
+ if (entry.contentBoxSize[0].blockSize == 100) {
+ resolve();
+ return;
+ } else {
+ reject(`unexpected size ${entry.contentBoxSize[0].blockSize}`);
+ return;
+ }
+ }
+ }
+ reject("no content boxes or no entries");
+ });
+
+ container.appendChild(target);
+ resizeObserver.observe(target);
+ });
+}), "Target is sized and laid out before resize observer");
+</script>
diff --git a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-interpolation.html b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-interpolation.html
index 4b3cf856494..55f8c7e5af8 100644
--- a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-interpolation.html
+++ b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-interpolation.html
@@ -26,7 +26,7 @@ const alwaysHidden = [
test_interpolation({
property: 'content-visibility',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
from: 'visible',
to: 'hidden',
}, [
@@ -40,7 +40,7 @@ test_interpolation({
test_interpolation({
property: 'content-visibility',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
from: 'hidden',
to: 'visible',
}, [
diff --git a/tests/wpt/tests/css/css-contain/counter-scoping-004.html b/tests/wpt/tests/css/css-contain/counter-scoping-004.html
new file mode 100644
index 00000000000..3aad43f8535
--- /dev/null
+++ b/tests/wpt/tests/css/css-contain/counter-scoping-004.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="UTF-8">
+<title>CSS-contain test: style containment and subtree root</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-contain-2/#property-scoped-to-a-sub-tree">
+<link rel="match" href="reference/counter-scoping-004-ref.html">
+<style>
+ .list-item {
+ contain: style;
+ counter-increment: my-list-counter;
+ margin-left: 40px;
+ }
+ .list-item::before {
+ content: '[' counter(my-list-counter, decimal) '] ';
+ }
+</style>
+<div class="list-item">
+ A1
+ <div class="list-item">B1</div>
+ <div class="list-item">B2</div>
+</div>
+<div class="list-item">A2</div>
+<div class="list-item">A3</div>
diff --git a/tests/wpt/tests/css/css-contain/reference/counter-scoping-004-ref.html b/tests/wpt/tests/css/css-contain/reference/counter-scoping-004-ref.html
new file mode 100644
index 00000000000..f6d8e38fd5f
--- /dev/null
+++ b/tests/wpt/tests/css/css-contain/reference/counter-scoping-004-ref.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<meta charset="UTF-8">
+<title>CSS Test Reference</title>
+<style>
+ .list-item {
+ margin-left: 40px;
+ }
+</style>
+<div class="list-item">
+ [1] A1
+ <div class="list-item">[1] B1</div>
+ <div class="list-item">[2] B2</div>
+</div>
+<div class="list-item">[2] A2</div>
+<div class="list-item">[3] A3</div>
diff --git a/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative-ref.html b/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative-ref.html
new file mode 100644
index 00000000000..45e72ffcf57
--- /dev/null
+++ b/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>font-size: math (reference)</title>
+ <meta charset="utf-8">
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+ <style>
+ .container {
+ /* Ahem font does not have a MATH table so the font-size scale factor
+ is always 0.71^{computed - inherited math script level} */
+ font: 100px/1 Ahem;
+ }
+ </style>
+ </head>
+ <body>
+ <div class="container">
+ <div style="font-size: medium;">
+ <div style="font-size: 1em;">X</div>
+ </div>
+ <div style="font-size: x-large;">
+ <div style="font-size: 200%">
+ <div style="font-size: 3em">
+ <div style="font-size: smaller">
+ <div style="font-size: 1em;">
+ <div style="font-size: larger">
+ <div style="font-size: 4em">
+ <div style="font-size: 500%">X</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative.html b/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative.html
new file mode 100644
index 00000000000..b9964985600
--- /dev/null
+++ b/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-001.tentative.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>font-size: math</title>
+ <meta charset="utf-8">
+ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746">
+ <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property">
+ <meta name="assert" content="Test that a specified font-size: math behaves like 1em when mixed with other keyword and relative sizes.">
+ <link rel="match" href="font-size-math-001.tentative-ref.html">
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+ <style>
+ .container {
+ /* Ahem font does not have a MATH table so the font-size scale factor
+ is always 0.71^{computed - inherited math script level} */
+ font: 100px/1 Ahem;
+ }
+ </style>
+ </head>
+ <body>
+ <div class="container">
+ <div style="font-size: medium;">
+ <div style="font-size: math;">X</div>
+ </div>
+ <div style="font-size: x-large;">
+ <div style="font-size: 200%">
+ <div style="font-size: 3em">
+ <div style="font-size: smaller">
+ <div style="font-size: math;">
+ <div style="font-size: larger">
+ <div style="font-size: 4em">
+ <div style="font-size: 500%">X</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative-ref.html b/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative-ref.html
new file mode 100644
index 00000000000..caf4183693e
--- /dev/null
+++ b/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative-ref.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>font-size: math inheritance (reference)</title>
+ <meta charset="utf-8">
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+ <style>
+ .container {
+ /* Ahem font does not have a MATH table so the font-size scale factor
+ is always 0.71^{computed - inherited math script level} */
+ font: 100px/1 Ahem;
+ }
+ </style>
+ </head>
+ <body>
+ <p>Test passes if you see a square of side 100px.</p>
+ <div class="container">
+ <div>
+ <div>
+ <div>
+ <div>
+ <div>X</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative.html b/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative.html
new file mode 100644
index 00000000000..7491409f2fa
--- /dev/null
+++ b/tests/wpt/tests/css/css-fonts/math-script-level-and-math-style/font-size-math-002.tentative.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>font-size: math inheritance</title>
+ <meta charset="utf-8">
+ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3746">
+ <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-math-script-level-property">
+ <meta name="assert" content="Test inheritance for a specified font-size: math.">
+ <link rel="match" href="font-size-math-002.tentative-ref.html">
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+ <style>
+ .container {
+ /* Ahem font does not have a MATH table so the font-size scale factor
+ is always 0.71^{computed - inherited math script level} */
+ font: 100px/1 Ahem;
+ }
+ </style>
+ </head>
+ <body>
+ <p>Test passes if you see a square of side 100px.</p>
+ <div class="container">
+ <div style="font-size: math">
+ <div>
+ <div>
+ <div>
+ <div style="math-depth: 1">X</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/tests/css/css-grid/subgrid/independent-tracks-from-parent-grid.html b/tests/wpt/tests/css/css-grid/subgrid/independent-tracks-from-parent-grid.html
new file mode 100644
index 00000000000..d7647eaafb9
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/subgrid/independent-tracks-from-parent-grid.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Grid Test: Subgrid standalone tracks are independent of the parent grid</title>
+<link rel="author" title="Ethan Jimenez" href="mailto:ethavar@microsoft.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-2/#subgrids">
+<link rel="match" href="../../reference/ref-filled-green-100px-square.xht">
+<style>
+.grid {
+ display: inline-grid;
+ background: red;
+ gap: 25px;
+}
+.subgrid {
+ display: grid;
+ grid-template-columns: subgrid;
+}
+.item {
+ background: green;
+ height: 25px;
+ width: 100px;
+}
+</style>
+</head>
+<body>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="grid">
+ <div class="subgrid">
+ <div class="item"></div>
+ <div class="item"></div>
+ <div class="item"></div>
+ <div class="item"></div>
+ </div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-masking/animations/clip-path-interpolation-xywh-rect.html b/tests/wpt/tests/css/css-masking/animations/clip-path-interpolation-xywh-rect.html
new file mode 100644
index 00000000000..8d35c2e9b00
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/clip-path-interpolation-xywh-rect.html
@@ -0,0 +1,169 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>clip-path-interpolation for basic-shape-rect, xywh and rect</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking-1/#the-clip-path">
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-xywh">
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+<meta name="assert" content="clip-path supports animation for xywh() and rect()">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ clip-path: inset(10px);
+ padding: 10px;
+}
+
+.target {
+ display: inline-block;
+ width: 100px;
+ height: 100px;
+ background-color: black;
+ clip-path: inset(10px);
+}
+
+.expected {
+ background-color: green;
+}
+</style>
+<body>
+<script>
+test_no_interpolation({
+ property: 'clip-path',
+ from: 'initial',
+ to: 'xywh(10px 10px 100px 100px)',
+});
+
+test_no_interpolation({
+ property: 'clip-path',
+ from: 'unset',
+ to: 'xywh(10px 10px 100px 100px)',
+});
+
+test_no_interpolation({
+ property: 'clip-path',
+ from: 'initial',
+ to: 'rect(10px 100px 100px 10px)',
+});
+
+test_no_interpolation({
+ property: 'clip-path',
+ from: 'unset',
+ to: 'rect(10px 100px 100px 10px)',
+});
+
+// Note: it's fine to use "rect()"/"xywh()" in "expect" because we always
+// convert it into `inset()` when we compare it with the actual animation value.
+test_interpolation({
+ property: 'clip-path',
+ from: 'xywh(5px 5px 150% 150%)',
+ to: 'xywh(10px 10px 100% 100%)'
+}, [
+ {at: -1, expect: 'xywh(0px 0px 200% 200%)'},
+ {at: 0, expect: 'xywh(5px 5px 150% 150%)'},
+ {at: 0.125, expect: 'xywh(5.63px 5.63px 143.75% 143.75%)'},
+ {at: 0.875, expect: 'xywh(9.38px 9.38px 106.25% 106.25%)'},
+ {at: 1, expect: 'xywh(10px 10px 100% 100%)'},
+ {at: 2, expect: 'xywh(15px 15px 50% 50%)'},
+]);
+
+test_interpolation({
+ property: 'clip-path',
+ from: 'rect(10px 100px 50% 10%)',
+ to: 'rect(50px 200px 90% 50%)'
+}, [
+ {at: -1, expect: 'rect(-30px 0px 10% -30%)'},
+ {at: 0, expect: 'rect(10px 100px 50% 10%)'},
+ {at: 0.125, expect: 'rect(15px 112.5px 55% 15%)'},
+ {at: 0.875, expect: 'rect(45px 187.5px 85% 45%)'},
+ {at: 1, expect: 'rect(50px 200px 90% 50%)'},
+ {at: 2, expect: 'rect(90px 300px 130% 90%)'},
+]);
+
+test_interpolation({
+ property: 'clip-path',
+ from: 'rect(auto auto auto auto)',
+ to: 'rect(80% 20% 20% 80%)'
+}, [
+ {at: -1, expect: 'inset(-80%)'},
+ {at: 0, expect: 'inset(0%)'},
+ {at: 0.125, expect: 'inset(10%)'},
+ {at: 0.875, expect: 'inset(70%)'},
+ {at: 1, expect: 'inset(80%)'},
+ {at: 2, expect: 'inset(160%)'},
+]);
+
+// All <basic-shape-rect>s compute to the equivalent inset() function, so they
+// interpolatable.
+// https://drafts.csswg.org/css-shapes-1/#basic-shape-computed-values
+test_interpolation({
+ property: 'clip-path',
+ from: neutralKeyframe,
+ // inset(50px calc(80% - 70px) calc(0% - 50px) 20%).
+ to: 'xywh(20% 50px 70px 100%)',
+}, [
+ {at: -1, expect: 'inset(-30px calc(-80% + 90px) calc(0% + 70px) calc(-20% + 20px)'},
+ {at: 0, expect: 'inset(10px calc(0% + 10px) calc(0% + 10px))'},
+ {at: 0.125, expect: 'inset(15px 10% calc(0% + 2.5px) calc(2.5% + 8.75px))'},
+ {at: 0.875, expect: 'inset(45px calc(70% - 60px) calc(0% - 42.5px) calc(17.5% + 1.25px))'},
+ {at: 1, expect: 'inset(50px calc(80% - 70px) calc(0% - 50px) 20%)'},
+ {at: 2, expect: 'inset(90px calc(160% - 150px) calc(0% - 110px) calc(40% - 10px))'},
+]);
+
+test_interpolation({
+ property: 'clip-path',
+ from: neutralKeyframe,
+ // inset(50px calc(100% - 70px) 20% 20%).
+ to: 'rect(50px 70px 80% 20%)',
+}, [
+ {at: -1, expect: 'inset(-30px calc(-100% + 90px) calc(-20% + 20px) calc(-20% + 20px)'},
+ {at: 0, expect: 'inset(10px calc(0% + 10px) calc(0% + 10px))'},
+ {at: 0.125, expect: 'inset(15px 12.5% calc(2.5% + 8.75px) calc(2.5% + 8.75px))'},
+ {at: 0.875, expect: 'inset(45px calc(87.5% - 60px) calc(17.5% + 1.25px) calc(17.5% + 1.25px))'},
+ {at: 1, expect: 'inset(50px calc(100% - 70px) 20% 20%)'},
+ {at: 2, expect: 'inset(90px calc(200% - 150px) calc(40% - 10px) calc(40% - 10px))'},
+]);
+
+test_interpolation({
+ property: 'clip-path',
+ from: 'inherit',
+ to: 'xywh(20% 50px 70px 100%)',
+}, [
+ {at: -1, expect: 'inset(-30px calc(-80% + 90px) calc(0% + 70px) calc(-20% + 20px)'},
+ {at: 0, expect: 'inset(10px calc(0% + 10px) calc(0% + 10px))'},
+ {at: 0.125, expect: 'inset(15px 10% calc(0% + 2.5px) calc(2.5% + 8.75px))'},
+ {at: 0.875, expect: 'inset(45px calc(70% - 60px) calc(0% - 42.5px) calc(17.5% + 1.25px))'},
+ {at: 1, expect: 'inset(50px calc(80% - 70px) calc(0% - 50px) 20%)'},
+ {at: 2, expect: 'inset(90px calc(160% - 150px) calc(0% - 110px) calc(40% - 10px))'},
+]);
+
+test_interpolation({
+ property: 'clip-path',
+ from: 'inherit',
+ to: 'rect(50px 70px 80% 20%)',
+}, [
+ {at: -1, expect: 'inset(-30px calc(-100% + 90px) calc(-20% + 20px) calc(-20% + 20px)'},
+ {at: 0, expect: 'inset(10px calc(0% + 10px) calc(0% + 10px))'},
+ {at: 0.125, expect: 'inset(15px 12.5% calc(2.5% + 8.75px) calc(2.5% + 8.75px))'},
+ {at: 0.875, expect: 'inset(45px calc(87.5% - 60px) calc(17.5% + 1.25px) calc(17.5% + 1.25px))'},
+ {at: 1, expect: 'inset(50px calc(100% - 70px) 20% 20%)'},
+ {at: 2, expect: 'inset(90px calc(200% - 150px) calc(40% - 10px) calc(40% - 10px))'},
+]);
+
+test_interpolation({
+ property: 'clip-path',
+ from: 'xywh(0px 10% 100px 40% round 20px)',
+ to: 'rect(20% 50% 200px 20px)',
+}, [
+ {at: -1, expect: 'inset(0% calc(150% - 200px) calc(0% + 200px) -20px round 40px'},
+ {at: 0, expect: 'inset(10% calc(100% - 100px) 50% 0px round 20px)'},
+ {at: 0.125, expect: 'inset(11.25% calc(93.75% - 87.5px) calc(56.25% - 25px) 2.5px round 17.5px)'},
+ {at: 0.875, expect: 'inset(18.75% calc(56.25% - 12.5px) calc(93.75% - 175px) 17.5px round 2.5px)'},
+ {at: 1, expect: 'inset(20% 50% calc(100% - 200px) 20px)'},
+ {at: 2, expect: 'inset(30% calc(0% + 100px) calc(150% - 400px) 40px)'},
+]);
+
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-rect-interpolation-001.html b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-rect-interpolation-001.html
new file mode 100644
index 00000000000..f204fb953ad
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-rect-interpolation-001.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+ <title>CSS Masking: Test clip-path rect() interpolation</title>
+ <link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+ <link rel="match" href="clip-path-xywh-interpolation-001-ref.html">
+ <meta name="assert" content="The clip-path property takes the basic shape
+ 'rect()' for clipping. Test the interpolation of xywh function.">
+ <style>
+ @keyframes anim {
+ from {
+ clip-path: rect(0px 100px 100% 0px round 10px);
+ }
+ to {
+ clip-path: rect(20px 80px calc(20px + 60%) 20px round 20px);
+ }
+ }
+ #rect {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ animation: anim 10s -5s paused linear;
+ }
+ </style>
+</head>
+<body>
+ <div id="rect"></div>
+</body>
+<script>
+ requestAnimationFrame(() => {
+ document.documentElement.classList.remove('reftest-wait');
+ });
+</script>
+</html>
diff --git a/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-001.html b/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-001.html
new file mode 100644
index 00000000000..1645d458299
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-001.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Masking: Test clip-path property and rect function</title>
+ <link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+ <link rel="match" href="reference/clip-path-rectangle-ref.html">
+ <meta name="assert" content="The clip-path property takes the basic shape
+ 'rect()' for clipping. On pass you should see a green rect.">
+</head>
+<style>
+ #rect {
+ width: 400px;
+ height: 200px;
+ background-color: green;
+ clip-path: rect(50px 200px 150px 50px);
+ }
+</style>
+<body>
+ <p>The test passes if there is a green box.</p>
+ <div id="rect"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-002.html b/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-002.html
new file mode 100644
index 00000000000..c9032e0a5bb
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-002.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Masking: Test clip-path property and rect function</title>
+ <link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+ <link rel="match" href="reference/clip-path-rectangle-ref.html">
+ <meta name="assert" content="The clip-path property takes the basic shape
+ 'rect()' for clipping. On pass you should see a green rect.">
+</head>
+<style>
+ #rect {
+ width: 400px;
+ height: 200px;
+ background-color: green;
+ clip-path: rect(25% 50% 75% 12.5%);
+ }
+</style>
+<body>
+ <p>The test passes if there is a green box.</p>
+ <div id="rect"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-003.html b/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-003.html
new file mode 100644
index 00000000000..d61dce8c233
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/clip-path/clip-path-rect-003.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Masking: Test clip-path property and rect function</title>
+ <link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+ <link rel="match" href="reference/clip-path-xywh-003-ref.html">
+ <meta name=fuzzy content="maxDifference=0-2;totalPixels=0-30">
+ <meta name="assert" content="The clip-path property takes the basic shape
+ 'rect()' for clipping. On pass you should see a green rect with round.">
+</head>
+<style>
+ #rect {
+ width: 400px;
+ height: 200px;
+ background-color: green;
+ clip-path: rect(50px 200px 150px 50px round 20px / 20px);
+ }
+</style>
+<body>
+ <p>The test passes if there is a green box with round.</p>
+ <div id="rect"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-masking/clip-path/interpolation.html b/tests/wpt/tests/css/css-masking/clip-path/interpolation.html
index e52d9e89591..f580de9c769 100644
--- a/tests/wpt/tests/css/css-masking/clip-path/interpolation.html
+++ b/tests/wpt/tests/css/css-masking/clip-path/interpolation.html
@@ -56,23 +56,5 @@ test(function(t) {
'The radius of inset is clamped to zero at 61%');
}, 'Test inset with negative easing on clip-path');
-// All <basic-shape-rect>s compute to the equivalent inset() function, so
-// they are interpolatable.
-// https://drafts.csswg.org/css-shapes-1/#basic-shape-computed-values
-// https://github.com/w3c/csswg-drafts/issues/9053
-test(function(t) {
- var div = createDiv(t);
- div.style.clipPath = 'inset(10px round 20px)';
- div.style.transition = 'all 100s linear -50s';
- getComputedStyle(div).clipPath;
-
- // The equivalent function is
- // "inset(10px calc(100% - 220px) calc(100% - 110px) 20px)".
- div.style.clipPath = 'xywh(20px 10px 200px 100px)';
- assert_equals(getComputedStyle(div).clipPath,
- 'inset(10px calc(50% - 105px) calc(50% - 50px) 15px round 10px)',
- 'The equivalent inset at 50%');
-}, 'Test inset and xywh on clip-path');
-
</script>
</html>
diff --git a/tests/wpt/tests/css/css-masking/parsing/clip-path-computed.html b/tests/wpt/tests/css/css-masking/parsing/clip-path-computed.html
index 37b0193f461..8ec27a1472e 100644
--- a/tests/wpt/tests/css/css-masking/parsing/clip-path-computed.html
+++ b/tests/wpt/tests/css/css-masking/parsing/clip-path-computed.html
@@ -23,6 +23,8 @@ test_computed_value("clip-path", "ellipse(at 50% 50%)");
test_computed_value("clip-path", "ellipse(60% closest-side at 50% 50%)");
// All <basic-shape-rect> functions compute to the equivalent inset() function.
+// Given "xywh(x y w h)", the equivalent function is
+// "inset(y calc(100% - x - w) calc(100% - y - h) x)".
// https://drafts.csswg.org/css-shapes-1/#basic-shape-computed-values
// https://github.com/w3c/csswg-drafts/issues/9053
test_computed_value("clip-path", "xywh(0 1% 2px 0.5em)", "inset(1% calc(100% - 2px) calc(99% - 20px) 0px)");
@@ -30,6 +32,14 @@ test_computed_value("clip-path", "xywh(0px 1% 2px 0.5em round 0)", "inset(1% cal
test_computed_value("clip-path", "xywh(0px 1% 2px 3% round 0 1px)", "inset(1% calc(100% - 2px) 96% 0px round 0px 1px)");
test_computed_value("clip-path", "xywh(0px 1% 2px 3% round 0px 1px 2em)", "inset(1% calc(100% - 2px) 96% 0px round 0px 1px 80px)");
test_computed_value("clip-path", "xywh(0px 1% 2px 3% round 0px 1px 2% 3px)", "inset(1% calc(100% - 2px) 96% 0px round 0px 1px 2% 3px)");
+// Given "rect(t r b l)", the equivalent function is
+// "inset(t calc(100% - r) calc(100% - b) l)".
+test_computed_value("clip-path", "rect(auto auto auto auto)", "inset(0%)");
+test_computed_value("clip-path", "rect(0 1% 2px 0.5em)", "inset(0px 99% calc(100% - 2px) 20px)");
+test_computed_value("clip-path", "rect(0px 1% auto 0.5em round 0)", "inset(0px 99% 0% 20px)");
+test_computed_value("clip-path", "rect(0px 1% auto 3% round 0 1px)", "inset(0px 99% 0% 3% round 0px 1px)");
+test_computed_value("clip-path", "rect(0px 1% auto 3% round 0px 1px 2em)", "inset(0px 99% 0% 3% round 0px 1px 80px)");
+test_computed_value("clip-path", "rect(0px 1% auto 3% round 0px 1px 2% 3px)", "inset(0px 99% 0% 3% round 0px 1px 2% 3px)");
</script>
</body>
</html>
diff --git a/tests/wpt/tests/css/css-masking/parsing/clip-path-invalid.html b/tests/wpt/tests/css/css-masking/parsing/clip-path-invalid.html
index 376cad3c520..40020d91d4b 100644
--- a/tests/wpt/tests/css/css-masking/parsing/clip-path-invalid.html
+++ b/tests/wpt/tests/css/css-masking/parsing/clip-path-invalid.html
@@ -56,6 +56,10 @@ test_invalid_value("clip-path", "xywh(0px)");
test_invalid_value("clip-path", "xywh(0px 1%)");
test_invalid_value("clip-path", "xywh(0px 1% 2em)");
+test_invalid_value("clip-path", "rect(0px)");
+test_invalid_value("clip-path", "rect(0px 1%)");
+test_invalid_value("clip-path", "rect(0px 1% auto)");
+
</script>
</body>
</html>
diff --git a/tests/wpt/tests/css/css-masking/parsing/clip-path-valid.html b/tests/wpt/tests/css/css-masking/parsing/clip-path-valid.html
index f495d46a248..aa40dc97da3 100644
--- a/tests/wpt/tests/css/css-masking/parsing/clip-path-valid.html
+++ b/tests/wpt/tests/css/css-masking/parsing/clip-path-valid.html
@@ -56,6 +56,13 @@ test_valid_value("clip-path", "xywh(0px 1% 2px 3em round 0 1px)", "xywh(0px 1% 2
test_valid_value("clip-path", "xywh(0px 1% 2px 3em round 0px 1px 2%)");
test_valid_value("clip-path", "xywh(0px 1% 2px 3em round 0px 1px 2% 3em)");
+test_valid_value("clip-path", "rect(0 100% 200px 4em)", "rect(0px 100% 200px 4em)");
+test_valid_value("clip-path", "rect(auto auto auto auto)");
+test_valid_value("clip-path", "rect(0px 100% auto 4em round 0)", "rect(0px 100% auto 4em)");
+test_valid_value("clip-path", "rect(0px 100% auto 4em round 0 1px)", "rect(0px 100% auto 4em round 0px 1px)");
+test_valid_value("clip-path", "rect(0px 100% auto 4em round 0px 1px 2%)");
+test_valid_value("clip-path", "rect(0px 100% auto 4em round 0px 1px 2% 3em)");
+
// <geometry-box>
test_valid_value("clip-path", "border-box");
test_valid_value("clip-path", "padding-box");
diff --git a/tests/wpt/tests/css/css-nesting/parsing.html b/tests/wpt/tests/css/css-nesting/parsing.html
index b189190f412..ee9f3548446 100644
--- a/tests/wpt/tests/css/css-nesting/parsing.html
+++ b/tests/wpt/tests/css/css-nesting/parsing.html
@@ -23,11 +23,12 @@
assert_equals(ss.rules.length, 1, "Outer rule should exist.");
const rule = ss.rules[0];
assert_equals(rule.cssRules.length, 1, "Inner rule should exist.");
- assert_equals(rule.selectorText, expected, `Inner rule's selector should be "${expected}".`);
+ const innerRule = rule.cssRules[0];
+ assert_equals(innerRule.selectorText, expected, `Inner rule's selector should be "${expected}".`);
}, ruleText);
}
- function testInvalidSelector(sel, {parent=".foo"}={}) {
+ function testInvalidNestingSelector(sel, {parent=".foo"}={}) {
resetStylesheet();
const ruleText = `${parent} { ${sel} { color: green; }}`
test(()=>{
@@ -38,30 +39,48 @@
}, "INVALID: " + ruleText);
}
+ // basic usage
testNestedSelector("&");
testNestedSelector("&.bar");
testNestedSelector("& .bar");
testNestedSelector("& > .bar");
- testNestedSelector("> & .bar");
+
+ // relative selector
testNestedSelector("> .bar", {expected:"& > .bar"});
+ testNestedSelector("> & .bar", {expected: "& > & .bar"});
testNestedSelector("+ .bar &", {expected:"& + .bar &"});
+ testNestedSelector("+ .bar, .foo, > .baz", {expected:"& + .bar, .foo, & > .baz"});
+
+ // implicit relative (and not)
+ testNestedSelector(".foo");
testNestedSelector(".test > & .bar");
- testNestedSelector("+ .bar, .foo, > .baz", {expected:"& + .bar, & .foo, & > .baz"});
- testNestedSelector(".foo, .foo &", {expected:"& .foo, .foo &"});
+ testNestedSelector(".foo, .foo &");
+ testNestedSelector(":is(.bar, .baz)");
testNestedSelector("&:is(.bar, .baz)");
- testNestedSelector(":is(.bar, .baz)", {expected:"&:is(.bar, .baz)"});
- testNestedSelector("&:is(.bar, &.baz)");
testNestedSelector(":is(.bar, &.baz)");
+ testNestedSelector("&:is(.bar, &.baz)");
+
+ // Mixing nesting selector with other simple selectors
testNestedSelector("div&");
- testNestedSelector(".bar&");
- testNestedSelector("[bar]&");
- testNestedSelector("#bar&");
+ testInvalidNestingSelector("&div"); // type selector must be first
+ testNestedSelector(".class&");
+ testNestedSelector("&.class");
+ testNestedSelector("[attr]&");
+ testNestedSelector("&[attr]");
+ testNestedSelector("#id&");
+ testNestedSelector("&#id");
testNestedSelector(":hover&");
+ testNestedSelector("&:hover");
testNestedSelector(":is(div)&");
- testNestedSelector(".bar > &");
+ testNestedSelector("&:is(div)");
+
+ // Multiple nesting selectors
testNestedSelector("& .bar & .baz & .qux");
+ testNestedSelector("&&");
+
+ // Selector list in inner rule
testNestedSelector("& > section, & > article");
- testNestedSelector("& + .baz, &.qux", {parent:".foo, .bar"});
- testInvalidSelector("&div");
+ // Selector list in both inner and outer rule.
+ testNestedSelector("& + .baz, &.qux", {parent:".foo, .bar"});
</script>
diff --git a/tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop-entry.html b/tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop-entry.html
index 7db33eb85de..8737dc58f92 100644
--- a/tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop-entry.html
+++ b/tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop-entry.html
@@ -13,7 +13,7 @@
transition-delay: 2s;
transition-property: overlay;
transition-duration: 2s;
- transition-animation-type: discrete;
+ transition-behavior: allow-discrete;
}
[popover]::backdrop {
background-color: blue;
diff --git a/tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop.html b/tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop.html
index fde933da5db..30d40e111f9 100644
--- a/tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop.html
+++ b/tests/wpt/tests/css/css-position/overlay/overlay-transition-backdrop.html
@@ -8,7 +8,7 @@
display: block;
visibility: hidden;
transition: overlay 60s step-end;
- transition-animation-type: discrete;
+ transition-behavior: allow-discrete;
}
[popover]::backdrop {
background-color: green;
diff --git a/tests/wpt/tests/css/css-position/overlay/overlay-transition-finished.html b/tests/wpt/tests/css/css-position/overlay/overlay-transition-finished.html
index b2322389d06..7e22cb3cf64 100644
--- a/tests/wpt/tests/css/css-position/overlay/overlay-transition-finished.html
+++ b/tests/wpt/tests/css/css-position/overlay/overlay-transition-finished.html
@@ -20,7 +20,7 @@
}
#transition-in {
transition: overlay 0.1s step-end;
- transition-animation-type: discrete;
+ transition-behavior: allow-discrete;
background-color: green;
}
</style>
diff --git a/tests/wpt/tests/css/css-position/overlay/overlay-transition-in-rendering.html b/tests/wpt/tests/css/css-position/overlay/overlay-transition-in-rendering.html
index dc1b9ffe20c..0ada33c33ce 100644
--- a/tests/wpt/tests/css/css-position/overlay/overlay-transition-in-rendering.html
+++ b/tests/wpt/tests/css/css-position/overlay/overlay-transition-in-rendering.html
@@ -17,7 +17,7 @@
}
#transition-in {
transition: overlay 60s step-end;
- transition-animation-type: discrete;
+ transition-behavior: allow-discrete;
background-color: red;
}
</style>
diff --git a/tests/wpt/tests/css/css-position/overlay/overlay-transition-out-rendering.html b/tests/wpt/tests/css/css-position/overlay/overlay-transition-out-rendering.html
index fea03951c5e..abb01faef7e 100644
--- a/tests/wpt/tests/css/css-position/overlay/overlay-transition-out-rendering.html
+++ b/tests/wpt/tests/css/css-position/overlay/overlay-transition-out-rendering.html
@@ -20,7 +20,7 @@
}
#green.transition-enabled {
transition: overlay 60s step-end;
- transition-animation-type: discrete;
+ transition-behavior: allow-discrete;
}
</style>
<div id="red" popover="manual"></div>
diff --git a/tests/wpt/tests/css/css-position/overlay/overlay-transition.html b/tests/wpt/tests/css/css-position/overlay/overlay-transition.html
index 9eae2115ff0..efe402373ff 100644
--- a/tests/wpt/tests/css/css-position/overlay/overlay-transition.html
+++ b/tests/wpt/tests/css/css-position/overlay/overlay-transition.html
@@ -12,7 +12,7 @@
}
.enable-transitions :is(#transition-in, #transition-out) {
transition: overlay 60s step-end;
- transition-animation-type: discrete;
+ transition-behavior: allow-discrete;
}
</style>
<div id="container">
diff --git a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-custom-ident.html b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-custom-ident.html
index 2f5b55459d5..b7ca1ec785e 100644
--- a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-custom-ident.html
+++ b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-custom-ident.html
@@ -11,7 +11,7 @@ transition_test({
from: "from",
to: "to",
expected: "to",
- animationType: "discrete",
+ behavior: "allow-discrete",
}, 'A custom property of type <custom-ident> can yield a discrete CSS Transition');
</script>
diff --git a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-image.html b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-image.html
index 8498615a936..4fd3fe649b0 100644
--- a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-image.html
+++ b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-image.html
@@ -11,7 +11,7 @@ transition_test({
from: 'url("https://example.com/from")',
to: 'url("https://example.com/to")',
expected: 'url("https://example.com/to")',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
}, 'A custom property of type <image> can yield a CSS Transition');
</script>
diff --git a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-mismatched-list.html b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-mismatched-list.html
index e6ca781ce64..b7d964b92cb 100644
--- a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-mismatched-list.html
+++ b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-mismatched-list.html
@@ -11,7 +11,7 @@ transition_test({
from: '100deg, 200deg',
to: '300deg',
expected: '300deg',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
}, 'A custom property of type <angle># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -19,7 +19,7 @@ transition_test({
from: '100deg 200deg',
to: '300deg',
expected: '300deg',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
}, 'A custom property of type <angle>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -27,7 +27,7 @@ transition_test({
from: 'rgb(100, 100, 100), rgb(150, 150, 150)',
to: 'rgb(200, 200, 200)',
expected: 'rgb(200, 200, 200)',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
}, 'A custom property of type <color># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -35,6 +35,7 @@ transition_test({
from: 'rgb(100, 100, 100) rgb(150, 150, 150)',
to: 'rgb(200, 200, 200)',
expected: 'rgb(200, 200, 200)',
+ behavior: 'allow-discrete',
}, 'A custom property of type <color>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -42,6 +43,7 @@ transition_test({
from: 'foo, bar',
to: 'baz',
expected: 'baz',
+ behavior: 'allow-discrete',
}, 'A custom property of type <custom-ident># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -49,6 +51,7 @@ transition_test({
from: 'foo bar',
to: 'baz',
expected: 'baz',
+ behavior: 'allow-discrete',
}, 'A custom property of type <custom-ident>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -56,6 +59,7 @@ transition_test({
from: 'url("https://example.com/foo"), url("https://example.com/bar")',
to: 'url("https://example.com/to")',
expected: 'url("https://example.com/to")',
+ behavior: 'allow-discrete',
}, 'A custom property of type <image># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -63,6 +67,7 @@ transition_test({
from: 'url("https://example.com/foo") url("https://example.com/bar")',
to: 'url("https://example.com/to")',
expected: 'url("https://example.com/to")',
+ behavior: 'allow-discrete',
}, 'A custom property of type <image>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -70,6 +75,7 @@ transition_test({
from: '100, 200',
to: '300',
expected: '300',
+ behavior: 'allow-discrete',
}, 'A custom property of type <integer># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -77,6 +83,7 @@ transition_test({
from: '100 200',
to: '300',
expected: '300',
+ behavior: 'allow-discrete',
}, 'A custom property of type <integer>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -84,6 +91,7 @@ transition_test({
from: '100px, 200px',
to: '300%',
expected: '300%',
+ behavior: 'allow-discrete',
}, 'A custom property of type <length-percentage># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -91,6 +99,7 @@ transition_test({
from: '100px 200px',
to: '300%',
expected: '300%',
+ behavior: 'allow-discrete',
}, 'A custom property of type <length-percentage>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -98,6 +107,7 @@ transition_test({
from: '100px, 200px',
to: '300px',
expected: '300px',
+ behavior: 'allow-discrete',
}, 'A custom property of type <length># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -105,6 +115,7 @@ transition_test({
from: '100px 200px',
to: '300px',
expected: '300px',
+ behavior: 'allow-discrete',
}, 'A custom property of type <length>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -112,6 +123,7 @@ transition_test({
from: '100, 200',
to: '300',
expected: '300',
+ behavior: 'allow-discrete',
}, 'A custom property of type <number># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -119,6 +131,7 @@ transition_test({
from: '100 200',
to: '300',
expected: '300',
+ behavior: 'allow-discrete',
}, 'A custom property of type <number>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -126,6 +139,7 @@ transition_test({
from: '100%, 200%',
to: '300%',
expected: '300%',
+ behavior: 'allow-discrete',
}, 'A custom property of type <percentage># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -133,6 +147,7 @@ transition_test({
from: '100% 200%',
to: '300%',
expected: '300%',
+ behavior: 'allow-discrete',
}, 'A custom property of type <percentage>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -140,6 +155,7 @@ transition_test({
from: '100dppx, 200dppx',
to: '300dppx',
expected: '300dppx',
+ behavior: 'allow-discrete',
}, 'A custom property of type <resolution># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -147,6 +163,7 @@ transition_test({
from: '100dppx 200dppx',
to: '300dppx',
expected: '300dppx',
+ behavior: 'allow-discrete',
}, 'A custom property of type <resolution>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -154,6 +171,7 @@ transition_test({
from: '100s, 200s',
to: '300s',
expected: '300s',
+ behavior: 'allow-discrete',
}, 'A custom property of type <time># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -161,6 +179,7 @@ transition_test({
from: '100s 200s',
to: '300s',
expected: '300s',
+ behavior: 'allow-discrete',
}, 'A custom property of type <time>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -168,6 +187,7 @@ transition_test({
from: 'url("https://example.com/foo"), url("https://example.com/bar")',
to: 'url("https://example.com/to")',
expected: 'url("https://example.com/to")',
+ behavior: 'allow-discrete',
}, 'A custom property of type <url># yields a discrete CSS Transition if the lists do not contain the same number of values');
transition_test({
@@ -175,6 +195,7 @@ transition_test({
from: 'url("https://example.com/foo") url("https://example.com/bar")',
to: 'url("https://example.com/to")',
expected: 'url("https://example.com/to")',
+ behavior: 'allow-discrete',
}, 'A custom property of type <url>+ yields a discrete CSS Transition if the lists do not contain the same number of values');
</script>
diff --git a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-function.html b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-function.html
index 385c222cd0e..17ad1067a4d 100644
--- a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-function.html
+++ b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-function.html
@@ -11,7 +11,7 @@ transition_test({
from: "translateX(100px)",
to: "translateX(200px)",
expected: "translateX(150px)",
- animationType: 'discrete',
+ behavior: 'allow-discrete',
}, 'A custom property of type <transform-function> can yield a CSS Transition');
</script>
diff --git a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-list.html b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-list.html
index 1e5cef194d0..c9d3cb94d14 100644
--- a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-list.html
+++ b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-transform-list.html
@@ -11,7 +11,7 @@ transition_test({
from: "translateX(100px) scale(2)",
to: "translateX(200px) scale(4)",
expected: "translateX(150px) scale(3)",
- animationType: 'discrete',
+ behavior: 'allow-discrete',
}, 'A custom property of type <transform-list> can yield a CSS Transition');
</script>
diff --git a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-url.html b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-url.html
index 600e7ddb1db..c5d438e5493 100644
--- a/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-url.html
+++ b/tests/wpt/tests/css/css-properties-values-api/animation/custom-property-transition-url.html
@@ -11,7 +11,7 @@ transition_test({
from: 'url("https://example.com/from")',
to: 'url("https://example.com/to")',
expected: 'url("https://example.com/to")',
- animationType: 'discrete',
+ behavior: 'allow-discrete',
}, 'A custom property of type <url> can yield a discrete CSS Transition');
</script>
diff --git a/tests/wpt/tests/css/css-properties-values-api/resources/utils.js b/tests/wpt/tests/css/css-properties-values-api/resources/utils.js
index be51111fd37..fc3a5993cf5 100644
--- a/tests/wpt/tests/css/css-properties-values-api/resources/utils.js
+++ b/tests/wpt/tests/css/css-properties-values-api/resources/utils.js
@@ -204,8 +204,8 @@ function transition_test(options, description) {
});
target.style.transition = `${options.transitionProperty} 1s -500ms linear`;
- if (options.animationType) {
- target.style.transitionAnimationType = options.animationType;
+ if (options.behavior) {
+ target.style.transitionBehavior = options.behavior;
}
target.style.setProperty(customProperty, options.to);
diff --git a/tests/wpt/tests/css/css-text/parsing/text-transform-computed.html b/tests/wpt/tests/css/css-text/parsing/text-transform-computed.html
index 391ee019d30..1808e6fdca2 100644
--- a/tests/wpt/tests/css/css-text/parsing/text-transform-computed.html
+++ b/tests/wpt/tests/css/css-text/parsing/text-transform-computed.html
@@ -4,6 +4,7 @@
<meta charset="utf-8">
<title>CSS Text: getComputedStyle().textTransform</title>
<link rel="help" href="https://www.w3.org/TR/css-text-3/#propdef-text-transform">
+<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
<meta name="assert" content="text-transform computed value is specified keywords.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -19,6 +20,7 @@ test_computed_value("text-transform", "uppercase");
test_computed_value("text-transform", "lowercase");
test_computed_value("text-transform", "full-width");
test_computed_value("text-transform", "full-size-kana");
+test_computed_value("text-transform", "math-auto");
test_computed_value("text-transform", "capitalize full-width");
test_computed_value("text-transform", "full-width full-size-kana");
diff --git a/tests/wpt/tests/css/css-text/parsing/text-transform-invalid.html b/tests/wpt/tests/css/css-text/parsing/text-transform-invalid.html
index 41482ab5f2c..3981480d38c 100644
--- a/tests/wpt/tests/css/css-text/parsing/text-transform-invalid.html
+++ b/tests/wpt/tests/css/css-text/parsing/text-transform-invalid.html
@@ -4,7 +4,8 @@
<meta charset="utf-8">
<title>CSS Text Module Test: parsing text-transform with invalid values</title>
<link rel="help" href="https://www.w3.org/TR/css-text-3/#propdef-text-transform">
-<meta name="assert" content="text-transform supports only the grammar 'none | [capitalize | uppercase | lowercase ] || full-width || full-size-kana'.">
+<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
+<meta name="assert" content="text-transform supports only the grammar 'none | [capitalize | uppercase | lowercase ] || full-width || full-size-kana | math-auto'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
@@ -18,6 +19,22 @@ test_invalid_value("text-transform", "capitalize full-width lowercase");
test_invalid_value("text-transform", "uppercase full-size-kana uppercase");
test_invalid_value("text-transform", "full-width full-size-kana full-width");
test_invalid_value("text-transform", "full-size-kana capitalize full-size-kana");
+
+
+// math-auto keyword cannot be combined with other values.
+test_invalid_value("text-transform", "none math-auto");
+test_invalid_value("text-transform", "math-auto none");
+test_invalid_value("text-transform", "uppercase math-auto");
+test_invalid_value("text-transform", "math-auto uppercase");
+test_invalid_value("text-transform", "lowercase math-auto");
+test_invalid_value("text-transform", "math-auto lowercase");
+test_invalid_value("text-transform", "capitalize math-auto");
+test_invalid_value("text-transform", "math-auto capitalize");
+test_invalid_value("text-transform", "full-width math-auto");
+test_invalid_value("text-transform", "math-auto full-width");
+test_invalid_value("text-transform", "full-size-kana math-auto");
+test_invalid_value("text-transform", "math-auto full-size-kana");
+test_invalid_value("text-transform", "math-auto math-auto");
</script>
</body>
</html>
diff --git a/tests/wpt/tests/css/css-text/parsing/text-transform-valid.html b/tests/wpt/tests/css/css-text/parsing/text-transform-valid.html
index fead45c8b8e..522eb791b0c 100644
--- a/tests/wpt/tests/css/css-text/parsing/text-transform-valid.html
+++ b/tests/wpt/tests/css/css-text/parsing/text-transform-valid.html
@@ -4,7 +4,8 @@
<meta charset="utf-8">
<title>CSS Text Module Test: parsing text-transform with valid values</title>
<link rel="help" href="https://www.w3.org/TR/css-text-3/#propdef-text-transform">
-<meta name="assert" content="text-transform supports the full grammar 'none | [capitalize | uppercase | lowercase ] || full-width || full-size-kana'.">
+<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
+<meta name="assert" content="text-transform supports the full grammar 'none | [capitalize | uppercase | lowercase ] || full-width || full-size-kana | math-auto'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
@@ -18,6 +19,7 @@ test_valid_value("text-transform", "uppercase");
test_valid_value("text-transform", "lowercase");
test_valid_value("text-transform", "full-width");
test_valid_value("text-transform", "full-size-kana");
+test_valid_value("text-transform", "math-auto");
test_valid_value("text-transform", "capitalize full-width");
test_valid_value("text-transform", "uppercase full-size-kana");
diff --git a/tests/wpt/tests/css/css-transitions/all-with-discrete.tentative.html b/tests/wpt/tests/css/css-transitions/all-with-discrete.tentative.html
index e328060d680..c8734f28029 100644
--- a/tests/wpt/tests/css/css-transitions/all-with-discrete.tentative.html
+++ b/tests/wpt/tests/css/css-transitions/all-with-discrete.tentative.html
@@ -12,8 +12,8 @@
float: left;
width: 100px;
height: 100px;
- transition-animation-type: discrete;
transition: all 1s;
+ transition-behavior: allow-discrete;
}
#target.animated {
float: right;
@@ -30,5 +30,5 @@ promise_test(async () => {
target.classList.add('animated');
await waitForAnimationFrames(1);
assert_true(transitionstartFired);
-}, 'transition:all with transition-animation-type:discrete should animate discrete properties.');
+}, 'transition:all with transition-behavior:allow-discrete should animate discrete properties.');
</script>
diff --git a/tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html b/tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html
new file mode 100644
index 00000000000..08ad3a6adf4
--- /dev/null
+++ b/tests/wpt/tests/css/css-transitions/parsing/transition-behavior.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<link rel=author href="mailto:jarhar@chromium.org">
+<link rel=help href="https://github.com/w3c/csswg-drafts/issues/8857">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<div id="target"></div>
+<script>
+test_valid_value('transition-behavior', 'normal');
+test_computed_value('transition-behavior', 'normal');
+
+test_valid_value('transition-behavior', 'allow-discrete');
+test_computed_value('transition-behavior', 'allow-discrete');
+
+test_valid_value('transition', 'allow-discrete display', 'display 0s ease 0s allow-discrete');
+test_computed_value('transition', 'allow-discrete display', 'display 0s ease 0s allow-discrete');
+
+test_valid_value('transition', 'allow-discrete display 3s', 'display 3s ease 0s allow-discrete');
+test_computed_value('transition', 'allow-discrete display 3s', 'display 3s ease 0s allow-discrete');
+
+test_valid_value('transition', 'allow-discrete display 3s 1s', 'display 3s ease 1s allow-discrete');
+test_computed_value('transition', 'allow-discrete display 3s 1s', 'display 3s ease 1s allow-discrete');
+
+test_valid_value('transition', 'allow-discrete display 3s ease-in-out', 'display 3s ease-in-out 0s allow-discrete');
+test_computed_value('transition', 'allow-discrete display 3s ease-in-out', 'display 3s ease-in-out 0s allow-discrete');
+
+test_valid_value('transition', 'allow-discrete display 3s ease-in-out 1s', 'display 3s ease-in-out 1s allow-discrete');
+test_computed_value('transition', 'allow-discrete display 3s ease-in-out 1s', 'display 3s ease-in-out 1s allow-discrete');
+
+test_invalid_value('transition', 'asdf display');
+test_invalid_value('transition', 'display asdf');
+
+// Putting "discrete" anywhere in the shorthand should still work
+test_valid_value('transition', 'display allow-discrete 3s ease-in-out 1s', 'display 3s ease-in-out 1s allow-discrete');
+test_valid_value('transition', 'display 3s allow-discrete ease-in-out 1s', 'display 3s ease-in-out 1s allow-discrete');
+test_valid_value('transition', 'display 3s ease-in-out allow-discrete 1s', 'display 3s ease-in-out 1s allow-discrete');
+test_valid_value('transition', 'display 3s ease-in-out 1s allow-discrete', 'display 3s ease-in-out 1s allow-discrete');
+test_computed_value('transition', 'display allow-discrete 3s ease-in-out 1s', 'display 3s ease-in-out 1s allow-discrete');
+test_computed_value('transition', 'display 3s allow-discrete ease-in-out 1s', 'display 3s ease-in-out 1s allow-discrete');
+test_computed_value('transition', 'display 3s ease-in-out allow-discrete 1s', 'display 3s ease-in-out 1s allow-discrete');
+test_computed_value('transition', 'display 3s ease-in-out 1s allow-discrete', 'display 3s ease-in-out 1s allow-discrete');
+
+// Serialization with multiple shorthands, including different order
+test_valid_value('transition',
+ 'allow-discrete display, normal opacity, color',
+ 'display 0s ease 0s allow-discrete, opacity 0s ease 0s, color 0s ease 0s');
+test_computed_value('transition',
+ 'allow-discrete display, normal opacity, color',
+ 'display 0s ease 0s allow-discrete, opacity 0s ease 0s, color 0s ease 0s');
+test_valid_value('transition',
+ 'normal opacity, color, allow-discrete display',
+ 'opacity 0s ease 0s, color 0s ease 0s, display 0s ease 0s allow-discrete');
+test_computed_value('transition',
+ 'normal opacity, color, allow-discrete display',
+ 'opacity 0s ease 0s, color 0s ease 0s, display 0s ease 0s allow-discrete');
+</script>
diff --git a/tests/wpt/tests/css/css-transitions/parsing/transition-shorthand.html b/tests/wpt/tests/css/css-transitions/parsing/transition-shorthand.html
index caffb3978cf..fcd14d2a141 100644
--- a/tests/wpt/tests/css/css-transitions/parsing/transition-shorthand.html
+++ b/tests/wpt/tests/css/css-transitions/parsing/transition-shorthand.html
@@ -15,21 +15,24 @@ test_shorthand_value('transition', '1s -3s cubic-bezier(0, -2, 1, 3) top', {
'transition-property': 'top',
'transition-duration': '1s',
'transition-timing-function': 'cubic-bezier(0, -2, 1, 3)',
- 'transition-delay': '-3s'
+ 'transition-delay': '-3s',
+ 'transition-behavior': 'normal'
});
test_shorthand_value('transition', '1s -3s, cubic-bezier(0, -2, 1, 3) top', {
'transition-property': 'all, top',
'transition-duration': '1s, 0s',
'transition-timing-function': 'ease, cubic-bezier(0, -2, 1, 3)',
- 'transition-delay': '-3s, 0s'
+ 'transition-delay': '-3s, 0s',
+ 'transition-behavior': 'normal, normal'
});
test_shorthand_value('transition', 'cubic-bezier(0, -2, 1, 3) top, 1s -3s', {
'transition-property': 'top, all',
'transition-duration': '0s, 1s',
'transition-timing-function': 'cubic-bezier(0, -2, 1, 3), ease',
- 'transition-delay': '0s, -3s'
+ 'transition-delay': '0s, -3s',
+ 'transition-behavior': 'normal, normal'
});
</script>
</body>
diff --git a/tests/wpt/tests/css/css-values/acos-asin-atan-atan2-serialize.html b/tests/wpt/tests/css/css-values/acos-asin-atan-atan2-serialize.html
index 73ededd44ba..ac22a703d07 100644
--- a/tests/wpt/tests/css/css-values/acos-asin-atan-atan2-serialize.html
+++ b/tests/wpt/tests/css/css-values/acos-asin-atan-atan2-serialize.html
@@ -40,7 +40,6 @@ var test_map = {
"acos(pi - pi)" :"calc(90deg)",
"asin(pi - pi + 1)" :"calc(90deg)",
"atan(1)" :"calc(45deg)",
- "atan(0.5)" :"calc(26.5651deg)",
"atan(0.577350269)" :"calc(30deg)",
"atan(0)" :"calc(0deg)",
"atan(infinity)" :"calc(90deg)",
diff --git a/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-ref.html b/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-ref.html
new file mode 100644
index 00000000000..b8ebf1d0e2f
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-ref.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<html>
+<title>View transitions: offscreen child (ref)</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+
+<style>
+body {
+ background: pink;
+}
+.target {
+ width: 100px;
+ height: 100px;
+ background: blue;
+}
+</style>
+
+<div class=target></div>
diff --git a/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-translated-ref.html b/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-translated-ref.html
new file mode 100644
index 00000000000..d724d0b7f9f
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-translated-ref.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html>
+<title>View transitions: offscreen child (ref)</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+
+<style>
+body {
+ background: pink;
+}
+
+.invisible {
+ position: absolute;
+ top: 100px;
+ width: 50px;
+ height: 50px;
+ background: green;
+}
+.target {
+ position: relative;
+ top: 200px;
+ width: 100px;
+ height: 100px;
+ background: blue;
+}
+</style>
+
+<div class=target></div>
+<div class=invisible></div>
diff --git a/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-translated.html b/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-translated.html
new file mode 100644
index 00000000000..1aa994762ef
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child-translated.html
@@ -0,0 +1,49 @@
+<!doctype html>
+<html class=reftest-wait>
+<title>View transitions: offscreen child</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+<link rel="match" href="capture-with-offscreen-child-translated-ref.html">
+<script src="/common/reftest-wait.js"></script>
+
+<style>
+.target {
+ width: 100px;
+ height: 100px;
+ view-transition-name: target;
+ background: blue;
+}
+.invisible {
+ position: absolute;
+ top: -100px;
+ width: 50px;
+ height: 50px;
+ background: green;
+}
+
+::view-transition-group(target) {
+ animation: unset;
+ top: 200px;
+}
+
+::view-transition-group(root) {
+ visibility: hidden;
+ animation-duration: 500s;
+}
+::view-transition {
+ background: pink;
+}
+</style>
+
+<div class=target>
+ <div class=invisible></div>
+</div>
+
+<script>
+function runTest() {
+ const transition = document.startViewTransition();
+ transition.ready.then(takeScreenshot);
+}
+
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
+</script>
diff --git a/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child.html b/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child.html
new file mode 100644
index 00000000000..9701524a295
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/capture-with-offscreen-child.html
@@ -0,0 +1,45 @@
+<!doctype html>
+<html class=reftest-wait>
+<title>View transitions: offscreen child</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
+<link rel="author" href="mailto:vmpstr@chromium.org">
+<link rel="match" href="capture-with-offscreen-child-ref.html">
+<meta name="fuzzy" content="capture-with-offscreen-child-ref.html:0-5;0-200">
+<script src="/common/reftest-wait.js"></script>
+
+<style>
+.target {
+ width: 100px;
+ height: 100px;
+ view-transition-name: target;
+ background: blue;
+}
+.invisible {
+ position: absolute;
+ top: -100px;
+ width: 50px;
+ height: 50px;
+ background: green;
+}
+
+::view-transition-group(root) {
+ visibility: hidden;
+ animation-duration: 500s;
+}
+::view-transition {
+ background: pink;
+}
+</style>
+
+<div class=target>
+ <div class=invisible></div>
+</div>
+
+<script>
+function runTest() {
+ const transition = document.startViewTransition();
+ transition.ready.then(takeScreenshot);
+}
+
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
+</script>
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-get-computed-style.html b/tests/wpt/tests/css/css-view-transitions/pseudo-get-computed-style.html
index 8513e8207d3..268df4718e6 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-get-computed-style.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-get-computed-style.html
@@ -14,6 +14,8 @@ div {
background: blue;
contain: paint;
view-transition-name: target;
+ mix-blend-mode: multiply;
+ text-orientation: upright;
}
::view-transition-image-pair(target) {
position: fixed;
@@ -29,22 +31,28 @@ promise_test(() => {
let transition = document.startViewTransition(() => {
assert_equals(getComputedStyle(document.documentElement, ":view-transition").position, "fixed", ":view-transition");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").position, "absolute", "container(target)");
+ assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").mixBlendMode, "multiply", "container(target)");
+ assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").textOrientation, "upright", "container(target)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-image-pair(target)").position, "absolute", "wrapper(target)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-old(target)").position, "absolute", "outgoing(target)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(root)").position, "absolute", "container(root)");
+ assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(root)").mixBlendMode, "normal", "container(root)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-image-pair(root)").position, "absolute", "wrapper(root)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-old(root)").position, "absolute", "outgoing(root)");
requestAnimationFrame(() => {
assert_equals(getComputedStyle(document.documentElement, ":view-transition").position, "fixed", "raf :view-transition");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").position, "absolute", "raf container(target)");
+ assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").mixBlendMode, "multiply", "raf container(target)");
+ assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").textOrientation, "upright", "raf container(target)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-image-pair(target)").position, "fixed", "raf wrapper(target)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-old(target)").position, "absolute", "raf outgoing(target)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(root)").position, "absolute", "raf container(root)");
+ assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(root)").mixBlendMode, "normal", "raf container(root)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-image-pair(root)").position, "absolute", "raf wrapper(root)");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-old(root)").position, "absolute", "raf outgoing(root)");
});
@@ -67,10 +75,16 @@ promise_test(() => {
assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(root)").position, "absolute");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-image-pair(root)").position, "absolute");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-old(root)").position, "absolute");
+
+ target.remove();
});
+ await transition.ready;
+
assert_equals(getComputedStyle(document.documentElement, ":view-transition").position, "fixed");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").position, "absolute");
+ assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").mixBlendMode, "multiply");
+ assert_equals(getComputedStyle(document.documentElement, ":view-transition-group(target)").textOrientation, "upright");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-image-pair(target)").position, "fixed");
assert_equals(getComputedStyle(document.documentElement, ":view-transition-old(target)").position, "absolute");
@@ -90,5 +104,5 @@ promise_test(() => {
resolve();
});
-}, "position property of pseudo elements with prepare api");
+}, "properties of pseudo elements outside of transition");
</script>
diff --git a/tests/wpt/tests/css/motion/animation/offset-path-interpolation-006.html b/tests/wpt/tests/css/motion/animation/offset-path-interpolation-006.html
index 7ea118cb64b..8c3e89ab039 100644
--- a/tests/wpt/tests/css/motion/animation/offset-path-interpolation-006.html
+++ b/tests/wpt/tests/css/motion/animation/offset-path-interpolation-006.html
@@ -110,6 +110,32 @@
{at: 2, expect: 'xywh(15px 15px 50% 50%)'},
]);
+ test_interpolation({
+ property: 'offset-path',
+ from: 'rect(10px 100px 50% 10%)',
+ to: 'rect(50px 200px 90% 50%)'
+ }, [
+ {at: -1, expect: 'rect(-30px 0px 10% -30%)'},
+ {at: 0, expect: 'rect(10px 100px 50% 10%)'},
+ {at: 0.125, expect: 'rect(15px 112.5px 55% 15%)'},
+ {at: 0.875, expect: 'rect(45px 187.5px 85% 45%)'},
+ {at: 1, expect: 'rect(50px 200px 90% 50%)'},
+ {at: 2, expect: 'rect(90px 300px 130% 90%)'},
+ ]);
+
+ test_interpolation({
+ property: 'offset-path',
+ from: 'rect(auto auto auto auto)',
+ to: 'rect(80% 20% 20% 80%)'
+ }, [
+ {at: -1, expect: 'inset(-80%)'},
+ {at: 0, expect: 'inset(0%)'},
+ {at: 0.125, expect: 'inset(10%)'},
+ {at: 0.875, expect: 'inset(70%)'},
+ {at: 1, expect: 'inset(80%)'},
+ {at: 2, expect: 'inset(160%)'},
+ ]);
+
// All <basic-shape-rect>s compute to the equivalent inset() function, so
// they are interpolatable.
// https://drafts.csswg.org/css-shapes-1/#basic-shape-computed-values
@@ -129,6 +155,35 @@
{at: 2, expect: 'inset(90px calc(-100% + 310px) calc(-100% + 210px) 90px)'},
]);
+ test_interpolation({
+ property: 'offset-path',
+ from: 'inset(10px)',
+ // inset(50px calc(100% - 70px) 20% 20%).
+ to: 'rect(50px 70px 80% 20%)',
+ }, [
+ {at: -1, expect: 'inset(-30px calc(-100% + 90px) calc(-20% + 20px) calc(-20% + 20px)'},
+ {at: 0, expect: 'inset(10px calc(0% + 10px) calc(0% + 10px))'},
+ {at: 0.125, expect: 'inset(15px 12.5% calc(2.5% + 8.75px) calc(2.5% + 8.75px))'},
+ {at: 0.875, expect: 'inset(45px calc(87.5% - 60px) calc(17.5% + 1.25px) calc(17.5% + 1.25px))'},
+ {at: 1, expect: 'inset(50px calc(100% - 70px) 20% 20%)'},
+ {at: 2, expect: 'inset(90px calc(200% - 150px) calc(40% - 10px) calc(40% - 10px))'},
+ ]);
+
+ test_interpolation({
+ property: 'clip-path',
+ // inset(10% calc(100% - 100px) 50% 0px round 20px).
+ from: 'xywh(0px 10% 100px 40% round 20px)',
+ // inset(20% 50% calc(100% - 200px) 20px).
+ to: 'rect(20% 50% 200px 20px)',
+ }, [
+ {at: -1, expect: 'inset(0% calc(150% - 200px) calc(0% + 200px) -20px round 40px'},
+ {at: 0, expect: 'inset(10% calc(100% - 100px) 50% 0px round 20px)'},
+ {at: 0.125, expect: 'inset(11.25% calc(93.75% - 87.5px) calc(56.25% - 25px) 2.5px round 17.5px)'},
+ {at: 0.875, expect: 'inset(18.75% calc(56.25% - 12.5px) calc(93.75% - 175px) 17.5px round 2.5px)'},
+ {at: 1, expect: 'inset(20% 50% calc(100% - 200px) 20px)'},
+ {at: 2, expect: 'inset(30% calc(0% + 100px) calc(150% - 400px) 40px)'},
+ ]);
+
// No interpolation between different radius keywords.
test_no_interpolation({
property: 'offset-path',
diff --git a/tests/wpt/tests/css/motion/offset-path-shape-rect-002-ref.html b/tests/wpt/tests/css/motion/offset-path-shape-rect-002-ref.html
index 7e9e07cccf3..bc28974cb5c 100644
--- a/tests/wpt/tests/css/motion/offset-path-shape-rect-002-ref.html
+++ b/tests/wpt/tests/css/motion/offset-path-shape-rect-002-ref.html
@@ -14,6 +14,7 @@
#box {
background-color: green;
transform: translate(420.272px, 317.407px) rotate(161.625deg) translate(40px, 40px);
+ border-radius: 50% 50% 0 0;
width: 100px;
height: 100px;
}
diff --git a/tests/wpt/tests/css/motion/offset-path-shape-rect-002.html b/tests/wpt/tests/css/motion/offset-path-shape-rect-002.html
index c7b60b3660b..114143b18d1 100644
--- a/tests/wpt/tests/css/motion/offset-path-shape-rect-002.html
+++ b/tests/wpt/tests/css/motion/offset-path-shape-rect-002.html
@@ -1,6 +1,7 @@
<!doctype html>
<meta charset="utf-8">
<title>CSS Motion Path test: &lt;basic-shape&gt; rect() path with explicit arguments and radius</title>
+<meta name=fuzzy content="0-96;0-440">
<link rel="author" title="Daniil Sakhapov" href="sakhapov@google.com">
<link rel="match" href="offset-path-shape-rect-002-ref.html">
<link rel="help" href="https://drafts.fxtf.org/motion/#valdef-offset-path-basic-shape">
@@ -19,6 +20,7 @@
offset-path: rect(5px 95% 95% 5px round 30%);
offset-distance: 45%;
offset-anchor: 10% 10%;
+ border-radius: 50% 50% 0 0;
width: 100px;
height: 100px;
}
diff --git a/tests/wpt/tests/css/motion/offset-path-shape-rect-003-ref.html b/tests/wpt/tests/css/motion/offset-path-shape-rect-003-ref.html
new file mode 100644
index 00000000000..1c742650915
--- /dev/null
+++ b/tests/wpt/tests/css/motion/offset-path-shape-rect-003-ref.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Motion Path test reference: offset-path:rect() path with explicit arguments and padding-box</title>
+
+<style>
+#outer {
+ top: 100px;
+ left: 100px;
+ position: relative;
+ width: 200px;
+ height: 100px;
+ padding: 50px;
+ border: 50px solid black;
+}
+#box {
+ background-color: green;
+ transform: translate(200px, -78px) rotate(90deg);
+ border-radius: 50% 50% 0 0;
+ width: 100px;
+ height: 100px;
+}
+</style>
+
+<div id="outer">
+ <div id="box"></div>
+</div>
diff --git a/tests/wpt/tests/css/motion/offset-path-shape-rect-003.html b/tests/wpt/tests/css/motion/offset-path-shape-rect-003.html
new file mode 100644
index 00000000000..597cdb37268
--- /dev/null
+++ b/tests/wpt/tests/css/motion/offset-path-shape-rect-003.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Motion Path test: offset-path:rect() path with explicit arguments and padding-box</title>
+<link rel="match" href="offset-path-shape-rect-003-ref.html">
+<link rel="help" href="https://drafts.fxtf.org/motion/#valdef-offset-path-basic-shape">
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+
+<style>
+#outer {
+ top: 100px;
+ left: 100px;
+ position: relative;
+ width: 200px;
+ height: 100px;
+ padding: 50px;
+ border: 50px solid black;
+}
+#box {
+ background-color: green;
+ position: relative;
+ offset-path: rect(auto auto 50% 10px) padding-box;
+ offset-distance: 40%;
+ border-radius: 50% 50% 0 0;
+ width: 100px;
+ height: 100px;
+}
+</style>
+
+<div id="outer">
+ <div id="box"></div>
+</div>
diff --git a/tests/wpt/tests/css/motion/parsing/offset-path-computed.html b/tests/wpt/tests/css/motion/parsing/offset-path-computed.html
index 9e1fca2f527..01435968ced 100644
--- a/tests/wpt/tests/css/motion/parsing/offset-path-computed.html
+++ b/tests/wpt/tests/css/motion/parsing/offset-path-computed.html
@@ -84,6 +84,8 @@ test_computed_value("offset-path", "polygon(1% 2%)");
test_computed_value("offset-path", "polygon(1px 2px, 3% 4%)");
// All <basic-shape-rect> functions compute to the equivalent inset() function.
+// Given "xywh(x y w h)", the equivalent function is
+// "inset(y calc(100% - x - w) calc(100% - y - h) x)".
// https://drafts.csswg.org/css-shapes-1/#basic-shape-computed-values
// https://github.com/w3c/csswg-drafts/issues/9053
test_computed_value("offset-path", "xywh(0 1% 2px 3em)", "inset(1% calc(100% - 2px) calc(99% - 48px) 0px)");
@@ -91,6 +93,14 @@ test_computed_value("offset-path", "xywh(0px 1% 2px 3em round 0)", "inset(1% cal
test_computed_value("offset-path", "xywh(0px 1% 2px 3em round 0 1px)", "inset(1% calc(100% - 2px) calc(99% - 48px) 0px round 0px 1px)");
test_computed_value("offset-path", "xywh(0px 1% 2px 3% round 0px 1px 2em)", "inset(1% calc(100% - 2px) 96% 0px round 0px 1px 32px)");
test_computed_value("offset-path", "xywh(0px 1% 2px 3% round 0px 1px 2% 3px)", "inset(1% calc(100% - 2px) 96% 0px round 0px 1px 2% 3px)");
+// Given "rect(t r b l)", the equivalent function is
+// "inset(t calc(100% - r) calc(100% - b) l)".
+test_computed_value("offset-path", "rect(auto auto auto auto)", "inset(0%)");
+test_computed_value("offset-path", "rect(0 1% 2px 3em)", "inset(0px 99% calc(100% - 2px) 48px)");
+test_computed_value("offset-path", "rect(0px 1% auto 3em round 0)", "inset(0px 99% 0% 48px)");
+test_computed_value("offset-path", "rect(0px 1% auto 3% round 0 1px)", "inset(0px 99% 0% 3% round 0px 1px)");
+test_computed_value("offset-path", "rect(0px 1% auto 3% round 0px 1px 2em)", "inset(0px 99% 0% 3% round 0px 1px 32px)");
+test_computed_value("offset-path", "rect(0px 1% auto 3% round 0px 1px 2% 3px)", "inset(0px 99% 0% 3% round 0px 1px 2% 3px)");
test_computed_value("offset-path", "content-box");
test_computed_value("offset-path", "border-box");
diff --git a/tests/wpt/tests/css/motion/parsing/offset-path-parsing-invalid.html b/tests/wpt/tests/css/motion/parsing/offset-path-parsing-invalid.html
index f2123d130c0..6b7c4f5edf8 100644
--- a/tests/wpt/tests/css/motion/parsing/offset-path-parsing-invalid.html
+++ b/tests/wpt/tests/css/motion/parsing/offset-path-parsing-invalid.html
@@ -34,6 +34,10 @@ test_invalid_value("offset-path", "xywh(0px)");
test_invalid_value("offset-path", "xywh(0px 1%)");
test_invalid_value("offset-path", "xywh(0px 1% 2em)");
+test_invalid_value("offset-path", "rect(0px)");
+test_invalid_value("offset-path", "rect(0px 1%)");
+test_invalid_value("offset-path", "rect(0px 1% auto)");
+
</script>
</body>
</html>
diff --git a/tests/wpt/tests/css/motion/parsing/offset-path-parsing-valid.html b/tests/wpt/tests/css/motion/parsing/offset-path-parsing-valid.html
index bad3f1b2cba..c3c22754c47 100644
--- a/tests/wpt/tests/css/motion/parsing/offset-path-parsing-valid.html
+++ b/tests/wpt/tests/css/motion/parsing/offset-path-parsing-valid.html
@@ -82,6 +82,13 @@ test_valid_value("offset-path", "xywh(0px 1% 2px 3em round 0 1px)", "xywh(0px 1%
test_valid_value("offset-path", "xywh(0px 1% 2px 3em round 0px 1px 2%)");
test_valid_value("offset-path", "xywh(0px 1% 2px 3em round 0px 1px 2% 3em)");
+test_valid_value("offset-path", "rect(0 100% 200px 4em)", "rect(0px 100% 200px 4em)");
+test_valid_value("offset-path", "rect(auto auto auto auto)");
+test_valid_value("offset-path", "rect(0px 100% auto 4em round 0)", "rect(0px 100% auto 4em)");
+test_valid_value("offset-path", "rect(0px 100% auto 4em round 0 1px)", "rect(0px 100% auto 4em round 0px 1px)");
+test_valid_value("offset-path", "rect(0px 100% auto 4em round 0px 1px 2%)");
+test_valid_value("offset-path", "rect(0px 100% auto 4em round 0px 1px 2% 3em)");
+
test_valid_value("offset-path", "content-box");
test_valid_value("offset-path", "border-box");
test_valid_value("offset-path", "view-box");
diff --git a/tests/wpt/tests/css/support/interpolation-testcommon.js b/tests/wpt/tests/css/support/interpolation-testcommon.js
index 79341279376..115067465fe 100644
--- a/tests/wpt/tests/css/support/interpolation-testcommon.js
+++ b/tests/wpt/tests/css/support/interpolation-testcommon.js
@@ -61,15 +61,15 @@
notAnimatableExpectations: function(from, to, underlying) {
return expectFlip(from, to, -Infinity);
},
- interpolate: function(property, from, to, at, target, animationType) {
+ interpolate: function(property, from, to, at, target, behavior) {
// Force a style recalc on target to set the 'from' value.
getComputedStyle(target).getPropertyValue(property);
target.style.transitionDuration = '100s';
target.style.transitionDelay = '-50s';
target.style.transitionTimingFunction = createEasing(at);
target.style.transitionProperty = property;
- if (animationType) {
- target.style.transitionAnimationType = animationType;
+ if (behavior) {
+ target.style.transitionBehavior = behavior;
}
target.style.setProperty(property, isNeutralKeyframe(to) ? '' : to);
},
@@ -90,15 +90,15 @@
notAnimatableExpectations: function(from, to, underlying) {
return expectFlip(from, to, -Infinity);
},
- interpolate: function(property, from, to, at, target, animationType) {
+ interpolate: function(property, from, to, at, target, behavior) {
// Force a style recalc on target to set the 'from' value.
getComputedStyle(target).getPropertyValue(property);
target.style.transitionDuration = '100s';
target.style.transitionDelay = '-50s';
target.style.transitionTimingFunction = createEasing(at);
target.style.transitionProperty = 'all';
- if (animationType) {
- target.style.transitionAnimationType = animationType;
+ if (behavior) {
+ target.style.transitionBehavior = behavior;
}
target.style.setProperty(property, isNeutralKeyframe(to) ? '' : to);
},
@@ -262,7 +262,7 @@
var from = interpolationTest.options.from;
var to = interpolationTest.options.to;
var comparisonFunction = interpolationTest.options.comparisonFunction;
- var animationType = interpolationTest.options.animationType;
+ var behavior = interpolationTest.options.behavior;
if ((interpolationTest.options.method && interpolationTest.options.method != interpolationMethod.name)
|| !interpolationMethod.supportsProperty(property)
@@ -308,7 +308,7 @@
}
interpolationMethod.setup(property, from, target);
target.interpolate = function() {
- interpolationMethod.interpolate(property, from, to, expectation.at, target, animationType);
+ interpolationMethod.interpolate(property, from, to, expectation.at, target, behavior);
};
target.measure = function() {
for (var [expectedProp, expectedStr] of Object.entries(expectedProperties)) {
diff --git a/tests/wpt/tests/dom/events/scrolling/overscroll-deltas.html b/tests/wpt/tests/dom/events/scrolling/overscroll-deltas.html
index 21586322503..6574a56a1e6 100644
--- a/tests/wpt/tests/dom/events/scrolling/overscroll-deltas.html
+++ b/tests/wpt/tests/dom/events/scrolling/overscroll-deltas.html
@@ -97,12 +97,12 @@
// Even though we request 300 extra pixels of scroll, the API above doesn't
// guarantee how much scroll delta will be generated - different browsers
// can consume different amounts for "touch slop" (for example). Ensure the
- // overscroll reaches at least 50 pixels which is a fairly conservative
+ // overscroll reaches at least 250 pixels which is a fairly conservative
// value.
assert_greater_than(overscrolled_y_deltas.length, 0, "There should be at least one overscroll events when overscrolling.");
assert_equals(overscrolled_x_deltas.filter(function (x) { return x != 0; }).length, 0, "The deltaX attribute must be 0 when there is no scrolling in x direction.");
- assert_greater_than_equal(Math.min(...overscrolled_y_deltas), 50, "The deltaY attribute must be the number of pixels overscrolled.");
assert_less_than_equal(Math.max(...overscrolled_y_deltas), 300, "The deltaY attribute must be <= the number of pixels overscrolled (300)");
+ assert_greater_than_equal(Math.max(...overscrolled_y_deltas), 250, "The deltaY attribute should be reasonably close to number of pixels overscrolled (300)");
assert_greater_than(document.scrollingElement.scrollTop, target_div.clientHeight - 1,
"document is scrolled by the height of target_div");
}, "testing, vertical");
@@ -141,7 +141,7 @@
assert_greater_than(overscrolled_x_deltas.length, 0, "There should be at least one overscroll events when overscrolling.");
assert_equals(overscrolled_y_deltas.filter(function(x){ return x!=0; }).length, 0, "The deltaY attribute must be 0 when there is no scrolling in y direction.");
assert_less_than_equal(Math.max(...overscrolled_x_deltas), 300, "The deltaX attribute must be <= number of pixels overscrolled (300)");
- assert_greater_than_equal(Math.min(...overscrolled_x_deltas),50, "The deltaX attribute must be the number of pixels overscrolled.");
+ assert_greater_than_equal(Math.max(...overscrolled_x_deltas), 250, "The deltaX attribute should be reasonably close to the number of pixels overscrolled (300)");
}, "testing, horizontal");
}
</script>
diff --git a/tests/wpt/tests/dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html b/tests/wpt/tests/dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html
new file mode 100644
index 00000000000..74dcb0f0bd0
--- /dev/null
+++ b/tests/wpt/tests/dom/events/scrolling/scrollend-with-snap-on-fractional-offset.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="scroll_support.js"></script>
+ <body>
+ <style>
+ .scroller {
+ scroll-snap-type: x mandatory;
+ overflow-x: auto;
+ overflow-y: hidden;
+ position: relative;
+ height: 500px;
+ width: 500px;
+ }
+
+ .box {
+ scroll-snap-align: start;
+ width: 600px;
+ position: absolute;
+ top: 200px;
+ }
+
+ #box1 {
+ background-color: red;
+ height: 500px;
+ }
+
+ #box2 {
+ background-color: yellow;
+ height: 300px;
+ left: 700.5px;
+ }
+
+ #box3 {
+ background-color: blue;
+ height: 100px;
+ left: 1400px;
+ }
+ </style>
+ <div id="scroller" class="scroller">
+ <div class="box" id="box1">1</div>
+ <div class="box" id="box2">2</div>
+ <div class="box" id="box3">3</div>
+ </div>
+ <script>
+ let scrollendCount = 0;
+ scroller.addEventListener('scrollend', () => {
+ scroller.style.maxHeight = null;
+ scroller.style.maxHeight = `${box2.clientHeight}px`;
+ scrollendCount += 1;
+ });
+ promise_test(async (test) => {
+ // This test aims to verify that scrollend fires correctly (i.e. once)
+ // when the target snap position is not a whole number. In this case, we
+ // expect to snap to the left edge of box2 which is at a fractional
+ // offset from the scroller's origin (left: 700.5px).
+ // The scroll offset resulting from the snap may not be fractional
+ // (e.g. if the browser does not support fractional scroll offsets) so
+ // we verify the scroll offset with assert_approx_equals.
+ assert_equals(scroller.scrollLeft, 0,
+ "test precondition: scroller is not scrolled.");
+ const expected_scroll_left = box2.offsetLeft;
+ const target_offset = box2.offsetLeft + box2.clientWidth / 2;
+
+ let scrollend_promise = waitForScrollendEvent(test, scroller);
+ scroller.scrollTo( { left: target_offset });
+ await scrollend_promise;
+
+ // Instead of a time-based wait for errant scrollends, we wait a frame
+ // and then scroll back to 0.
+ await waitForCompositorCommit();
+ assert_approx_equals(scroller.scrollLeft, expected_scroll_left, 1,
+ "scroller snaps to the left edge of box 2");
+
+ scrollend_promise = waitForScrollendEvent(test, scroller);
+ scroller.scrollTo({ left: 0 });
+ await scrollend_promise;
+ assert_equals(scroller.scrollLeft, 0,
+ "scroller should be scrolled back to 0.");
+ assert_equals(scrollendCount, 2, "exactly 2 scrollends should be seen");
+ }, "snap to fractional offset fires scrollend exactly once.");
+ </script>
+ </body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/tests/dom/parts/basic-dom-part-objects.tentative.html b/tests/wpt/tests/dom/parts/basic-dom-part-objects.tentative.html
index ee35298e5da..3dda4e492c2 100644
--- a/tests/wpt/tests/dom/parts/basic-dom-part-objects.tentative.html
+++ b/tests/wpt/tests/dom/parts/basic-dom-part-objects.tentative.html
@@ -30,6 +30,8 @@
<span id=sub>B-sub2</span>
</span><span id=c>C</span></div>
</div>
+ <span id=direct_child_1></span>
+ <span id=direct_child_2></span>
</template>
<script>{
@@ -40,13 +42,15 @@ function addCleanup(t, part) {
}
[false,true].forEach(useTemplate => {
const doc = useTemplate ? template.content : document;
- let target,wrapper;
+ let target,wrapper,directChildren;
if (useTemplate) {
target = doc.querySelector('#target1');
+ directChildren = [doc.querySelector('#direct_child_1'),doc.querySelector('#direct_child_2')];
} else {
wrapper = document.body.appendChild(document.createElement('div'));
wrapper.appendChild(template.content.cloneNode(true));
target = wrapper.querySelector('#target1');
+ directChildren = [doc.documentElement,doc.documentElement];
}
const a = target.querySelector('#a');
const b = target.querySelector('#b');
@@ -251,6 +255,25 @@ function addCleanup(t, part) {
assert_array_equals(target.children,[a,b,c]);
}, `ChildNodePart children manipulation (${description})`);
+ test((t) => {
+ const root = doc.getPartRoot();
+ // Make sure no crashes occur for invalid parts.
+ const cornerCasePartsInvalid = [
+ addCleanup(t,new ChildNodePart(root,target, target.children[2],{metadata: ['different parents']})),
+ addCleanup(t,new ChildNodePart(root,target.children[0], target,{metadata: ['different parents']})),
+ addCleanup(t,new ChildNodePart(root,target, doc,{metadata: ['different parents']})),
+ ];
+ const cornerCasePartsValid = [];
+ const maybeValid = addCleanup(t,new ChildNodePart(root,directChildren[0], directChildren[1],{metadata: ['direct parent of the root container']}));
+ if (directChildren[0] === directChildren[1]) {
+ cornerCasePartsInvalid.push(maybeValid);
+ } else {
+ cornerCasePartsValid.push(maybeValid);
+ }
+ assert_array_equals(root.getParts(),cornerCasePartsValid);
+ assert_equals(root.clone().getParts().length,cornerCasePartsValid.length);
+ }, `Corner case ChildNodePart construction and cloning (${description})`);
+
wrapper?.remove(); // Cleanup
});
}</script>
@@ -258,11 +281,12 @@ function addCleanup(t, part) {
<div>
<!-- Note - the test will remove this chunk of DOM once the test completes -->
<div id=target2>
- Declarative syntax - The template below (with id=declarative) should have
- IDENTICAL STRUCTURE. There are three cases to test:
+ Declarative syntax - The *two* templates below should have IDENTICAL STRUCTURE
+ to this one. There are four cases to test:
1. Main document parsing (this chunk)
- 2. Template parsing (the template below)
- 3. Template/fragment cloning (the clone of the template below)
+ 2. Template parsing (the template below with id=declarative)
+ 3. Template/fragment cloning (a clone of the template with id=declarative)
+ 4. Declarative Shadow DOM parsing (template with id=declarative_shadow_dom and shadowrootmode attribute)
<h1 id="name">
<?child-node-part fullname?>
First
@@ -277,7 +301,7 @@ function addCleanup(t, part) {
<child-node-part test PI without leading ?>
<!--?child-node-partfoobar?-->
<?child-node-partfoobar?>
-</div>
+ </div>
</div>
<template id=declarative>
<div>
@@ -296,61 +320,105 @@ function addCleanup(t, part) {
<child-node-part test PI without leading ?>
<!--?child-node-partfoobar?-->
<?child-node-partfoobar?>
-</div>
+ </div>
</div>
</template>
+<div id=declarative_shadow_dom>
+ <template shadowrootmode="open">
+ <div>
+ <div id=target3>Declarative syntax
+ <h1 id="name">
+ <?child-node-part fullname?>
+ First
+ <!--?child-node-part middle?--> <?node-part middle-node?>Middle <?/child-node-part middle?>
+ Last
+ <!-- ?/child-node-part foobar? -->
+ </h1>
+ Email: <?node-part email-link?><a id="link"></a>
+
+ Here are some invalid parts that should not get parsed:
+ <!--child-node-part test comment without leading ?-->
+ <child-node-part test PI without leading ?>
+ <!--?child-node-partfoobar?-->
+ <?child-node-partfoobar?>
+ </div>
+ </div>
+ </template>
+</div>
<script> {
const template = document.getElementById('declarative');
-['Main Document','Template','Clone'].forEach(testCase => {
- let doc,target,cleanup;
- switch (testCase) {
- case 'Main Document':
- doc = document;
- target = doc.querySelector('#target2');
- cleanup = [target.parentElement];
- break;
- case 'Template':
- doc = template.content;
- target = doc.querySelector('#target3');
- cleanup = [];
- break;
- case 'Clone':
- doc = document;
- wrapper = document.body.appendChild(document.createElement('div'));
- wrapper.appendChild(template.content.cloneNode(true));
- target = wrapper.querySelector('#target3');
- cleanup = [wrapper];
- break;
- }
- assert_true(!!(doc && target && target.parentElement));
-
+['Main Document','Template','Clone','PartClone','DeclarativeShadowDOM'].forEach(testCase => {
function assertIsComment(node,commentText) {
assert_true(node instanceof Comment);
assert_equals(node.textContent,commentText);
}
test((t) => {
+ let doc,target,wrapper,cleanup;
+ let expectDOMParts = true;
+ switch (testCase) {
+ case 'Main Document':
+ doc = document;
+ target = doc.querySelector('#target2');
+ cleanup = [target.parentElement];
+ break;
+ case 'Template':
+ doc = template.content;
+ target = doc.querySelector('#target3');
+ cleanup = [];
+ break;
+ case 'Clone':
+ doc = document;
+ wrapper = document.body.appendChild(document.createElement('div'));
+ wrapper.appendChild(template.content.cloneNode(true));
+ target = wrapper.querySelector('#target3');
+ // A "normal" tree clone should not keep DOM Parts:
+ expectDOMParts = false;
+ cleanup = [wrapper];
+ break;
+ case 'PartClone':
+ doc = document;
+ wrapper = document.body.appendChild(document.createElement('div'));
+ wrapper.appendChild(template.content.getPartRoot().clone().rootContainer);
+ target = wrapper.querySelector('#target3');
+ cleanup = [wrapper];
+ break;
+ case 'DeclarativeShadowDOM': {
+ const host = document.getElementById('declarative_shadow_dom');
+ doc = host.shadowRoot;
+ target = doc.querySelector('#target3'); // Shadow isolated
+ cleanup = [host];
+ break;
+ }
+ default:
+ assert_unreached('Invalid test case');
+ }
+ assert_true(!!(doc && target && target.parentElement));
+ t.add_cleanup(() => cleanup.forEach(el => el.remove())); // Cleanup
+
const root = doc.getPartRoot();
assert_true(root instanceof DocumentPartRoot);
- const expectedRootParts = [{type:'ChildNodePart',metadata:['fullname']},{type:'NodePart',metadata:['email-link']}];
- assertEqualParts(root.getParts(),expectedRootParts,0,'declarative root should have two parts');
- assert_equals(root.getParts()[1].node,target.querySelector('#link'));
- const childPart1 = root.getParts()[0];
- assertIsComment(childPart1.previousSibling,'?child-node-part fullname?');
- assertIsComment(childPart1.nextSibling,' ?/child-node-part foobar? ');
- const expectedChild1Parts = [{type:'ChildNodePart',metadata:['middle']}];
- assertEqualParts(childPart1.getParts(),expectedChild1Parts,0,'First level childpart should just have one child part');
- const childPart2 = childPart1.getParts()[0];
- assertIsComment(childPart2.previousSibling,'?child-node-part middle?');
- assertIsComment(childPart2.nextSibling,'?/child-node-part middle?');
- const expectedChild2Parts = [{type:'NodePart',metadata:['middle-node']}];
- assertEqualParts(childPart2.getParts(),expectedChild2Parts,0,'Second level childpart should have just the node part');
- assert_true(childPart2.getParts()[0].node instanceof Text);
- assert_equals(childPart2.getParts()[0].node.textContent,'Middle ');
+ if (expectDOMParts) {
+ const expectedRootParts = [{type:'ChildNodePart',metadata:['fullname']},{type:'NodePart',metadata:['email-link']}];
+ assertEqualParts(root.getParts(),expectedRootParts,0,'declarative root should have two parts');
+ assert_equals(root.getParts()[1].node,target.querySelector('#link'));
+ const childPart1 = root.getParts()[0];
+ assertIsComment(childPart1.previousSibling,'?child-node-part fullname?');
+ assertIsComment(childPart1.nextSibling,' ?/child-node-part foobar? ');
+ const expectedChild1Parts = [{type:'ChildNodePart',metadata:['middle']}];
+ assertEqualParts(childPart1.getParts(),expectedChild1Parts,0,'First level childpart should just have one child part');
+ const childPart2 = childPart1.getParts()[0];
+ assertIsComment(childPart2.previousSibling,'?child-node-part middle?');
+ assertIsComment(childPart2.nextSibling,'?/child-node-part middle?');
+ const expectedChild2Parts = [{type:'NodePart',metadata:['middle-node']}];
+ assertEqualParts(childPart2.getParts(),expectedChild2Parts,0,'Second level childpart should have just the node part');
+ assert_true(childPart2.getParts()[0].node instanceof Text);
+ assert_equals(childPart2.getParts()[0].node.textContent,'Middle ');
+ } else {
+ assertEqualParts(root.getParts(),[],[]);
+ }
}, `Basic declarative DOM Parts (${testCase})`);
-
- cleanup.forEach(el => el.remove()); // Cleanup
});
}</script>
diff --git a/tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html b/tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html
index a9d7a3dbf8a..27bde6e6ac2 100644
--- a/tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html
+++ b/tests/wpt/tests/editing/edit-context/edit-context-basics.tentative.html
@@ -14,10 +14,7 @@
const editContextDict = {
text: "Hello world",
selectionStart: 11,
- selectionEnd: 11,
- inputMode: "text",
- inputPanelPolicy: "auto",
- enterKeyHint: "enter"
+ selectionEnd: 11
};
const editContext = new EditContext(editContextDict);
assert_not_equals(editContext, null);
@@ -25,9 +22,6 @@
assert_equals(editContext.text, "Hello world");
assert_equals(editContext.selectionStart, 11);
assert_equals(editContext.selectionEnd, 11);
- assert_equals(editContext.inputMode, "text");
- assert_equals(editContext.inputPanelPolicy, "auto");
- assert_equals(editContext.enterKeyHint, "enter");
}, 'Testing EditContext Dictionary Init');
test(function() {
diff --git a/tests/wpt/tests/editing/run/undo-redo.html b/tests/wpt/tests/editing/run/undo-redo.html
index 69bee00c86f..391349eeef4 100644
--- a/tests/wpt/tests/editing/run/undo-redo.html
+++ b/tests/wpt/tests/editing/run/undo-redo.html
@@ -214,7 +214,10 @@ for (const curTest of tests) {
if (typeof curTest.cleanUp == "function") {
await curTest.cleanUp(contentWindow, contentDocument, editingHost);
}
- iframe.srcdoc = "";
+ await new Promise(resolve => {
+ iframe.addEventListener("load", resolve, {once: true});
+ iframe.srcdoc = "";
+ });
contentDocument.documentElement.scrollHeight; // flush pending things
await new Promise(resolve =>
requestAnimationFrame(
diff --git a/tests/wpt/tests/fenced-frame/fence-report-event-destination-url.https.html b/tests/wpt/tests/fenced-frame/fence-report-event-destination-url.https.html
new file mode 100644
index 00000000000..6c0bdd82dcd
--- /dev/null
+++ b/tests/wpt/tests/fenced-frame/fence-report-event-destination-url.https.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<title>Test window.fence.reportEvent destination URL.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<script>
+promise_test(async(t) => {
+ const fencedframe = await attachFencedFrameContext({generator_api: 'fledge'});
+ await fencedframe.execute(() => {
+ // The destinationURL must be a valid URL.
+ let event = {destinationURL: "foobarbaz"};
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+
+ // The destinationURL must be an https URL.
+ event.destinationURL = "http://3pat.com";
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+
+ event.destinationURL = "https://3pat.com";
+ window.fence.reportEvent(event);
+
+ // `eventType` isn't allowed.
+ event.eventType = 'click';
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+ event.eventType = undefined;
+
+ // `eventData` isn't allowed.
+ event.eventData = 'payload';
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+ event.eventData = undefined;
+
+ // `destination` isn't allowed.
+ event.destination = ['buyer'];
+ assert_throws_js(TypeError, () => {window.fence.reportEvent(event);});
+ event.destination = undefined;
+ });
+}, 'window.fence.reportEvent destinationURL');
+</script>
+</body>
diff --git a/tests/wpt/tests/fetch/fetch-later/META.yml b/tests/wpt/tests/fetch/fetch-later/META.yml
new file mode 100644
index 00000000000..f8fd46bec3e
--- /dev/null
+++ b/tests/wpt/tests/fetch/fetch-later/META.yml
@@ -0,0 +1,3 @@
+spec: https://whatpr.org/fetch/1647/094ea69...152d725.html#fetch-later-method
+suggested_reviewers:
+ - mingyc
diff --git a/tests/wpt/tests/fetch/fetch-later/README.md b/tests/wpt/tests/fetch/fetch-later/README.md
new file mode 100644
index 00000000000..661e2b91843
--- /dev/null
+++ b/tests/wpt/tests/fetch/fetch-later/README.md
@@ -0,0 +1,3 @@
+# FetchLater Tests
+
+These tests cover [FetchLater method](https://whatpr.org/fetch/1647/094ea69...152d725.html#fetch-later-method) related behaviors.
diff --git a/tests/wpt/tests/fetch/fetch-later/basic.tentative.https.window.js b/tests/wpt/tests/fetch/fetch-later/basic.tentative.https.window.js
new file mode 100644
index 00000000000..a8ca011a7c9
--- /dev/null
+++ b/tests/wpt/tests/fetch/fetch-later/basic.tentative.https.window.js
@@ -0,0 +1,13 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+
+'use strict';
+
+test(() => {
+ assert_throws_js(TypeError, () => fetchLater());
+}, `fetchLater() cannot be called without request.`);
+
+test(() => {
+ const result = fetchLater('/');
+ assert_false(result.sent);
+}, `fetchLater()'s return tells the deferred request is not yet sent.`);
diff --git a/tests/wpt/tests/fetch/fetch-later/non-secure.window.js b/tests/wpt/tests/fetch/fetch-later/non-secure.window.js
new file mode 100644
index 00000000000..2f2c3ea8d34
--- /dev/null
+++ b/tests/wpt/tests/fetch/fetch-later/non-secure.window.js
@@ -0,0 +1,8 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+
+'use strict';
+
+test(() => {
+ assert_false(window.hasOwnProperty('fetchLater'));
+}, `fetchLater() is not supported in non-secure context.`);
diff --git a/tests/wpt/tests/fetch/private-network-access/iframe.tentative.https.window.js b/tests/wpt/tests/fetch/private-network-access/iframe.tentative.https.window.js
index 0208b715eaf..0c12970557d 100644
--- a/tests/wpt/tests/fetch/private-network-access/iframe.tentative.https.window.js
+++ b/tests/wpt/tests/fetch/private-network-access/iframe.tentative.https.window.js
@@ -1,7 +1,13 @@
+// META: script=/common/subset-tests-by-key.js
// META: script=/common/dispatcher/dispatcher.js
// META: script=/common/utils.js
// META: script=resources/support.sub.js
// META: timeout=long
+// META: variant=?include=from-local
+// META: variant=?include=from-private
+// META: variant=?include=from-public
+// META: variant=?include=from-treat-as-public
+// META: variant=?include=grandparent
//
// Spec: https://wicg.github.io/private-network-access/#integration-fetch
//
@@ -19,19 +25,19 @@ setup(() => {
//
// All fetches unaffected by Private Network Access.
-promise_test_parallel(t => iframeTest(t, {
+subsetTestByKey("from-local", promise_test_parallel, t => iframeTest(t, {
source: { server: Server.HTTPS_LOCAL },
target: { server: Server.HTTPS_LOCAL },
expected: FrameTestResult.SUCCESS,
}), "local to local: no preflight required.");
-promise_test_parallel(t => iframeTest(t, {
+subsetTestByKey("from-local", promise_test_parallel, t => iframeTest(t, {
source: { server: Server.HTTPS_LOCAL },
target: { server: Server.HTTPS_PRIVATE },
expected: FrameTestResult.SUCCESS,
}), "local to private: no preflight required.");
-promise_test_parallel(t => iframeTest(t, {
+subsetTestByKey("from-local", promise_test_parallel, t => iframeTest(t, {
source: { server: Server.HTTPS_LOCAL },
target: { server: Server.HTTPS_PUBLIC },
expected: FrameTestResult.SUCCESS,
@@ -48,6 +54,7 @@ promise_test_parallel(t => iframeTest(t, {
// - success
//
function makePreflightTests({
+ key,
sourceName,
sourceServer,
sourceTreatAsPublic,
@@ -104,20 +111,20 @@ function makePreflightTests({
// Fetches to the local address space require a successful preflight response
// carrying a PNA-specific header.
-makePreflightTests({
+subsetTestByKey('from-private', makePreflightTests, {
sourceServer: Server.HTTPS_PRIVATE,
- sourceName: "private",
+ sourceName: 'private',
targetServer: Server.HTTPS_LOCAL,
- targetName: "local",
+ targetName: 'local',
});
-promise_test_parallel(t => iframeTest(t, {
+subsetTestByKey("from-private", promise_test_parallel, t => iframeTest(t, {
source: { server: Server.HTTPS_PRIVATE },
target: { server: Server.HTTPS_PRIVATE },
expected: FrameTestResult.SUCCESS,
}), "private to private: no preflight required.");
-promise_test_parallel(t => iframeTest(t, {
+subsetTestByKey("from-private", promise_test_parallel, t => iframeTest(t, {
source: { server: Server.HTTPS_PRIVATE },
target: { server: Server.HTTPS_PUBLIC },
expected: FrameTestResult.SUCCESS,
@@ -128,21 +135,21 @@ promise_test_parallel(t => iframeTest(t, {
// Fetches to the local and private address spaces require a successful
// preflight response carrying a PNA-specific header.
-makePreflightTests({
+subsetTestByKey('from-public', makePreflightTests, {
sourceServer: Server.HTTPS_PUBLIC,
sourceName: "public",
targetServer: Server.HTTPS_LOCAL,
targetName: "local",
});
-makePreflightTests({
+subsetTestByKey('from-public', makePreflightTests, {
sourceServer: Server.HTTPS_PUBLIC,
sourceName: "public",
targetServer: Server.HTTPS_PRIVATE,
targetName: "private",
});
-promise_test_parallel(t => iframeTest(t, {
+subsetTestByKey("from-public", promise_test_parallel, t => iframeTest(t, {
source: { server: Server.HTTPS_PUBLIC },
target: { server: Server.HTTPS_PUBLIC },
expected: FrameTestResult.SUCCESS,
@@ -151,7 +158,7 @@ promise_test_parallel(t => iframeTest(t, {
// The following tests verify that `CSP: treat-as-public-address` makes
// documents behave as if they had been served from a public IP address.
-makePreflightTests({
+subsetTestByKey('from-treat-as-public', makePreflightTests, {
sourceServer: Server.HTTPS_LOCAL,
sourceTreatAsPublic: true,
sourceName: "treat-as-public-address",
@@ -159,16 +166,20 @@ makePreflightTests({
targetName: "local",
});
-promise_test_parallel(t => iframeTest(t, {
- source: {
- server: Server.HTTPS_LOCAL,
- treatAsPublic: true,
- },
- target: { server: Server.HTTPS_LOCAL },
- expected: FrameTestResult.SUCCESS,
-}), "treat-as-public-address to local (same-origin): no preflight required.");
+subsetTestByKey(
+ 'from-treat-as-public', promise_test_parallel,
+ t => iframeTest(t, {
+ source: {
+ server: Server.HTTPS_LOCAL,
+ treatAsPublic: true,
+ },
+ target: {server: Server.HTTPS_LOCAL},
+ expected: FrameTestResult.SUCCESS,
+ }),
+ 'treat-as-public-address to local (same-origin): no preflight required.'
+);
-makePreflightTests({
+subsetTestByKey('from-treat-as-public', makePreflightTests, {
sourceServer: Server.HTTPS_LOCAL,
sourceTreatAsPublic: true,
sourceName: "treat-as-public-address",
@@ -176,41 +187,49 @@ makePreflightTests({
targetName: "private",
});
-promise_test_parallel(t => iframeTest(t, {
- source: {
- server: Server.HTTPS_LOCAL,
- treatAsPublic: true,
- },
- target: { server: Server.HTTPS_PUBLIC },
- expected: FrameTestResult.SUCCESS,
-}), "treat-as-public-address to public: no preflight required.");
+subsetTestByKey(
+ 'from-treat-as-public', promise_test_parallel,
+ t => iframeTest(t, {
+ source: {
+ server: Server.HTTPS_LOCAL,
+ treatAsPublic: true,
+ },
+ target: {server: Server.HTTPS_PUBLIC},
+ expected: FrameTestResult.SUCCESS,
+ }),
+ 'treat-as-public-address to public: no preflight required.'
+);
-promise_test_parallel(t => iframeTest(t, {
- source: {
- server: Server.HTTPS_LOCAL,
- treatAsPublic: true,
- },
- target: {
- server: Server.HTTPS_PUBLIC,
- behavior: { preflight: PreflightBehavior.optionalSuccess(token()) }
- },
- expected: FrameTestResult.SUCCESS,
-}), "treat-as-public-address to local: optional preflight");
+subsetTestByKey(
+ 'from-treat-as-public', promise_test_parallel,
+ t => iframeTest(t, {
+ source: {
+ server: Server.HTTPS_LOCAL,
+ treatAsPublic: true,
+ },
+ target: {
+ server: Server.HTTPS_PUBLIC,
+ behavior: {preflight: PreflightBehavior.optionalSuccess(token())}
+ },
+ expected: FrameTestResult.SUCCESS,
+ }),
+ 'treat-as-public-address to local: optional preflight'
+);
// The following tests verify that when a grandparent frame navigates its
// grandchild, the IP address space of the grandparent is compared against the
// IP address space of the response. Indeed, the navigation initiator in this
// case is the grandparent, not the parent.
-iframeGrandparentTest({
- name: "local to local, grandparent navigates: no preflight required.",
+subsetTestByKey('grandparent', iframeGrandparentTest, {
+ name: 'local to local, grandparent navigates: no preflight required.',
grandparentServer: Server.HTTPS_LOCAL,
- child: { server: Server.HTTPS_PUBLIC },
- grandchild: { server: Server.OTHER_HTTPS_LOCAL },
+ child: {server: Server.HTTPS_PUBLIC},
+ grandchild: {server: Server.OTHER_HTTPS_LOCAL},
expected: FrameTestResult.SUCCESS,
});
-iframeGrandparentTest({
+subsetTestByKey('grandparent', iframeGrandparentTest, {
name: "local to local (same-origin), grandparent navigates: no preflight required.",
grandparentServer: Server.HTTPS_LOCAL,
child: { server: Server.HTTPS_PUBLIC },
@@ -218,7 +237,7 @@ iframeGrandparentTest({
expected: FrameTestResult.SUCCESS,
});
-iframeGrandparentTest({
+subsetTestByKey('grandparent', iframeGrandparentTest, {
name: "public to local, grandparent navigates: failure.",
grandparentServer: Server.HTTPS_PUBLIC,
child: {
@@ -232,7 +251,7 @@ iframeGrandparentTest({
expected: FrameTestResult.FAILURE,
});
-iframeGrandparentTest({
+subsetTestByKey('grandparent', iframeGrandparentTest, {
name: "public to local, grandparent navigates: success.",
grandparentServer: Server.HTTPS_PUBLIC,
child: {
diff --git a/tests/wpt/tests/fetch/private-network-access/resources/fenced-frame-local-network-access.https.html b/tests/wpt/tests/fetch/private-network-access/resources/fenced-frame-local-network-access.https.html
index 860371f2239..98f118432e0 100644
--- a/tests/wpt/tests/fetch/private-network-access/resources/fenced-frame-local-network-access.https.html
+++ b/tests/wpt/tests/fetch/private-network-access/resources/fenced-frame-local-network-access.https.html
@@ -1,12 +1,14 @@
<!DOCTYPE html>
<meta charset="utf-8">
+<script src="/resources/testharness.js"></script>
+<script src="../../../fenced-frame/resources/utils.js"></script>
+<script src="/common/utils.js"></script>
<title>Fenced frame</title>
<body></body>
<script>
- const fenced_frame = document.createElement("fencedframe");
+(async () => {
const target = new URL(location.href).searchParams.get("fenced_frame_url");
- const config = new FencedFrameConfig(target);
- fenced_frame.config = config;
- document.body.appendChild(fenced_frame);
-
+ const urn = await runSelectURL(target);
+ attachFencedFrame(urn);
+})();
</script>
diff --git a/tests/wpt/tests/fetch/private-network-access/resources/support.sub.js b/tests/wpt/tests/fetch/private-network-access/resources/support.sub.js
index f72a57a2c35..27d733d8b7f 100644
--- a/tests/wpt/tests/fetch/private-network-access/resources/support.sub.js
+++ b/tests/wpt/tests/fetch/private-network-access/resources/support.sub.js
@@ -359,9 +359,8 @@ async function fencedFrameFetchTest(t, { source, target, fetchOptions, expected
const type_token = token();
const source_url = generateURL(fetcher_url, [error_token, ok_token, body_token, type_token]);
- const fenced_frame = document.createElement('fencedframe');
- fenced_frame.config = new FencedFrameConfig(source_url);
- document.body.append(fenced_frame);
+ const urn = await generateURNFromFledge(source_url, []);
+ attachFencedFrame(urn);
const error = await nextValueFromServer(error_token);
const ok = await nextValueFromServer(ok_token);
@@ -478,9 +477,8 @@ async function fencedFrameTest(t, { source, target, expected }) {
resolveUrl("resources/fenced-frame-local-network-access.https.html", sourceResolveOptions(source));
source_url.searchParams.set("fenced_frame_url", child_frame_target);
- const fenced_frame = document.createElement('fencedframe');
- fenced_frame.config = new FencedFrameConfig(source_url);
- document.body.append(fenced_frame);
+ const urn = await generateURNFromFledge(source_url, []);
+ attachFencedFrame(urn);
// The grandchild fenced frame writes a value to the server iff it loads
// successfully.
diff --git a/tests/wpt/tests/forced-colors-mode/forced-colors-mode-14-ref.html b/tests/wpt/tests/forced-colors-mode/forced-colors-mode-14-ref.html
index 910b19df036..a1dc6851c9a 100644
--- a/tests/wpt/tests/forced-colors-mode/forced-colors-mode-14-ref.html
+++ b/tests/wpt/tests/forced-colors-mode/forced-colors-mode-14-ref.html
@@ -16,7 +16,7 @@
}
</style>
<body>
- <span class="select">AAA</span>
- <br>
<span class="select" id="adjust-none">AAA</span>
+ <br>
+ <span class="select">AAA</span>
</body>
diff --git a/tests/wpt/tests/forced-colors-mode/forced-colors-mode-14.html b/tests/wpt/tests/forced-colors-mode/forced-colors-mode-14.html
index c57193e99db..3ecc082d7bc 100644
--- a/tests/wpt/tests/forced-colors-mode/forced-colors-mode-14.html
+++ b/tests/wpt/tests/forced-colors-mode/forced-colors-mode-14.html
@@ -4,6 +4,7 @@
Forced colors mode - active selection.
</title>
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
+<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<link rel=match href="forced-colors-mode-14-ref.html">
<style>
br::selection {
@@ -19,14 +20,30 @@
background-color: rgba(255, 0, 0, 0.99); /* alpha < 1 so that we don't blend the background color with white. */
color: blue;
}
- #adjust-none::selection {
+ #adjust-none {
forced-color-adjust: none;
}
+ #adjust-none-on-highlight::selection {
+ forced-color-adjust: none;
+ }
+
+ <!--
+ "
+ The forced-color-adjust property cannot be set on highlight pseudo-elements;
+ however a highlight pseudo-element must honor any forced colors mode applied
+ to its originating element (and is therefore subject to the control of the
+ originating element’s forced-color-adjust value).
+ "
+ coming from
+ https://www.w3.org/TR/css-pseudo-4/#highlight-styling
+ -->
+
</style>
<body>
- <span class="select">AAA</span>
- <br>
- <span class="select" id="adjust-none">AAA</span>
+ <div id="adjust-none">
+ <span class="select">AAA</span>
+ </div>
+ <span id="adjust-none-on-highlight" class="select">AAA</span>
</body>
<script>
diff --git a/tests/wpt/tests/forced-colors-mode/forced-colors-mode-53-ref.html b/tests/wpt/tests/forced-colors-mode/forced-colors-mode-53-ref.html
index 443bc21680b..6bfa7710fa3 100644
--- a/tests/wpt/tests/forced-colors-mode/forced-colors-mode-53-ref.html
+++ b/tests/wpt/tests/forced-colors-mode/forced-colors-mode-53-ref.html
@@ -8,7 +8,7 @@
background-color: Highlight;
color: HighlightText;
text-decoration: underline;
- text-decoration-color: CanvasText;
+ text-decoration-color: HighlightText;
forced-color-adjust: none;
}
diff --git a/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.js b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.js
index 659f7321c0e..58b73494e11 100644
--- a/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.js
+++ b/tests/wpt/tests/html/browsers/browsing-the-web/navigating-across-documents/about-srcdoc-navigation-blocked.window.js
@@ -24,6 +24,19 @@ promise_test(async t => {
promise_test(async t => {
const iframe = await addSrcdocIframe();
+
+ iframe.contentWindow.location = "about:srcdoc?query";
+
+ // See the documentation in the above test.
+ await Promise.race([
+ t.step_wait(() => iframe.contentDocument === null),
+ failOnMessage(iframe.contentWindow)
+ ]);
+}, "Navigations to about:srcdoc?query via window.location within an " +
+ "about:srcdoc document must be blocked");
+
+promise_test(async t => {
+ const iframe = await addSrcdocIframe();
iframe.contentWindow.name = "test_frame";
iframe.contentWindow.location = "/common/blank.html";
@@ -31,13 +44,7 @@ promise_test(async t => {
window.open("about:srcdoc", "test_frame");
- // Fetching "about:srcdoc" should result in a network error, and navigating
- // to a network error should produce an opaque-origin page. In particular,
- // since the error page should end up being cross-origin to the parent
- // frame, `contentDocument` should return `null`.
- //
- // If instead this results in a message because we re-loaded a srcdoc document
- // from the contents of the srcdoc="" attribute, immediately fail.
+ // See the documentation in the above test.
await Promise.race([
t.step_wait(() => iframe.contentDocument === null),
failOnMessage(iframe.contentWindow)
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html b/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html
deleted file mode 100644
index 23174930321..00000000000
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.actualBoundingBox</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
-<style>
-@font-face {
- font-family: CanvasTest;
- src: url("/fonts/CanvasTest.ttf");
-}
-</style>
-<body class="show_output">
-
-<h1>2d.text.measure.actualBoundingBox</h1>
-<p class="desc">Testing actualBoundingBox</p>
-
-
-<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
-<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
-
-<ul id="d"></ul>
-<script>
-var t = async_test("Testing actualBoundingBox");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- ctx.baseline = 'alphabetic'
- // Different platforms may render text slightly different.
- // Values that are nominally expected to be zero might actually vary by a pixel or so
- // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation.
- _assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1");
- _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
- _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
- _assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1");
-
- _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
- _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
- _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
- _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
- _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
- _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
- _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
- _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
-
- _assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1");
- _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
- _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
- _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
- }), 500);
- });
-
-});
-</script>
-
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html b/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html
deleted file mode 100644
index 84d0af46b84..00000000000
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.advances.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.advances</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
-<style>
-@font-face {
- font-family: CanvasTest;
- src: url("/fonts/CanvasTest.ttf");
-}
-</style>
-<body class="show_output">
-
-<h1>2d.text.measure.advances</h1>
-<p class="desc">Testing width advances</p>
-
-
-<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
-<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
-
-<ul id="d"></ul>
-<script>
-var t = async_test("Testing width advances");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // Some platforms may return '-0'.
- _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
- // Different platforms may render text slightly different.
- _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
- _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
- _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
- _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
-
- var tm = ctx.measureText('Hello');
- _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
- }), 500);
- });
-
-});
-</script>
-
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html b/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html
deleted file mode 100644
index f5d14923961..00000000000
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.baselines.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.baselines</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
-<style>
-@font-face {
- font-family: CanvasTest;
- src: url("/fonts/CanvasTest.ttf");
-}
-</style>
-<body class="show_output">
-
-<h1>2d.text.measure.baselines</h1>
-<p class="desc">Testing baselines</p>
-
-
-<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
-<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
-
-<ul id="d"></ul>
-<script>
-var t = async_test("Testing baselines");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- _assertSame(Math.abs(ctx.measureText('A').alphabeticBaseline), 0, "Math.abs(ctx.measureText('A').alphabeticBaseline)", "0");
- _assertSame(ctx.measureText('A').ideographicBaseline, 6.25, "ctx.measureText('A').ideographicBaseline", "6.25");
- _assertSame(ctx.measureText('A').hangingBaseline, 25, "ctx.measureText('A').hangingBaseline", "25");
-
- _assertSame(Math.abs(ctx.measureText('ABCD').alphabeticBaseline), 0, "Math.abs(ctx.measureText('ABCD').alphabeticBaseline)", "0");
- _assertSame(ctx.measureText('ABCD').ideographicBaseline, 6.25, "ctx.measureText('ABCD').ideographicBaseline", "6.25");
- _assertSame(ctx.measureText('ABCD').hangingBaseline, 25, "ctx.measureText('ABCD').hangingBaseline", "25");
- }), 500);
- });
-
-});
-</script>
-
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html b/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
deleted file mode 100644
index d1085abd6e7..00000000000
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.emHeights.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.emHeights</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
-<style>
-@font-face {
- font-family: CanvasTest;
- src: url("/fonts/CanvasTest.ttf");
-}
-</style>
-<body class="show_output">
-
-<h1>2d.text.measure.emHeights</h1>
-<p class="desc">Testing emHeights</p>
-
-
-<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
-<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
-
-<ul id="d"></ul>
-<script>
-var t = async_test("Testing emHeights");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
- _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
- _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
-
- _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
- _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
- _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
- }), 500);
- });
-
-});
-</script>
-
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html b/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html
deleted file mode 100644
index 80cbabac8f2..00000000000
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.fontBoundingBox.ahem</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
-<style>
-@font-face {
- font-family: Ahem;
- src: url("/fonts/Ahem.ttf");
-}
-</style>
-<body class="show_output">
-
-<h1>2d.text.measure.fontBoundingBox.ahem</h1>
-<p class="desc">Testing fontBoundingBox for font ahem</p>
-
-
-<span style="font-family: Ahem; position: absolute; visibility: hidden">A</span>
-<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
-
-<ul id="d"></ul>
-<script>
-var t = async_test("Testing fontBoundingBox for font ahem");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("Ahem", "/fonts/Ahem.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px Ahem';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 40, "ctx.measureText('A').fontBoundingBoxAscent", "40");
- _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10");
-
- _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 40, "ctx.measureText('ABCD').fontBoundingBoxAscent", "40");
- _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10");
- }), 500);
- });
-
-});
-</script>
-
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html b/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html
deleted file mode 100644
index 03f2dfc0420..00000000000
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.fontBoundingBox</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
-<style>
-@font-face {
- font-family: CanvasTest;
- src: url("/fonts/CanvasTest.ttf");
-}
-</style>
-<body class="show_output">
-
-<h1>2d.text.measure.fontBoundingBox</h1>
-<p class="desc">Testing fontBoundingBox</p>
-
-
-<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
-<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
-
-<ul id="d"></ul>
-<script>
-var t = async_test("Testing fontBoundingBox");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
-
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
- }), 500);
- });
-
-});
-</script>
-
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math-ref.html b/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math-ref.html
new file mode 100644
index 00000000000..6c5dab9f413
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>font-size: math treated as medium in disconnected canvas (reference)</title>
+<body>
+</body>
+<script>
+var d = new Document();
+var c = d.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
+var ctx = c.getContext("2d");
+ctx.font = `medium serif`;
+ctx.fillText("Hello World!", 5, c.height / 2);
+c.toBlob((blob) => {
+ var img = document.createElement("img");
+ const url = URL.createObjectURL(blob);
+ img.src = url;
+ img.style.border = "3px solid cyan";
+ document.body.appendChild(img);
+});
+</script>
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html b/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html
new file mode 100644
index 00000000000..2cecff68f11
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>font-size: math treated as medium in disconnected canvas</title>
+<link rel="match" href="canvas.2d.disconnected-font-size-math-ref.html">
+<body>
+</body>
+<script>
+var d = new Document();
+var c = d.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
+var ctx = c.getContext("2d");
+ctx.font = `math serif`;
+ctx.fillText("Hello World!", 5, c.height / 2);
+c.toBlob((blob) => {
+ var img = document.createElement("img");
+ const url = URL.createObjectURL(blob);
+ img.src = url;
+ img.style.border = "3px solid cyan";
+ document.body.appendChild(img);
+});
+</script>
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-ref.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.disconnected-ref.html
index b36d29b97f5..b36d29b97f5 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-ref.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.disconnected-ref.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.disconnected.html
index a1715f6663c..a1715f6663c 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.disconnected.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html
index 00ecdccad37..00ecdccad37 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch-ref.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch-ref.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.condensed.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.condensed.html
index 72db41f007a..72db41f007a 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.condensed.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.condensed.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.expanded.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.expanded.html
index 8a13ba13fcb..8a13ba13fcb 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.expanded.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.expanded.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.extra-condensed.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.extra-condensed.html
index afa910f62ce..afa910f62ce 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.extra-condensed.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.extra-condensed.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.extra-expanded.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.extra-expanded.html
index d10d4d93125..d10d4d93125 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.extra-expanded.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.extra-expanded.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.normal.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.normal.html
index e8fd66acad9..e8fd66acad9 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.normal.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.normal.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.semi-condensed.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.semi-condensed.html
index 2ac97195958..2ac97195958 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.semi-condensed.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.semi-condensed.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.semi-expanded.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.semi-expanded.html
index 3c9fa278947..3c9fa278947 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.semi-expanded.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.semi-expanded.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.ultra-condensed.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.ultra-condensed.html
index 2b0426e976d..2b0426e976d 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.ultra-condensed.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.ultra-condensed.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.ultra-expanded.html b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.ultra-expanded.html
index 5b4979de864..5b4979de864 100644
--- a/tests/wpt/tests/html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.fontStretch.ultra-expanded.html
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas.2d.fontStretch.ultra-expanded.html
diff --git a/tests/wpt/tests/html/canvas/element/manual/text-styles/canvas_text_font_001-ref.htm b/tests/wpt/tests/html/canvas/element/manual/text/canvas_text_font_001-ref.htm
index 1a19757e001..1a19757e001 100644
--- a/tests/wpt/tests/html/canvas/element/manual/text-styles/canvas_text_font_001-ref.htm
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas_text_font_001-ref.htm
diff --git a/tests/wpt/tests/html/canvas/element/manual/text-styles/canvas_text_font_001.htm b/tests/wpt/tests/html/canvas/element/manual/text/canvas_text_font_001.htm
index 923ce71c077..923ce71c077 100644
--- a/tests/wpt/tests/html/canvas/element/manual/text-styles/canvas_text_font_001.htm
+++ b/tests/wpt/tests/html/canvas/element/manual/text/canvas_text_font_001.htm
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.measure.width.space.html b/tests/wpt/tests/html/canvas/element/text-styles/2d.text.measure.width.space.html
deleted file mode 100644
index 1cf93c032d4..00000000000
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.measure.width.space.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.width.space</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
-<style>
-@font-face {
- font-family: CanvasTest;
- src: url("/fonts/CanvasTest.ttf");
-}
-</style>
-<body class="show_output">
-
-<h1>2d.text.measure.width.space</h1>
-<p class="desc">Space characters are converted to U+0020 and NOT collapsed</p>
-
-
-<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
-<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
-
-<ul id="d"></ul>
-<script>
-var t = async_test("Space characters are converted to U+0020 and NOT collapsed");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
- _assertSame(ctx.measureText('A B').width, 200, "ctx.measureText('A B').width", "200");
- _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 650, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "650");
- _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
-
- _assertSame(ctx.measureText(' AB').width, 150, "ctx.measureText(' AB').width", "150");
- _assertSame(ctx.measureText('AB ').width, 150, "ctx.measureText('AB ').width", "150");
- }), 500);
- });
-
-});
-</script>
-
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.default.html b/tests/wpt/tests/html/canvas/element/text/2d.text.align.default.html
index d32f7831d05..d32f7831d05 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.default.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.align.default.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.invalid.html b/tests/wpt/tests/html/canvas/element/text/2d.text.align.invalid.html
index 7b7f33766ae..7b7f33766ae 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.invalid.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.align.invalid.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.valid.html b/tests/wpt/tests/html/canvas/element/text/2d.text.align.valid.html
index a568530f3bd..a568530f3bd 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.align.valid.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.align.valid.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.default.html b/tests/wpt/tests/html/canvas/element/text/2d.text.baseline.default.html
index 08e8512c667..08e8512c667 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.default.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.baseline.default.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.invalid.html b/tests/wpt/tests/html/canvas/element/text/2d.text.baseline.invalid.html
index e527a77288d..e527a77288d 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.invalid.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.baseline.invalid.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.valid.html b/tests/wpt/tests/html/canvas/element/text/2d.text.baseline.valid.html
index 238f6ff7dc8..238f6ff7dc8 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.baseline.valid.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.baseline.valid.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.center.html
index 6f54844b29a..723ebe87645 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.center.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.center.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textAlign center is the center of the em squares (not the bounding box)");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'center';
- ctx.fillText('DD', 50, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'center';
+ ctx.fillText('DD', 50, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign center is the center of the em squares (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.end.ltr.html
index 39751e139ca..d29da833cc5 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.ltr.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.end.ltr.html
@@ -19,29 +19,29 @@
<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50" dir="ltr"><p class="fallback">FAIL (fallback content)</p></canvas>
+<canvas id="c" class="output" width="100" height="50"dir="ltr"><p class="fallback">FAIL (fallback content)</p></canvas>
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textAlign end with ltr is the right edge");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'end';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign end with ltr is the right edge");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.end.rtl.html
index 86645a91742..09a9658ac09 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.end.rtl.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.end.rtl.html
@@ -19,29 +19,29 @@
<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50" dir="rtl"><p class="fallback">FAIL (fallback content)</p></canvas>
+<canvas id="c" class="output" width="100" height="50"dir="rtl"><p class="fallback">FAIL (fallback content)</p></canvas>
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textAlign end with rtl is the left edge");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'end';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign end with rtl is the left edge");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.left.html
index cd01f2588af..dda5318fbfe 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.left.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.left.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textAlign left is the left of the first em square (not the bounding box)");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'left';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'left';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign left is the left of the first em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.right.html
index 64207b06e6e..2b3217278ac 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.right.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.right.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textAlign right is the right of the last em square (not the bounding box)");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'right';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign right is the right of the last em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.start.ltr.html
index abf8086e8c1..8e14642fc29 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.ltr.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.start.ltr.html
@@ -19,29 +19,29 @@
<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50" dir="ltr"><p class="fallback">FAIL (fallback content)</p></canvas>
+<canvas id="c" class="output" width="100" height="50"dir="ltr"><p class="fallback">FAIL (fallback content)</p></canvas>
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textAlign start with ltr is the left edge");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'start';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign start with ltr is the left edge");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.start.rtl.html
index 8c5b819854c..fe1ccd11376 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.align.start.rtl.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.align.start.rtl.html
@@ -19,29 +19,29 @@
<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50" dir="rtl"><p class="fallback">FAIL (fallback content)</p></canvas>
+<canvas id="c" class="output" width="100" height="50"dir="rtl"><p class="fallback">FAIL (fallback content)</p></canvas>
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textAlign start with rtl is the right edge");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'start';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign start with rtl is the right edge");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.alphabetic.html
index 0f70a475c81..a45db596d02 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.alphabetic.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.alphabetic.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'alphabetic';
- ctx.fillText('CC', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'alphabetic';
+ ctx.fillText('CC', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.bottom.html
index 706d7743af7..ed1bf002a10 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.bottom.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.bottom.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textBaseline bottom is the bottom of the em square (not the bounding box)");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'bottom';
- ctx.fillText('CC', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'bottom';
+ ctx.fillText('CC', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textBaseline bottom is the bottom of the em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.hanging.html
index 7b3a0a9373b..2f274b41993 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.hanging.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.hanging.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'hanging';
- ctx.fillText('CC', 0, 12.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'hanging';
+ ctx.fillText('CC', 0, 12.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.ideographic.html
index 8da9aabb942..8d6a12e2623 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.ideographic.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.ideographic.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'ideographic';
- ctx.fillText('CC', 0, 31.25);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'ideographic';
+ ctx.fillText('CC', 0, 31.25);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.middle.html
index ebc821c2bbd..5b021a5877d 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.middle.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.middle.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textBaseline middle is the middle of the em square (not the bounding box)");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'middle';
- ctx.fillText('CC', 0, 25);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'middle';
+ ctx.fillText('CC', 0, 25);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textBaseline middle is the middle of the em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.top.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.top.html
index 21e505ec795..2011514d33b 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.baseline.top.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.baseline.top.html
@@ -23,25 +23,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("textBaseline top is the top of the em square (not the bounding box)");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'top';
- ctx.fillText('CC', 0, 0);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'top';
+ ctx.fillText('CC', 0, 0);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textBaseline top is the top of the em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.basic-manual.html
index d3f5df9d018..d3f5df9d018 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic-manual.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.basic-manual.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.basic.png
index 70d7b046cb2..70d7b046cb2 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.basic.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.NaN.html
index 9705d288306..9705d288306 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.NaN.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.bound.html
index 88dc1099238..c5f7dcf1194 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.bound.html
@@ -23,22 +23,22 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("fillText handles maxWidth based on line size, not bounding box size");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('DD', 0, 37.5, 100);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('DD', 0, 37.5, 100);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "fillText handles maxWidth based on line size, not bounding box size");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html
index ed241deeb22..7df55538151 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.fontface.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.fontface.html
@@ -23,22 +23,22 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("fillText works on @font-face fonts");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.fillText('EEEE', -50, 37.5, 40);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#0f0';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#f00';
+ ctx.fillText('EEEE', -50, 37.5, 40);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "fillText works on @font-face fonts");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.large-manual.html
index 96bb2e7de15..96bb2e7de15 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large-manual.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.large-manual.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.large.png
index 70d7b046cb2..70d7b046cb2 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.large.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.negative.html
index ad50d576083..ad50d576083 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.negative.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.negative.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.small.html
index 75866af4062..75866af4062 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.small.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.small.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.zero.html
index a175a578790..a175a578790 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.zero.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.maxWidth.zero.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.rtl-manual.html
index 6917d7ed6c8..6917d7ed6c8 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl-manual.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.rtl-manual.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.rtl.png
index 70d7b046cb2..70d7b046cb2 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.rtl.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.unaffected.html
index 94ed31d1993..94ed31d1993 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.unaffected.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fill.unaffected.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.html
index cb7d6984d1f..c46ac2084e2 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.html
@@ -23,22 +23,22 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '67px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.notinpage.html
index 6c347399b2a..92891fb04fd 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.notinpage.html
@@ -22,22 +22,22 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("@font-face fonts should work even if they are not used in the page");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '67px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "@font-face fonts should work even if they are not used in the page");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.repeat.html
index d6d33a07681..d597540b97f 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.repeat.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.fontface.repeat.html
@@ -22,23 +22,25 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.fillStyle = '#f00';
ctx.fillRect(0, 0, 100, 50);
ctx.font = '67px CanvasTest';
ctx.fillStyle = '#0f0';
ctx.fillText('AA', 0, 50);
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }), 500);
-
-});
+
+ await new Promise(resolve => t.step_timeout(resolve, 500));
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+
+}, "Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.kern.consistent-manual.html
index 1840ef01b1e..1840ef01b1e 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.kern.consistent-manual.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.kern.consistent-manual.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.basic.html
index 2c5d4710134..d4447402aa0 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.basic.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.basic.html
@@ -23,20 +23,20 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("U+0020 is rendered the correct size (1em wide)");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', -100, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E EE', -100, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "U+0020 is rendered the correct size (1em wide)");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.end.html
index aebdd0e87e5..5a14dbd5146 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.end.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.end.html
@@ -23,21 +23,21 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("Space characters at the end of a line are NOT collapsed");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('EE ', 100, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'right';
+ ctx.fillText('EE ', 100, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
-});
+}, "Space characters at the end of a line are NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.nonspace.html
index 00877c6a0b7..1fc4203b90a 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.space.collapse.nonspace.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.nonspace.html
@@ -23,20 +23,20 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("Non-space characters are not converted to U+0020 and collapsed");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E\x0b EE', -150, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E\x0b EE', -150, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "Non-space characters are not converted to U+0020 and collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.other.html
index 1400d7c5d83..ffc82929b53 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.other.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.other.html
@@ -23,20 +23,20 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("Space characters are converted to U+0020, and are NOT collapsed");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
-});
+}, "Space characters are converted to U+0020, and are NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.space.html
index 271c9bacadd..64c14d1a545 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.space.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.space.html
@@ -23,20 +23,20 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("Space characters are converted to U+0020, and are NOT collapsed");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E EE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
-});
+}, "Space characters are converted to U+0020, and are NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.start.html
index 6f1b81e533e..272432c3be7 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.draw.space.collapse.start.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.space.collapse.start.html
@@ -23,20 +23,20 @@
<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
-var t = async_test("Space characters at the start of a line are NOT collapsed");
-_addTest(function(canvas, ctx) {
+promise_test(async t => {
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText(' EE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 255,0,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }), 500);
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText(' EE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 255,0,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "Space characters at the start of a line are NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.basic-manual.html
index 1db0f0694e8..1db0f0694e8 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic-manual.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.basic-manual.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.basic.png
index fb3b5b830d3..fb3b5b830d3 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.basic.png
Binary files differ
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.unaffected.html
index 76a36476eeb..76a36476eeb 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.unaffected.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.draw.stroke.unaffected.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.absolute.spacing.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.absolute.spacing.html
index 1207f84e2bf..1207f84e2bf 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.absolute.spacing.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.absolute.spacing.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.font-relative.spacing.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.font-relative.spacing.html
index a232ec16029..a232ec16029 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.font-relative.spacing.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.font-relative.spacing.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontKerning.html
index 6de9c6eb504..6de9c6eb504 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontKerning.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontKerning.with.uppercase.html
index 991f35af0dd..991f35af0dd 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontKerning.with.uppercase.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontKerning.with.uppercase.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontStretch.settings.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontStretch.settings.html
index b19eced8917..b19eced8917 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontStretch.settings.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontStretch.settings.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontVariant.settings.html
index cff5ad183a0..cff5ad183a0 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.fontVariant.settings.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.fontVariant.settings.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.invalid.spacing.html
index a0b8340b2cd..a0b8340b2cd 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.invalid.spacing.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.invalid.spacing.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.letterSpacing.change.font.html
index d7543e5d9a8..74774b5cce5 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.change.font.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.letterSpacing.change.font.html
@@ -29,7 +29,7 @@ _addTest(function(canvas, ctx) {
// 1em = 10px. Add 10px after each letter in "Hello World",
// makes it 110px longer.
var width_with_spacing = ctx.measureText('Hello World').width;
- assert_approx_equals(width_with_spacing, width_normal + 110, 0.1, "letterSpacing incorrect before font change");
+ _assertSame(width_with_spacing, width_normal + 110, "width_with_spacing", "width_normal + 110");
// Changing font to 20px. Without resetting the spacing, 1em letterSpacing
// is now 20px, so it's suppose to be 220px longer without any letterSpacing set.
@@ -38,7 +38,7 @@ _addTest(function(canvas, ctx) {
// Now calculate the reference spacing for "Hello World" with no spacing.
ctx.letterSpacing = '0em';
width_normal = ctx.measureText('Hello World').width;
- assert_approx_equals(width_with_spacing, width_normal + 220, 0.1, "letterSpacing incorrect after font change");
+ _assertSame(width_with_spacing, width_normal + 220, "width_with_spacing", "width_normal + 220");
});
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.letterSpacing.measure.html
index 9b0ce16eafd..611ea0b2f0a 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.letterSpacing.measure.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.letterSpacing.measure.html
@@ -8,7 +8,7 @@
<body class="show_output">
<h1>2d.text.drawing.style.letterSpacing.measure</h1>
-<p class="desc">Testing letter spacing and word spacing</p>
+<p class="desc">Testing letter spacing with different length units</p>
<p class="output">Actual output:</p>
@@ -16,12 +16,13 @@
<ul id="d"></ul>
<script>
-var t = async_test("Testing letter spacing and word spacing");
+var t = async_test("Testing letter spacing with different length units");
_addTest(function(canvas, ctx) {
_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
var width_normal = ctx.measureText('Hello World').width;
+ var ch_width = width_normal / 11;
function test_letter_spacing(value, difference_spacing, epsilon) {
ctx.letterSpacing = value;
@@ -37,12 +38,14 @@ _addTest(function(canvas, ctx) {
// and the third value is the acceptable differencee for the length change,
// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
test_cases = [['3px', 33, 0.1],
- ['5px', 55, 0.1],
- ['-2px', -22, 0.1],
- ['1em', 110, 0.1],
- ['1in', 1056, 0.1],
- ['-0.1cm', -41.65, 0.2],
- ['-0.6mm', -24,95, 0.2]]
+ ['5px', 55, 0.1],
+ ['-2px', -22, 0.1],
+ ['1em', 110, 0.1],
+ ['-0.1em', -11, 0.1],
+ ['1in', 1056, 0.1],
+ ['1ch', 11 * ch_width, 0.1],
+ ['-0.1cm', -41.65, 0.2],
+ ['-0.6mm', -24,95, 0.2]]
for (const test_case of test_cases) {
test_letter_spacing(test_case[0], test_case[1], test_case[2]);
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.direction.html
index a00eb7eb9c0..abe696b196c 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.direction.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.direction.html
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.boundingBox.direction</title>
+<title>Canvas test: 2d.text.drawing.style.measure.direction</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
<body class="show_output">
-<h1>2d.text.measure.boundingBox.direction</h1>
+<h1>2d.text.drawing.style.measure.direction</h1>
<p class="desc">Measurement should follow text direction</p>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.rtl.text.html
index a92d5cbd0be..e521b092363 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.rtl.text.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.rtl.text.html
@@ -1,23 +1,16 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.rtl.text</title>
+<title>Canvas test: 2d.text.drawing.style.measure.rtl.text</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
-<style>
-@font-face {
- font-family: CanvasTest;
- src: url("/fonts/CanvasTest.ttf");
-}
-</style>
<body class="show_output">
-<h1>2d.text.measure.rtl.text</h1>
+<h1>2d.text.drawing.style.measure.rtl.text</h1>
<p class="desc">Measurement should follow canvas direction instead text direction</p>
-<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.textAlign.html
index 88f594c7c8f..2d5a4718c5b 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.boundingBox.textAlign.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.measure.textAlign.html
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>Canvas test: 2d.text.measure.boundingBox.textAlign</title>
+<title>Canvas test: 2d.text.drawing.style.measure.textAlign</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
<body class="show_output">
-<h1>2d.text.measure.boundingBox.textAlign</h1>
+<h1>2d.text.drawing.style.measure.textAlign</h1>
<p class="desc">Measurement should be related to textAlignment</p>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.nonfinite.spacing.html
index 5ba20208e5e..5ba20208e5e 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.nonfinite.spacing.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.nonfinite.spacing.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.textRendering.settings.html
index dee856842ae..dee856842ae 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.textRendering.settings.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.textRendering.settings.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.wordSpacing.change.font.html
index 8bad1a0447c..8bad1a0447c 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.change.font.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.wordSpacing.change.font.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.wordSpacing.measure.html
index d4f10032eb5..802646d0301 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.drawing.style.wordSpacing.measure.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.drawing.style.wordSpacing.measure.html
@@ -8,7 +8,7 @@
<body class="show_output">
<h1>2d.text.drawing.style.wordSpacing.measure</h1>
-<p class="desc">Testing if word spacing is working properly</p>
+<p class="desc">Testing word spacing with different length units</p>
<p class="output">Actual output:</p>
@@ -16,12 +16,13 @@
<ul id="d"></ul>
<script>
-var t = async_test("Testing if word spacing is working properly");
+var t = async_test("Testing word spacing with different length units");
_addTest(function(canvas, ctx) {
_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
var width_normal = ctx.measureText('Hello World, again').width;
+ var ch_width = width_normal / 18;
function test_word_spacing(value, difference_spacing, epsilon) {
ctx.wordSpacing = value;
@@ -37,12 +38,14 @@ _addTest(function(canvas, ctx) {
// and the third value is the acceptable differencee for the length change,
// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
test_cases = [['3px', 6, 0.1],
- ['5px', 10, 0.1],
- ['-2px', -4, 0.1],
- ['1em', 20, 0.1],
- ['1in', 192, 0.1],
- ['-0.1cm', -7.57, 0.2],
- ['-0.6mm', -4.54, 0.2]]
+ ['5px', 10, 0.1],
+ ['-2px', -4, 0.1],
+ ['1em', 20, 0.1],
+ ['-0.5em', -10, 0.1],
+ ['1in', 192, 0.1],
+ ['1ch', 2 * ch_width, 0.1],
+ ['-0.1cm', -7.57, 0.2],
+ ['-0.6mm', -4.54, 0.2]]
for (const test_case of test_cases) {
test_word_spacing(test_case[0], test_case[1], test_case[2]);
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.default.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.default.html
index c6ac0848437..c6ac0848437 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.default.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.default.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.basic.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.basic.html
index 70efec7743b..70efec7743b 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.basic.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.basic.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.complex.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.complex.html
index 12e1d60e568..12e1d60e568 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.complex.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.complex.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.complex2.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.complex2.html
index d85765fcd3a..d85765fcd3a 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.complex2.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.complex2.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.family.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.family.html
index c53bedbffcc..c53bedbffcc 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.family.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.family.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.invalid.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.invalid.html
index 4fef0b48460..4fef0b48460 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.invalid.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.invalid.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.size.percentage.default.html
index cb245f18a2f..cb245f18a2f 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.default.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.size.percentage.default.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.size.percentage.html
index 519a1eb0b4a..520231a804c 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.size.percentage.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.size.percentage.html
@@ -12,7 +12,7 @@
<p class="output">Actual output:</p>
-<canvas id="c" class="output" width="100" height="50" style="font-size: 144px"><p class="fallback">FAIL (fallback content)</p></canvas>
+<canvas id="c" class="output" width="100" height="50"style="font-size: 144px"><p class="fallback">FAIL (fallback content)</p></canvas>
<ul id="d"></ul>
<script>
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.system.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.system.html
index 10fa0cb36de..10fa0cb36de 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.system.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.system.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.tiny.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.tiny.html
index 10c9d2a0e0a..10c9d2a0e0a 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.parse.tiny.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.parse.tiny.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.relative_size.html b/tests/wpt/tests/html/canvas/element/text/2d.text.font.relative_size.html
index 97b9718b14b..97b9718b14b 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/2d.text.font.relative_size.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.font.relative_size.html
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.actualBoundingBox.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.actualBoundingBox.html
new file mode 100644
index 00000000000..d0672b23dcd
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.actualBoundingBox.html
@@ -0,0 +1,61 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.text.measure.actualBoundingBox</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+<style>
+@font-face {
+ font-family: CanvasTest;
+ src: url("/fonts/CanvasTest.ttf");
+}
+</style>
+<body class="show_output">
+
+<h1>2d.text.measure.actualBoundingBox</h1>
+<p class="desc">Testing actualBoundingBox</p>
+
+
+<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ ctx.baseline = 'alphabetic'
+ // Different platforms may render text slightly different.
+ // Values that are nominally expected to be zero might actually vary by a
+ // pixel or so if the UA accounts for antialiasing at glyph edges, so we
+ // allow a slight deviation.
+ _assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1");
+ _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
+ _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
+ _assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1");
+
+ _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
+ _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
+ _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
+ _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
+ _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
+ _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
+ _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
+ _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
+
+ _assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
+
+}, "Testing actualBoundingBox");
+</script>
+
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.advances.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.advances.html
new file mode 100644
index 00000000000..84f04dd677f
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.advances.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.text.measure.advances</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+<style>
+@font-face {
+ font-family: CanvasTest;
+ src: url("/fonts/CanvasTest.ttf");
+}
+</style>
+<body class="show_output">
+
+<h1>2d.text.measure.advances</h1>
+<p class="desc">Testing width advances</p>
+
+
+<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ // Some platforms may return '-0'.
+ _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
+ // Different platforms may render text slightly different.
+ _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
+ _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
+ _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
+ _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
+
+ var tm = ctx.measureText('Hello');
+ _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
+
+}, "Testing width advances");
+</script>
+
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.baselines.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.baselines.html
new file mode 100644
index 00000000000..9d947eb3618
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.baselines.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.text.measure.baselines</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+<style>
+@font-face {
+ font-family: CanvasTest;
+ src: url("/fonts/CanvasTest.ttf");
+}
+</style>
+<body class="show_output">
+
+<h1>2d.text.measure.baselines</h1>
+<p class="desc">Testing baselines</p>
+
+
+<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(Math.abs(ctx.measureText('A').alphabeticBaseline), 0, "Math.abs(ctx.measureText('A').alphabeticBaseline)", "0");
+ _assertSame(ctx.measureText('A').ideographicBaseline, 6.25, "ctx.measureText('A').ideographicBaseline", "6.25");
+ _assertSame(ctx.measureText('A').hangingBaseline, 25, "ctx.measureText('A').hangingBaseline", "25");
+
+ _assertSame(Math.abs(ctx.measureText('ABCD').alphabeticBaseline), 0, "Math.abs(ctx.measureText('ABCD').alphabeticBaseline)", "0");
+ _assertSame(ctx.measureText('ABCD').ideographicBaseline, 6.25, "ctx.measureText('ABCD').ideographicBaseline", "6.25");
+ _assertSame(ctx.measureText('ABCD').hangingBaseline, 25, "ctx.measureText('ABCD').hangingBaseline", "25");
+
+}, "Testing baselines");
+</script>
+
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights.html
new file mode 100644
index 00000000000..e39fc06c411
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.emHeights.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.text.measure.emHeights</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+<style>
+@font-face {
+ font-family: CanvasTest;
+ src: url("/fonts/CanvasTest.ttf");
+}
+</style>
+<body class="show_output">
+
+<h1>2d.text.measure.emHeights</h1>
+<p class="desc">Testing emHeights</p>
+
+
+<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
+ _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
+ _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
+
+ _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
+ _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
+ _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
+
+}, "Testing emHeights");
+</script>
+
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.ahem.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.ahem.html
new file mode 100644
index 00000000000..0044f4d1e7c
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.ahem.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.text.measure.fontBoundingBox.ahem</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+<style>
+@font-face {
+ font-family: Ahem;
+ src: url("/fonts/Ahem.ttf");
+}
+</style>
+<body class="show_output">
+
+<h1>2d.text.measure.fontBoundingBox.ahem</h1>
+<p class="desc">Testing fontBoundingBox for font ahem</p>
+
+
+<span style="font-family: Ahem; position: absolute; visibility: hidden">A</span>
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px Ahem';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 40, "ctx.measureText('A').fontBoundingBoxAscent", "40");
+ _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10");
+ _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 40, "ctx.measureText('ABCD').fontBoundingBoxAscent", "40");
+ _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10");
+
+}, "Testing fontBoundingBox for font ahem");
+</script>
+
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.html
new file mode 100644
index 00000000000..375910593aa
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.fontBoundingBox.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.text.measure.fontBoundingBox</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+<style>
+@font-face {
+ font-family: CanvasTest;
+ src: url("/fonts/CanvasTest.ttf");
+}
+</style>
+<body class="show_output">
+
+<h1>2d.text.measure.fontBoundingBox</h1>
+<p class="desc">Testing fontBoundingBox measurements</p>
+
+
+<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
+ assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
+ assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
+
+ assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
+ assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
+
+}, "Testing fontBoundingBox measurements");
+</script>
+
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.basic.html
index 1d5502d8f0e..36dc468b4e9 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.basic.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.basic.html
@@ -23,24 +23,20 @@
<ul id="d"></ul>
<script>
-var t = async_test("The width of character is same as font used");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
- _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
- _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
-
- ctx.font = '100px CanvasTest';
- _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
- }), 500);
- });
-
-});
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
+ _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
+ _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
+
+ ctx.font = '100px CanvasTest';
+ _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
+
+}, "The width of character is same as font used");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.empty.html
index ce9e80b3381..39ddad9789e 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.width.empty.html
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.empty.html
@@ -23,19 +23,15 @@
<ul id="d"></ul>
<script>
-var t = async_test("The empty string has zero width");
-_addTest(function(canvas, ctx) {
-
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
- }), 500);
- });
-
-});
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
+
+}, "The empty string has zero width");
</script>
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.space.html b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.space.html
new file mode 100644
index 00000000000..7fd8095e282
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.measure.width.space.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.text.measure.width.space</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+<style>
+@font-face {
+ font-family: CanvasTest;
+ src: url("/fonts/CanvasTest.ttf");
+}
+</style>
+<body class="show_output">
+
+<h1>2d.text.measure.width.space</h1>
+<p class="desc">Space characters are converted to U+0020 and NOT collapsed</p>
+
+
+<span style="font-family: CanvasTest; position: absolute; visibility: hidden">A</span>
+<p class="output">Actual output:</p>
+<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
+
+<ul id="d"></ul>
+<script>
+promise_test(async t => {
+
+ var canvas = document.getElementById('c');
+ var ctx = canvas.getContext('2d');
+
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
+ _assertSame(ctx.measureText('A B').width, 200, "ctx.measureText('A B').width", "200");
+ _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 650, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "650");
+ _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
+
+ _assertSame(ctx.measureText(' AB').width, 150, "ctx.measureText(' AB').width", "150");
+ _assertSame(ctx.measureText('AB ').width, 150, "ctx.measureText('AB ').width", "150");
+
+}, "Space characters are converted to U+0020 and NOT collapsed");
+</script>
+
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html b/tests/wpt/tests/html/canvas/element/text/direction-inherit-rtl.html
index 0ad92181a06..0ad92181a06 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-inherit-rtl.html
+++ b/tests/wpt/tests/html/canvas/element/text/direction-inherit-rtl.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-ltr.html b/tests/wpt/tests/html/canvas/element/text/direction-ltr.html
index 42a39ac589c..42a39ac589c 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-ltr.html
+++ b/tests/wpt/tests/html/canvas/element/text/direction-ltr.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html b/tests/wpt/tests/html/canvas/element/text/direction-rtl.html
index 3cc67c69f58..3cc67c69f58 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/direction-rtl.html
+++ b/tests/wpt/tests/html/canvas/element/text/direction-rtl.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-1.html b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-1.html
index 3240476ad0f..3240476ad0f 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-1.html
+++ b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-1.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-2.html b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-2.html
index cbcb73b231c..cbcb73b231c 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-2.html
+++ b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-2.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-3.html b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-3.html
index 8c0761121ef..8c0761121ef 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-3.html
+++ b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-3.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-4.html b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-4.html
index 62fe241838b..62fe241838b 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-4.html
+++ b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-4.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-5.html b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-5.html
index a21169f8bb6..a21169f8bb6 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-5.html
+++ b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-5.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-6.html b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-6.html
index 6126c4e7b2f..6126c4e7b2f 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/fontVariantCaps-6.html
+++ b/tests/wpt/tests/html/canvas/element/text/fontVariantCaps-6.html
diff --git a/tests/wpt/tests/html/canvas/element/text-styles/parent-style-relative-units.html b/tests/wpt/tests/html/canvas/element/text/parent-style-relative-units.html
index ee44c0b7502..b9a6b314c6f 100644
--- a/tests/wpt/tests/html/canvas/element/text-styles/parent-style-relative-units.html
+++ b/tests/wpt/tests/html/canvas/element/text/parent-style-relative-units.html
@@ -20,3 +20,4 @@
assert_equals(ctx.font, "80px serif");
}, "Font-size based on canvas element line-height");
</script>
+
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-default-ref.html b/tests/wpt/tests/html/canvas/element/text/reference/direction-default-ref.html
index cef6df259c4..cef6df259c4 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-default-ref.html
+++ b/tests/wpt/tests/html/canvas/element/text/reference/direction-default-ref.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html b/tests/wpt/tests/html/canvas/element/text/reference/direction-rtl-ref.html
index 010526d667b..010526d667b 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/direction-rtl-ref.html
+++ b/tests/wpt/tests/html/canvas/element/text/reference/direction-rtl-ref.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-1-ref.html b/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-1-ref.html
index 8ea3c22be13..8ea3c22be13 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-1-ref.html
+++ b/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-1-ref.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-2-ref.html b/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-2-ref.html
index c64f5d0ec2a..c64f5d0ec2a 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-2-ref.html
+++ b/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-2-ref.html
diff --git a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-3-ref.html b/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-3-ref.html
index 069fbfba882..069fbfba882 100644
--- a/tests/wpt/tests/html/canvas/element/drawing-text-to-the-canvas/reference/fontVariantCaps-3-ref.html
+++ b/tests/wpt/tests/html/canvas/element/text/reference/fontVariantCaps-3-ref.html
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.html
index f855930f302..0f7a2f4a027 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("textAlign center is the center of the em squares (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'center';
- ctx.fillText('DD', 50, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'center';
+ ctx.fillText('DD', 50, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign center is the center of the em squares (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js
index a24b839d2f8..44f093cdac2 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.center.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textAlign center is the center of the em squares (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'center';
- ctx.fillText('DD', 50, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'center';
+ ctx.fillText('DD', 50, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textAlign center is the center of the em squares (not the bounding box)");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html
index ae69277be74..a9e6dfe9010 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.html
@@ -10,35 +10,28 @@
<script>
-var t = async_test("textAlign end with ltr is the right edge");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'end';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign end with ltr is the right edge");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js
index 64dc013b444..4bd0f5a3147 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.ltr.worker.js
@@ -6,34 +6,28 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textAlign end with ltr is the right edge");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'end';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textAlign end with ltr is the right edge");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html
index cabc85e5594..b0d0b66a9ca 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.html
@@ -10,35 +10,28 @@
<script>
-var t = async_test("textAlign end with rtl is the left edge");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'rtl';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'rtl';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'end';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign end with rtl is the left edge");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js
index b177d0e9617..b3e62d85380 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.end.rtl.worker.js
@@ -6,34 +6,28 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textAlign end with rtl is the left edge");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'rtl';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'rtl';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'end';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textAlign end with rtl is the left edge");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.html
index 0166b9b309d..563596d7571 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("textAlign left is the left of the first em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'left';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'left';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign left is the left of the first em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js
index be8a4e188e2..c7dc0bed42b 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.left.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textAlign left is the left of the first em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'left';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'left';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textAlign left is the left of the first em square (not the bounding box)");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.html
index 011f6dccd9c..227a8f981f9 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("textAlign right is the right of the last em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'right';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign right is the right of the last em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js
index 43f00dcb95c..58fe85e0b76 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.right.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textAlign right is the right of the last em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'right';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textAlign right is the right of the last em square (not the bounding box)");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html
index b15fb4c0481..bd7e69451d5 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.html
@@ -10,35 +10,28 @@
<script>
-var t = async_test("textAlign start with ltr is the left edge");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'start';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign start with ltr is the left edge");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js
index a3204938c0a..c0793d9af6f 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.ltr.worker.js
@@ -6,34 +6,28 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textAlign start with ltr is the left edge");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'start';
+ ctx.fillText('DD', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textAlign start with ltr is the left edge");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html
index c8a0de20b67..cadc8a46449 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.html
@@ -10,35 +10,28 @@
<script>
-var t = async_test("textAlign start with rtl is the right edge");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'rtl';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'rtl';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'start';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textAlign start with rtl is the right edge");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js
index ad03dd5c469..ed706c287a1 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.align.start.rtl.worker.js
@@ -6,34 +6,28 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textAlign start with rtl is the right edge");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'rtl';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 100, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'rtl';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'start';
+ ctx.fillText('DD', 100, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textAlign start with rtl is the right edge");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html
index 6cb550fde7a..ff72b3219df 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'alphabetic';
- ctx.fillText('CC', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'alphabetic';
+ ctx.fillText('CC', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js
index ed2c3f88b02..a98a5863d92 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.alphabetic.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'alphabetic';
- ctx.fillText('CC', 0, 37.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'alphabetic';
+ ctx.fillText('CC', 0, 37.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html
index 398b4a9b0a5..f75a94243d6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("textBaseline bottom is the bottom of the em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'bottom';
- ctx.fillText('CC', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'bottom';
+ ctx.fillText('CC', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textBaseline bottom is the bottom of the em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js
index 727376391f7..30f60c574b9 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.bottom.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textBaseline bottom is the bottom of the em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'bottom';
- ctx.fillText('CC', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'bottom';
+ ctx.fillText('CC', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textBaseline bottom is the bottom of the em square (not the bounding box)");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html
index 0b822834328..a29db783859 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'hanging';
- ctx.fillText('CC', 0, 12.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'hanging';
+ ctx.fillText('CC', 0, 12.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js
index fca74d69381..638506a2792 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.hanging.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'hanging';
- ctx.fillText('CC', 0, 12.5);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'hanging';
+ ctx.fillText('CC', 0, 12.5);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html
index c996444b860..6bda1b4f307 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'ideographic';
- ctx.fillText('CC', 0, 31.25);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'ideographic';
+ ctx.fillText('CC', 0, 31.25);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js
index 0ffa6fe299a..7c682fb5f14 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.ideographic.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'ideographic';
- ctx.fillText('CC', 0, 31.25);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'ideographic';
+ ctx.fillText('CC', 0, 31.25);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html
index 911da8bef2c..b0186e6549a 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("textBaseline middle is the middle of the em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'middle';
- ctx.fillText('CC', 0, 25);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'middle';
+ ctx.fillText('CC', 0, 25);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textBaseline middle is the middle of the em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js
index eeb32eafc11..c373ab6c729 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.middle.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textBaseline middle is the middle of the em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'middle';
- ctx.fillText('CC', 0, 25);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'middle';
+ ctx.fillText('CC', 0, 25);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textBaseline middle is the middle of the em square (not the bounding box)");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.html
index 56b5bb7d83c..163d27dec76 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.html
@@ -10,34 +10,27 @@
<script>
-var t = async_test("textBaseline top is the top of the em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'top';
- ctx.fillText('CC', 0, 0);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'top';
+ ctx.fillText('CC', 0, 0);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
-});
+}, "textBaseline top is the top of the em square (not the bounding box)");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js
index d4341c6900a..effc4418c34 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.baseline.top.worker.js
@@ -6,33 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("textBaseline top is the top of the em square (not the bounding box)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'top';
- ctx.fillText('CC', 0, 0);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'top';
+ ctx.fillText('CC', 0, 0);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 5,45, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,45, 0,255,0,255, 2);
+ t.done();
+}, "textBaseline top is the top of the em square (not the bounding box)");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html
index ae21607af95..2dca5a75efa 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.html
@@ -10,31 +10,24 @@
<script>
-var t = async_test("fillText handles maxWidth based on line size, not bounding box size");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('DD', 0, 37.5, 100);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('DD', 0, 37.5, 100);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "fillText handles maxWidth based on line size, not bounding box size");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js
index 240bffeed41..adcb45faaae 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.bound.worker.js
@@ -6,30 +6,24 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("fillText handles maxWidth based on line size, not bounding box size");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('DD', 0, 37.5, 100);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('DD', 0, 37.5, 100);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ t.done();
+}, "fillText handles maxWidth based on line size, not bounding box size");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html
index 259fdc738ac..fa7277ed7ab 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.html
@@ -10,31 +10,24 @@
<script>
-var t = async_test("fillText works on @font-face fonts");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.fillText('EEEE', -50, 37.5, 40);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#0f0';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#f00';
+ ctx.fillText('EEEE', -50, 37.5, 40);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "fillText works on @font-face fonts");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js
index 7aa3f470f5f..8df519b7d1c 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.fontface.worker.js
@@ -6,30 +6,24 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("fillText works on @font-face fonts");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.fillText('EEEE', -50, 37.5, 40);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#0f0';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#f00';
+ ctx.fillText('EEEE', -50, 37.5, 40);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ t.done();
+}, "fillText works on @font-face fonts");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html
index 0056d75126c..a789a84dbe7 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.html
@@ -1,7 +1,6 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>OffscreenCanvas test: 2d.text.draw.fill.maxWidth.zero</title>
-<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js
index 65e67cce2c7..7dea281f98a 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.zero.worker.js
@@ -1,4 +1,3 @@
-// META: timeout=long
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.draw.fill.maxWidth.zero
// Description:fillText handles maxWidth correctly
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.html
index f8d9085f55b..5d4f93b4f35 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.html
@@ -10,31 +10,24 @@
<script>
-var t = async_test("");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html
index da552d11cc9..82c9b31e662 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.html
@@ -10,31 +10,24 @@
<script>
-var t = async_test("@font-face fonts should work even if they are not used in the page");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "@font-face fonts should work even if they are not used in the page");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js
index 3bfb0be8188..628cb395069 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.notinpage.worker.js
@@ -6,30 +6,24 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("@font-face fonts should work even if they are not used in the page");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ t.done();
+}, "@font-face fonts should work even if they are not used in the page");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html
index 3a14462bcd6..1a6ba78fb9f 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.html
@@ -10,32 +10,27 @@
<script>
-var t = async_test("Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
-});
+ await new Promise(resolve => t.step_timeout(resolve, 500));
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+
+}, "Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js
index f2210a3239e..7567c095580 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.repeat.worker.js
@@ -6,31 +6,27 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+
+ await new Promise(resolve => t.step_timeout(resolve, 500));
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ t.done();
+}, "Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.)");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js
index 1c7e727c5ea..02257f0a06e 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.fontface.worker.js
@@ -6,30 +6,24 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ t.done();
+}, "");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.html
index fa2fa86c36e..55828fc72c7 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.html
@@ -10,29 +10,22 @@
<script>
-var t = async_test("U+0020 is rendered the correct size (1em wide)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', -100, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E EE', -100, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "U+0020 is rendered the correct size (1em wide)");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js
index 75cacf9ca28..ef09925c551 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.basic.worker.js
@@ -6,28 +6,22 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("U+0020 is rendered the correct size (1em wide)");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', -100, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E EE', -100, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ t.done();
+}, "U+0020 is rendered the correct size (1em wide)");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html
index 060f41bb976..f00a187e23e 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.html
@@ -10,30 +10,23 @@
<script>
-var t = async_test("Space characters at the end of a line are NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('EE ', 100, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'right';
+ ctx.fillText('EE ', 100, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
-});
+}, "Space characters at the end of a line are NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js
index 4c436006e3b..9a9afa1e745 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.end.worker.js
@@ -6,29 +6,23 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Space characters at the end of a line are NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('EE ', 100, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'right';
+ ctx.fillText('EE ', 100, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
+ t.done();
+}, "Space characters at the end of a line are NOT collapsed");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html
index 18289e51edf..792abe4deb6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.html
@@ -10,29 +10,22 @@
<script>
-var t = async_test("Non-space characters are not converted to U+0020 and collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E\x0b EE', -150, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E\x0b EE', -150, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "Non-space characters are not converted to U+0020 and collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js
index 2aa7f67a575..a12c2f9a484 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.nonspace.worker.js
@@ -6,28 +6,22 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Non-space characters are not converted to U+0020 and collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E\x0b EE', -150, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E\x0b EE', -150, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ t.done();
+}, "Non-space characters are not converted to U+0020 and collapsed");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html
index 41bca9bce6a..83e89270f98 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.html
@@ -10,29 +10,22 @@
<script>
-var t = async_test("Space characters are converted to U+0020, and are NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
-});
+}, "Space characters are converted to U+0020, and are NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js
index a662955bec0..bbf9e684be7 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.other.worker.js
@@ -6,28 +6,22 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Space characters are converted to U+0020, and are NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
+ t.done();
+}, "Space characters are converted to U+0020, and are NOT collapsed");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html
index 6a2b305b747..5fc96ffd7d6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.html
@@ -10,29 +10,22 @@
<script>
-var t = async_test("Space characters are converted to U+0020, and are NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E EE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
-});
+}, "Space characters are converted to U+0020, and are NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js
index b1e8d8e872d..e5ab7b67f4a 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.space.worker.js
@@ -6,28 +6,22 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Space characters are converted to U+0020, and are NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E EE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 255,0,0,255, 2);
+ t.done();
+}, "Space characters are converted to U+0020, and are NOT collapsed");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html
index cadb1c3b60a..c07994360d6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.html
@@ -10,29 +10,22 @@
<script>
-var t = async_test("Space characters at the start of a line are NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText(' EE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 255,0,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText(' EE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 255,0,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
-});
+}, "Space characters at the start of a line are NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js
index d7ae819eea3..20fec7801f8 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.draw.space.collapse.start.worker.js
@@ -6,28 +6,22 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Space characters at the start of a line are NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText(' EE', 0, 37.5);
- _assertPixelApprox(canvas, 25,25, 255,0,0,255, 2);
- _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText(' EE', 0, 37.5);
+ _assertPixelApprox(canvas, 25,25, 255,0,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
+ t.done();
+}, "Space characters at the start of a line are NOT collapsed");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html
index 3a99352295c..d16b175ad67 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.html
@@ -37,7 +37,6 @@ t.step(function() {
test_word_spacing('inherit');
test_word_spacing('normal');
test_word_spacing('none');
-
t.done();
});
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js
index 271858500e9..06207b2c6c6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.invalid.spacing.worker.js
@@ -33,7 +33,6 @@ t.step(function() {
test_word_spacing('inherit');
test_word_spacing('normal');
test_word_spacing('none');
-
t.done();
});
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.html
index 46cd55a5caf..63169486bad 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.html
@@ -1,16 +1,16 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>OffscreenCanvas test: 2d.text.drawing.style.letterSpacing.measure.absolute</title>
+<title>OffscreenCanvas test: 2d.text.drawing.style.letterSpacing.measure</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
-<h1>2d.text.drawing.style.letterSpacing.measure.absolute</h1>
-<p class="desc">Testing letter spacing with absolute length</p>
+<h1>2d.text.drawing.style.letterSpacing.measure</h1>
+<p class="desc">Testing letter spacing with different length units</p>
<script>
-var t = async_test("Testing letter spacing with absolute length");
+var t = async_test("Testing letter spacing with different length units");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
@@ -23,6 +23,7 @@ t.step(function() {
_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
var width_normal = ctx.measureText('Hello World').width;
+ var ch_width = width_normal / 11;
function test_letter_spacing(value, difference_spacing, epsilon) {
ctx.letterSpacing = value;
@@ -38,11 +39,14 @@ t.step(function() {
// and the third value is the acceptable differencee for the length change,
// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
test_cases = [['3px', 33, 0.1],
- ['5px', 55, 0.1],
- ['-2px', -22, 0.1],
- ['1in', 1056, 0.1],
- ['-0.1cm', -41.65, 0.2],
- ['-0.6mm', -24,95, 0.2]]
+ ['5px', 55, 0.1],
+ ['-2px', -22, 0.1],
+ ['1em', 110, 0.1],
+ ['-0.1em', -11, 0.1],
+ ['1in', 1056, 0.1],
+ ['1ch', 11 * ch_width, 0.1],
+ ['-0.1cm', -41.65, 0.2],
+ ['-0.6mm', -24,95, 0.2]]
for (const test_case of test_cases) {
test_letter_spacing(test_case[0], test_case[1], test_case[2]);
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html
deleted file mode 100644
index 296c929dc31..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>OffscreenCanvas test: 2d.text.drawing.style.letterSpacing.measure.relative</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-
-<h1>2d.text.drawing.style.letterSpacing.measure.relative</h1>
-<p class="desc">Testing letter spacing with font-relative length</p>
-
-
-<script>
-var t = async_test("Testing letter spacing with font-relative length");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
-
- var canvas = new OffscreenCanvas(100, 50);
- var ctx = canvas.getContext('2d');
-
- _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
- _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
- ctx.font = "10px monospace";
- var width_normal = ctx.measureText('Hello World').width;
- var ch_width = width_normal / 11;
-
- function test_letter_spacing(value, difference_spacing, epsilon) {
- ctx.letterSpacing = value;
- _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
- _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
- width_with_letter_spacing = ctx.measureText('Hello World').width;
- assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
- }
-
- // The first value is the letter Spacing to be set, the second value the
- // change in length of string 'Hello World', note that there are 11 letters
- // in 'hello world', so the length difference is always letterSpacing * 11.
- // and the third value is the acceptable differencee for the length change.
- test_cases = [['1em', 110, 0.1],
- ['-0.1em', -11, 0.1],
- ['1ch', 11 * ch_width, 0.1]]
-
- for (const test_case of test_cases) {
- test_letter_spacing(test_case[0], test_case[1], test_case[2]);
- }
- t.done();
-
-});
-</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js
deleted file mode 100644
index d6afa71abaf..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.relative.worker.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.text.drawing.style.letterSpacing.measure.relative
-// Description:Testing letter spacing with font-relative length
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-var t = async_test("Testing letter spacing with font-relative length");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
-
- var canvas = new OffscreenCanvas(100, 50);
- var ctx = canvas.getContext('2d');
-
- _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
- _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
- ctx.font = "10px monospace";
- var width_normal = ctx.measureText('Hello World').width;
- var ch_width = width_normal / 11;
-
- function test_letter_spacing(value, difference_spacing, epsilon) {
- ctx.letterSpacing = value;
- _assertSame(ctx.letterSpacing, value, "ctx.letterSpacing", "value");
- _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
- width_with_letter_spacing = ctx.measureText('Hello World').width;
- assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
- }
-
- // The first value is the letter Spacing to be set, the second value the
- // change in length of string 'Hello World', note that there are 11 letters
- // in 'hello world', so the length difference is always letterSpacing * 11.
- // and the third value is the acceptable differencee for the length change.
- test_cases = [['1em', 110, 0.1],
- ['-0.1em', -11, 0.1],
- ['1ch', 11 * ch_width, 0.1]]
-
- for (const test_case of test_cases) {
- test_letter_spacing(test_case[0], test_case[1], test_case[2]);
- }
- t.done();
-});
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.js
index 8c82aebb3c0..585166fca01 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.absolute.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.letterSpacing.measure.worker.js
@@ -1,12 +1,12 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.text.drawing.style.letterSpacing.measure.absolute
-// Description:Testing letter spacing with absolute length
+// OffscreenCanvas test in a worker:2d.text.drawing.style.letterSpacing.measure
+// Description:Testing letter spacing with different length units
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Testing letter spacing with absolute length");
+var t = async_test("Testing letter spacing with different length units");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
@@ -19,6 +19,7 @@ t.step(function() {
_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
var width_normal = ctx.measureText('Hello World').width;
+ var ch_width = width_normal / 11;
function test_letter_spacing(value, difference_spacing, epsilon) {
ctx.letterSpacing = value;
@@ -34,11 +35,14 @@ t.step(function() {
// and the third value is the acceptable differencee for the length change,
// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
test_cases = [['3px', 33, 0.1],
- ['5px', 55, 0.1],
- ['-2px', -22, 0.1],
- ['1in', 1056, 0.1],
- ['-0.1cm', -41.65, 0.2],
- ['-0.6mm', -24,95, 0.2]]
+ ['5px', 55, 0.1],
+ ['-2px', -22, 0.1],
+ ['1em', 110, 0.1],
+ ['-0.1em', -11, 0.1],
+ ['1in', 1056, 0.1],
+ ['1ch', 11 * ch_width, 0.1],
+ ['-0.1cm', -41.65, 0.2],
+ ['-0.6mm', -24,95, 0.2]]
for (const test_case of test_cases) {
test_letter_spacing(test_case[0], test_case[1], test_case[2]);
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html
index ca50f13a69b..48a592b839a 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.html
@@ -32,7 +32,6 @@ t.step(function() {
test_word_spacing(NaN);
test_word_spacing(Infinity);
test_word_spacing(-Infinity);
-
t.done();
});
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js
index 801b8b5c73b..4cf20b28c07 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.nonfinite.spacing.worker.js
@@ -28,7 +28,6 @@ t.step(function() {
test_word_spacing(NaN);
test_word_spacing(Infinity);
test_word_spacing(-Infinity);
-
t.done();
});
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html
index 3fc07d54788..52b34deaab9 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.html
@@ -75,7 +75,6 @@ t.step(function() {
ctx.textRendering = "auto";
_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
-
t.done();
});
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js
index c37f2e342f2..a4381963f7b 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.textRendering.settings.worker.js
@@ -71,7 +71,6 @@ t.step(function() {
ctx.textRendering = "auto";
_assertSame(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"");
-
t.done();
});
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.html
index 458f12b008f..69bf6e979c6 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.html
@@ -1,16 +1,16 @@
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>OffscreenCanvas test: 2d.text.drawing.style.wordSpacing.measure.absolute</title>
+<title>OffscreenCanvas test: 2d.text.drawing.style.wordSpacing.measure</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
-<h1>2d.text.drawing.style.wordSpacing.measure.absolute</h1>
-<p class="desc">Testing if word spacing is working properly with absolute length</p>
+<h1>2d.text.drawing.style.wordSpacing.measure</h1>
+<p class="desc">Testing word spacing with different length units</p>
<script>
-var t = async_test("Testing if word spacing is working properly with absolute length");
+var t = async_test("Testing word spacing with different length units");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
@@ -23,6 +23,7 @@ t.step(function() {
_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
var width_normal = ctx.measureText('Hello World, again').width;
+ var ch_width = width_normal / 18;
function test_word_spacing(value, difference_spacing, epsilon) {
ctx.wordSpacing = value;
@@ -38,11 +39,14 @@ t.step(function() {
// and the third value is the acceptable differencee for the length change,
// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
test_cases = [['3px', 6, 0.1],
- ['5px', 10, 0.1],
- ['-2px', -4, 0.1],
- ['1in', 192, 0.1],
- ['-0.1cm', -7.57, 0.2],
- ['-0.6mm', -4.54, 0.2]]
+ ['5px', 10, 0.1],
+ ['-2px', -4, 0.1],
+ ['1em', 20, 0.1],
+ ['-0.5em', -10, 0.1],
+ ['1in', 192, 0.1],
+ ['1ch', 2 * ch_width, 0.1],
+ ['-0.1cm', -7.57, 0.2],
+ ['-0.6mm', -4.54, 0.2]]
for (const test_case of test_cases) {
test_word_spacing(test_case[0], test_case[1], test_case[2]);
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html
deleted file mode 100644
index 11988ae157d..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
-<title>OffscreenCanvas test: 2d.text.drawing.style.wordSpacing.measure.relative</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/html/canvas/resources/canvas-tests.js"></script>
-
-<h1>2d.text.drawing.style.wordSpacing.measure.relative</h1>
-<p class="desc">Testing if word spacing is working properly with font-relative length</p>
-
-
-<script>
-var t = async_test("Testing if word spacing is working properly with font-relative length");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
-
- var canvas = new OffscreenCanvas(100, 50);
- var ctx = canvas.getContext('2d');
-
- _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
- _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
- ctx.font = "10px monospace";
- var width_normal = ctx.measureText('Hello World, again').width;
- var ch_width = width_normal / 18;
-
- function test_word_spacing(value, difference_spacing, epsilon) {
- ctx.wordSpacing = value;
- _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
- _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
- width_with_word_spacing = ctx.measureText('Hello World, again').width;
- assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
- }
-
- // The first value is the word Spacing to be set, the second value the
- // change in length of string 'Hello World', note that there are 2 words
- // in 'Hello World, again', so the length difference is always wordSpacing * 2.
- // and the third value is the acceptable differencee for the length change.
- test_cases = [['1em', 20, 0.1],
- ['-0.5em', -10, 0.1],
- ['1ch', 2 * ch_width, 0.1]]
-
- for (const test_case of test_cases) {
- test_word_spacing(test_case[0], test_case[1], test_case[2]);
- }
- t.done();
-
-});
-</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js
deleted file mode 100644
index f5295e915e8..00000000000
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.relative.worker.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.text.drawing.style.wordSpacing.measure.relative
-// Description:Testing if word spacing is working properly with font-relative length
-// Note:
-
-importScripts("/resources/testharness.js");
-importScripts("/html/canvas/resources/canvas-tests.js");
-
-var t = async_test("Testing if word spacing is working properly with font-relative length");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
-
- var canvas = new OffscreenCanvas(100, 50);
- var ctx = canvas.getContext('2d');
-
- _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
- _assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
- ctx.font = "10px monospace";
- var width_normal = ctx.measureText('Hello World, again').width;
- var ch_width = width_normal / 18;
-
- function test_word_spacing(value, difference_spacing, epsilon) {
- ctx.wordSpacing = value;
- _assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
- _assertSame(ctx.wordSpacing, value, "ctx.wordSpacing", "value");
- width_with_word_spacing = ctx.measureText('Hello World, again').width;
- assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
- }
-
- // The first value is the word Spacing to be set, the second value the
- // change in length of string 'Hello World', note that there are 2 words
- // in 'Hello World, again', so the length difference is always wordSpacing * 2.
- // and the third value is the acceptable differencee for the length change.
- test_cases = [['1em', 20, 0.1],
- ['-0.5em', -10, 0.1],
- ['1ch', 2 * ch_width, 0.1]]
-
- for (const test_case of test_cases) {
- test_word_spacing(test_case[0], test_case[1], test_case[2]);
- }
- t.done();
-});
-done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.js
index 36d1fefc23d..d899b8c3282 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.absolute.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.drawing.style.wordSpacing.measure.worker.js
@@ -1,12 +1,12 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
-// OffscreenCanvas test in a worker:2d.text.drawing.style.wordSpacing.measure.absolute
-// Description:Testing if word spacing is working properly with absolute length
+// OffscreenCanvas test in a worker:2d.text.drawing.style.wordSpacing.measure
+// Description:Testing word spacing with different length units
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Testing if word spacing is working properly with absolute length");
+var t = async_test("Testing word spacing with different length units");
var t_pass = t.done.bind(t);
var t_fail = t.step_func(function(reason) {
throw reason;
@@ -19,6 +19,7 @@ t.step(function() {
_assertSame(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'");
_assertSame(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'");
var width_normal = ctx.measureText('Hello World, again').width;
+ var ch_width = width_normal / 18;
function test_word_spacing(value, difference_spacing, epsilon) {
ctx.wordSpacing = value;
@@ -34,11 +35,14 @@ t.step(function() {
// and the third value is the acceptable differencee for the length change,
// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
test_cases = [['3px', 6, 0.1],
- ['5px', 10, 0.1],
- ['-2px', -4, 0.1],
- ['1in', 192, 0.1],
- ['-0.1cm', -7.57, 0.2],
- ['-0.6mm', -4.54, 0.2]]
+ ['5px', 10, 0.1],
+ ['-2px', -4, 0.1],
+ ['1em', 20, 0.1],
+ ['-0.5em', -10, 0.1],
+ ['1in', 192, 0.1],
+ ['1ch', 2 * ch_width, 0.1],
+ ['-0.1cm', -7.57, 0.2],
+ ['-0.6mm', -4.54, 0.2]]
for (const test_case of test_cases) {
test_word_spacing(test_case[0], test_case[1], test_case[2]);
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html
index 96b37702c48..105efc07948 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.html
@@ -6,50 +6,45 @@
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.text.measure.actualBoundingBox</h1>
-<p class="desc">Testing actualBoundingBox for OffscreenCanvas</p>
+<p class="desc">Testing actualBoundingBox</p>
<script>
-var t = async_test("Testing actualBoundingBox for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- ctx.baseline = 'alphabetic'
- // Some platforms may return '-0'.
- _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
- // Different platforms may render text slightly different.
- _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
- _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
- _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
-
- _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
- _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
- _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
- _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
- _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
- _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
- _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
- _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
-
- _assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
- _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
- _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
- _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
- }).then(t_pass, t_fail);
-
-});
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ ctx.baseline = 'alphabetic'
+ // Different platforms may render text slightly different.
+ // Values that are nominally expected to be zero might actually vary by a
+ // pixel or so if the UA accounts for antialiasing at glyph edges, so we
+ // allow a slight deviation.
+ _assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1");
+ _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
+ _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
+ _assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1");
+
+ _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
+ _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
+ _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
+ _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
+ _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
+ _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
+ _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
+ _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
+
+ _assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
+
+}, "Testing actualBoundingBox");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js
index b16ed415ca8..c3d18ff8786 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.actualBoundingBox.worker.js
@@ -1,50 +1,46 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.actualBoundingBox
-// Description:Testing actualBoundingBox for OffscreenCanvas
+// Description:Testing actualBoundingBox
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Testing actualBoundingBox for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- ctx.baseline = 'alphabetic'
- // Some platforms may return '-0'.
- _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0");
- // Different platforms may render text slightly different.
- _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
- _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
- _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0");
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ ctx.baseline = 'alphabetic'
+ // Different platforms may render text slightly different.
+ // Values that are nominally expected to be zero might actually vary by a
+ // pixel or so if the UA accounts for antialiasing at glyph edges, so we
+ // allow a slight deviation.
+ _assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1");
+ _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50");
+ _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35");
+ _assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1");
- _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
- _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
- _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
- _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
- _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
- _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
- _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
- _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
+ _assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48");
+ _assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52");
+ _assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75");
+ _assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80");
+ _assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35");
+ _assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40");
+ _assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12");
+ _assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15");
- _assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0");
- _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
- _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
- _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
- }).then(t_pass, t_fail);
-});
+ _assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85");
+ _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37");
+ t.done();
+}, "Testing actualBoundingBox");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.html
index f3bedd41ef5..2eec005cb84 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.html
@@ -6,43 +6,36 @@
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.text.measure.advances</h1>
-<p class="desc">Testing width advances for OffscreenCanvas</p>
+<p class="desc">Testing width advances</p>
<script>
-var t = async_test("Testing width advances for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // Some platforms may return '-0'.
- _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
- // Different platforms may render text slightly different.
- _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
- _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
- _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
- _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ // Some platforms may return '-0'.
+ _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
+ // Different platforms may render text slightly different.
+ _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
+ _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
+ _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
+ _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
- var tm = ctx.measureText('Hello');
- _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
- }).then(t_pass, t_fail);
+ var tm = ctx.measureText('Hello');
+ _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
-});
+}, "Testing width advances");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.worker.js
index 55c744aaeb1..4b02f06f2dd 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.advances.worker.js
@@ -1,43 +1,37 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.advances
-// Description:Testing width advances for OffscreenCanvas
+// Description:Testing width advances
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Testing width advances for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // Some platforms may return '-0'.
- _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
- // Different platforms may render text slightly different.
- _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
- _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
- _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
- _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ // Some platforms may return '-0'.
+ _assertSame(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0");
+ // Different platforms may render text slightly different.
+ _assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36");
+ _assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58");
+ _assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70");
+ _assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80");
- var tm = ctx.measureText('Hello');
- _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
- _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
- }).then(t_pass, t_fail);
-});
+ var tm = ctx.measureText('Hello');
+ _assertSame(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]");
+ _assertSame(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]");
+ t.done();
+}, "Testing width advances");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.html
index 09fd0f40822..9d0cc1268d5 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.html
@@ -6,36 +6,29 @@
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.text.measure.baselines</h1>
-<p class="desc">Testing baselines for OffscreenCanvas</p>
+<p class="desc">Testing baselines</p>
<script>
-var t = async_test("Testing baselines for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- _assertSame(Math.abs(ctx.measureText('A').alphabeticBaseline), 0, "Math.abs(ctx.measureText('A').alphabeticBaseline)", "0");
- _assertSame(ctx.measureText('A').ideographicBaseline, 6.25, "ctx.measureText('A').ideographicBaseline", "6.25");
- _assertSame(ctx.measureText('A').hangingBaseline, 25, "ctx.measureText('A').hangingBaseline", "25");
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(Math.abs(ctx.measureText('A').alphabeticBaseline), 0, "Math.abs(ctx.measureText('A').alphabeticBaseline)", "0");
+ _assertSame(ctx.measureText('A').ideographicBaseline, 6.25, "ctx.measureText('A').ideographicBaseline", "6.25");
+ _assertSame(ctx.measureText('A').hangingBaseline, 25, "ctx.measureText('A').hangingBaseline", "25");
- _assertSame(Math.abs(ctx.measureText('ABCD').alphabeticBaseline), 0, "Math.abs(ctx.measureText('ABCD').alphabeticBaseline)", "0");
- _assertSame(ctx.measureText('ABCD').ideographicBaseline, 6.25, "ctx.measureText('ABCD').ideographicBaseline", "6.25");
- _assertSame(ctx.measureText('ABCD').hangingBaseline, 25, "ctx.measureText('ABCD').hangingBaseline", "25");
- }).then(t_pass, t_fail);
+ _assertSame(Math.abs(ctx.measureText('ABCD').alphabeticBaseline), 0, "Math.abs(ctx.measureText('ABCD').alphabeticBaseline)", "0");
+ _assertSame(ctx.measureText('ABCD').ideographicBaseline, 6.25, "ctx.measureText('ABCD').ideographicBaseline", "6.25");
+ _assertSame(ctx.measureText('ABCD').hangingBaseline, 25, "ctx.measureText('ABCD').hangingBaseline", "25");
-});
+}, "Testing baselines");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js
index c6288a569da..ddb48f4fe02 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.baselines.worker.js
@@ -1,36 +1,30 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.baselines
-// Description:Testing baselines for OffscreenCanvas
+// Description:Testing baselines
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Testing baselines for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- _assertSame(Math.abs(ctx.measureText('A').alphabeticBaseline), 0, "Math.abs(ctx.measureText('A').alphabeticBaseline)", "0");
- _assertSame(ctx.measureText('A').ideographicBaseline, 6.25, "ctx.measureText('A').ideographicBaseline", "6.25");
- _assertSame(ctx.measureText('A').hangingBaseline, 25, "ctx.measureText('A').hangingBaseline", "25");
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(Math.abs(ctx.measureText('A').alphabeticBaseline), 0, "Math.abs(ctx.measureText('A').alphabeticBaseline)", "0");
+ _assertSame(ctx.measureText('A').ideographicBaseline, 6.25, "ctx.measureText('A').ideographicBaseline", "6.25");
+ _assertSame(ctx.measureText('A').hangingBaseline, 25, "ctx.measureText('A').hangingBaseline", "25");
- _assertSame(Math.abs(ctx.measureText('ABCD').alphabeticBaseline), 0, "Math.abs(ctx.measureText('ABCD').alphabeticBaseline)", "0");
- _assertSame(ctx.measureText('ABCD').ideographicBaseline, 6.25, "ctx.measureText('ABCD').ideographicBaseline", "6.25");
- _assertSame(ctx.measureText('ABCD').hangingBaseline, 25, "ctx.measureText('ABCD').hangingBaseline", "25");
- }).then(t_pass, t_fail);
-});
+ _assertSame(Math.abs(ctx.measureText('ABCD').alphabeticBaseline), 0, "Math.abs(ctx.measureText('ABCD').alphabeticBaseline)", "0");
+ _assertSame(ctx.measureText('ABCD').ideographicBaseline, 6.25, "ctx.measureText('ABCD').ideographicBaseline", "6.25");
+ _assertSame(ctx.measureText('ABCD').hangingBaseline, 25, "ctx.measureText('ABCD').hangingBaseline", "25");
+ t.done();
+}, "Testing baselines");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html
index 6a93bac04aa..a92ce58a00e 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.html
@@ -6,36 +6,29 @@
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.text.measure.emHeights</h1>
-<p class="desc">Testing emHeights for OffscreenCanvas</p>
+<p class="desc">Testing emHeights</p>
<script>
-var t = async_test("Testing emHeights for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
- _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
- _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
+ _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
+ _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
- _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
- _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
- _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
- }).then(t_pass, t_fail);
+ _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
+ _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
+ _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
-});
+}, "Testing emHeights");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js
index 1dd5f7ce48c..68db6de88d0 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.emHeights.worker.js
@@ -1,36 +1,30 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.emHeights
-// Description:Testing emHeights for OffscreenCanvas
+// Description:Testing emHeights
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Testing emHeights for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
- _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
- _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5");
+ _assertSame(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5");
+ _assertSame(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50");
- _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
- _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
- _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
- }).then(t_pass, t_fail);
-});
+ _assertSame(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5");
+ _assertSame(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5");
+ _assertSame(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50");
+ t.done();
+}, "Testing emHeights");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.html
new file mode 100644
index 00000000000..cb8b0c558db
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>OffscreenCanvas test: 2d.text.measure.fontBoundingBox.ahem</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/html/canvas/resources/canvas-tests.js"></script>
+
+<h1>2d.text.measure.fontBoundingBox.ahem</h1>
+<p class="desc">Testing fontBoundingBox for font ahem</p>
+
+
+<script>
+promise_test(async t => {
+
+ var canvas = new OffscreenCanvas(100, 50);
+ var ctx = canvas.getContext('2d');
+
+ var f = new FontFace("Ahem", "url('/fonts/Ahem.ttf')");
+ f.load();
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px Ahem';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 40, "ctx.measureText('A').fontBoundingBoxAscent", "40");
+ _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10");
+ _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 40, "ctx.measureText('ABCD').fontBoundingBoxAscent", "40");
+ _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10");
+
+}, "Testing fontBoundingBox for font ahem");
+</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.js
new file mode 100644
index 00000000000..255bcd108aa
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.ahem.worker.js
@@ -0,0 +1,27 @@
+// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
+// OffscreenCanvas test in a worker:2d.text.measure.fontBoundingBox.ahem
+// Description:Testing fontBoundingBox for font ahem
+// Note:
+
+importScripts("/resources/testharness.js");
+importScripts("/html/canvas/resources/canvas-tests.js");
+
+promise_test(async t => {
+
+ var canvas = new OffscreenCanvas(100, 50);
+ var ctx = canvas.getContext('2d');
+
+ var f = new FontFace("Ahem", "url('/fonts/Ahem.ttf')");
+ f.load();
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px Ahem';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ _assertSame(ctx.measureText('A').fontBoundingBoxAscent, 40, "ctx.measureText('A').fontBoundingBoxAscent", "40");
+ _assertSame(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10");
+ _assertSame(ctx.measureText('ABCD').fontBoundingBoxAscent, 40, "ctx.measureText('ABCD').fontBoundingBoxAscent", "40");
+ _assertSame(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10");
+ t.done();
+}, "Testing fontBoundingBox for font ahem");
+done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html
index f36bfd6f9d2..e3278033426 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.html
@@ -6,35 +6,28 @@
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.text.measure.fontBoundingBox</h1>
-<p class="desc">Testing fontBoundingBox for OffscreenCanvas</p>
+<p class="desc">Testing fontBoundingBox measurements</p>
<script>
-var t = async_test("Testing fontBoundingBox for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
+ assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
+ assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
- }).then(t_pass, t_fail);
+ assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
+ assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
-});
+}, "Testing fontBoundingBox measurements");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js
index cfbfe77e6bd..ca272760fd4 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.fontBoundingBox.worker.js
@@ -1,35 +1,29 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.fontBoundingBox
-// Description:Testing fontBoundingBox for OffscreenCanvas
+// Description:Testing fontBoundingBox measurements
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Testing fontBoundingBox for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
+ assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
+ assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
- }).then(t_pass, t_fail);
-});
+ assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
+ assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
+ t.done();
+}, "Testing fontBoundingBox measurements");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.html
index fa47879836b..fea19040833 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.html
@@ -6,33 +6,26 @@
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.text.measure.width.basic</h1>
-<p class="desc">The width of character is same as font used for OffscreenCanvas</p>
+<p class="desc">The width of character is same as font used</p>
<script>
-var t = async_test("The width of character is same as font used for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
- _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
- _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
+ _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
+ _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
- ctx.font = '100px CanvasTest';
- _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
- }).then(t_pass, t_fail);
+ ctx.font = '100px CanvasTest';
+ _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
-});
+}, "The width of character is same as font used");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js
index 265843ae66e..866ad8b3c5c 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.basic.worker.js
@@ -1,33 +1,27 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.width.basic
-// Description:The width of character is same as font used for OffscreenCanvas
+// Description:The width of character is same as font used
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("The width of character is same as font used for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
- _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
- _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50");
+ _assertSame(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100");
+ _assertSame(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200");
- ctx.font = '100px CanvasTest';
- _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
- }).then(t_pass, t_fail);
-});
+ ctx.font = '100px CanvasTest';
+ _assertSame(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100");
+ t.done();
+}, "The width of character is same as font used");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.html
index 7d412008b04..11bd0294330 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.html
@@ -6,28 +6,21 @@
<script src="/html/canvas/resources/canvas-tests.js"></script>
<h1>2d.text.measure.width.empty</h1>
-<p class="desc">The empty string has zero width for OffscreenCanvas</p>
+<p class="desc">The empty string has zero width</p>
<script>
-var t = async_test("The empty string has zero width for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
- }).then(t_pass, t_fail);
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
-});
+}, "The empty string has zero width");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js
index 68bba39e9d2..6fb89c5ba73 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.empty.worker.js
@@ -1,28 +1,22 @@
// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py.
// OffscreenCanvas test in a worker:2d.text.measure.width.empty
-// Description:The empty string has zero width for OffscreenCanvas
+// Description:The empty string has zero width
// Note:
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("The empty string has zero width for OffscreenCanvas");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
- }).then(t_pass, t_fail);
-});
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0");
+ t.done();
+}, "The empty string has zero width");
done();
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.html b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.html
index 6ef4255b834..38d5084298a 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.html
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.html
@@ -10,30 +10,23 @@
<script>
-var t = async_test("Space characters are converted to U+0020 and NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
- _assertSame(ctx.measureText('A B').width, 200, "ctx.measureText('A B').width", "200");
- _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 650, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "650");
- _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
+ document.fonts.add(f);
+ await document.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
+ _assertSame(ctx.measureText('A B').width, 200, "ctx.measureText('A B').width", "200");
+ _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 650, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "650");
+ _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
- _assertSame(ctx.measureText(' AB').width, 150, "ctx.measureText(' AB').width", "150");
- _assertSame(ctx.measureText('AB ').width, 150, "ctx.measureText('AB ').width", "150");
- }).then(t_pass, t_fail);
+ _assertSame(ctx.measureText(' AB').width, 150, "ctx.measureText(' AB').width", "150");
+ _assertSame(ctx.measureText('AB ').width, 150, "ctx.measureText('AB ').width", "150");
-});
+}, "Space characters are converted to U+0020 and NOT collapsed");
</script>
diff --git a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js
index 5ee4ee3ff74..d832feec5fc 100644
--- a/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js
+++ b/tests/wpt/tests/html/canvas/offscreen/text/2d.text.measure.width.space.worker.js
@@ -6,29 +6,23 @@
importScripts("/resources/testharness.js");
importScripts("/html/canvas/resources/canvas-tests.js");
-var t = async_test("Space characters are converted to U+0020 and NOT collapsed");
-var t_pass = t.done.bind(t);
-var t_fail = t.step_func(function(reason) {
- throw reason;
-});
-t.step(function() {
+promise_test(async t => {
var canvas = new OffscreenCanvas(100, 50);
var ctx = canvas.getContext('2d');
var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
- _assertSame(ctx.measureText('A B').width, 200, "ctx.measureText('A B').width", "200");
- _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 650, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "650");
- _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
+ self.fonts.add(f);
+ await self.fonts.ready;
+ ctx.font = '50px CanvasTest';
+ _assertSame(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150");
+ _assertSame(ctx.measureText('A B').width, 200, "ctx.measureText('A B').width", "200");
+ _assertSame(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 650, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "650");
+ _assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200");
- _assertSame(ctx.measureText(' AB').width, 150, "ctx.measureText(' AB').width", "150");
- _assertSame(ctx.measureText('AB ').width, 150, "ctx.measureText('AB ').width", "150");
- }).then(t_pass, t_fail);
-});
+ _assertSame(ctx.measureText(' AB').width, 150, "ctx.measureText(' AB').width", "150");
+ _assertSame(ctx.measureText('AB ').width, 150, "ctx.measureText('AB ').width", "150");
+ t.done();
+}, "Space characters are converted to U+0020 and NOT collapsed");
done();
diff --git a/tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml b/tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml
index c3818ebc76e..2ad5197d34c 100644
--- a/tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml
+++ b/tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml
@@ -9,10 +9,7 @@
2d.clearRect: "drawing-rectangles-to-the-canvas"
2d.fillRect: "drawing-rectangles-to-the-canvas"
2d.strokeRect: "drawing-rectangles-to-the-canvas"
-2d.text.draw: "drawing-text-to-the-canvas"
-2d.text.draw.space.basic: "drawing-text-to-the-canvas"
-2d.text.draw.space.collapse: "drawing-text-to-the-canvas"
-2d.text.measure: "drawing-text-to-the-canvas"
+2d.text: "text"
2d.fillStyle: "fill-and-stroke-styles"
2d.gradient: "fill-and-stroke-styles"
2d.pattern: "fill-and-stroke-styles"
@@ -22,16 +19,6 @@
2d.reset: "reset"
2d.shadow: "shadows"
2d.filter: "filters"
-2d.text.align: "text-styles"
-2d.text.baseline: "text-styles"
-2d.text.font: "text-styles"
-2d.text.draw.baseline: "text-styles"
-2d.text.draw.space: "text-styles"
-2d.text.measure.width.space: "text-styles"
-2d.text.draw.space.collapse.end: "text-styles"
-2d.text.draw.space.collapse.other: "text-styles"
-2d.text.draw.space.collapse.space: "text-styles"
-2d.text.draw.space.collapse.start: "text-styles"
2d.state: "the-canvas-state"
2d.scrollPathIntoView: "scroll"
2d.video: "video"
diff --git a/tests/wpt/tests/html/canvas/tools/name2dir.yaml b/tests/wpt/tests/html/canvas/tools/name2dir.yaml
index d6871f28529..a56fc2ff488 100644
--- a/tests/wpt/tests/html/canvas/tools/name2dir.yaml
+++ b/tests/wpt/tests/html/canvas/tools/name2dir.yaml
@@ -6,10 +6,7 @@
2d.clearRect: "drawing-rectangles-to-the-canvas"
2d.fillRect: "drawing-rectangles-to-the-canvas"
2d.strokeRect: "drawing-rectangles-to-the-canvas"
-2d.text.draw: "drawing-text-to-the-canvas"
-2d.text.draw.space.basic: "drawing-text-to-the-canvas"
-2d.text.draw.space.collapse: "drawing-text-to-the-canvas"
-2d.text.measure: "drawing-text-to-the-canvas"
+2d.text: "text"
2d.fillStyle: "fill-and-stroke-styles"
2d.gradient: "fill-and-stroke-styles"
2d.pattern: "fill-and-stroke-styles"
@@ -21,16 +18,6 @@
2d.shadow: "shadows"
2d.filter: "filters"
2d.layer: "layers"
-2d.text.align: "text-styles"
-2d.text.baseline: "text-styles"
-2d.text.font: "text-styles"
-2d.text.draw.baseline: "text-styles"
-2d.text.draw.space: "text-styles"
-2d.text.measure.width.space: "text-styles"
-2d.text.draw.space.collapse.end: "text-styles"
-2d.text.draw.space.collapse.other: "text-styles"
-2d.text.draw.space.collapse.space: "text-styles"
-2d.text.draw.space.collapse.start: "text-styles"
2d.state: "the-canvas-state"
2d.scrollPathIntoView: "scroll"
2d.video: "video"
diff --git a/tests/wpt/tests/html/canvas/tools/templates/testharness_element.html b/tests/wpt/tests/html/canvas/tools/templates/testharness_element.html
index b6bda2835e2..56cde7936a9 100644
--- a/tests/wpt/tests/html/canvas/tools/templates/testharness_element.html
+++ b/tests/wpt/tests/html/canvas/tools/templates/testharness_element.html
@@ -5,6 +5,16 @@
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
+{% if fonts %}
+<style>
+{% for font in fonts %}
+@font-face {
+ font-family: {{ font }};
+ src: url("/fonts/{{ font }}.ttf");
+}
+{% endfor %}
+</style>
+{% endif %}
<body class="show_output">
<h1>{{ name }}</h1>
@@ -14,6 +24,11 @@
{% else %}
{% endif %}
+{% if fonts and not font_unused_in_dom %}
+{% for font in fonts %}
+<span style="font-family: {{ font }}; position: absolute; visibility: hidden">A</span>
+{% endfor %}
+{% endif %}
<p class="output">Actual output:</p>
<canvas id="c" class="output" width="{{ size[0] }}" height="{{ size[1] }}"
{{- canvas}}><p class="fallback">FAIL (fallback content)</p></canvas>
diff --git a/tests/wpt/tests/html/canvas/tools/yaml/offscreen/text.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml
index b66ae4f8206..88a9a281c40 100644
--- a/tests/wpt/tests/html/canvas/tools/yaml/offscreen/text.yaml
+++ b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml
@@ -5,31 +5,26 @@
ctx.font = '20PX SERIF';
@assert ctx.font === '20px serif'; @moz-todo
- t.done();
- name: 2d.text.font.parse.tiny
code: |
ctx.font = '1px sans-serif';
@assert ctx.font === '1px sans-serif';
- t.done();
- name: 2d.text.font.parse.complex
code: |
ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif';
@assert ['italic small-caps 12px "Unknown Font", sans-serif', 'italic small-caps 12px Unknown Font, sans-serif'].includes(ctx.font);
- t.done();
- name: 2d.text.font.parse.complex2
code: |
ctx.font = 'small-caps italic 400 12px/2 "Unknown Font #2", sans-serif';
@assert ctx.font === 'italic small-caps 12px "Unknown Font #2", sans-serif';
- t.done();
- name: 2d.text.font.parse.family
code: |
ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","';
@assert ctx.font === '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","';
- t.done();
# TODO:
# 2d.text.font.parse.size.absolute
@@ -41,12 +36,28 @@
# 2d.text.font.parse.size.length.absolute
# in cm mm pt pc
+- name: 2d.text.font.parse.size.percentage
+ canvas: 'style="font-size: 144px"'
+ canvasType: ['HtmlCanvas']
+ code: |
+ ctx.font = '50% serif';
+ @assert ctx.font === '72px serif'; @moz-todo
+ canvas.setAttribute('style', 'font-size: 100px');
+ @assert ctx.font === '72px serif'; @moz-todo
+
+- name: 2d.text.font.parse.size.percentage.default
+ canvasType: ['HtmlCanvas']
+ code: |
+ var canvas2 = document.createElement('canvas');
+ var ctx2 = canvas2.getContext('2d');
+ ctx2.font = '1000% serif';
+ @assert ctx2.font === '100px serif'; @moz-todo
+
- name: 2d.text.font.parse.system
desc: System fonts must be computed to explicit values
code: |
ctx.font = 'message-box';
@assert ctx.font !== 'message-box';
- t.done();
- name: 2d.text.font.parse.invalid
code: |
@@ -96,18 +107,24 @@
ctx.font = '20px serif';
ctx.font = '1em serif; background: green; margin: 10px';
@assert ctx.font === '20px serif';
- t.done();
- name: 2d.text.font.default
code: |
@assert ctx.font === '10px sans-serif';
- t.done();
- name: 2d.text.font.relative_size
+ canvasType: ['HTMLCanvas']
+ code: |
+ var canvas2 = document.createElement('canvas');
+ var ctx2 = canvas2.getContext('2d');
+ ctx2.font = '1em sans-serif';
+ @assert ctx2.font === '10px sans-serif';
+
+- name: 2d.text.font.relative_size
+ canvasType: ['OffscreenCanvas', 'Worker']
code: |
ctx.font = '1em sans-serif';
@assert ctx.font === '10px sans-serif';
- t.done();
- name: 2d.text.align.valid
code: |
@@ -125,7 +142,6 @@
ctx.textAlign = 'center';
@assert ctx.textAlign === 'center';
- t.done();
- name: 2d.text.align.invalid
code: |
@@ -144,13 +160,10 @@
ctx.textAlign = 'start';
ctx.textAlign = 'end\0';
@assert ctx.textAlign === 'start';
- t.done();
- name: 2d.text.align.default
code: |
@assert ctx.textAlign === 'start';
- t.done();
-
- name: 2d.text.baseline.valid
code: |
@@ -171,7 +184,6 @@
ctx.textBaseline = 'bottom';
@assert ctx.textBaseline === 'bottom';
- t.done();
- name: 2d.text.baseline.invalid
code: |
@@ -190,12 +202,268 @@
ctx.textBaseline = 'top';
ctx.textBaseline = 'middle\0';
@assert ctx.textBaseline === 'top';
- t.done();
- name: 2d.text.baseline.default
code: |
@assert ctx.textBaseline === 'alphabetic';
- t.done();
+
+- name: 2d.text.draw.baseline.top
+ desc: textBaseline top is the top of the em square (not the bounding box)
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'top';
+ ctx.fillText('CC', 0, 0);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
+ expected: green
+ variants: &load-font-variant-definition
+ _HtmlCanvas:
+ canvasType: ['HtmlCanvas']
+ load_font: |-
+ await document.fonts.ready;
+ _OffscreenCanvas:
+ canvasType: ['OffscreenCanvas', 'Worker']
+ load_font: |-
+ var f = new FontFace("{{ fonts[0] }}", "url('/fonts/{{ fonts[0] }}.ttf')");
+ f.load();
+ {% set root = 'self' if canvas_type == 'worker' else 'document' %}
+ {{ root }}.fonts.add(f);
+ await {{ root }}.fonts.ready;
+
+- name: 2d.text.draw.baseline.bottom
+ desc: textBaseline bottom is the bottom of the em square (not the bounding box)
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'bottom';
+ ctx.fillText('CC', 0, 50);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.draw.baseline.middle
+ desc: textBaseline middle is the middle of the em square (not the bounding box)
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'middle';
+ ctx.fillText('CC', 0, 25);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.draw.baseline.alphabetic
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'alphabetic';
+ ctx.fillText('CC', 0, 37.5);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.draw.baseline.ideographic
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'ideographic';
+ ctx.fillText('CC', 0, 31.25);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255; @moz-todo
+ @assert pixel 95,45 ==~ 0,255,0,255; @moz-todo
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.draw.baseline.hanging
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textBaseline = 'hanging';
+ ctx.fillText('CC', 0, 12.5);
+ @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo
+ @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.draw.space.collapse.space
+ desc: Space characters are converted to U+0020, and are NOT collapsed
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E EE', 0, 37.5);
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 255,0,0,255;
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.draw.space.collapse.other
+ desc: Space characters are converted to U+0020, and are NOT collapsed
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 255,0,0,255;
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.draw.space.collapse.start
+ desc: Space characters at the start of a line are NOT collapsed
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText(' EE', 0, 37.5);
+ @assert pixel 25,25 ==~ 255,0,0,255; @moz-todo
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.draw.space.collapse.end
+ desc: Space characters at the end of a line are NOT collapsed
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'right';
+ ctx.fillText('EE ', 100, 37.5);
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 255,0,0,255;
+ expected: green
+ variants: *load-font-variant-definition
+
+- name: 2d.text.measure.width.space
+ desc: Space characters are converted to U+0020 and NOT collapsed
+ test_type: promise
+ fonts:
+ - CanvasTest
+ code: |
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ @assert ctx.measureText('A B').width === 150;
+ @assert ctx.measureText('A B').width === 200;
+ @assert ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width === 650;
+ @assert ctx.measureText('A \x0b B').width >= 200;
+
+ @assert ctx.measureText(' AB').width === 150;
+ @assert ctx.measureText('AB ').width === 150;
+ variants: *load-font-variant-definition
+
+- name: 2d.text.drawing.style.measure.rtl.text
+ desc: Measurement should follow canvas direction instead text direction
+ code: |
+ metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
+ @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
+
+ metrics = ctx.measureText('hello');
+ @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
+
+- name: 2d.text.drawing.style.measure.textAlign
+ desc: Measurement should be related to textAlignment
+ code: |
+ ctx.textAlign = "right";
+ metrics = ctx.measureText('hello');
+ @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight;
+
+ ctx.textAlign = "left"
+ metrics = ctx.measureText('hello');
+ @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
+
+- name: 2d.text.drawing.style.measure.direction
+ desc: Measurement should follow text direction
+ code: |
+ ctx.direction = "ltr";
+ metrics = ctx.measureText('hello');
+ @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
+
+ ctx.direction = "rtl";
+ metrics = ctx.measureText('hello');
+ @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight;
- name: 2d.text.draw.fill.basic
desc: fillText draws filled text
@@ -207,7 +475,6 @@
ctx.strokeStyle = '#f00';
ctx.font = '35px Arial, sans-serif';
ctx.fillText('PASS', 5, 35);
- t.done();
expected: &passfill |
size 100 50
cr.set_source_rgb(0, 0, 0)
@@ -239,7 +506,6 @@
@assert pixel 50,25 == 0,255,0,255;
@assert pixel 5,45 == 0,255,0,255;
- t.done();
expected: green
- name: 2d.text.draw.fill.rtl
@@ -252,8 +518,8 @@
ctx.strokeStyle = '#f00';
ctx.font = '35px Arial, sans-serif';
ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35);
- t.done();
expected: *passfill
+
- name: 2d.text.draw.fill.maxWidth.large
desc: fillText handles maxWidth correctly
manual:
@@ -263,8 +529,8 @@
ctx.fillStyle = '#0f0';
ctx.font = '35px Arial, sans-serif';
ctx.fillText('PASS', 5, 35, 200);
- t.done();
expected: *passfill
+
- name: 2d.text.draw.fill.maxWidth.small
desc: fillText handles maxWidth correctly
code: |
@@ -274,7 +540,6 @@
ctx.font = '35px Arial, sans-serif';
ctx.fillText('fail fail fail fail fail', -100, 35, 90);
_assertGreen(ctx, 100, 50);
- t.done();
expected: green
- name: 2d.text.draw.fill.maxWidth.zero
@@ -286,9 +551,7 @@
ctx.font = '35px Arial, sans-serif';
ctx.fillText('fail fail fail fail fail', 5, 35, 0);
_assertGreen(ctx, 100, 50);
- t.done();
expected: green
- timeout: long
- name: 2d.text.draw.fill.maxWidth.negative
desc: fillText handles maxWidth correctly
@@ -299,7 +562,6 @@
ctx.font = '35px Arial, sans-serif';
ctx.fillText('fail fail fail fail fail', 5, 35, -1);
_assertGreen(ctx, 100, 50);
- t.done();
expected: green
- name: 2d.text.draw.fill.maxWidth.NaN
@@ -311,7 +573,6 @@
ctx.font = '35px Arial, sans-serif';
ctx.fillText('fail fail fail fail fail', 5, 35, NaN);
_assertGreen(ctx, 100, 50);
- t.done();
expected: green
- name: 2d.text.draw.stroke.basic
@@ -325,7 +586,6 @@
ctx.lineWidth = 1;
ctx.font = '35px Arial, sans-serif';
ctx.strokeText('PASS', 5, 35);
- t.done();
expected: |
size 100 50
cr.set_source_rgb(0, 0, 0)
@@ -359,7 +619,6 @@
@assert pixel 50,25 == 0,255,0,255;
@assert pixel 5,45 == 0,255,0,255;
- t.done();
expected: green
- name: 2d.text.draw.kern.consistent
@@ -376,7 +635,6 @@
ctx.fillText('ToToToToToToTo', -50, 45);
ctx.strokeText('VAVAVAVAVAVAVA', -50, 25);
ctx.strokeText('ToToToToToToTo', -50, 45);
- t.done();
expected: green
# CanvasTest is:
@@ -396,746 +654,468 @@
- name: 2d.text.draw.fill.maxWidth.fontface
desc: fillText works on @font-face fonts
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.fillText('EEEE', -50, 37.5, 40);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#0f0';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#f00';
+ ctx.fillText('EEEE', -50, 37.5, 40);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.fill.maxWidth.bound
desc: fillText handles maxWidth based on line size, not bounding box size
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('DD', 0, 37.5, 100);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('DD', 0, 37.5, 100);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.fontface
fonts:
- CanvasTest
+ test_type: promise
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.fontface.repeat
desc: Draw with the font immediately, then wait a bit until and draw again. (This
crashes some version of WebKit.)
+ test_type: promise
fonts:
- CanvasTest
- fonthack: 0
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- ctx.fillText('AA', 0, 50);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ font_unused_in_dom: true
+ code: |
+ {{ load_font }}
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+
+ await new Promise(resolve => t.step_timeout(resolve, 500));
+ ctx.fillText('AA', 0, 50);
+ _assertPixelApprox(canvas, 5,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 95,5, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2);
+ _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2);
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.fontface.notinpage
desc: '@font-face fonts should work even if they are not used in the page'
+ test_type: promise
fonts:
- CanvasTest
- fonthack: 0
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo
- @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo
- @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo
- @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.baseline.top
- desc: textBaseline top is the top of the em square (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'top';
- ctx.fillText('CC', 0, 0);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.baseline.bottom
- desc: textBaseline bottom is the bottom of the em square (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'bottom';
- ctx.fillText('CC', 0, 50);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.baseline.middle
- desc: textBaseline middle is the middle of the em square (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'middle';
- ctx.fillText('CC', 0, 25);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.baseline.alphabetic
- fonts:
- - CanvasTest
+ font_unused_in_dom: true
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'alphabetic';
- ctx.fillText('CC', 0, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.baseline.ideographic
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'ideographic';
- ctx.fillText('CC', 0, 31.25);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255; @moz-todo
- @assert pixel 95,45 ==~ 0,255,0,255; @moz-todo
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.baseline.hanging
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'hanging';
- ctx.fillText('CC', 0, 12.5);
- @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo
- @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '67px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('AA', 0, 50);
+ @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo
+ @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo
+ @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo
+ @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.align.left
desc: textAlign left is the left of the first em square (not the bounding box)
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'left';
- ctx.fillText('DD', 0, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'left';
+ ctx.fillText('DD', 0, 37.5);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.align.right
desc: textAlign right is the right of the last em square (not the bounding box)
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('DD', 100, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'right';
+ ctx.fillText('DD', 100, 37.5);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.align.start.ltr
desc: textAlign start with ltr is the left edge
+ canvas: dir="ltr"
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 0, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ {% if canvas_type != 'htmlcanvas' %}
+ ctx.direction = 'ltr';
+ {% endif %}
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'start';
+ ctx.fillText('DD', 0, 37.5);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.align.start.rtl
desc: textAlign start with rtl is the right edge
+ canvas: dir="rtl"
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'rtl';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 100, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ {% if canvas_type != 'htmlcanvas' %}
+ ctx.direction = 'rtl';
+ {% endif %}
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'start';
+ ctx.fillText('DD', 100, 37.5);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.align.end.ltr
desc: textAlign end with ltr is the right edge
+ test_type: promise
+ canvas: dir="ltr"
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 100, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ {% if canvas_type != 'htmlcanvas' %}
+ ctx.direction = 'ltr';
+ {% endif %}
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'end';
+ ctx.fillText('DD', 100, 37.5);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.align.end.rtl
desc: textAlign end with rtl is the left edge
+ canvas: dir="rtl"
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'rtl';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 0, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ {% if canvas_type != 'htmlcanvas' %}
+ ctx.direction = 'rtl';
+ {% endif %}
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'end';
+ ctx.fillText('DD', 0, 37.5);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.align.center
desc: textAlign center is the center of the em squares (not the bounding box)
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'center';
- ctx.fillText('DD', 50, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.textAlign = 'center';
+ ctx.fillText('DD', 50, 37.5);
+ @assert pixel 5,5 ==~ 0,255,0,255;
+ @assert pixel 95,5 ==~ 0,255,0,255;
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
+ @assert pixel 5,45 ==~ 0,255,0,255;
+ @assert pixel 95,45 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.space.basic
desc: U+0020 is rendered the correct size (1em wide)
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', -100, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.space.collapse.space
- desc: Space characters are converted to U+0020, and are NOT collapsed
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', 0, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 255,0,0,255;
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.space.collapse.other
- desc: Space characters are converted to U+0020, and are NOT collapsed
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 255,0,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E EE', -100, 37.5);
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.draw.space.collapse.nonspace
desc: Non-space characters are not converted to U+0020 and collapsed
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E\x0b EE', -150, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.space.collapse.start
- desc: Space characters at the start of a line are NOT collapsed
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText(' EE', 0, 37.5);
- @assert pixel 25,25 ==~ 255,0,0,255; @moz-todo
- @assert pixel 75,25 ==~ 0,255,0,255;
- }).then(t_pass, t_fail);
- expected: green
-
-- name: 2d.text.draw.space.collapse.end
- desc: Space characters at the end of a line are NOT collapsed
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('EE ', 100, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 255,0,0,255;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.fillStyle = '#f00';
+ ctx.fillRect(0, 0, 100, 50);
+ ctx.fillStyle = '#0f0';
+ ctx.fillText('E\x0b EE', -150, 37.5);
+ @assert pixel 25,25 ==~ 0,255,0,255;
+ @assert pixel 75,25 ==~ 0,255,0,255;
expected: green
+ variants: *load-font-variant-definition
- name: 2d.text.measure.width.basic
- desc: The width of character is same as font used for OffscreenCanvas
+ desc: The width of character is same as font used
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- @assert ctx.measureText('A').width === 50;
- @assert ctx.measureText('AA').width === 100;
- @assert ctx.measureText('ABCD').width === 200;
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ @assert ctx.measureText('A').width === 50;
+ @assert ctx.measureText('AA').width === 100;
+ @assert ctx.measureText('ABCD').width === 200;
- ctx.font = '100px CanvasTest';
- @assert ctx.measureText('A').width === 100;
- }).then(t_pass, t_fail);
+ ctx.font = '100px CanvasTest';
+ @assert ctx.measureText('A').width === 100;
+ variants: *load-font-variant-definition
- name: 2d.text.measure.width.empty
- desc: The empty string has zero width for OffscreenCanvas
+ desc: The empty string has zero width
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- @assert ctx.measureText("").width === 0;
- }).then(t_pass, t_fail);
-
-- name: 2d.text.measure.width.space
- desc: Space characters are converted to U+0020 and NOT collapsed
- fonts:
- - CanvasTest
- code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- @assert ctx.measureText('A B').width === 150;
- @assert ctx.measureText('A B').width === 200;
- @assert ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width === 650;
- @assert ctx.measureText('A \x0b B').width >= 200;
-
- @assert ctx.measureText(' AB').width === 150;
- @assert ctx.measureText('AB ').width === 150;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ @assert ctx.measureText("").width === 0;
+ variants: *load-font-variant-definition
- name: 2d.text.measure.advances
- desc: Testing width advances for OffscreenCanvas
+ desc: Testing width advances
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // Some platforms may return '-0'.
- @assert Math.abs(ctx.measureText('Hello').advances[0]) === 0;
- // Different platforms may render text slightly different.
- @assert ctx.measureText('Hello').advances[1] >= 36;
- @assert ctx.measureText('Hello').advances[2] >= 58;
- @assert ctx.measureText('Hello').advances[3] >= 70;
- @assert ctx.measureText('Hello').advances[4] >= 80;
-
- var tm = ctx.measureText('Hello');
- @assert ctx.measureText('Hello').advances[0] === tm.advances[0];
- @assert ctx.measureText('Hello').advances[1] === tm.advances[1];
- @assert ctx.measureText('Hello').advances[2] === tm.advances[2];
- @assert ctx.measureText('Hello').advances[3] === tm.advances[3];
- @assert ctx.measureText('Hello').advances[4] === tm.advances[4];
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ // Some platforms may return '-0'.
+ @assert Math.abs(ctx.measureText('Hello').advances[0]) === 0;
+ // Different platforms may render text slightly different.
+ @assert ctx.measureText('Hello').advances[1] >= 36;
+ @assert ctx.measureText('Hello').advances[2] >= 58;
+ @assert ctx.measureText('Hello').advances[3] >= 70;
+ @assert ctx.measureText('Hello').advances[4] >= 80;
+
+ var tm = ctx.measureText('Hello');
+ @assert ctx.measureText('Hello').advances[0] === tm.advances[0];
+ @assert ctx.measureText('Hello').advances[1] === tm.advances[1];
+ @assert ctx.measureText('Hello').advances[2] === tm.advances[2];
+ @assert ctx.measureText('Hello').advances[3] === tm.advances[3];
+ @assert ctx.measureText('Hello').advances[4] === tm.advances[4];
+ variants: *load-font-variant-definition
- name: 2d.text.measure.actualBoundingBox
- desc: Testing actualBoundingBox for OffscreenCanvas
+ desc: Testing actualBoundingBox
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- ctx.baseline = 'alphabetic'
- // Some platforms may return '-0'.
- @assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) === 0;
- // Different platforms may render text slightly different.
- @assert ctx.measureText('A').actualBoundingBoxRight >= 50;
- @assert ctx.measureText('A').actualBoundingBoxAscent >= 35;
- @assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) === 0;
-
- @assert ctx.measureText('D').actualBoundingBoxLeft >= 48;
- @assert ctx.measureText('D').actualBoundingBoxLeft <= 52;
- @assert ctx.measureText('D').actualBoundingBoxRight >= 75;
- @assert ctx.measureText('D').actualBoundingBoxRight <= 80;
- @assert ctx.measureText('D').actualBoundingBoxAscent >= 35;
- @assert ctx.measureText('D').actualBoundingBoxAscent <= 40;
- @assert ctx.measureText('D').actualBoundingBoxDescent >= 12;
- @assert ctx.measureText('D').actualBoundingBoxDescent <= 15;
-
- @assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) === 0;
- @assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200;
- @assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85;
- @assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ ctx.baseline = 'alphabetic'
+ // Different platforms may render text slightly different.
+ // Values that are nominally expected to be zero might actually vary by a
+ // pixel or so if the UA accounts for antialiasing at glyph edges, so we
+ // allow a slight deviation.
+ @assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1;
+ @assert ctx.measureText('A').actualBoundingBoxRight >= 50;
+ @assert ctx.measureText('A').actualBoundingBoxAscent >= 35;
+ @assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1;
+
+ @assert ctx.measureText('D').actualBoundingBoxLeft >= 48;
+ @assert ctx.measureText('D').actualBoundingBoxLeft <= 52;
+ @assert ctx.measureText('D').actualBoundingBoxRight >= 75;
+ @assert ctx.measureText('D').actualBoundingBoxRight <= 80;
+ @assert ctx.measureText('D').actualBoundingBoxAscent >= 35;
+ @assert ctx.measureText('D').actualBoundingBoxAscent <= 40;
+ @assert ctx.measureText('D').actualBoundingBoxDescent >= 12;
+ @assert ctx.measureText('D').actualBoundingBoxDescent <= 15;
+
+ @assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1;
+ @assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200;
+ @assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85;
+ @assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37;
+ variants: *load-font-variant-definition
- name: 2d.text.measure.fontBoundingBox
- desc: Testing fontBoundingBox for OffscreenCanvas
+ desc: Testing fontBoundingBox measurements
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
-
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
+ assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
+ assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
+
+ assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
+ assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
+ variants: *load-font-variant-definition
+
+- name: 2d.text.measure.fontBoundingBox.ahem
+ desc: Testing fontBoundingBox for font ahem
+ test_type: promise
+ fonts:
+ - Ahem
+ code: |
+ {{ load_font }}
+ ctx.font = '50px Ahem';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ @assert ctx.measureText('A').fontBoundingBoxAscent === 40;
+ @assert ctx.measureText('A').fontBoundingBoxDescent === 10;
+ @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 40;
+ @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 10;
+ variants: *load-font-variant-definition
+
- name: 2d.text.measure.emHeights
- desc: Testing emHeights for OffscreenCanvas
+ desc: Testing emHeights
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- @assert ctx.measureText('A').emHeightAscent === 37.5;
- @assert ctx.measureText('A').emHeightDescent === 12.5;
- @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 50;
-
- @assert ctx.measureText('ABCD').emHeightAscent === 37.5;
- @assert ctx.measureText('ABCD').emHeightDescent === 12.5;
- @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ @assert ctx.measureText('A').emHeightAscent === 37.5;
+ @assert ctx.measureText('A').emHeightDescent === 12.5;
+ @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 50;
+
+ @assert ctx.measureText('ABCD').emHeightAscent === 37.5;
+ @assert ctx.measureText('ABCD').emHeightDescent === 12.5;
+ @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50;
+ variants: *load-font-variant-definition
- name: 2d.text.measure.baselines
- desc: Testing baselines for OffscreenCanvas
+ desc: Testing baselines
+ test_type: promise
fonts:
- CanvasTest
code: |
- var f = new FontFace("CanvasTest", "url('/fonts/CanvasTest.ttf')");
- let fonts = (self.fonts ? self.fonts : document.fonts);
- f.load();
- fonts.add(f);
- fonts.ready.then(function() {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- @assert Math.abs(ctx.measureText('A').alphabeticBaseline) === 0;
- @assert ctx.measureText('A').ideographicBaseline === 6.25;
- @assert ctx.measureText('A').hangingBaseline === 25;
-
- @assert Math.abs(ctx.measureText('ABCD').alphabeticBaseline) === 0;
- @assert ctx.measureText('ABCD').ideographicBaseline === 6.25;
- @assert ctx.measureText('ABCD').hangingBaseline === 25;
- }).then(t_pass, t_fail);
+ {{ load_font }}
+ ctx.font = '50px CanvasTest';
+ ctx.direction = 'ltr';
+ ctx.align = 'left'
+ @assert Math.abs(ctx.measureText('A').alphabeticBaseline) === 0;
+ @assert ctx.measureText('A').ideographicBaseline === 6.25;
+ @assert ctx.measureText('A').hangingBaseline === 25;
+
+ @assert Math.abs(ctx.measureText('ABCD').alphabeticBaseline) === 0;
+ @assert ctx.measureText('ABCD').ideographicBaseline === 6.25;
+ @assert ctx.measureText('ABCD').hangingBaseline === 25;
+ variants: *load-font-variant-definition
- name: 2d.text.drawing.style.absolute.spacing
desc: Testing letter spacing and word spacing with absolute length
@@ -1160,7 +1140,6 @@
ctx.wordSpacing = '10PX';
@assert ctx.letterSpacing === '1px';
@assert ctx.wordSpacing === '10px';
- t.done();
- name: 2d.text.drawing.style.font-relative.spacing
desc: Testing letter spacing and word spacing with font-relative length
@@ -1177,7 +1156,6 @@
ctx.wordSpacing = '1ic';
@assert ctx.letterSpacing === '1ch';
@assert ctx.wordSpacing === '1ic';
- t.done();
- name: 2d.text.drawing.style.nonfinite.spacing
desc: Testing letter spacing and word spacing with nonfinite inputs
@@ -1193,8 +1171,6 @@
}
@nonfinite test_word_spacing(<0 NaN Infinity -Infinity>);
- t.done();
-
- name: 2d.text.drawing.style.invalid.spacing
desc: Testing letter spacing and word spacing with invalid units
code: |
@@ -1209,14 +1185,13 @@
}
@nonfinite test_word_spacing(< '0s' '1min' '1deg' '1pp' 'initial' 'inherit' 'normal' 'none'>);
- t.done();
-
-- name: 2d.text.drawing.style.letterSpacing.measure.absolute
- desc: Testing letter spacing with absolute length
+- name: 2d.text.drawing.style.letterSpacing.measure
+ desc: Testing letter spacing with different length units
code: |
@assert ctx.letterSpacing === '0px';
@assert ctx.wordSpacing === '0px';
var width_normal = ctx.measureText('Hello World').width;
+ var ch_width = width_normal / 11;
function test_letter_spacing(value, difference_spacing, epsilon) {
ctx.letterSpacing = value;
@@ -1232,53 +1207,26 @@
// and the third value is the acceptable differencee for the length change,
// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
test_cases = [['3px', 33, 0.1],
- ['5px', 55, 0.1],
- ['-2px', -22, 0.1],
- ['1in', 1056, 0.1],
- ['-0.1cm', -41.65, 0.2],
- ['-0.6mm', -24,95, 0.2]]
+ ['5px', 55, 0.1],
+ ['-2px', -22, 0.1],
+ ['1em', 110, 0.1],
+ ['-0.1em', -11, 0.1],
+ ['1in', 1056, 0.1],
+ ['1ch', 11 * ch_width, 0.1],
+ ['-0.1cm', -41.65, 0.2],
+ ['-0.6mm', -24,95, 0.2]]
for (const test_case of test_cases) {
test_letter_spacing(test_case[0], test_case[1], test_case[2]);
}
- t.done();
-- name: 2d.text.drawing.style.letterSpacing.measure.relative
- desc: Testing letter spacing with font-relative length
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
- ctx.font = "10px monospace";
- var width_normal = ctx.measureText('Hello World').width;
- var ch_width = width_normal / 11;
-
- function test_letter_spacing(value, difference_spacing, epsilon) {
- ctx.letterSpacing = value;
- @assert ctx.letterSpacing === value;
- @assert ctx.wordSpacing === '0px';
- width_with_letter_spacing = ctx.measureText('Hello World').width;
- assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
- }
-
- // The first value is the letter Spacing to be set, the second value the
- // change in length of string 'Hello World', note that there are 11 letters
- // in 'hello world', so the length difference is always letterSpacing * 11.
- // and the third value is the acceptable differencee for the length change.
- test_cases = [['1em', 110, 0.1],
- ['-0.1em', -11, 0.1],
- ['1ch', 11 * ch_width, 0.1]]
-
- for (const test_case of test_cases) {
- test_letter_spacing(test_case[0], test_case[1], test_case[2]);
- }
- t.done();
-
-- name: 2d.text.drawing.style.wordSpacing.measure.absolute
- desc: Testing if word spacing is working properly with absolute length
+- name: 2d.text.drawing.style.wordSpacing.measure
+ desc: Testing word spacing with different length units
code: |
@assert ctx.letterSpacing === '0px';
@assert ctx.wordSpacing === '0px';
var width_normal = ctx.measureText('Hello World, again').width;
+ var ch_width = width_normal / 18;
function test_word_spacing(value, difference_spacing, epsilon) {
ctx.wordSpacing = value;
@@ -1294,46 +1242,18 @@
// and the third value is the acceptable differencee for the length change,
// note that unit such as 1cm/1mm doesn't map to an exact pixel value.
test_cases = [['3px', 6, 0.1],
- ['5px', 10, 0.1],
- ['-2px', -4, 0.1],
- ['1in', 192, 0.1],
- ['-0.1cm', -7.57, 0.2],
- ['-0.6mm', -4.54, 0.2]]
+ ['5px', 10, 0.1],
+ ['-2px', -4, 0.1],
+ ['1em', 20, 0.1],
+ ['-0.5em', -10, 0.1],
+ ['1in', 192, 0.1],
+ ['1ch', 2 * ch_width, 0.1],
+ ['-0.1cm', -7.57, 0.2],
+ ['-0.6mm', -4.54, 0.2]]
for (const test_case of test_cases) {
test_word_spacing(test_case[0], test_case[1], test_case[2]);
}
- t.done();
-
-- name: 2d.text.drawing.style.wordSpacing.measure.relative
- desc: Testing if word spacing is working properly with font-relative length
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
- ctx.font = "10px monospace";
- var width_normal = ctx.measureText('Hello World, again').width;
- var ch_width = width_normal / 18;
-
- function test_word_spacing(value, difference_spacing, epsilon) {
- ctx.wordSpacing = value;
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === value;
- width_with_word_spacing = ctx.measureText('Hello World, again').width;
- assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
- }
-
- // The first value is the word Spacing to be set, the second value the
- // change in length of string 'Hello World', note that there are 2 words
- // in 'Hello World, again', so the length difference is always wordSpacing * 2.
- // and the third value is the acceptable differencee for the length change.
- test_cases = [['1em', 20, 0.1],
- ['-0.5em', -10, 0.1],
- ['1ch', 2 * ch_width, 0.1]]
-
- for (const test_case of test_cases) {
- test_word_spacing(test_case[0], test_case[1], test_case[2]);
- }
- t.done();
- name: 2d.text.drawing.style.letterSpacing.change.font
desc: Set letter spacing and word spacing to font dependent value and verify it works after font change.
@@ -1358,7 +1278,6 @@
ctx.letterSpacing = '0em';
width_normal = ctx.measureText('Hello World').width;
@assert width_with_spacing === width_normal + 220;
- t.done();
- name: 2d.text.drawing.style.wordSpacing.change.font
desc: Set word spacing and word spacing to font dependent value and verify it works after font change.
@@ -1383,7 +1302,6 @@
ctx.wordSpacing = '0em';
width_normal = ctx.measureText('Hello World, again').width;
@assert width_with_spacing === width_normal + 40;
- t.done();
- name: 2d.text.drawing.style.fontKerning
desc: Testing basic functionalities of fontKerning for canvas
@@ -1396,7 +1314,6 @@
@assert ctx.fontKerning === "none";
width_none = ctx.measureText("TAWATAVA").width;
@assert width_normal < width_none;
- t.done();
- name: 2d.text.drawing.style.fontKerning.with.uppercase
desc: Testing basic functionalities of fontKerning for canvas
@@ -1433,7 +1350,6 @@
ctx.fontKerning = "auto";
ctx.fontKerning = "NONE";
@assert ctx.fontKerning === "auto";
- t.done();
- name: 2d.text.drawing.style.fontVariant.settings
desc: Testing basic functionalities of fontVariant for canvas
@@ -1491,7 +1407,6 @@
ctx.fontVariantCaps = "titling-caps";
ctx.fontVariantCaps = "abcd";
@assert ctx.fontVariantCaps === "titling-caps";
- t.done();
- name: 2d.text.drawing.style.textRendering.settings
desc: Testing basic functionalities of textRendering in Canvas
@@ -1552,8 +1467,6 @@
ctx.textRendering = "auto";
@assert ctx.textRendering === "auto";
- t.done();
-
- name: 2d.text.drawing.style.fontStretch.settings
desc: Testing value setting of fontStretch in Canvas
code: |
@@ -1613,40 +1526,5 @@
ctx.fontStretch = "abcd";
@assert ctx.fontStretch === "ultra-expanded";
- t.done();
-
-- name: 2d.text.drawing.style.measure.rtl.text
- desc: Measurement should follow canvas direction instead text direction
- code: |
- metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
- @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
-
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
- t.done();
-
-- name: 2d.text.drawing.style.measure.textAlign
- desc: Measurement should be related to textAlignment
- code: |
- ctx.textAlign = "right";
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight;
-
- ctx.textAlign = "left"
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
- t.done();
-
-- name: 2d.text.drawing.style.measure.direction
- desc: Measurement should follow text direction
- code: |
- ctx.direction = "ltr";
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
-
- ctx.direction = "rtl";
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight;
- t.done();
-# TODO: shadows, alpha, composite, clip
+# TODO: shadows, alpha, composite, clip \ No newline at end of file
diff --git a/tests/wpt/tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml b/tests/wpt/tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml
deleted file mode 100644
index 5d050477af1..00000000000
--- a/tests/wpt/tests/html/canvas/tools/yaml/element/drawing-text-to-the-canvas.yaml
+++ /dev/null
@@ -1,1077 +0,0 @@
-- name: 2d.text.draw.fill.basic
- desc: fillText draws filled text
- manual:
- code: |
- ctx.fillStyle = '#000';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.strokeStyle = '#f00';
- ctx.font = '35px Arial, sans-serif';
- ctx.fillText('PASS', 5, 35);
- expected: &passfill |
- size 100 50
- cr.set_source_rgb(0, 0, 0)
- cr.rectangle(0, 0, 100, 50)
- cr.fill()
- cr.set_source_rgb(0, 1, 0)
- cr.select_font_face("Arial")
- cr.set_font_size(35)
- cr.translate(5, 35)
- cr.text_path("PASS")
- cr.fill()
-
-- name: 2d.text.draw.fill.unaffected
- desc: fillText does not start a new path or subpath
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
-
- ctx.moveTo(0, 0);
- ctx.lineTo(100, 0);
-
- ctx.font = '35px Arial, sans-serif';
- ctx.fillText('FAIL', 5, 35);
-
- ctx.lineTo(100, 50);
- ctx.lineTo(0, 50);
- ctx.fillStyle = '#0f0';
- ctx.fill();
-
- @assert pixel 50,25 == 0,255,0,255;
- @assert pixel 5,45 == 0,255,0,255;
- expected: green
-
-- name: 2d.text.draw.fill.rtl
- desc: fillText respects Right-To-Left Override characters
- manual:
- code: |
- ctx.fillStyle = '#000';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.strokeStyle = '#f00';
- ctx.font = '35px Arial, sans-serif';
- ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35);
- expected: *passfill
-- name: 2d.text.draw.fill.maxWidth.large
- desc: fillText handles maxWidth correctly
- manual:
- code: |
- ctx.fillStyle = '#000';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.font = '35px Arial, sans-serif';
- ctx.fillText('PASS', 5, 35, 200);
- expected: *passfill
-- name: 2d.text.draw.fill.maxWidth.small
- desc: fillText handles maxWidth correctly
- code: |
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.font = '35px Arial, sans-serif';
- ctx.fillText('fail fail fail fail fail', -100, 35, 90);
- _assertGreen(ctx, 100, 50);
- expected: green
-
-- name: 2d.text.draw.fill.maxWidth.zero
- desc: fillText handles maxWidth correctly
- code: |
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.font = '35px Arial, sans-serif';
- ctx.fillText('fail fail fail fail fail', 5, 35, 0);
- _assertGreen(ctx, 100, 50);
- expected: green
-
-- name: 2d.text.draw.fill.maxWidth.negative
- desc: fillText handles maxWidth correctly
- code: |
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.font = '35px Arial, sans-serif';
- ctx.fillText('fail fail fail fail fail', 5, 35, -1);
- _assertGreen(ctx, 100, 50);
- expected: green
-
-- name: 2d.text.draw.fill.maxWidth.NaN
- desc: fillText handles maxWidth correctly
- code: |
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.font = '35px Arial, sans-serif';
- ctx.fillText('fail fail fail fail fail', 5, 35, NaN);
- _assertGreen(ctx, 100, 50);
- expected: green
-
-- name: 2d.text.draw.stroke.basic
- desc: strokeText draws stroked text
- manual:
- code: |
- ctx.fillStyle = '#000';
- ctx.fillRect(0, 0, 100, 50);
- ctx.strokeStyle = '#0f0';
- ctx.fillStyle = '#f00';
- ctx.lineWidth = 1;
- ctx.font = '35px Arial, sans-serif';
- ctx.strokeText('PASS', 5, 35);
- expected: |
- size 100 50
- cr.set_source_rgb(0, 0, 0)
- cr.rectangle(0, 0, 100, 50)
- cr.fill()
- cr.set_source_rgb(0, 1, 0)
- cr.select_font_face("Arial")
- cr.set_font_size(35)
- cr.set_line_width(1)
- cr.translate(5, 35)
- cr.text_path("PASS")
- cr.stroke()
-
-- name: 2d.text.draw.stroke.unaffected
- desc: strokeText does not start a new path or subpath
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
-
- ctx.moveTo(0, 0);
- ctx.lineTo(100, 0);
-
- ctx.font = '35px Arial, sans-serif';
- ctx.strokeStyle = '#f00';
- ctx.strokeText('FAIL', 5, 35);
-
- ctx.lineTo(100, 50);
- ctx.lineTo(0, 50);
- ctx.fillStyle = '#0f0';
- ctx.fill();
-
- @assert pixel 50,25 == 0,255,0,255;
- @assert pixel 5,45 == 0,255,0,255;
- expected: green
-
-- name: 2d.text.draw.kern.consistent
- desc: Stroked and filled text should have exactly the same kerning so it overlaps
- manual:
- code: |
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.strokeStyle = '#0f0';
- ctx.lineWidth = 3;
- ctx.font = '20px Arial, sans-serif';
- ctx.fillText('VAVAVAVAVAVAVA', -50, 25);
- ctx.fillText('ToToToToToToTo', -50, 45);
- ctx.strokeText('VAVAVAVAVAVAVA', -50, 25);
- ctx.strokeText('ToToToToToToTo', -50, 45);
- expected: green
-
-# CanvasTest is:
-# A = (0, 0) to (1em, 0.75em) (above baseline)
-# B = (0, 0) to (1em, -0.25em) (below baseline)
-# C = (0, -0.25em) to (1em, 0.75em) (the em square) plus some Xs above and below
-# D = (0, -0.25em) to (1em, 0.75em) (the em square) plus some Xs left and right
-# E = (0, -0.25em) to (1em, 0.75em) (the em square)
-# space = empty, 1em wide
-#
-# At 50px, "E" will fill the canvas vertically
-# At 67px, "A" will fill the canvas vertically
-#
-# Ideographic baseline is 0.125em above alphabetic
-# Mathematical baseline is 0.375em above alphabetic
-# Hanging baseline is 0.500em above alphabetic
-
-# WebKit doesn't block onload on font loads, so we try to make it a bit more reliable
-# by waiting with step_timeout after load before drawing
-
-- name: 2d.text.draw.fill.maxWidth.fontface
- desc: fillText works on @font-face fonts
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#0f0';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#f00';
- ctx.fillText('EEEE', -50, 37.5, 40);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.fill.maxWidth.bound
- desc: fillText handles maxWidth based on line size, not bounding box size
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('DD', 0, 37.5, 100);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.fontface
- fonts:
- - CanvasTest
- code: |
- ctx.font = '67px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.fontface.repeat
- desc: Draw with the font immediately, then wait a bit until and draw again. (This
- crashes some version of WebKit.)
- fonts:
- - CanvasTest
- fonthack: 0
- code: |
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.font = '67px CanvasTest';
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillText('AA', 0, 50);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.fontface.notinpage
- desc: '@font-face fonts should work even if they are not used in the page'
- fonts:
- - CanvasTest
- fonthack: 0
- code: |
- ctx.font = '67px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('AA', 0, 50);
- @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo
- @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo
- @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo
- @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo
- }), 500);
- expected: green
-
-- name: 2d.text.draw.align.left
- desc: textAlign left is the left of the first em square (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'left';
- ctx.fillText('DD', 0, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.align.right
- desc: textAlign right is the right of the last em square (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('DD', 100, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.align.start.ltr
- desc: textAlign start with ltr is the left edge
- fonts:
- - CanvasTest
- canvas: dir="ltr"
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 0, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.align.start.rtl
- desc: textAlign start with rtl is the right edge
- fonts:
- - CanvasTest
- canvas: dir="rtl"
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'start';
- ctx.fillText('DD', 100, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.align.end.ltr
- desc: textAlign end with ltr is the right edge
- fonts:
- - CanvasTest
- canvas: dir="ltr"
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 100, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.align.end.rtl
- desc: textAlign end with rtl is the left edge
- fonts:
- - CanvasTest
- canvas: dir="rtl"
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'end';
- ctx.fillText('DD', 0, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.align.center
- desc: textAlign center is the center of the em squares (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'center';
- ctx.fillText('DD', 50, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-
-- name: 2d.text.draw.space.basic
- desc: U+0020 is rendered the correct size (1em wide)
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', -100, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.space.collapse.nonspace
- desc: Non-space characters are not converted to U+0020 and collapsed
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E\x0b EE', -150, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.measure.width.basic
- desc: The width of character is same as font used
- fonts:
- - CanvasTest
- code: |
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- @assert ctx.measureText('A').width === 50;
- @assert ctx.measureText('AA').width === 100;
- @assert ctx.measureText('ABCD').width === 200;
-
- ctx.font = '100px CanvasTest';
- @assert ctx.measureText('A').width === 100;
- }), 500);
- });
-
-- name: 2d.text.measure.width.empty
- desc: The empty string has zero width
- fonts:
- - CanvasTest
- code: |
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- @assert ctx.measureText("").width === 0;
- }), 500);
- });
-
-- name: 2d.text.measure.advances
- desc: Testing width advances
- fonts:
- - CanvasTest
- code: |
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // Some platforms may return '-0'.
- @assert Math.abs(ctx.measureText('Hello').advances[0]) === 0;
- // Different platforms may render text slightly different.
- @assert ctx.measureText('Hello').advances[1] >= 36;
- @assert ctx.measureText('Hello').advances[2] >= 58;
- @assert ctx.measureText('Hello').advances[3] >= 70;
- @assert ctx.measureText('Hello').advances[4] >= 80;
-
- var tm = ctx.measureText('Hello');
- @assert ctx.measureText('Hello').advances[0] === tm.advances[0];
- @assert ctx.measureText('Hello').advances[1] === tm.advances[1];
- @assert ctx.measureText('Hello').advances[2] === tm.advances[2];
- @assert ctx.measureText('Hello').advances[3] === tm.advances[3];
- @assert ctx.measureText('Hello').advances[4] === tm.advances[4];
- }), 500);
- });
-
-- name: 2d.text.measure.actualBoundingBox
- desc: Testing actualBoundingBox
- fonts:
- - CanvasTest
- code: |
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- ctx.baseline = 'alphabetic'
- // Different platforms may render text slightly different.
- // Values that are nominally expected to be zero might actually vary by a pixel or so
- // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation.
- @assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1;
- @assert ctx.measureText('A').actualBoundingBoxRight >= 50;
- @assert ctx.measureText('A').actualBoundingBoxAscent >= 35;
- @assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1;
-
- @assert ctx.measureText('D').actualBoundingBoxLeft >= 48;
- @assert ctx.measureText('D').actualBoundingBoxLeft <= 52;
- @assert ctx.measureText('D').actualBoundingBoxRight >= 75;
- @assert ctx.measureText('D').actualBoundingBoxRight <= 80;
- @assert ctx.measureText('D').actualBoundingBoxAscent >= 35;
- @assert ctx.measureText('D').actualBoundingBoxAscent <= 40;
- @assert ctx.measureText('D').actualBoundingBoxDescent >= 12;
- @assert ctx.measureText('D').actualBoundingBoxDescent <= 15;
-
- @assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1;
- @assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200;
- @assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85;
- @assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37;
- }), 500);
- });
-
-- name: 2d.text.measure.fontBoundingBox
- desc: Testing fontBoundingBox
- fonts:
- - CanvasTest
- code: |
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- // approx_equals because font metrics may be rounded slightly differently by different platforms/browsers.
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('A').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
-
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxAscent, 50 * 1745 / 1024, 1, "unexpected fontBoundingBoxAscent");
- assert_approx_equals(ctx.measureText('ABCD').fontBoundingBoxDescent, 50 * 805 / 1024, 1, "unexpected fontBoundingBoxDescent");
- }), 500);
- });
-
-- name: 2d.text.measure.fontBoundingBox.ahem
- desc: Testing fontBoundingBox for font ahem
- fonts:
- - Ahem
- code: |
- deferTest();
- var f = new FontFace("Ahem", "/fonts/Ahem.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px Ahem';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- @assert ctx.measureText('A').fontBoundingBoxAscent === 40;
- @assert ctx.measureText('A').fontBoundingBoxDescent === 10;
-
- @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 40;
- @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 10;
- }), 500);
- });
-
-- name: 2d.text.measure.emHeights
- desc: Testing emHeights
- fonts:
- - CanvasTest
- code: |
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- @assert ctx.measureText('A').emHeightAscent === 37.5;
- @assert ctx.measureText('A').emHeightDescent === 12.5;
- @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 50;
-
- @assert ctx.measureText('ABCD').emHeightAscent === 37.5;
- @assert ctx.measureText('ABCD').emHeightDescent === 12.5;
- @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50;
- }), 500);
- });
-
-- name: 2d.text.measure.baselines
- desc: Testing baselines
- fonts:
- - CanvasTest
- code: |
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- ctx.direction = 'ltr';
- ctx.align = 'left'
- @assert Math.abs(ctx.measureText('A').alphabeticBaseline) === 0;
- @assert ctx.measureText('A').ideographicBaseline === 6.25;
- @assert ctx.measureText('A').hangingBaseline === 25;
-
- @assert Math.abs(ctx.measureText('ABCD').alphabeticBaseline) === 0;
- @assert ctx.measureText('ABCD').ideographicBaseline === 6.25;
- @assert ctx.measureText('ABCD').hangingBaseline === 25;
- }), 500);
- });
-
-- name: 2d.text.drawing.style.absolute.spacing
- desc: Testing letter spacing and word spacing with absolute length
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
-
- ctx.letterSpacing = '3px';
- @assert ctx.letterSpacing === '3px';
- @assert ctx.wordSpacing === '0px';
-
- ctx.wordSpacing = '5px';
- @assert ctx.letterSpacing === '3px';
- @assert ctx.wordSpacing === '5px';
-
- ctx.letterSpacing = '-1px';
- ctx.wordSpacing = '-1px';
- @assert ctx.letterSpacing === '-1px';
- @assert ctx.wordSpacing === '-1px';
-
- ctx.letterSpacing = '1PX';
- ctx.wordSpacing = '10PX';
- @assert ctx.letterSpacing === '1px';
- @assert ctx.wordSpacing === '10px';
-
-- name: 2d.text.drawing.style.font-relative.spacing
- desc: Testing letter spacing and word spacing with font-relative length
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
-
- ctx.letterSpacing = '1EX';
- ctx.wordSpacing = '1EM';
- @assert ctx.letterSpacing === '1ex';
- @assert ctx.wordSpacing === '1em';
-
- ctx.letterSpacing = '1ch';
- ctx.wordSpacing = '1ic';
- @assert ctx.letterSpacing === '1ch';
- @assert ctx.wordSpacing === '1ic';
-
-- name: 2d.text.drawing.style.nonfinite.spacing
- desc: Testing letter spacing and word spacing with nonfinite inputs
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
-
- function test_word_spacing(value) {
- ctx.wordSpacing = value;
- ctx.letterSpacing = value;
- @assert ctx.wordSpacing === '0px';
- @assert ctx.letterSpacing === '0px';
- }
- @nonfinite test_word_spacing(<0 NaN Infinity -Infinity>);
-
-- name: 2d.text.drawing.style.invalid.spacing
- desc: Testing letter spacing and word spacing with invalid units
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
-
- function test_word_spacing(value) {
- ctx.wordSpacing = value;
- ctx.letterSpacing = value;
- @assert ctx.wordSpacing === '0px';
- @assert ctx.letterSpacing === '0px';
- }
- @nonfinite test_word_spacing(< '0s' '1min' '1deg' '1pp' 'initial' 'inherit' 'normal' 'none'>);
-
-- name: 2d.text.drawing.style.letterSpacing.measure
- desc: Testing letter spacing and word spacing
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
- var width_normal = ctx.measureText('Hello World').width;
-
- function test_letter_spacing(value, difference_spacing, epsilon) {
- ctx.letterSpacing = value;
- @assert ctx.letterSpacing === value;
- @assert ctx.wordSpacing === '0px';
- width_with_letter_spacing = ctx.measureText('Hello World').width;
- assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work.");
- }
-
- // The first value is the letter Spacing to be set, the second value the
- // change in length of string 'Hello World', note that there are 11 letters
- // in 'hello world', so the length difference is always letterSpacing * 11.
- // and the third value is the acceptable differencee for the length change,
- // note that unit such as 1cm/1mm doesn't map to an exact pixel value.
- test_cases = [['3px', 33, 0.1],
- ['5px', 55, 0.1],
- ['-2px', -22, 0.1],
- ['1em', 110, 0.1],
- ['1in', 1056, 0.1],
- ['-0.1cm', -41.65, 0.2],
- ['-0.6mm', -24,95, 0.2]]
-
- for (const test_case of test_cases) {
- test_letter_spacing(test_case[0], test_case[1], test_case[2]);
- }
-
-- name: 2d.text.drawing.style.wordSpacing.measure
- desc: Testing if word spacing is working properly
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
- var width_normal = ctx.measureText('Hello World, again').width;
-
- function test_word_spacing(value, difference_spacing, epsilon) {
- ctx.wordSpacing = value;
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === value;
- width_with_word_spacing = ctx.measureText('Hello World, again').width;
- assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work.");
- }
-
- // The first value is the word Spacing to be set, the second value the
- // change in length of string 'Hello World', note that there are 2 words
- // in 'Hello World, again', so the length difference is always wordSpacing * 2.
- // and the third value is the acceptable differencee for the length change,
- // note that unit such as 1cm/1mm doesn't map to an exact pixel value.
- test_cases = [['3px', 6, 0.1],
- ['5px', 10, 0.1],
- ['-2px', -4, 0.1],
- ['1em', 20, 0.1],
- ['1in', 192, 0.1],
- ['-0.1cm', -7.57, 0.2],
- ['-0.6mm', -4.54, 0.2]]
-
- for (const test_case of test_cases) {
- test_word_spacing(test_case[0], test_case[1], test_case[2]);
- }
-
-- name: 2d.text.drawing.style.letterSpacing.change.font
- desc: Set letter spacing and word spacing to font dependent value and verify it works after font change.
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
- // Get the width for 'Hello World' at default size, 10px.
- var width_normal = ctx.measureText('Hello World').width;
-
- ctx.letterSpacing = '1em';
- @assert ctx.letterSpacing === '1em';
- // 1em = 10px. Add 10px after each letter in "Hello World",
- // makes it 110px longer.
- var width_with_spacing = ctx.measureText('Hello World').width;
- assert_approx_equals(width_with_spacing, width_normal + 110, 0.1, "letterSpacing incorrect before font change");
-
- // Changing font to 20px. Without resetting the spacing, 1em letterSpacing
- // is now 20px, so it's suppose to be 220px longer without any letterSpacing set.
- ctx.font = '20px serif';
- width_with_spacing = ctx.measureText('Hello World').width;
- // Now calculate the reference spacing for "Hello World" with no spacing.
- ctx.letterSpacing = '0em';
- width_normal = ctx.measureText('Hello World').width;
- assert_approx_equals(width_with_spacing, width_normal + 220, 0.1, "letterSpacing incorrect after font change");
-
-
-- name: 2d.text.drawing.style.wordSpacing.change.font
- desc: Set word spacing and word spacing to font dependent value and verify it works after font change.
- code: |
- @assert ctx.letterSpacing === '0px';
- @assert ctx.wordSpacing === '0px';
- // Get the width for 'Hello World, again' at default size, 10px.
- var width_normal = ctx.measureText('Hello World, again').width;
-
- ctx.wordSpacing = '1em';
- @assert ctx.wordSpacing === '1em';
- // 1em = 10px. Add 10px after each word in "Hello World, again",
- // makes it 20px longer.
- var width_with_spacing = ctx.measureText('Hello World, again').width;
- @assert width_with_spacing === width_normal + 20;
-
- // Changing font to 20px. Without resetting the spacing, 1em wordSpacing
- // is now 20px, so it's suppose to be 40px longer without any wordSpacing set.
- ctx.font = '20px serif';
- width_with_spacing = ctx.measureText('Hello World, again').width;
- // Now calculate the reference spacing for "Hello World, again" with no spacing.
- ctx.wordSpacing = '0em';
- width_normal = ctx.measureText('Hello World, again').width;
- @assert width_with_spacing === width_normal + 40;
-
-- name: 2d.text.drawing.style.fontKerning
- desc: Testing basic functionalities of fontKerning for canvas
- code: |
- @assert ctx.fontKerning === "auto";
- ctx.fontKerning = "normal";
- @assert ctx.fontKerning === "normal";
- width_normal = ctx.measureText("TAWATAVA").width;
- ctx.fontKerning = "none";
- @assert ctx.fontKerning === "none";
- width_none = ctx.measureText("TAWATAVA").width;
- @assert width_normal < width_none;
-
-- name: 2d.text.drawing.style.fontKerning.with.uppercase
- desc: Testing basic functionalities of fontKerning for canvas
- code: |
- @assert ctx.fontKerning === "auto";
- ctx.fontKerning = "Normal";
- @assert ctx.fontKerning === "auto";
- ctx.fontKerning = "normal";
- @assert ctx.fontKerning === "normal";
- ctx.fontKerning = "Auto";
- @assert ctx.fontKerning === "normal";
- ctx.fontKerning = "auto";
- ctx.fontKerning = "noRmal";
- @assert ctx.fontKerning === "auto";
- ctx.fontKerning = "auto";
- ctx.fontKerning = "NoRMal";
- @assert ctx.fontKerning === "auto";
- ctx.fontKerning = "auto";
- ctx.fontKerning = "NORMAL";
- @assert ctx.fontKerning === "auto";
-
- ctx.fontKerning = "None";
- @assert ctx.fontKerning === "auto";
- ctx.fontKerning = "none";
- @assert ctx.fontKerning === "none";
- ctx.fontKerning = "Auto";
- @assert ctx.fontKerning === "none";
- ctx.fontKerning = "auto";
- ctx.fontKerning = "nOne";
- @assert ctx.fontKerning === "auto";
- ctx.fontKerning = "auto";
- ctx.fontKerning = "nonE";
- @assert ctx.fontKerning === "auto";
- ctx.fontKerning = "auto";
- ctx.fontKerning = "NONE";
- @assert ctx.fontKerning === "auto";
-
-- name: 2d.text.drawing.style.fontVariant.settings
- desc: Testing basic functionalities of fontVariant for canvas
- code: |
- // Setting fontVariantCaps with lower cases
- @assert ctx.fontVariantCaps === "normal";
-
- ctx.fontVariantCaps = "normal";
- @assert ctx.fontVariantCaps === "normal";
-
- ctx.fontVariantCaps = "small-caps";
- @assert ctx.fontVariantCaps === "small-caps";
-
- ctx.fontVariantCaps = "all-small-caps";
- @assert ctx.fontVariantCaps === "all-small-caps";
-
- ctx.fontVariantCaps = "petite-caps";
- @assert ctx.fontVariantCaps === "petite-caps";
-
- ctx.fontVariantCaps = "all-petite-caps";
- @assert ctx.fontVariantCaps === "all-petite-caps";
-
- ctx.fontVariantCaps = "unicase";
- @assert ctx.fontVariantCaps === "unicase";
-
- ctx.fontVariantCaps = "titling-caps";
- @assert ctx.fontVariantCaps === "titling-caps";
-
- // Setting fontVariantCaps with mixed-case values is not valid
- ctx.fontVariantCaps = "nORmal";
- @assert ctx.fontVariantCaps === "titling-caps";
-
- ctx.fontVariantCaps = "normal";
- @assert ctx.fontVariantCaps === "normal";
-
- ctx.fontVariantCaps = "smaLL-caps";
- @assert ctx.fontVariantCaps === "normal";
-
- ctx.fontVariantCaps = "all-small-CAPS";
- @assert ctx.fontVariantCaps === "normal";
-
- ctx.fontVariantCaps = "pEtitE-caps";
- @assert ctx.fontVariantCaps === "normal";
-
- ctx.fontVariantCaps = "All-Petite-Caps";
- @assert ctx.fontVariantCaps === "normal";
-
- ctx.fontVariantCaps = "uNIcase";
- @assert ctx.fontVariantCaps === "normal";
-
- ctx.fontVariantCaps = "titling-CAPS";
- @assert ctx.fontVariantCaps === "normal";
-
- // Setting fontVariantCaps with non-existing font variant.
- ctx.fontVariantCaps = "titling-caps";
- ctx.fontVariantCaps = "abcd";
- @assert ctx.fontVariantCaps === "titling-caps";
-
-- name: 2d.text.drawing.style.textRendering.settings
- desc: Testing basic functionalities of textRendering in Canvas
- code: |
- // Setting textRendering with correct case.
- @assert ctx.textRendering === "auto";
-
- ctx.textRendering = "optimizeSpeed";
- @assert ctx.textRendering === "optimizeSpeed";
-
- ctx.textRendering = "optimizeLegibility";
- @assert ctx.textRendering === "optimizeLegibility";
-
- ctx.textRendering = "geometricPrecision";
- @assert ctx.textRendering === "geometricPrecision";
-
- ctx.textRendering = "auto";
- @assert ctx.textRendering === "auto";
-
- // Setting textRendering with incorrect case is ignored.
- ctx.textRendering = "OPtimizeSpeed";
- @assert ctx.textRendering === "auto";
-
- ctx.textRendering = "OPtimizELEgibility";
- @assert ctx.textRendering === "auto";
-
- ctx.textRendering = "GeometricPrecision";
- @assert ctx.textRendering === "auto";
-
- ctx.textRendering = "optimizespeed";
- @assert ctx.textRendering === "auto";
-
- ctx.textRendering = "optimizelegibility";
- @assert ctx.textRendering === "auto";
-
- ctx.textRendering = "geometricprecision";
- @assert ctx.textRendering === "auto";
-
- ctx.textRendering = "optimizeLegibility";
- @assert ctx.textRendering === "optimizeLegibility";
-
- ctx.textRendering = "AUTO";
- @assert ctx.textRendering === "optimizeLegibility";
-
- ctx.textRendering = "Auto";
- @assert ctx.textRendering === "optimizeLegibility";
-
- // Setting textRendering with non-existing font variant.
- ctx.textRendering = "abcd";
- @assert ctx.textRendering === "optimizeLegibility";
-
- ctx.textRendering = "normal";
- @assert ctx.textRendering === "optimizeLegibility";
-
- ctx.textRendering = "";
- @assert ctx.textRendering === "optimizeLegibility";
-
- ctx.textRendering = "auto";
- @assert ctx.textRendering === "auto";
-
-- name: 2d.text.drawing.style.fontStretch.settings
- desc: Testing value setting of fontStretch in Canvas
- code: |
- // Setting textRendering with lower cases
- ctx.fontStretch = "ultra-condensed";
- @assert ctx.fontStretch === "ultra-condensed";
-
- ctx.fontStretch = "extra-condensed";
- @assert ctx.fontStretch === "extra-condensed";
-
- ctx.fontStretch = "condensed";
- @assert ctx.fontStretch === "condensed";
-
- ctx.fontStretch = "semi-condensed";
- @assert ctx.fontStretch === "semi-condensed";
-
- ctx.fontStretch = "normal";
- @assert ctx.fontStretch === "normal";
-
- ctx.fontStretch = "semi-expanded";
- @assert ctx.fontStretch === "semi-expanded";
-
- ctx.fontStretch = "expanded";
- @assert ctx.fontStretch === "expanded";
-
- ctx.fontStretch = "extra-expanded";
- @assert ctx.fontStretch === "extra-expanded";
-
- ctx.fontStretch = "ultra-expanded";
- @assert ctx.fontStretch === "ultra-expanded";
-
- // Setting fontStretch with lower cases and upper cases word,
- // these values should be ignored.
- ctx.fontStretch = "ulTra-condensed";
- @assert ctx.fontStretch === "ultra-expanded";
-
- ctx.fontStretch = "Extra-condensed";
- @assert ctx.fontStretch === "ultra-expanded";
-
- ctx.fontStretch = "cOndensed";
- @assert ctx.fontStretch === "ultra-expanded";
-
- ctx.fontStretch = "Semi-Condensed";
- @assert ctx.fontStretch === "ultra-expanded";
-
- ctx.fontStretch = "normaL";
- @assert ctx.fontStretch === "ultra-expanded";
-
- ctx.fontStretch = "semi-Expanded";
- @assert ctx.fontStretch === "ultra-expanded";
-
- ctx.fontStretch = "Expanded";
- @assert ctx.fontStretch === "ultra-expanded";
-
- ctx.fontStretch = "eXtra-expanded";
- @assert ctx.fontStretch === "ultra-expanded";
-
- ctx.fontStretch = "abcd";
- @assert ctx.fontStretch === "ultra-expanded";
-
-# TODO: shadows, alpha, composite, clip
diff --git a/tests/wpt/tests/html/canvas/tools/yaml/element/meta.yaml b/tests/wpt/tests/html/canvas/tools/yaml/element/meta.yaml
index e8c42504266..7b6f28f1713 100644
--- a/tests/wpt/tests/html/canvas/tools/yaml/element/meta.yaml
+++ b/tests/wpt/tests/html/canvas/tools/yaml/element/meta.yaml
@@ -536,4 +536,4 @@
@assert ctx.fillStyle =~ /^#(?!(FF0000|ff0000|f00)$)/; // test that it's not red
""" % (string,),
}
- tests.append(test)
+ tests.append(test) \ No newline at end of file
diff --git a/tests/wpt/tests/html/canvas/tools/yaml/element/text-styles.yaml b/tests/wpt/tests/html/canvas/tools/yaml/element/text-styles.yaml
deleted file mode 100644
index ee319c4fef1..00000000000
--- a/tests/wpt/tests/html/canvas/tools/yaml/element/text-styles.yaml
+++ /dev/null
@@ -1,457 +0,0 @@
-- name: 2d.text.font.parse.basic
- code: |
- ctx.font = '20px serif';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20PX SERIF';
- @assert ctx.font === '20px serif'; @moz-todo
-
-- name: 2d.text.font.parse.tiny
- code: |
- ctx.font = '1px sans-serif';
- @assert ctx.font === '1px sans-serif';
-
-- name: 2d.text.font.parse.complex
- code: |
- ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif';
- @assert ['italic small-caps 12px "Unknown Font", sans-serif', 'italic small-caps 12px Unknown Font, sans-serif'].includes(ctx.font);
-
-- name: 2d.text.font.parse.complex2
- code: |
- ctx.font = 'small-caps italic 400 12px/2 "Unknown Font #2", sans-serif';
- @assert ctx.font === 'italic small-caps 12px "Unknown Font #2", sans-serif';
-
-- name: 2d.text.font.parse.family
- code: |
- ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","';
- @assert ctx.font === '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","';
-
- # TODO:
- # 2d.text.font.parse.size.absolute
- # xx-small x-small small medium large x-large xx-large
- # 2d.text.font.parse.size.relative
- # smaller larger
- # 2d.text.font.parse.size.length.relative
- # em ex px
- # 2d.text.font.parse.size.length.absolute
- # in cm mm pt pc
-
-- name: 2d.text.font.parse.size.percentage
- canvas: 'style="font-size: 144px"'
- code: |
- ctx.font = '50% serif';
- @assert ctx.font === '72px serif'; @moz-todo
- canvas.setAttribute('style', 'font-size: 100px');
- @assert ctx.font === '72px serif'; @moz-todo
-
-- name: 2d.text.font.parse.size.percentage.default
- code: |
- var canvas2 = document.createElement('canvas');
- var ctx2 = canvas2.getContext('2d');
- ctx2.font = '1000% serif';
- @assert ctx2.font === '100px serif'; @moz-todo
-
-- name: 2d.text.font.parse.system
- desc: System fonts must be computed to explicit values
- code: |
- ctx.font = 'message-box';
- @assert ctx.font !== 'message-box';
-
-- name: 2d.text.font.parse.invalid
- code: |
- ctx.font = '20px serif';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = '';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = 'bogus';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = 'inherit';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = '10px {bogus}';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = '10px initial';
- @assert ctx.font === '20px serif'; @moz-todo
-
- ctx.font = '20px serif';
- ctx.font = '10px default';
- @assert ctx.font === '20px serif'; @moz-todo
-
- ctx.font = '20px serif';
- ctx.font = '10px inherit';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = '10px revert';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = 'var(--x)';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = 'var(--x, 10px serif)';
- @assert ctx.font === '20px serif';
-
- ctx.font = '20px serif';
- ctx.font = '1em serif; background: green; margin: 10px';
- @assert ctx.font === '20px serif';
-
-- name: 2d.text.font.default
- code: |
- @assert ctx.font === '10px sans-serif';
-
-- name: 2d.text.font.relative_size
- code: |
- var canvas2 = document.createElement('canvas');
- var ctx2 = canvas2.getContext('2d');
- ctx2.font = '1em sans-serif';
- @assert ctx2.font === '10px sans-serif';
-
-- name: 2d.text.align.valid
- code: |
- ctx.textAlign = 'start';
- @assert ctx.textAlign === 'start';
-
- ctx.textAlign = 'end';
- @assert ctx.textAlign === 'end';
-
- ctx.textAlign = 'left';
- @assert ctx.textAlign === 'left';
-
- ctx.textAlign = 'right';
- @assert ctx.textAlign === 'right';
-
- ctx.textAlign = 'center';
- @assert ctx.textAlign === 'center';
-
-- name: 2d.text.align.invalid
- code: |
- ctx.textAlign = 'start';
- ctx.textAlign = 'bogus';
- @assert ctx.textAlign === 'start';
-
- ctx.textAlign = 'start';
- ctx.textAlign = 'END';
- @assert ctx.textAlign === 'start';
-
- ctx.textAlign = 'start';
- ctx.textAlign = 'end ';
- @assert ctx.textAlign === 'start';
-
- ctx.textAlign = 'start';
- ctx.textAlign = 'end\0';
- @assert ctx.textAlign === 'start';
-
-- name: 2d.text.align.default
- code: |
- @assert ctx.textAlign === 'start';
-
-
-- name: 2d.text.baseline.valid
- code: |
- ctx.textBaseline = 'top';
- @assert ctx.textBaseline === 'top';
-
- ctx.textBaseline = 'hanging';
- @assert ctx.textBaseline === 'hanging';
-
- ctx.textBaseline = 'middle';
- @assert ctx.textBaseline === 'middle';
-
- ctx.textBaseline = 'alphabetic';
- @assert ctx.textBaseline === 'alphabetic';
-
- ctx.textBaseline = 'ideographic';
- @assert ctx.textBaseline === 'ideographic';
-
- ctx.textBaseline = 'bottom';
- @assert ctx.textBaseline === 'bottom';
-
-- name: 2d.text.baseline.invalid
- code: |
- ctx.textBaseline = 'top';
- ctx.textBaseline = 'bogus';
- @assert ctx.textBaseline === 'top';
-
- ctx.textBaseline = 'top';
- ctx.textBaseline = 'MIDDLE';
- @assert ctx.textBaseline === 'top';
-
- ctx.textBaseline = 'top';
- ctx.textBaseline = 'middle ';
- @assert ctx.textBaseline === 'top';
-
- ctx.textBaseline = 'top';
- ctx.textBaseline = 'middle\0';
- @assert ctx.textBaseline === 'top';
-
-- name: 2d.text.baseline.default
- code: |
- @assert ctx.textBaseline === 'alphabetic';
-
-
-
-
-
-- name: 2d.text.draw.baseline.top
- desc: textBaseline top is the top of the em square (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'top';
- ctx.fillText('CC', 0, 0);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.baseline.bottom
- desc: textBaseline bottom is the bottom of the em square (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'bottom';
- ctx.fillText('CC', 0, 50);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.baseline.middle
- desc: textBaseline middle is the middle of the em square (not the bounding box)
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'middle';
- ctx.fillText('CC', 0, 25);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.baseline.alphabetic
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'alphabetic';
- ctx.fillText('CC', 0, 37.5);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.baseline.ideographic
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'ideographic';
- ctx.fillText('CC', 0, 31.25);
- @assert pixel 5,5 ==~ 0,255,0,255;
- @assert pixel 95,5 ==~ 0,255,0,255;
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255; @moz-todo
- @assert pixel 95,45 ==~ 0,255,0,255; @moz-todo
- }), 500);
- expected: green
-
-- name: 2d.text.draw.baseline.hanging
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textBaseline = 'hanging';
- ctx.fillText('CC', 0, 12.5);
- @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo
- @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- @assert pixel 5,45 ==~ 0,255,0,255;
- @assert pixel 95,45 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.space.collapse.space
- desc: Space characters are converted to U+0020, and are NOT collapsed
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E EE', 0, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 255,0,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.space.collapse.other
- desc: Space characters are converted to U+0020, and are NOT collapsed
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', 0, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 255,0,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.space.collapse.start
- desc: Space characters at the start of a line are NOT collapsed
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.fillText(' EE', 0, 37.5);
- @assert pixel 25,25 ==~ 255,0,0,255;
- @assert pixel 75,25 ==~ 0,255,0,255;
- }), 500);
- expected: green
-
-- name: 2d.text.draw.space.collapse.end
- desc: Space characters at the end of a line are NOT collapsed
- fonts:
- - CanvasTest
- code: |
- ctx.font = '50px CanvasTest';
- deferTest();
- step_timeout(t.step_func_done(function () {
- ctx.fillStyle = '#f00';
- ctx.fillRect(0, 0, 100, 50);
- ctx.fillStyle = '#0f0';
- ctx.textAlign = 'right';
- ctx.fillText('EE ', 100, 37.5);
- @assert pixel 25,25 ==~ 0,255,0,255;
- @assert pixel 75,25 ==~ 255,0,0,255;
- }), 500);
- expected: green
-
-
-- name: 2d.text.measure.width.space
- desc: Space characters are converted to U+0020 and NOT collapsed
- fonts:
- - CanvasTest
- code: |
- deferTest();
- var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf");
- document.fonts.add(f);
- document.fonts.ready.then(() => {
- step_timeout(t.step_func_done(function () {
- ctx.font = '50px CanvasTest';
- @assert ctx.measureText('A B').width === 150;
- @assert ctx.measureText('A B').width === 200;
- @assert ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width === 650;
- @assert ctx.measureText('A \x0b B').width >= 200;
-
- @assert ctx.measureText(' AB').width === 150;
- @assert ctx.measureText('AB ').width === 150;
- }), 500);
- });
-
-- name: 2d.text.measure.rtl.text
- desc: Measurement should follow canvas direction instead text direction
- fonts:
- - CanvasTest
- code: |
- metrics = ctx.measureText('اَلْعَرَبِيَّةُ');
- @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
-
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
-
-- name: 2d.text.measure.boundingBox.textAlign
- desc: Measurement should be related to textAlignment
- code: |
- ctx.textAlign = "right";
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight;
-
- ctx.textAlign = "left"
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
-
-- name: 2d.text.measure.boundingBox.direction
- desc: Measurement should follow text direction
- code: |
- ctx.direction = "ltr";
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight;
-
- ctx.direction = "rtl";
- metrics = ctx.measureText('hello');
- @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight;
diff --git a/tests/wpt/tests/html/infrastructure/urls/base-url/matches-about-blank-base-url.window.js b/tests/wpt/tests/html/infrastructure/urls/base-url/matches-about-blank-base-url.window.js
new file mode 100644
index 00000000000..b2a0740ddf7
--- /dev/null
+++ b/tests/wpt/tests/html/infrastructure/urls/base-url/matches-about-blank-base-url.window.js
@@ -0,0 +1,29 @@
+// Verify that an iframe whose URL "matches about:blank" [1] uses its about base
+// URL and initiator/creator origin.
+//
+// [1]: https://html.spec.whatwg.org/#matches-about:blank
+onload = () => {
+ async_test(t => {
+ const iframe = document.createElement('iframe');
+ // Navigate the iframe away from the initial about:blank Document [1] to
+ // isolate the effects of a "matches about:blank" URL.
+ //
+ // [1]: https://html.spec.whatwg.org/#is-initial-about:blank
+ iframe.src = '/common/blank.html';
+
+ iframe.addEventListener('load', e => {
+ assert_equals(iframe.contentWindow.location.pathname, '/common/blank.html');
+
+ // Navigate the iframe to a URL that "matches about:blank" but isn't exactly
+ // "about:blank".
+ iframe.onload = t.step_func_done(() => {
+ assert_equals(iframe.contentDocument.URL, 'about:blank?query#fragment');
+ assert_equals(iframe.contentWindow.origin, window.origin);
+ assert_equals(iframe.contentDocument.baseURI, document.baseURI);
+ });
+ iframe.src = 'about:blank?query#fragment';
+ }, {once: true});
+
+ document.body.appendChild(iframe);
+ }, "about:blank and about:blank?foo#bar both 'match about:blank'");
+};
diff --git a/tests/wpt/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html b/tests/wpt/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html
index 7d542111896..1fd0476e314 100644
--- a/tests/wpt/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html
+++ b/tests/wpt/tests/html/semantics/forms/attributes-common-to-form-controls/dirname-only-if-applies.html
@@ -18,11 +18,10 @@
<iframe name="iframe"></iframe>
<script>
- const types_applies = ["text", "search"];
+ const types_applies = ["text", "search", "hidden", "tel", "url", "email"];
const types_not = [
- "hidden", "tel", "url", "email", "password", "date", "month", "week", "time",
+ "password", "date", "month", "week", "time", "image", "reset", "button",
"datetime-local", "number", "range", "color", "checkbox", "radio", "file", "submit",
- "image", "reset", "button"
];
const types = [...types_applies, ...types_not];
let form = document.querySelector("form");
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size-ref.tentative.html
new file mode 100644
index 00000000000..53296f6daac
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size-ref.tentative.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<script src="support/fake-selectmenu.js"></script>
+<body>
+<script>
+ const selectmenu = createFakeSelectmenu('option');
+ document.body.appendChild(selectmenu);
+ selectmenu.style.width = "400px";
+ selectmenu.style.height = "50px";
+</script>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html
new file mode 100644
index 00000000000..8c09f6c8896
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-explicit-size.tentative.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<!-- Tests that selectmenu respects explicit size -->
+<link rel=author href="mailto:pkotwicz@chromium.org">
+<link rel="match" href="selectmenu-explicit-size-ref.tentative.html">
+
+<style>
+selectmenu {
+ width:400px;
+ height:50px;
+}
+</style>
+<selectmenu>
+ <option>option</option>
+</selectmenu>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html
new file mode 100644
index 00000000000..5985df5936b
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned-ref.tentative.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<style>
+div {
+ width:300px;
+ display:flex;
+ justify-content:flex-end;
+}
+selectmenu {
+ width:100px;
+}
+selectmenu::part(button) {
+ border-style:none;
+ background-color:rgba(0,0,0,0)
+}
+</style>
+<div>
+<selectmenu>
+ <option></option>
+</selectmenu>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned.tentative.html
new file mode 100644
index 00000000000..a419108e3d2
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-end-aligned.tentative.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<!-- Tests that <selectmenu> marker is end-aligned -->
+<link rel=author href="mailto:pkotwicz@chromium.org">
+<link rel="match" href="selectmenu-marker-end-aligned-ref.tentative.html">
+
+<style>
+div {
+ width:300px;
+ display:flex;
+ justify-content:flex-end;
+}
+selectmenu {
+ width:200px;
+}
+selectmenu::part(button) {
+ border-style:none;
+ background-color:rgba(0,0,0,0)
+}
+</style>
+<div>
+<selectmenu>
+ <option></option>
+</selectmenu>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html
index a35fcd94800..54bdefb7619 100644
--- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-slot-ref.html
@@ -9,6 +9,5 @@
const newMarker = document.createElement('div');
newMarker.textContent = 'marker';
- const button = selectmenu.querySelector('.fake-selectmenu-internal-selectmenu-button');
- button.replaceChild(newMarker, oldMarker);
+ replaceChildElement(newMarker, oldMarker);
</script>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html
new file mode 100644
index 00000000000..674de192e4c
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow-ref.tentative.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<style>
+selectmenu {
+ width:100px;
+}
+</style>
+<div>
+<selectmenu>
+ <option>&nbsp;</option>
+</selectmenu>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow.tentative.html
new file mode 100644
index 00000000000..6d39f6f3c50
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-marker-visible-overflow.tentative.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<!-- Tests that the marker is visible when the <selectmenu> contains more text than it can show -->
+<link rel=author href="mailto:pkotwicz@chromium.org">
+<link rel="match" href="selectmenu-marker-visible-overflow-ref.tentative.html">
+
+<style>
+selectmenu {
+ width:100px;
+}
+</style>
+<div>
+<selectmenu>
+ <option>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>
+</selectmenu>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html
index 171829d90f3..c890bb63f1b 100644
--- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed-ref.tentative.html
@@ -27,7 +27,7 @@
height: fit-content;
background: -internal-light-dark(white, black);
color: -internal-light-dark(black, white);
- border: 1px solid rgba(0, 0, 0, 0.15);
+ border: 1px solid rgba(0, 0, 0, 1);
border-radius: 0px;
box-shadow: 0px 12.8px 28.8px rgba(0, 0, 0, 0.13), 0px 0px 9.2px rgba(0, 0, 0, 0.11);
box-sizing: border-box;
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed.tentative.html
index 05bc651cb7c..416f2dc2ac0 100644
--- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-option-arbitrary-content-displayed.tentative.html
@@ -24,7 +24,7 @@
height: fit-content;
background: white;
color: black;
- border: 1px solid rgba(0, 0, 0, 0.15);
+ border: 1px solid rgba(0, 0, 0, 1);
border-radius: 0px;
box-shadow: 0px 12.8px 28.8px rgba(0, 0, 0, 0.13), 0px 0px 9.2px rgba(0, 0, 0, 0.11);
box-sizing: border-box;
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html
new file mode 100644
index 00000000000..8fd33dbc072
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x-ref.tentative.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<style>
+selectmenu {
+ width:30px;
+ height:20px;
+}
+selectmenu::part(button) {
+ background-color:blue;
+}
+</style>
+<selectmenu>
+ <option>&nbsp;</option>
+</selectmenu>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x.tentative.html
new file mode 100644
index 00000000000..0e0c3dba5e8
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-overflow-x.tentative.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<!-- Tests that selectmenu button part text is truncated by the button. -->
+<link rel=author href="mailto:pkotwicz@chromium.org">
+<link rel="match" href="selectmenu-overflow-x-ref.tentative.html">
+<style>
+selectmenu {
+ width:30px;
+ height:20px;
+}
+selectmenu::part(button) {
+ background-color:blue;
+}
+</style>
+<selectmenu>
+ <option>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</option>
+</selectmenu>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html
index 13205830844..3b322bf7915 100644
--- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/selectmenu-selected-value-slot-ref.html
@@ -9,6 +9,5 @@
const newSelectedValue = document.createElement('div');
newSelectedValue.textContent = 'new selected value';
- const button = selectmenu.querySelector('.fake-selectmenu-internal-selectmenu-button');
- button.replaceChild(newSelectedValue, oldSelectedValue);
+ replaceChildElement(newSelectedValue, oldSelectedValue);
</script>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js
index 84fe5285617..f6a99232330 100644
--- a/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js
+++ b/tests/wpt/tests/html/semantics/forms/the-selectmenu-element/support/fake-selectmenu.js
@@ -1,20 +1,14 @@
-function createFakeSelectmenu(selectedValueText) {
- const selectmenu = document.createElement('div');
- selectmenu.classList.add('fake-selectmenu');
+function replaceChildElement(newChild, oldChild) {
+ oldChild.parentElement.replaceChild(newChild, oldChild);
+}
+function createFakeSelectmenu(selectedValueText) {
+ const selectmenu = document.createElement('button');
+ selectmenu.classList.add('fake-selectmenu-internal-selectmenu-button');
selectmenu.innerHTML = `
- <button class="fake-selectmenu-internal-selectmenu-button">
- <div class="fake-selectmenu-selected-value"></div>
- <div class="fake-selectmenu-internal-selectmenu-button-icon"></div>
- </button>
+ <div class="fake-selectmenu-selected-value"></div>
+ <div class="fake-selectmenu-internal-selectmenu-button-icon"></div>
<style>
- .fake-selectmenu {
- display: inline-block;
- user-select: none;
- font-family: sans-serif;
- font-size: .875em;
- }
-
.fake-selectmenu-internal-selectmenu-button {
display: inline-flex;
align-items: center;
@@ -25,6 +19,13 @@ function createFakeSelectmenu(selectedValueText) {
border: 1px solid ButtonBorder;
border-radius: 0.25em;
padding: 0.25em;
+ overflow-x:hidden;
+ overflow-y:hidden;
+ }
+
+ .fake-selectmenu-selected-value {
+ color: FieldText;
+ flex-grow:1;
}
.fake-selectmenu-internal-selectmenu-button-icon {
diff --git a/tests/wpt/tests/lint.ignore b/tests/wpt/tests/lint.ignore
index 255a50e0d1c..8bb009db58a 100644
--- a/tests/wpt/tests/lint.ignore
+++ b/tests/wpt/tests/lint.ignore
@@ -605,7 +605,7 @@ AHEM SYSTEM FONT: acid/acid3/test.html
AHEM SYSTEM FONT: resource-timing/font-timestamps.html
AHEM SYSTEM FONT: resource-timing/initiator-type/style.html
AHEM SYSTEM FONT: resource-timing/resources/iframe-reload-TAO.sub.html
-AHEM SYSTEM FONT: html/canvas/element/drawing-text-to-the-canvas/2d.text.measure.fontBoundingBox.ahem.html
+AHEM SYSTEM FONT: html/canvas/element/text/2d.text.measure.fontBoundingBox.ahem.html
AHEM SYSTEM FONT: css/css-font-loading/fontface-override-descriptors.html
AHEM SYSTEM FONT: css/css-font-loading/fontface-size-adjust-descriptor.html
AHEM SYSTEM FONT: css/css-font-loading/fontface-size-adjust-descriptor-ref.html
diff --git a/tests/wpt/tests/mathml/presentation-markup/direction/direction.html b/tests/wpt/tests/mathml/presentation-markup/direction/direction.html
index 657d0482111..dfb1671e4cc 100644
--- a/tests/wpt/tests/mathml/presentation-markup/direction/direction.html
+++ b/tests/wpt/tests/mathml/presentation-markup/direction/direction.html
@@ -27,13 +27,13 @@
<!-- Test the CSS direction and dir attribute on the <math> element. It
should be "ltr", except if an explicit dir="rtl" is used. -->
- <p>שורשי משוואה מודגשת זו <math id="x1"> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> מודגשים גם הם</p>
+ <p>שורשי משוואה מודגשת זו <math id="x1"> <mrow> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mrow> </math> מודגשים גם הם</p>
- <p>שורשי משוואה מודגשת זו <math id="x2" dir="ltr"> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> מודגשים גם הם</p>
+ <p>שורשי משוואה מודגשת זו <math id="x2" dir="ltr"> <mrow> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mrow> </math> מודגשים גם הם</p>
- <p>שורשי משוואה מודגשת זו <math id="x3" dir="invalid"> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> מודגשים גם הם</p>
+ <p>שורשי משוואה מודגשת זו <math id="x3" dir="invalid"> <mrow> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mrow> </math> מודגשים גם הם</p>
- <p>שורשי משוואה מודגשת זו <math id="x4" dir="rtl"> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> מודגשים גם הם</p>
+ <p>שורשי משוואה מודגשת זו <math id="x4" dir="rtl"> <mrow> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mrow> </math> מודגשים גם הם</p>
</body>
</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html
deleted file mode 100644
index 6ebfd75c2fa..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font-ref.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8"/>
- <title>Basic mathvariant transforms with the default font (reference)</title>
- </head>
- <body>
- <p>Test passes if you see three lines of text rendered with corresponding
- italic, bold, bold-italic characters from the
- Mathematical Alphanumeric Symbols block:</p>
- <p><math><mtext>𝐼𝑡𝑎𝑙𝑖𝑐</mtext></math></p>
- <p><math><mtext>𝐁𝐨𝐥𝐝</mtext></math></p>
- <p><math><mtext>𝑩𝒐𝒍𝒅𝑰𝒕𝒂𝒍𝒊𝒄</mtext></math></p>
- </body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font.html
deleted file mode 100644
index 24c868c4951..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-basic-transforms-with-default-font.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8"/>
- <title>Basic mathvariant transforms with the default font</title>
- <link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
- <link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
- <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1789083">
- <link rel="match" href="mathvariant-basic-transforms-with-default-font-ref.html"/>
- <meta name="assert" content="Verify that the default font provides Mathematical Alphanumeric Symbols to perform basic mathvariant transforms (italic, bold, bold-italic), without requiring some kind of style fallback.">
- </head>
- <body>
- <p>Test passes if you see three lines of text rendered with corresponding
- italic, bold, bold-italic characters from the
- Mathematical Alphanumeric Symbols block:</p>
- <p><math><mtext mathvariant="italic">Italic</mtext></math></p>
- <p><math><mtext mathvariant="bold">Bold</mtext></math></p>
- <p><math><mtext mathvariant="bold-italic">BoldItalic</mtext></math></p>
- </body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html
deleted file mode 100644
index 44588948e7b..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-fraktur-ref.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold-fraktur (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold-fraktur.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D56C;</mtext></math>=<span>1D56C</span></span>
- <span><math class="testfont"><mtext>&#x1D56D;</mtext></math>=<span>1D56D</span></span>
- <span><math class="testfont"><mtext>&#x1D56E;</mtext></math>=<span>1D56E</span></span>
- <span><math class="testfont"><mtext>&#x1D56F;</mtext></math>=<span>1D56F</span></span>
- <span><math class="testfont"><mtext>&#x1D570;</mtext></math>=<span>1D570</span></span>
- <span><math class="testfont"><mtext>&#x1D571;</mtext></math>=<span>1D571</span></span>
- <span><math class="testfont"><mtext>&#x1D572;</mtext></math>=<span>1D572</span></span>
- <span><math class="testfont"><mtext>&#x1D573;</mtext></math>=<span>1D573</span></span>
- <span><math class="testfont"><mtext>&#x1D574;</mtext></math>=<span>1D574</span></span>
- <span><math class="testfont"><mtext>&#x1D575;</mtext></math>=<span>1D575</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D576;</mtext></math>=<span>1D576</span></span>
- <span><math class="testfont"><mtext>&#x1D577;</mtext></math>=<span>1D577</span></span>
- <span><math class="testfont"><mtext>&#x1D578;</mtext></math>=<span>1D578</span></span>
- <span><math class="testfont"><mtext>&#x1D579;</mtext></math>=<span>1D579</span></span>
- <span><math class="testfont"><mtext>&#x1D57A;</mtext></math>=<span>1D57A</span></span>
- <span><math class="testfont"><mtext>&#x1D57B;</mtext></math>=<span>1D57B</span></span>
- <span><math class="testfont"><mtext>&#x1D57C;</mtext></math>=<span>1D57C</span></span>
- <span><math class="testfont"><mtext>&#x1D57D;</mtext></math>=<span>1D57D</span></span>
- <span><math class="testfont"><mtext>&#x1D57E;</mtext></math>=<span>1D57E</span></span>
- <span><math class="testfont"><mtext>&#x1D57F;</mtext></math>=<span>1D57F</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D580;</mtext></math>=<span>1D580</span></span>
- <span><math class="testfont"><mtext>&#x1D581;</mtext></math>=<span>1D581</span></span>
- <span><math class="testfont"><mtext>&#x1D582;</mtext></math>=<span>1D582</span></span>
- <span><math class="testfont"><mtext>&#x1D583;</mtext></math>=<span>1D583</span></span>
- <span><math class="testfont"><mtext>&#x1D584;</mtext></math>=<span>1D584</span></span>
- <span><math class="testfont"><mtext>&#x1D585;</mtext></math>=<span>1D585</span></span>
- <span><math class="testfont"><mtext>&#x1D586;</mtext></math>=<span>1D586</span></span>
- <span><math class="testfont"><mtext>&#x1D587;</mtext></math>=<span>1D587</span></span>
- <span><math class="testfont"><mtext>&#x1D588;</mtext></math>=<span>1D588</span></span>
- <span><math class="testfont"><mtext>&#x1D589;</mtext></math>=<span>1D589</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D58A;</mtext></math>=<span>1D58A</span></span>
- <span><math class="testfont"><mtext>&#x1D58B;</mtext></math>=<span>1D58B</span></span>
- <span><math class="testfont"><mtext>&#x1D58C;</mtext></math>=<span>1D58C</span></span>
- <span><math class="testfont"><mtext>&#x1D58D;</mtext></math>=<span>1D58D</span></span>
- <span><math class="testfont"><mtext>&#x1D58E;</mtext></math>=<span>1D58E</span></span>
- <span><math class="testfont"><mtext>&#x1D58F;</mtext></math>=<span>1D58F</span></span>
- <span><math class="testfont"><mtext>&#x1D590;</mtext></math>=<span>1D590</span></span>
- <span><math class="testfont"><mtext>&#x1D591;</mtext></math>=<span>1D591</span></span>
- <span><math class="testfont"><mtext>&#x1D592;</mtext></math>=<span>1D592</span></span>
- <span><math class="testfont"><mtext>&#x1D593;</mtext></math>=<span>1D593</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D594;</mtext></math>=<span>1D594</span></span>
- <span><math class="testfont"><mtext>&#x1D595;</mtext></math>=<span>1D595</span></span>
- <span><math class="testfont"><mtext>&#x1D596;</mtext></math>=<span>1D596</span></span>
- <span><math class="testfont"><mtext>&#x1D597;</mtext></math>=<span>1D597</span></span>
- <span><math class="testfont"><mtext>&#x1D598;</mtext></math>=<span>1D598</span></span>
- <span><math class="testfont"><mtext>&#x1D599;</mtext></math>=<span>1D599</span></span>
- <span><math class="testfont"><mtext>&#x1D59A;</mtext></math>=<span>1D59A</span></span>
- <span><math class="testfont"><mtext>&#x1D59B;</mtext></math>=<span>1D59B</span></span>
- <span><math class="testfont"><mtext>&#x1D59C;</mtext></math>=<span>1D59C</span></span>
- <span><math class="testfont"><mtext>&#x1D59D;</mtext></math>=<span>1D59D</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D59E;</mtext></math>=<span>1D59E</span></span>
- <span><math class="testfont"><mtext>&#x1D59F;</mtext></math>=<span>1D59F</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-fraktur.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-fraktur.html
deleted file mode 100644
index 32d037603bc..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-fraktur.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold-fraktur</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#bold-fraktur-mappings">
-<link rel="match" href="mathvariant-bold-fraktur-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a bold-fraktur mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold-fraktur.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x41;</mtext></math>=<span>1D56C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x42;</mtext></math>=<span>1D56D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x43;</mtext></math>=<span>1D56E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x44;</mtext></math>=<span>1D56F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x45;</mtext></math>=<span>1D570</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x46;</mtext></math>=<span>1D571</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x47;</mtext></math>=<span>1D572</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x48;</mtext></math>=<span>1D573</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x49;</mtext></math>=<span>1D574</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x4A;</mtext></math>=<span>1D575</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x4B;</mtext></math>=<span>1D576</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x4C;</mtext></math>=<span>1D577</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x4D;</mtext></math>=<span>1D578</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x4E;</mtext></math>=<span>1D579</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x4F;</mtext></math>=<span>1D57A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x50;</mtext></math>=<span>1D57B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x51;</mtext></math>=<span>1D57C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x52;</mtext></math>=<span>1D57D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x53;</mtext></math>=<span>1D57E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x54;</mtext></math>=<span>1D57F</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x55;</mtext></math>=<span>1D580</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x56;</mtext></math>=<span>1D581</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x57;</mtext></math>=<span>1D582</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x58;</mtext></math>=<span>1D583</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x59;</mtext></math>=<span>1D584</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x5A;</mtext></math>=<span>1D585</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x61;</mtext></math>=<span>1D586</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x62;</mtext></math>=<span>1D587</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x63;</mtext></math>=<span>1D588</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x64;</mtext></math>=<span>1D589</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x65;</mtext></math>=<span>1D58A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x66;</mtext></math>=<span>1D58B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x67;</mtext></math>=<span>1D58C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x68;</mtext></math>=<span>1D58D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x69;</mtext></math>=<span>1D58E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x6A;</mtext></math>=<span>1D58F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x6B;</mtext></math>=<span>1D590</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x6C;</mtext></math>=<span>1D591</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x6D;</mtext></math>=<span>1D592</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x6E;</mtext></math>=<span>1D593</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x6F;</mtext></math>=<span>1D594</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x70;</mtext></math>=<span>1D595</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x71;</mtext></math>=<span>1D596</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x72;</mtext></math>=<span>1D597</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x73;</mtext></math>=<span>1D598</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x74;</mtext></math>=<span>1D599</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x75;</mtext></math>=<span>1D59A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x76;</mtext></math>=<span>1D59B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x77;</mtext></math>=<span>1D59C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x78;</mtext></math>=<span>1D59D</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x79;</mtext></math>=<span>1D59E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-fraktur">&#x7A;</mtext></math>=<span>1D59F</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-italic-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-italic-ref.html
deleted file mode 100644
index 9a93a37e35b..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-italic-ref.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold-italic (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold-italic.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D468;</mtext></math>=<span>1D468</span></span>
- <span><math class="testfont"><mtext>&#x1D469;</mtext></math>=<span>1D469</span></span>
- <span><math class="testfont"><mtext>&#x1D46A;</mtext></math>=<span>1D46A</span></span>
- <span><math class="testfont"><mtext>&#x1D46B;</mtext></math>=<span>1D46B</span></span>
- <span><math class="testfont"><mtext>&#x1D46C;</mtext></math>=<span>1D46C</span></span>
- <span><math class="testfont"><mtext>&#x1D46D;</mtext></math>=<span>1D46D</span></span>
- <span><math class="testfont"><mtext>&#x1D46E;</mtext></math>=<span>1D46E</span></span>
- <span><math class="testfont"><mtext>&#x1D46F;</mtext></math>=<span>1D46F</span></span>
- <span><math class="testfont"><mtext>&#x1D470;</mtext></math>=<span>1D470</span></span>
- <span><math class="testfont"><mtext>&#x1D471;</mtext></math>=<span>1D471</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D472;</mtext></math>=<span>1D472</span></span>
- <span><math class="testfont"><mtext>&#x1D473;</mtext></math>=<span>1D473</span></span>
- <span><math class="testfont"><mtext>&#x1D474;</mtext></math>=<span>1D474</span></span>
- <span><math class="testfont"><mtext>&#x1D475;</mtext></math>=<span>1D475</span></span>
- <span><math class="testfont"><mtext>&#x1D476;</mtext></math>=<span>1D476</span></span>
- <span><math class="testfont"><mtext>&#x1D477;</mtext></math>=<span>1D477</span></span>
- <span><math class="testfont"><mtext>&#x1D478;</mtext></math>=<span>1D478</span></span>
- <span><math class="testfont"><mtext>&#x1D479;</mtext></math>=<span>1D479</span></span>
- <span><math class="testfont"><mtext>&#x1D47A;</mtext></math>=<span>1D47A</span></span>
- <span><math class="testfont"><mtext>&#x1D47B;</mtext></math>=<span>1D47B</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D47C;</mtext></math>=<span>1D47C</span></span>
- <span><math class="testfont"><mtext>&#x1D47D;</mtext></math>=<span>1D47D</span></span>
- <span><math class="testfont"><mtext>&#x1D47E;</mtext></math>=<span>1D47E</span></span>
- <span><math class="testfont"><mtext>&#x1D47F;</mtext></math>=<span>1D47F</span></span>
- <span><math class="testfont"><mtext>&#x1D480;</mtext></math>=<span>1D480</span></span>
- <span><math class="testfont"><mtext>&#x1D481;</mtext></math>=<span>1D481</span></span>
- <span><math class="testfont"><mtext>&#x1D482;</mtext></math>=<span>1D482</span></span>
- <span><math class="testfont"><mtext>&#x1D483;</mtext></math>=<span>1D483</span></span>
- <span><math class="testfont"><mtext>&#x1D484;</mtext></math>=<span>1D484</span></span>
- <span><math class="testfont"><mtext>&#x1D485;</mtext></math>=<span>1D485</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D486;</mtext></math>=<span>1D486</span></span>
- <span><math class="testfont"><mtext>&#x1D487;</mtext></math>=<span>1D487</span></span>
- <span><math class="testfont"><mtext>&#x1D488;</mtext></math>=<span>1D488</span></span>
- <span><math class="testfont"><mtext>&#x1D489;</mtext></math>=<span>1D489</span></span>
- <span><math class="testfont"><mtext>&#x1D48A;</mtext></math>=<span>1D48A</span></span>
- <span><math class="testfont"><mtext>&#x1D48B;</mtext></math>=<span>1D48B</span></span>
- <span><math class="testfont"><mtext>&#x1D48C;</mtext></math>=<span>1D48C</span></span>
- <span><math class="testfont"><mtext>&#x1D48D;</mtext></math>=<span>1D48D</span></span>
- <span><math class="testfont"><mtext>&#x1D48E;</mtext></math>=<span>1D48E</span></span>
- <span><math class="testfont"><mtext>&#x1D48F;</mtext></math>=<span>1D48F</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D490;</mtext></math>=<span>1D490</span></span>
- <span><math class="testfont"><mtext>&#x1D491;</mtext></math>=<span>1D491</span></span>
- <span><math class="testfont"><mtext>&#x1D492;</mtext></math>=<span>1D492</span></span>
- <span><math class="testfont"><mtext>&#x1D493;</mtext></math>=<span>1D493</span></span>
- <span><math class="testfont"><mtext>&#x1D494;</mtext></math>=<span>1D494</span></span>
- <span><math class="testfont"><mtext>&#x1D495;</mtext></math>=<span>1D495</span></span>
- <span><math class="testfont"><mtext>&#x1D496;</mtext></math>=<span>1D496</span></span>
- <span><math class="testfont"><mtext>&#x1D497;</mtext></math>=<span>1D497</span></span>
- <span><math class="testfont"><mtext>&#x1D498;</mtext></math>=<span>1D498</span></span>
- <span><math class="testfont"><mtext>&#x1D499;</mtext></math>=<span>1D499</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D49A;</mtext></math>=<span>1D49A</span></span>
- <span><math class="testfont"><mtext>&#x1D49B;</mtext></math>=<span>1D49B</span></span>
- <span><math class="testfont"><mtext>&#x1D71C;</mtext></math>=<span>1D71C</span></span>
- <span><math class="testfont"><mtext>&#x1D71D;</mtext></math>=<span>1D71D</span></span>
- <span><math class="testfont"><mtext>&#x1D71E;</mtext></math>=<span>1D71E</span></span>
- <span><math class="testfont"><mtext>&#x1D71F;</mtext></math>=<span>1D71F</span></span>
- <span><math class="testfont"><mtext>&#x1D720;</mtext></math>=<span>1D720</span></span>
- <span><math class="testfont"><mtext>&#x1D721;</mtext></math>=<span>1D721</span></span>
- <span><math class="testfont"><mtext>&#x1D722;</mtext></math>=<span>1D722</span></span>
- <span><math class="testfont"><mtext>&#x1D723;</mtext></math>=<span>1D723</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D724;</mtext></math>=<span>1D724</span></span>
- <span><math class="testfont"><mtext>&#x1D725;</mtext></math>=<span>1D725</span></span>
- <span><math class="testfont"><mtext>&#x1D726;</mtext></math>=<span>1D726</span></span>
- <span><math class="testfont"><mtext>&#x1D727;</mtext></math>=<span>1D727</span></span>
- <span><math class="testfont"><mtext>&#x1D728;</mtext></math>=<span>1D728</span></span>
- <span><math class="testfont"><mtext>&#x1D729;</mtext></math>=<span>1D729</span></span>
- <span><math class="testfont"><mtext>&#x1D72A;</mtext></math>=<span>1D72A</span></span>
- <span><math class="testfont"><mtext>&#x1D72B;</mtext></math>=<span>1D72B</span></span>
- <span><math class="testfont"><mtext>&#x1D72C;</mtext></math>=<span>1D72C</span></span>
- <span><math class="testfont"><mtext>&#x1D72D;</mtext></math>=<span>1D72D</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D72E;</mtext></math>=<span>1D72E</span></span>
- <span><math class="testfont"><mtext>&#x1D72F;</mtext></math>=<span>1D72F</span></span>
- <span><math class="testfont"><mtext>&#x1D730;</mtext></math>=<span>1D730</span></span>
- <span><math class="testfont"><mtext>&#x1D731;</mtext></math>=<span>1D731</span></span>
- <span><math class="testfont"><mtext>&#x1D732;</mtext></math>=<span>1D732</span></span>
- <span><math class="testfont"><mtext>&#x1D733;</mtext></math>=<span>1D733</span></span>
- <span><math class="testfont"><mtext>&#x1D734;</mtext></math>=<span>1D734</span></span>
- <span><math class="testfont"><mtext>&#x1D735;</mtext></math>=<span>1D735</span></span>
- <span><math class="testfont"><mtext>&#x1D736;</mtext></math>=<span>1D736</span></span>
- <span><math class="testfont"><mtext>&#x1D737;</mtext></math>=<span>1D737</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D738;</mtext></math>=<span>1D738</span></span>
- <span><math class="testfont"><mtext>&#x1D739;</mtext></math>=<span>1D739</span></span>
- <span><math class="testfont"><mtext>&#x1D73A;</mtext></math>=<span>1D73A</span></span>
- <span><math class="testfont"><mtext>&#x1D73B;</mtext></math>=<span>1D73B</span></span>
- <span><math class="testfont"><mtext>&#x1D73C;</mtext></math>=<span>1D73C</span></span>
- <span><math class="testfont"><mtext>&#x1D73D;</mtext></math>=<span>1D73D</span></span>
- <span><math class="testfont"><mtext>&#x1D73E;</mtext></math>=<span>1D73E</span></span>
- <span><math class="testfont"><mtext>&#x1D73F;</mtext></math>=<span>1D73F</span></span>
- <span><math class="testfont"><mtext>&#x1D740;</mtext></math>=<span>1D740</span></span>
- <span><math class="testfont"><mtext>&#x1D741;</mtext></math>=<span>1D741</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D742;</mtext></math>=<span>1D742</span></span>
- <span><math class="testfont"><mtext>&#x1D743;</mtext></math>=<span>1D743</span></span>
- <span><math class="testfont"><mtext>&#x1D744;</mtext></math>=<span>1D744</span></span>
- <span><math class="testfont"><mtext>&#x1D745;</mtext></math>=<span>1D745</span></span>
- <span><math class="testfont"><mtext>&#x1D746;</mtext></math>=<span>1D746</span></span>
- <span><math class="testfont"><mtext>&#x1D747;</mtext></math>=<span>1D747</span></span>
- <span><math class="testfont"><mtext>&#x1D748;</mtext></math>=<span>1D748</span></span>
- <span><math class="testfont"><mtext>&#x1D749;</mtext></math>=<span>1D749</span></span>
- <span><math class="testfont"><mtext>&#x1D74A;</mtext></math>=<span>1D74A</span></span>
- <span><math class="testfont"><mtext>&#x1D74B;</mtext></math>=<span>1D74B</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D74C;</mtext></math>=<span>1D74C</span></span>
- <span><math class="testfont"><mtext>&#x1D74D;</mtext></math>=<span>1D74D</span></span>
- <span><math class="testfont"><mtext>&#x1D74E;</mtext></math>=<span>1D74E</span></span>
- <span><math class="testfont"><mtext>&#x1D74F;</mtext></math>=<span>1D74F</span></span>
- <span><math class="testfont"><mtext>&#x1D750;</mtext></math>=<span>1D750</span></span>
- <span><math class="testfont"><mtext>&#x1D751;</mtext></math>=<span>1D751</span></span>
- <span><math class="testfont"><mtext>&#x1D752;</mtext></math>=<span>1D752</span></span>
- <span><math class="testfont"><mtext>&#x1D753;</mtext></math>=<span>1D753</span></span>
- <span><math class="testfont"><mtext>&#x1D754;</mtext></math>=<span>1D754</span></span>
- <span><math class="testfont"><mtext>&#x1D755;</mtext></math>=<span>1D755</span></span><br/>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-italic.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-italic.html
deleted file mode 100644
index 725559a571f..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-italic.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold-italic</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#bold-italic-mappings">
-<link rel="match" href="mathvariant-bold-italic-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a bold-italic mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold-italic.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x41;</mtext></math>=<span>1D468</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x42;</mtext></math>=<span>1D469</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x43;</mtext></math>=<span>1D46A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x44;</mtext></math>=<span>1D46B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x45;</mtext></math>=<span>1D46C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x46;</mtext></math>=<span>1D46D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x47;</mtext></math>=<span>1D46E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x48;</mtext></math>=<span>1D46F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x49;</mtext></math>=<span>1D470</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x4A;</mtext></math>=<span>1D471</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x4B;</mtext></math>=<span>1D472</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x4C;</mtext></math>=<span>1D473</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x4D;</mtext></math>=<span>1D474</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x4E;</mtext></math>=<span>1D475</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x4F;</mtext></math>=<span>1D476</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x50;</mtext></math>=<span>1D477</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x51;</mtext></math>=<span>1D478</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x52;</mtext></math>=<span>1D479</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x53;</mtext></math>=<span>1D47A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x54;</mtext></math>=<span>1D47B</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x55;</mtext></math>=<span>1D47C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x56;</mtext></math>=<span>1D47D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x57;</mtext></math>=<span>1D47E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x58;</mtext></math>=<span>1D47F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x59;</mtext></math>=<span>1D480</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x5A;</mtext></math>=<span>1D481</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x61;</mtext></math>=<span>1D482</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x62;</mtext></math>=<span>1D483</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x63;</mtext></math>=<span>1D484</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x64;</mtext></math>=<span>1D485</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x65;</mtext></math>=<span>1D486</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x66;</mtext></math>=<span>1D487</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x67;</mtext></math>=<span>1D488</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x68;</mtext></math>=<span>1D489</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x69;</mtext></math>=<span>1D48A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x6A;</mtext></math>=<span>1D48B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x6B;</mtext></math>=<span>1D48C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x6C;</mtext></math>=<span>1D48D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x6D;</mtext></math>=<span>1D48E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x6E;</mtext></math>=<span>1D48F</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x6F;</mtext></math>=<span>1D490</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x70;</mtext></math>=<span>1D491</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x71;</mtext></math>=<span>1D492</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x72;</mtext></math>=<span>1D493</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x73;</mtext></math>=<span>1D494</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x74;</mtext></math>=<span>1D495</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x75;</mtext></math>=<span>1D496</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x76;</mtext></math>=<span>1D497</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x77;</mtext></math>=<span>1D498</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x78;</mtext></math>=<span>1D499</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x79;</mtext></math>=<span>1D49A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x7A;</mtext></math>=<span>1D49B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x391;</mtext></math>=<span>1D71C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x392;</mtext></math>=<span>1D71D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x393;</mtext></math>=<span>1D71E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x394;</mtext></math>=<span>1D71F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x395;</mtext></math>=<span>1D720</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x396;</mtext></math>=<span>1D721</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x397;</mtext></math>=<span>1D722</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x398;</mtext></math>=<span>1D723</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x399;</mtext></math>=<span>1D724</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x39A;</mtext></math>=<span>1D725</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x39B;</mtext></math>=<span>1D726</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x39C;</mtext></math>=<span>1D727</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x39D;</mtext></math>=<span>1D728</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x39E;</mtext></math>=<span>1D729</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x39F;</mtext></math>=<span>1D72A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A0;</mtext></math>=<span>1D72B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A1;</mtext></math>=<span>1D72C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3F4;</mtext></math>=<span>1D72D</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A3;</mtext></math>=<span>1D72E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A4;</mtext></math>=<span>1D72F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A5;</mtext></math>=<span>1D730</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A6;</mtext></math>=<span>1D731</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A7;</mtext></math>=<span>1D732</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A8;</mtext></math>=<span>1D733</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3A9;</mtext></math>=<span>1D734</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x2207;</mtext></math>=<span>1D735</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B1;</mtext></math>=<span>1D736</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B2;</mtext></math>=<span>1D737</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B3;</mtext></math>=<span>1D738</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B4;</mtext></math>=<span>1D739</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B5;</mtext></math>=<span>1D73A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B6;</mtext></math>=<span>1D73B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B7;</mtext></math>=<span>1D73C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B8;</mtext></math>=<span>1D73D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3B9;</mtext></math>=<span>1D73E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3BA;</mtext></math>=<span>1D73F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3BB;</mtext></math>=<span>1D740</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3BC;</mtext></math>=<span>1D741</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3BD;</mtext></math>=<span>1D742</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3BE;</mtext></math>=<span>1D743</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3BF;</mtext></math>=<span>1D744</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C0;</mtext></math>=<span>1D745</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C1;</mtext></math>=<span>1D746</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C2;</mtext></math>=<span>1D747</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C3;</mtext></math>=<span>1D748</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C4;</mtext></math>=<span>1D749</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C5;</mtext></math>=<span>1D74A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C6;</mtext></math>=<span>1D74B</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C7;</mtext></math>=<span>1D74C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C8;</mtext></math>=<span>1D74D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3C9;</mtext></math>=<span>1D74E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x2202;</mtext></math>=<span>1D74F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3F5;</mtext></math>=<span>1D750</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3D1;</mtext></math>=<span>1D751</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3F0;</mtext></math>=<span>1D752</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3D5;</mtext></math>=<span>1D753</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3F1;</mtext></math>=<span>1D754</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-italic">&#x3D6;</mtext></math>=<span>1D755</span></span><br/>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-ref.html
deleted file mode 100644
index ac24ab5b003..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-ref.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D400;</mtext></math>=<span>1D400</span></span>
- <span><math class="testfont"><mtext>&#x1D401;</mtext></math>=<span>1D401</span></span>
- <span><math class="testfont"><mtext>&#x1D402;</mtext></math>=<span>1D402</span></span>
- <span><math class="testfont"><mtext>&#x1D403;</mtext></math>=<span>1D403</span></span>
- <span><math class="testfont"><mtext>&#x1D404;</mtext></math>=<span>1D404</span></span>
- <span><math class="testfont"><mtext>&#x1D405;</mtext></math>=<span>1D405</span></span>
- <span><math class="testfont"><mtext>&#x1D406;</mtext></math>=<span>1D406</span></span>
- <span><math class="testfont"><mtext>&#x1D407;</mtext></math>=<span>1D407</span></span>
- <span><math class="testfont"><mtext>&#x1D408;</mtext></math>=<span>1D408</span></span>
- <span><math class="testfont"><mtext>&#x1D409;</mtext></math>=<span>1D409</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D40A;</mtext></math>=<span>1D40A</span></span>
- <span><math class="testfont"><mtext>&#x1D40B;</mtext></math>=<span>1D40B</span></span>
- <span><math class="testfont"><mtext>&#x1D40C;</mtext></math>=<span>1D40C</span></span>
- <span><math class="testfont"><mtext>&#x1D40D;</mtext></math>=<span>1D40D</span></span>
- <span><math class="testfont"><mtext>&#x1D40E;</mtext></math>=<span>1D40E</span></span>
- <span><math class="testfont"><mtext>&#x1D40F;</mtext></math>=<span>1D40F</span></span>
- <span><math class="testfont"><mtext>&#x1D410;</mtext></math>=<span>1D410</span></span>
- <span><math class="testfont"><mtext>&#x1D411;</mtext></math>=<span>1D411</span></span>
- <span><math class="testfont"><mtext>&#x1D412;</mtext></math>=<span>1D412</span></span>
- <span><math class="testfont"><mtext>&#x1D413;</mtext></math>=<span>1D413</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D414;</mtext></math>=<span>1D414</span></span>
- <span><math class="testfont"><mtext>&#x1D415;</mtext></math>=<span>1D415</span></span>
- <span><math class="testfont"><mtext>&#x1D416;</mtext></math>=<span>1D416</span></span>
- <span><math class="testfont"><mtext>&#x1D417;</mtext></math>=<span>1D417</span></span>
- <span><math class="testfont"><mtext>&#x1D418;</mtext></math>=<span>1D418</span></span>
- <span><math class="testfont"><mtext>&#x1D419;</mtext></math>=<span>1D419</span></span>
- <span><math class="testfont"><mtext>&#x1D41A;</mtext></math>=<span>1D41A</span></span>
- <span><math class="testfont"><mtext>&#x1D41B;</mtext></math>=<span>1D41B</span></span>
- <span><math class="testfont"><mtext>&#x1D41C;</mtext></math>=<span>1D41C</span></span>
- <span><math class="testfont"><mtext>&#x1D41D;</mtext></math>=<span>1D41D</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D41E;</mtext></math>=<span>1D41E</span></span>
- <span><math class="testfont"><mtext>&#x1D41F;</mtext></math>=<span>1D41F</span></span>
- <span><math class="testfont"><mtext>&#x1D420;</mtext></math>=<span>1D420</span></span>
- <span><math class="testfont"><mtext>&#x1D421;</mtext></math>=<span>1D421</span></span>
- <span><math class="testfont"><mtext>&#x1D422;</mtext></math>=<span>1D422</span></span>
- <span><math class="testfont"><mtext>&#x1D423;</mtext></math>=<span>1D423</span></span>
- <span><math class="testfont"><mtext>&#x1D424;</mtext></math>=<span>1D424</span></span>
- <span><math class="testfont"><mtext>&#x1D425;</mtext></math>=<span>1D425</span></span>
- <span><math class="testfont"><mtext>&#x1D426;</mtext></math>=<span>1D426</span></span>
- <span><math class="testfont"><mtext>&#x1D427;</mtext></math>=<span>1D427</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D428;</mtext></math>=<span>1D428</span></span>
- <span><math class="testfont"><mtext>&#x1D429;</mtext></math>=<span>1D429</span></span>
- <span><math class="testfont"><mtext>&#x1D42A;</mtext></math>=<span>1D42A</span></span>
- <span><math class="testfont"><mtext>&#x1D42B;</mtext></math>=<span>1D42B</span></span>
- <span><math class="testfont"><mtext>&#x1D42C;</mtext></math>=<span>1D42C</span></span>
- <span><math class="testfont"><mtext>&#x1D42D;</mtext></math>=<span>1D42D</span></span>
- <span><math class="testfont"><mtext>&#x1D42E;</mtext></math>=<span>1D42E</span></span>
- <span><math class="testfont"><mtext>&#x1D42F;</mtext></math>=<span>1D42F</span></span>
- <span><math class="testfont"><mtext>&#x1D430;</mtext></math>=<span>1D430</span></span>
- <span><math class="testfont"><mtext>&#x1D431;</mtext></math>=<span>1D431</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D432;</mtext></math>=<span>1D432</span></span>
- <span><math class="testfont"><mtext>&#x1D433;</mtext></math>=<span>1D433</span></span>
- <span><math class="testfont"><mtext>&#x1D6A8;</mtext></math>=<span>1D6A8</span></span>
- <span><math class="testfont"><mtext>&#x1D6A9;</mtext></math>=<span>1D6A9</span></span>
- <span><math class="testfont"><mtext>&#x1D6AA;</mtext></math>=<span>1D6AA</span></span>
- <span><math class="testfont"><mtext>&#x1D6AB;</mtext></math>=<span>1D6AB</span></span>
- <span><math class="testfont"><mtext>&#x1D6AC;</mtext></math>=<span>1D6AC</span></span>
- <span><math class="testfont"><mtext>&#x1D6AD;</mtext></math>=<span>1D6AD</span></span>
- <span><math class="testfont"><mtext>&#x1D6AE;</mtext></math>=<span>1D6AE</span></span>
- <span><math class="testfont"><mtext>&#x1D6AF;</mtext></math>=<span>1D6AF</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6B0;</mtext></math>=<span>1D6B0</span></span>
- <span><math class="testfont"><mtext>&#x1D6B1;</mtext></math>=<span>1D6B1</span></span>
- <span><math class="testfont"><mtext>&#x1D6B2;</mtext></math>=<span>1D6B2</span></span>
- <span><math class="testfont"><mtext>&#x1D6B3;</mtext></math>=<span>1D6B3</span></span>
- <span><math class="testfont"><mtext>&#x1D6B4;</mtext></math>=<span>1D6B4</span></span>
- <span><math class="testfont"><mtext>&#x1D6B5;</mtext></math>=<span>1D6B5</span></span>
- <span><math class="testfont"><mtext>&#x1D6B6;</mtext></math>=<span>1D6B6</span></span>
- <span><math class="testfont"><mtext>&#x1D6B7;</mtext></math>=<span>1D6B7</span></span>
- <span><math class="testfont"><mtext>&#x1D6B8;</mtext></math>=<span>1D6B8</span></span>
- <span><math class="testfont"><mtext>&#x1D6B9;</mtext></math>=<span>1D6B9</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6BA;</mtext></math>=<span>1D6BA</span></span>
- <span><math class="testfont"><mtext>&#x1D6BB;</mtext></math>=<span>1D6BB</span></span>
- <span><math class="testfont"><mtext>&#x1D6BC;</mtext></math>=<span>1D6BC</span></span>
- <span><math class="testfont"><mtext>&#x1D6BD;</mtext></math>=<span>1D6BD</span></span>
- <span><math class="testfont"><mtext>&#x1D6BE;</mtext></math>=<span>1D6BE</span></span>
- <span><math class="testfont"><mtext>&#x1D6BF;</mtext></math>=<span>1D6BF</span></span>
- <span><math class="testfont"><mtext>&#x1D6C0;</mtext></math>=<span>1D6C0</span></span>
- <span><math class="testfont"><mtext>&#x1D6C1;</mtext></math>=<span>1D6C1</span></span>
- <span><math class="testfont"><mtext>&#x1D6C2;</mtext></math>=<span>1D6C2</span></span>
- <span><math class="testfont"><mtext>&#x1D6C3;</mtext></math>=<span>1D6C3</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6C4;</mtext></math>=<span>1D6C4</span></span>
- <span><math class="testfont"><mtext>&#x1D6C5;</mtext></math>=<span>1D6C5</span></span>
- <span><math class="testfont"><mtext>&#x1D6C6;</mtext></math>=<span>1D6C6</span></span>
- <span><math class="testfont"><mtext>&#x1D6C7;</mtext></math>=<span>1D6C7</span></span>
- <span><math class="testfont"><mtext>&#x1D6C8;</mtext></math>=<span>1D6C8</span></span>
- <span><math class="testfont"><mtext>&#x1D6C9;</mtext></math>=<span>1D6C9</span></span>
- <span><math class="testfont"><mtext>&#x1D6CA;</mtext></math>=<span>1D6CA</span></span>
- <span><math class="testfont"><mtext>&#x1D6CB;</mtext></math>=<span>1D6CB</span></span>
- <span><math class="testfont"><mtext>&#x1D6CC;</mtext></math>=<span>1D6CC</span></span>
- <span><math class="testfont"><mtext>&#x1D6CD;</mtext></math>=<span>1D6CD</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6CE;</mtext></math>=<span>1D6CE</span></span>
- <span><math class="testfont"><mtext>&#x1D6CF;</mtext></math>=<span>1D6CF</span></span>
- <span><math class="testfont"><mtext>&#x1D6D0;</mtext></math>=<span>1D6D0</span></span>
- <span><math class="testfont"><mtext>&#x1D6D1;</mtext></math>=<span>1D6D1</span></span>
- <span><math class="testfont"><mtext>&#x1D6D2;</mtext></math>=<span>1D6D2</span></span>
- <span><math class="testfont"><mtext>&#x1D6D3;</mtext></math>=<span>1D6D3</span></span>
- <span><math class="testfont"><mtext>&#x1D6D4;</mtext></math>=<span>1D6D4</span></span>
- <span><math class="testfont"><mtext>&#x1D6D5;</mtext></math>=<span>1D6D5</span></span>
- <span><math class="testfont"><mtext>&#x1D6D6;</mtext></math>=<span>1D6D6</span></span>
- <span><math class="testfont"><mtext>&#x1D6D7;</mtext></math>=<span>1D6D7</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6D8;</mtext></math>=<span>1D6D8</span></span>
- <span><math class="testfont"><mtext>&#x1D6D9;</mtext></math>=<span>1D6D9</span></span>
- <span><math class="testfont"><mtext>&#x1D6DA;</mtext></math>=<span>1D6DA</span></span>
- <span><math class="testfont"><mtext>&#x1D6DB;</mtext></math>=<span>1D6DB</span></span>
- <span><math class="testfont"><mtext>&#x1D6DC;</mtext></math>=<span>1D6DC</span></span>
- <span><math class="testfont"><mtext>&#x1D6DD;</mtext></math>=<span>1D6DD</span></span>
- <span><math class="testfont"><mtext>&#x1D6DE;</mtext></math>=<span>1D6DE</span></span>
- <span><math class="testfont"><mtext>&#x1D6DF;</mtext></math>=<span>1D6DF</span></span>
- <span><math class="testfont"><mtext>&#x1D6E0;</mtext></math>=<span>1D6E0</span></span>
- <span><math class="testfont"><mtext>&#x1D6E1;</mtext></math>=<span>1D6E1</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7CA;</mtext></math>=<span>1D7CA</span></span>
- <span><math class="testfont"><mtext>&#x1D7CB;</mtext></math>=<span>1D7CB</span></span>
- <span><math class="testfont"><mtext>&#x1D7CE;</mtext></math>=<span>1D7CE</span></span>
- <span><math class="testfont"><mtext>&#x1D7CF;</mtext></math>=<span>1D7CF</span></span>
- <span><math class="testfont"><mtext>&#x1D7D0;</mtext></math>=<span>1D7D0</span></span>
- <span><math class="testfont"><mtext>&#x1D7D1;</mtext></math>=<span>1D7D1</span></span>
- <span><math class="testfont"><mtext>&#x1D7D2;</mtext></math>=<span>1D7D2</span></span>
- <span><math class="testfont"><mtext>&#x1D7D3;</mtext></math>=<span>1D7D3</span></span>
- <span><math class="testfont"><mtext>&#x1D7D4;</mtext></math>=<span>1D7D4</span></span>
- <span><math class="testfont"><mtext>&#x1D7D5;</mtext></math>=<span>1D7D5</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7D6;</mtext></math>=<span>1D7D6</span></span>
- <span><math class="testfont"><mtext>&#x1D7D7;</mtext></math>=<span>1D7D7</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-sans-serif-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-sans-serif-ref.html
deleted file mode 100644
index 78c0cc5ea62..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-sans-serif-ref.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold-sans-serif (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold-sans-serif.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D5D4;</mtext></math>=<span>1D5D4</span></span>
- <span><math class="testfont"><mtext>&#x1D5D5;</mtext></math>=<span>1D5D5</span></span>
- <span><math class="testfont"><mtext>&#x1D5D6;</mtext></math>=<span>1D5D6</span></span>
- <span><math class="testfont"><mtext>&#x1D5D7;</mtext></math>=<span>1D5D7</span></span>
- <span><math class="testfont"><mtext>&#x1D5D8;</mtext></math>=<span>1D5D8</span></span>
- <span><math class="testfont"><mtext>&#x1D5D9;</mtext></math>=<span>1D5D9</span></span>
- <span><math class="testfont"><mtext>&#x1D5DA;</mtext></math>=<span>1D5DA</span></span>
- <span><math class="testfont"><mtext>&#x1D5DB;</mtext></math>=<span>1D5DB</span></span>
- <span><math class="testfont"><mtext>&#x1D5DC;</mtext></math>=<span>1D5DC</span></span>
- <span><math class="testfont"><mtext>&#x1D5DD;</mtext></math>=<span>1D5DD</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5DE;</mtext></math>=<span>1D5DE</span></span>
- <span><math class="testfont"><mtext>&#x1D5DF;</mtext></math>=<span>1D5DF</span></span>
- <span><math class="testfont"><mtext>&#x1D5E0;</mtext></math>=<span>1D5E0</span></span>
- <span><math class="testfont"><mtext>&#x1D5E1;</mtext></math>=<span>1D5E1</span></span>
- <span><math class="testfont"><mtext>&#x1D5E2;</mtext></math>=<span>1D5E2</span></span>
- <span><math class="testfont"><mtext>&#x1D5E3;</mtext></math>=<span>1D5E3</span></span>
- <span><math class="testfont"><mtext>&#x1D5E4;</mtext></math>=<span>1D5E4</span></span>
- <span><math class="testfont"><mtext>&#x1D5E5;</mtext></math>=<span>1D5E5</span></span>
- <span><math class="testfont"><mtext>&#x1D5E6;</mtext></math>=<span>1D5E6</span></span>
- <span><math class="testfont"><mtext>&#x1D5E7;</mtext></math>=<span>1D5E7</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5E8;</mtext></math>=<span>1D5E8</span></span>
- <span><math class="testfont"><mtext>&#x1D5E9;</mtext></math>=<span>1D5E9</span></span>
- <span><math class="testfont"><mtext>&#x1D5EA;</mtext></math>=<span>1D5EA</span></span>
- <span><math class="testfont"><mtext>&#x1D5EB;</mtext></math>=<span>1D5EB</span></span>
- <span><math class="testfont"><mtext>&#x1D5EC;</mtext></math>=<span>1D5EC</span></span>
- <span><math class="testfont"><mtext>&#x1D5ED;</mtext></math>=<span>1D5ED</span></span>
- <span><math class="testfont"><mtext>&#x1D5EE;</mtext></math>=<span>1D5EE</span></span>
- <span><math class="testfont"><mtext>&#x1D5EF;</mtext></math>=<span>1D5EF</span></span>
- <span><math class="testfont"><mtext>&#x1D5F0;</mtext></math>=<span>1D5F0</span></span>
- <span><math class="testfont"><mtext>&#x1D5F1;</mtext></math>=<span>1D5F1</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5F2;</mtext></math>=<span>1D5F2</span></span>
- <span><math class="testfont"><mtext>&#x1D5F3;</mtext></math>=<span>1D5F3</span></span>
- <span><math class="testfont"><mtext>&#x1D5F4;</mtext></math>=<span>1D5F4</span></span>
- <span><math class="testfont"><mtext>&#x1D5F5;</mtext></math>=<span>1D5F5</span></span>
- <span><math class="testfont"><mtext>&#x1D5F6;</mtext></math>=<span>1D5F6</span></span>
- <span><math class="testfont"><mtext>&#x1D5F7;</mtext></math>=<span>1D5F7</span></span>
- <span><math class="testfont"><mtext>&#x1D5F8;</mtext></math>=<span>1D5F8</span></span>
- <span><math class="testfont"><mtext>&#x1D5F9;</mtext></math>=<span>1D5F9</span></span>
- <span><math class="testfont"><mtext>&#x1D5FA;</mtext></math>=<span>1D5FA</span></span>
- <span><math class="testfont"><mtext>&#x1D5FB;</mtext></math>=<span>1D5FB</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5FC;</mtext></math>=<span>1D5FC</span></span>
- <span><math class="testfont"><mtext>&#x1D5FD;</mtext></math>=<span>1D5FD</span></span>
- <span><math class="testfont"><mtext>&#x1D5FE;</mtext></math>=<span>1D5FE</span></span>
- <span><math class="testfont"><mtext>&#x1D5FF;</mtext></math>=<span>1D5FF</span></span>
- <span><math class="testfont"><mtext>&#x1D600;</mtext></math>=<span>1D600</span></span>
- <span><math class="testfont"><mtext>&#x1D601;</mtext></math>=<span>1D601</span></span>
- <span><math class="testfont"><mtext>&#x1D602;</mtext></math>=<span>1D602</span></span>
- <span><math class="testfont"><mtext>&#x1D603;</mtext></math>=<span>1D603</span></span>
- <span><math class="testfont"><mtext>&#x1D604;</mtext></math>=<span>1D604</span></span>
- <span><math class="testfont"><mtext>&#x1D605;</mtext></math>=<span>1D605</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D606;</mtext></math>=<span>1D606</span></span>
- <span><math class="testfont"><mtext>&#x1D607;</mtext></math>=<span>1D607</span></span>
- <span><math class="testfont"><mtext>&#x1D756;</mtext></math>=<span>1D756</span></span>
- <span><math class="testfont"><mtext>&#x1D757;</mtext></math>=<span>1D757</span></span>
- <span><math class="testfont"><mtext>&#x1D758;</mtext></math>=<span>1D758</span></span>
- <span><math class="testfont"><mtext>&#x1D759;</mtext></math>=<span>1D759</span></span>
- <span><math class="testfont"><mtext>&#x1D75A;</mtext></math>=<span>1D75A</span></span>
- <span><math class="testfont"><mtext>&#x1D75B;</mtext></math>=<span>1D75B</span></span>
- <span><math class="testfont"><mtext>&#x1D75C;</mtext></math>=<span>1D75C</span></span>
- <span><math class="testfont"><mtext>&#x1D75D;</mtext></math>=<span>1D75D</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D75E;</mtext></math>=<span>1D75E</span></span>
- <span><math class="testfont"><mtext>&#x1D75F;</mtext></math>=<span>1D75F</span></span>
- <span><math class="testfont"><mtext>&#x1D760;</mtext></math>=<span>1D760</span></span>
- <span><math class="testfont"><mtext>&#x1D761;</mtext></math>=<span>1D761</span></span>
- <span><math class="testfont"><mtext>&#x1D762;</mtext></math>=<span>1D762</span></span>
- <span><math class="testfont"><mtext>&#x1D763;</mtext></math>=<span>1D763</span></span>
- <span><math class="testfont"><mtext>&#x1D764;</mtext></math>=<span>1D764</span></span>
- <span><math class="testfont"><mtext>&#x1D765;</mtext></math>=<span>1D765</span></span>
- <span><math class="testfont"><mtext>&#x1D766;</mtext></math>=<span>1D766</span></span>
- <span><math class="testfont"><mtext>&#x1D767;</mtext></math>=<span>1D767</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D768;</mtext></math>=<span>1D768</span></span>
- <span><math class="testfont"><mtext>&#x1D769;</mtext></math>=<span>1D769</span></span>
- <span><math class="testfont"><mtext>&#x1D76A;</mtext></math>=<span>1D76A</span></span>
- <span><math class="testfont"><mtext>&#x1D76B;</mtext></math>=<span>1D76B</span></span>
- <span><math class="testfont"><mtext>&#x1D76C;</mtext></math>=<span>1D76C</span></span>
- <span><math class="testfont"><mtext>&#x1D76D;</mtext></math>=<span>1D76D</span></span>
- <span><math class="testfont"><mtext>&#x1D76E;</mtext></math>=<span>1D76E</span></span>
- <span><math class="testfont"><mtext>&#x1D76F;</mtext></math>=<span>1D76F</span></span>
- <span><math class="testfont"><mtext>&#x1D770;</mtext></math>=<span>1D770</span></span>
- <span><math class="testfont"><mtext>&#x1D771;</mtext></math>=<span>1D771</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D772;</mtext></math>=<span>1D772</span></span>
- <span><math class="testfont"><mtext>&#x1D773;</mtext></math>=<span>1D773</span></span>
- <span><math class="testfont"><mtext>&#x1D774;</mtext></math>=<span>1D774</span></span>
- <span><math class="testfont"><mtext>&#x1D775;</mtext></math>=<span>1D775</span></span>
- <span><math class="testfont"><mtext>&#x1D776;</mtext></math>=<span>1D776</span></span>
- <span><math class="testfont"><mtext>&#x1D777;</mtext></math>=<span>1D777</span></span>
- <span><math class="testfont"><mtext>&#x1D778;</mtext></math>=<span>1D778</span></span>
- <span><math class="testfont"><mtext>&#x1D779;</mtext></math>=<span>1D779</span></span>
- <span><math class="testfont"><mtext>&#x1D77A;</mtext></math>=<span>1D77A</span></span>
- <span><math class="testfont"><mtext>&#x1D77B;</mtext></math>=<span>1D77B</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D77C;</mtext></math>=<span>1D77C</span></span>
- <span><math class="testfont"><mtext>&#x1D77D;</mtext></math>=<span>1D77D</span></span>
- <span><math class="testfont"><mtext>&#x1D77E;</mtext></math>=<span>1D77E</span></span>
- <span><math class="testfont"><mtext>&#x1D77F;</mtext></math>=<span>1D77F</span></span>
- <span><math class="testfont"><mtext>&#x1D780;</mtext></math>=<span>1D780</span></span>
- <span><math class="testfont"><mtext>&#x1D781;</mtext></math>=<span>1D781</span></span>
- <span><math class="testfont"><mtext>&#x1D782;</mtext></math>=<span>1D782</span></span>
- <span><math class="testfont"><mtext>&#x1D783;</mtext></math>=<span>1D783</span></span>
- <span><math class="testfont"><mtext>&#x1D784;</mtext></math>=<span>1D784</span></span>
- <span><math class="testfont"><mtext>&#x1D785;</mtext></math>=<span>1D785</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D786;</mtext></math>=<span>1D786</span></span>
- <span><math class="testfont"><mtext>&#x1D787;</mtext></math>=<span>1D787</span></span>
- <span><math class="testfont"><mtext>&#x1D788;</mtext></math>=<span>1D788</span></span>
- <span><math class="testfont"><mtext>&#x1D789;</mtext></math>=<span>1D789</span></span>
- <span><math class="testfont"><mtext>&#x1D78A;</mtext></math>=<span>1D78A</span></span>
- <span><math class="testfont"><mtext>&#x1D78B;</mtext></math>=<span>1D78B</span></span>
- <span><math class="testfont"><mtext>&#x1D78C;</mtext></math>=<span>1D78C</span></span>
- <span><math class="testfont"><mtext>&#x1D78D;</mtext></math>=<span>1D78D</span></span>
- <span><math class="testfont"><mtext>&#x1D78E;</mtext></math>=<span>1D78E</span></span>
- <span><math class="testfont"><mtext>&#x1D78F;</mtext></math>=<span>1D78F</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7EC;</mtext></math>=<span>1D7EC</span></span>
- <span><math class="testfont"><mtext>&#x1D7ED;</mtext></math>=<span>1D7ED</span></span>
- <span><math class="testfont"><mtext>&#x1D7EE;</mtext></math>=<span>1D7EE</span></span>
- <span><math class="testfont"><mtext>&#x1D7EF;</mtext></math>=<span>1D7EF</span></span>
- <span><math class="testfont"><mtext>&#x1D7F0;</mtext></math>=<span>1D7F0</span></span>
- <span><math class="testfont"><mtext>&#x1D7F1;</mtext></math>=<span>1D7F1</span></span>
- <span><math class="testfont"><mtext>&#x1D7F2;</mtext></math>=<span>1D7F2</span></span>
- <span><math class="testfont"><mtext>&#x1D7F3;</mtext></math>=<span>1D7F3</span></span>
- <span><math class="testfont"><mtext>&#x1D7F4;</mtext></math>=<span>1D7F4</span></span>
- <span><math class="testfont"><mtext>&#x1D7F5;</mtext></math>=<span>1D7F5</span></span><br/>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-sans-serif.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-sans-serif.html
deleted file mode 100644
index 0e0662dff66..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-sans-serif.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold-sans-serif</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#bold-sans-serif-mappings">
-<link rel="match" href="mathvariant-bold-sans-serif-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a bold-sans-serif mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold-sans-serif.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x41;</mtext></math>=<span>1D5D4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x42;</mtext></math>=<span>1D5D5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x43;</mtext></math>=<span>1D5D6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x44;</mtext></math>=<span>1D5D7</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x45;</mtext></math>=<span>1D5D8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x46;</mtext></math>=<span>1D5D9</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x47;</mtext></math>=<span>1D5DA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x48;</mtext></math>=<span>1D5DB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x49;</mtext></math>=<span>1D5DC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x4A;</mtext></math>=<span>1D5DD</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x4B;</mtext></math>=<span>1D5DE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x4C;</mtext></math>=<span>1D5DF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x4D;</mtext></math>=<span>1D5E0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x4E;</mtext></math>=<span>1D5E1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x4F;</mtext></math>=<span>1D5E2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x50;</mtext></math>=<span>1D5E3</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x51;</mtext></math>=<span>1D5E4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x52;</mtext></math>=<span>1D5E5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x53;</mtext></math>=<span>1D5E6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x54;</mtext></math>=<span>1D5E7</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x55;</mtext></math>=<span>1D5E8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x56;</mtext></math>=<span>1D5E9</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x57;</mtext></math>=<span>1D5EA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x58;</mtext></math>=<span>1D5EB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x59;</mtext></math>=<span>1D5EC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x5A;</mtext></math>=<span>1D5ED</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x61;</mtext></math>=<span>1D5EE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x62;</mtext></math>=<span>1D5EF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x63;</mtext></math>=<span>1D5F0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x64;</mtext></math>=<span>1D5F1</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x65;</mtext></math>=<span>1D5F2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x66;</mtext></math>=<span>1D5F3</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x67;</mtext></math>=<span>1D5F4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x68;</mtext></math>=<span>1D5F5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x69;</mtext></math>=<span>1D5F6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x6A;</mtext></math>=<span>1D5F7</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x6B;</mtext></math>=<span>1D5F8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x6C;</mtext></math>=<span>1D5F9</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x6D;</mtext></math>=<span>1D5FA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x6E;</mtext></math>=<span>1D5FB</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x6F;</mtext></math>=<span>1D5FC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x70;</mtext></math>=<span>1D5FD</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x71;</mtext></math>=<span>1D5FE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x72;</mtext></math>=<span>1D5FF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x73;</mtext></math>=<span>1D600</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x74;</mtext></math>=<span>1D601</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x75;</mtext></math>=<span>1D602</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x76;</mtext></math>=<span>1D603</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x77;</mtext></math>=<span>1D604</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x78;</mtext></math>=<span>1D605</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x79;</mtext></math>=<span>1D606</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x7A;</mtext></math>=<span>1D607</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x391;</mtext></math>=<span>1D756</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x392;</mtext></math>=<span>1D757</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x393;</mtext></math>=<span>1D758</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x394;</mtext></math>=<span>1D759</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x395;</mtext></math>=<span>1D75A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x396;</mtext></math>=<span>1D75B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x397;</mtext></math>=<span>1D75C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x398;</mtext></math>=<span>1D75D</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x399;</mtext></math>=<span>1D75E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x39A;</mtext></math>=<span>1D75F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x39B;</mtext></math>=<span>1D760</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x39C;</mtext></math>=<span>1D761</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x39D;</mtext></math>=<span>1D762</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x39E;</mtext></math>=<span>1D763</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x39F;</mtext></math>=<span>1D764</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A0;</mtext></math>=<span>1D765</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A1;</mtext></math>=<span>1D766</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3F4;</mtext></math>=<span>1D767</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A3;</mtext></math>=<span>1D768</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A4;</mtext></math>=<span>1D769</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A5;</mtext></math>=<span>1D76A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A6;</mtext></math>=<span>1D76B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A7;</mtext></math>=<span>1D76C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A8;</mtext></math>=<span>1D76D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3A9;</mtext></math>=<span>1D76E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x2207;</mtext></math>=<span>1D76F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B1;</mtext></math>=<span>1D770</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B2;</mtext></math>=<span>1D771</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B3;</mtext></math>=<span>1D772</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B4;</mtext></math>=<span>1D773</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B5;</mtext></math>=<span>1D774</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B6;</mtext></math>=<span>1D775</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B7;</mtext></math>=<span>1D776</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B8;</mtext></math>=<span>1D777</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3B9;</mtext></math>=<span>1D778</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3BA;</mtext></math>=<span>1D779</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3BB;</mtext></math>=<span>1D77A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3BC;</mtext></math>=<span>1D77B</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3BD;</mtext></math>=<span>1D77C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3BE;</mtext></math>=<span>1D77D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3BF;</mtext></math>=<span>1D77E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C0;</mtext></math>=<span>1D77F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C1;</mtext></math>=<span>1D780</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C2;</mtext></math>=<span>1D781</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C3;</mtext></math>=<span>1D782</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C4;</mtext></math>=<span>1D783</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C5;</mtext></math>=<span>1D784</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C6;</mtext></math>=<span>1D785</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C7;</mtext></math>=<span>1D786</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C8;</mtext></math>=<span>1D787</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3C9;</mtext></math>=<span>1D788</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x2202;</mtext></math>=<span>1D789</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3F5;</mtext></math>=<span>1D78A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3D1;</mtext></math>=<span>1D78B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3F0;</mtext></math>=<span>1D78C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3D5;</mtext></math>=<span>1D78D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3F1;</mtext></math>=<span>1D78E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x3D6;</mtext></math>=<span>1D78F</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x30;</mtext></math>=<span>1D7EC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x31;</mtext></math>=<span>1D7ED</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x32;</mtext></math>=<span>1D7EE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x33;</mtext></math>=<span>1D7EF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x34;</mtext></math>=<span>1D7F0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x35;</mtext></math>=<span>1D7F1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x36;</mtext></math>=<span>1D7F2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x37;</mtext></math>=<span>1D7F3</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x38;</mtext></math>=<span>1D7F4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-sans-serif">&#x39;</mtext></math>=<span>1D7F5</span></span><br/>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-script-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-script-ref.html
deleted file mode 100644
index ef11f7fb8fa..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-script-ref.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold-script (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold-script.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D4D0;</mtext></math>=<span>1D4D0</span></span>
- <span><math class="testfont"><mtext>&#x1D4D1;</mtext></math>=<span>1D4D1</span></span>
- <span><math class="testfont"><mtext>&#x1D4D2;</mtext></math>=<span>1D4D2</span></span>
- <span><math class="testfont"><mtext>&#x1D4D3;</mtext></math>=<span>1D4D3</span></span>
- <span><math class="testfont"><mtext>&#x1D4D4;</mtext></math>=<span>1D4D4</span></span>
- <span><math class="testfont"><mtext>&#x1D4D5;</mtext></math>=<span>1D4D5</span></span>
- <span><math class="testfont"><mtext>&#x1D4D6;</mtext></math>=<span>1D4D6</span></span>
- <span><math class="testfont"><mtext>&#x1D4D7;</mtext></math>=<span>1D4D7</span></span>
- <span><math class="testfont"><mtext>&#x1D4D8;</mtext></math>=<span>1D4D8</span></span>
- <span><math class="testfont"><mtext>&#x1D4D9;</mtext></math>=<span>1D4D9</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D4DA;</mtext></math>=<span>1D4DA</span></span>
- <span><math class="testfont"><mtext>&#x1D4DB;</mtext></math>=<span>1D4DB</span></span>
- <span><math class="testfont"><mtext>&#x1D4DC;</mtext></math>=<span>1D4DC</span></span>
- <span><math class="testfont"><mtext>&#x1D4DD;</mtext></math>=<span>1D4DD</span></span>
- <span><math class="testfont"><mtext>&#x1D4DE;</mtext></math>=<span>1D4DE</span></span>
- <span><math class="testfont"><mtext>&#x1D4DF;</mtext></math>=<span>1D4DF</span></span>
- <span><math class="testfont"><mtext>&#x1D4E0;</mtext></math>=<span>1D4E0</span></span>
- <span><math class="testfont"><mtext>&#x1D4E1;</mtext></math>=<span>1D4E1</span></span>
- <span><math class="testfont"><mtext>&#x1D4E2;</mtext></math>=<span>1D4E2</span></span>
- <span><math class="testfont"><mtext>&#x1D4E3;</mtext></math>=<span>1D4E3</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D4E4;</mtext></math>=<span>1D4E4</span></span>
- <span><math class="testfont"><mtext>&#x1D4E5;</mtext></math>=<span>1D4E5</span></span>
- <span><math class="testfont"><mtext>&#x1D4E6;</mtext></math>=<span>1D4E6</span></span>
- <span><math class="testfont"><mtext>&#x1D4E7;</mtext></math>=<span>1D4E7</span></span>
- <span><math class="testfont"><mtext>&#x1D4E8;</mtext></math>=<span>1D4E8</span></span>
- <span><math class="testfont"><mtext>&#x1D4E9;</mtext></math>=<span>1D4E9</span></span>
- <span><math class="testfont"><mtext>&#x1D4EA;</mtext></math>=<span>1D4EA</span></span>
- <span><math class="testfont"><mtext>&#x1D4EB;</mtext></math>=<span>1D4EB</span></span>
- <span><math class="testfont"><mtext>&#x1D4EC;</mtext></math>=<span>1D4EC</span></span>
- <span><math class="testfont"><mtext>&#x1D4ED;</mtext></math>=<span>1D4ED</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D4EE;</mtext></math>=<span>1D4EE</span></span>
- <span><math class="testfont"><mtext>&#x1D4EF;</mtext></math>=<span>1D4EF</span></span>
- <span><math class="testfont"><mtext>&#x1D4F0;</mtext></math>=<span>1D4F0</span></span>
- <span><math class="testfont"><mtext>&#x1D4F1;</mtext></math>=<span>1D4F1</span></span>
- <span><math class="testfont"><mtext>&#x1D4F2;</mtext></math>=<span>1D4F2</span></span>
- <span><math class="testfont"><mtext>&#x1D4F3;</mtext></math>=<span>1D4F3</span></span>
- <span><math class="testfont"><mtext>&#x1D4F4;</mtext></math>=<span>1D4F4</span></span>
- <span><math class="testfont"><mtext>&#x1D4F5;</mtext></math>=<span>1D4F5</span></span>
- <span><math class="testfont"><mtext>&#x1D4F6;</mtext></math>=<span>1D4F6</span></span>
- <span><math class="testfont"><mtext>&#x1D4F7;</mtext></math>=<span>1D4F7</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D4F8;</mtext></math>=<span>1D4F8</span></span>
- <span><math class="testfont"><mtext>&#x1D4F9;</mtext></math>=<span>1D4F9</span></span>
- <span><math class="testfont"><mtext>&#x1D4FA;</mtext></math>=<span>1D4FA</span></span>
- <span><math class="testfont"><mtext>&#x1D4FB;</mtext></math>=<span>1D4FB</span></span>
- <span><math class="testfont"><mtext>&#x1D4FC;</mtext></math>=<span>1D4FC</span></span>
- <span><math class="testfont"><mtext>&#x1D4FD;</mtext></math>=<span>1D4FD</span></span>
- <span><math class="testfont"><mtext>&#x1D4FE;</mtext></math>=<span>1D4FE</span></span>
- <span><math class="testfont"><mtext>&#x1D4FF;</mtext></math>=<span>1D4FF</span></span>
- <span><math class="testfont"><mtext>&#x1D500;</mtext></math>=<span>1D500</span></span>
- <span><math class="testfont"><mtext>&#x1D501;</mtext></math>=<span>1D501</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D502;</mtext></math>=<span>1D502</span></span>
- <span><math class="testfont"><mtext>&#x1D503;</mtext></math>=<span>1D503</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-script.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-script.html
deleted file mode 100644
index 0e775949f9b..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold-script.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold-script</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#bold-script-mappings">
-<link rel="match" href="mathvariant-bold-script-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a bold-script mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold-script.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x41;</mtext></math>=<span>1D4D0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x42;</mtext></math>=<span>1D4D1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x43;</mtext></math>=<span>1D4D2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x44;</mtext></math>=<span>1D4D3</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x45;</mtext></math>=<span>1D4D4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x46;</mtext></math>=<span>1D4D5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x47;</mtext></math>=<span>1D4D6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x48;</mtext></math>=<span>1D4D7</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x49;</mtext></math>=<span>1D4D8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x4A;</mtext></math>=<span>1D4D9</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x4B;</mtext></math>=<span>1D4DA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x4C;</mtext></math>=<span>1D4DB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x4D;</mtext></math>=<span>1D4DC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x4E;</mtext></math>=<span>1D4DD</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x4F;</mtext></math>=<span>1D4DE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x50;</mtext></math>=<span>1D4DF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x51;</mtext></math>=<span>1D4E0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x52;</mtext></math>=<span>1D4E1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x53;</mtext></math>=<span>1D4E2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x54;</mtext></math>=<span>1D4E3</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x55;</mtext></math>=<span>1D4E4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x56;</mtext></math>=<span>1D4E5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x57;</mtext></math>=<span>1D4E6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x58;</mtext></math>=<span>1D4E7</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x59;</mtext></math>=<span>1D4E8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x5A;</mtext></math>=<span>1D4E9</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x61;</mtext></math>=<span>1D4EA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x62;</mtext></math>=<span>1D4EB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x63;</mtext></math>=<span>1D4EC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x64;</mtext></math>=<span>1D4ED</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x65;</mtext></math>=<span>1D4EE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x66;</mtext></math>=<span>1D4EF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x67;</mtext></math>=<span>1D4F0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x68;</mtext></math>=<span>1D4F1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x69;</mtext></math>=<span>1D4F2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x6A;</mtext></math>=<span>1D4F3</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x6B;</mtext></math>=<span>1D4F4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x6C;</mtext></math>=<span>1D4F5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x6D;</mtext></math>=<span>1D4F6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x6E;</mtext></math>=<span>1D4F7</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x6F;</mtext></math>=<span>1D4F8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x70;</mtext></math>=<span>1D4F9</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x71;</mtext></math>=<span>1D4FA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x72;</mtext></math>=<span>1D4FB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x73;</mtext></math>=<span>1D4FC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x74;</mtext></math>=<span>1D4FD</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x75;</mtext></math>=<span>1D4FE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x76;</mtext></math>=<span>1D4FF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x77;</mtext></math>=<span>1D500</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x78;</mtext></math>=<span>1D501</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x79;</mtext></math>=<span>1D502</span></span>
- <span><math class="testfont"><mtext mathvariant="bold-script">&#x7A;</mtext></math>=<span>1D503</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold.html
deleted file mode 100644
index db5f4755bec..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-bold.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant bold</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#bold-mappings">
-<link rel="match" href="mathvariant-bold-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a bold mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-bold.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="bold">&#x41;</mtext></math>=<span>1D400</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x42;</mtext></math>=<span>1D401</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x43;</mtext></math>=<span>1D402</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x44;</mtext></math>=<span>1D403</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x45;</mtext></math>=<span>1D404</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x46;</mtext></math>=<span>1D405</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x47;</mtext></math>=<span>1D406</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x48;</mtext></math>=<span>1D407</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x49;</mtext></math>=<span>1D408</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x4A;</mtext></math>=<span>1D409</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x4B;</mtext></math>=<span>1D40A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x4C;</mtext></math>=<span>1D40B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x4D;</mtext></math>=<span>1D40C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x4E;</mtext></math>=<span>1D40D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x4F;</mtext></math>=<span>1D40E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x50;</mtext></math>=<span>1D40F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x51;</mtext></math>=<span>1D410</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x52;</mtext></math>=<span>1D411</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x53;</mtext></math>=<span>1D412</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x54;</mtext></math>=<span>1D413</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x55;</mtext></math>=<span>1D414</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x56;</mtext></math>=<span>1D415</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x57;</mtext></math>=<span>1D416</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x58;</mtext></math>=<span>1D417</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x59;</mtext></math>=<span>1D418</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x5A;</mtext></math>=<span>1D419</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x61;</mtext></math>=<span>1D41A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x62;</mtext></math>=<span>1D41B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x63;</mtext></math>=<span>1D41C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x64;</mtext></math>=<span>1D41D</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x65;</mtext></math>=<span>1D41E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x66;</mtext></math>=<span>1D41F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x67;</mtext></math>=<span>1D420</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x68;</mtext></math>=<span>1D421</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x69;</mtext></math>=<span>1D422</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x6A;</mtext></math>=<span>1D423</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x6B;</mtext></math>=<span>1D424</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x6C;</mtext></math>=<span>1D425</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x6D;</mtext></math>=<span>1D426</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x6E;</mtext></math>=<span>1D427</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x6F;</mtext></math>=<span>1D428</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x70;</mtext></math>=<span>1D429</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x71;</mtext></math>=<span>1D42A</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x72;</mtext></math>=<span>1D42B</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x73;</mtext></math>=<span>1D42C</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x74;</mtext></math>=<span>1D42D</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x75;</mtext></math>=<span>1D42E</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x76;</mtext></math>=<span>1D42F</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x77;</mtext></math>=<span>1D430</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x78;</mtext></math>=<span>1D431</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x79;</mtext></math>=<span>1D432</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x7A;</mtext></math>=<span>1D433</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x391;</mtext></math>=<span>1D6A8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x392;</mtext></math>=<span>1D6A9</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x393;</mtext></math>=<span>1D6AA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x394;</mtext></math>=<span>1D6AB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x395;</mtext></math>=<span>1D6AC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x396;</mtext></math>=<span>1D6AD</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x397;</mtext></math>=<span>1D6AE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x398;</mtext></math>=<span>1D6AF</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x399;</mtext></math>=<span>1D6B0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x39A;</mtext></math>=<span>1D6B1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x39B;</mtext></math>=<span>1D6B2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x39C;</mtext></math>=<span>1D6B3</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x39D;</mtext></math>=<span>1D6B4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x39E;</mtext></math>=<span>1D6B5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x39F;</mtext></math>=<span>1D6B6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A0;</mtext></math>=<span>1D6B7</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A1;</mtext></math>=<span>1D6B8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3F4;</mtext></math>=<span>1D6B9</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A3;</mtext></math>=<span>1D6BA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A4;</mtext></math>=<span>1D6BB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A5;</mtext></math>=<span>1D6BC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A6;</mtext></math>=<span>1D6BD</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A7;</mtext></math>=<span>1D6BE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A8;</mtext></math>=<span>1D6BF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3A9;</mtext></math>=<span>1D6C0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x2207;</mtext></math>=<span>1D6C1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B1;</mtext></math>=<span>1D6C2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B2;</mtext></math>=<span>1D6C3</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B3;</mtext></math>=<span>1D6C4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B4;</mtext></math>=<span>1D6C5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B5;</mtext></math>=<span>1D6C6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B6;</mtext></math>=<span>1D6C7</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B7;</mtext></math>=<span>1D6C8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B8;</mtext></math>=<span>1D6C9</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3B9;</mtext></math>=<span>1D6CA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3BA;</mtext></math>=<span>1D6CB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3BB;</mtext></math>=<span>1D6CC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3BC;</mtext></math>=<span>1D6CD</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3BD;</mtext></math>=<span>1D6CE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3BE;</mtext></math>=<span>1D6CF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3BF;</mtext></math>=<span>1D6D0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C0;</mtext></math>=<span>1D6D1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C1;</mtext></math>=<span>1D6D2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C2;</mtext></math>=<span>1D6D3</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C3;</mtext></math>=<span>1D6D4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C4;</mtext></math>=<span>1D6D5</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C5;</mtext></math>=<span>1D6D6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C6;</mtext></math>=<span>1D6D7</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C7;</mtext></math>=<span>1D6D8</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C8;</mtext></math>=<span>1D6D9</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3C9;</mtext></math>=<span>1D6DA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x2202;</mtext></math>=<span>1D6DB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3F5;</mtext></math>=<span>1D6DC</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3D1;</mtext></math>=<span>1D6DD</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3F0;</mtext></math>=<span>1D6DE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3D5;</mtext></math>=<span>1D6DF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3F1;</mtext></math>=<span>1D6E0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3D6;</mtext></math>=<span>1D6E1</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3DC;</mtext></math>=<span>1D7CA</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x3DD;</mtext></math>=<span>1D7CB</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x30;</mtext></math>=<span>1D7CE</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x31;</mtext></math>=<span>1D7CF</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x32;</mtext></math>=<span>1D7D0</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x33;</mtext></math>=<span>1D7D1</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x34;</mtext></math>=<span>1D7D2</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x35;</mtext></math>=<span>1D7D3</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x36;</mtext></math>=<span>1D7D4</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x37;</mtext></math>=<span>1D7D5</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="bold">&#x38;</mtext></math>=<span>1D7D6</span></span>
- <span><math class="testfont"><mtext mathvariant="bold">&#x39;</mtext></math>=<span>1D7D7</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-case-sensitivity-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-case-sensitivity-ref.html
deleted file mode 100644
index 28d9acc1f4c..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-case-sensitivity-ref.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant case sensitivity</title>
-<style>
- @font-face {
- font-family: mathvariant-bold-fraktur;
- src: url("/fonts/math/mathvariant-bold-fraktur.woff");
- }
- @font-face {
- font-family: mathvariant-bold;
- src: url("/fonts/math/mathvariant-bold.woff");
- }
- @font-face {
- font-family: mathvariant-bold-italic;
- src: url("/fonts/math/mathvariant-bold-italic.woff");
- }
- @font-face {
- font-family: mathvariant-bold-sans-serif;
- src: url("/fonts/math/mathvariant-bold-sans-serif.woff");
- }
- @font-face {
- font-family: mathvariant-bold-script;
- src: url("/fonts/math/mathvariant-bold-script.woff");
- }
- @font-face {
- font-family: mathvariant-double-struck;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
- @font-face {
- font-family: mathvariant-fraktur;
- src: url("/fonts/math/mathvariant-fraktur.woff");
- }
- @font-face {
- font-family: mathvariant-initial;
- src: url("/fonts/math/mathvariant-initial.woff");
- }
- @font-face {
- font-family: mathvariant-italic;
- src: url("/fonts/math/mathvariant-italic.woff");
- }
- @font-face {
- font-family: mathvariant-looped;
- src: url("/fonts/math/mathvariant-looped.woff");
- }
- @font-face {
- font-family: mathvariant-monospace;
- src: url("/fonts/math/mathvariant-monospace.woff");
- }
- @font-face {
- font-family: mathvariant-sans-serif-bold-italic;
- src: url("/fonts/math/mathvariant-sans-serif-bold-italic.woff");
- }
- @font-face {
- font-family: mathvariant-sans-serif;
- src: url("/fonts/math/mathvariant-sans-serif.woff");
- }
- @font-face {
- font-family: mathvariant-sans-serif-italic;
- src: url("/fonts/math/mathvariant-sans-serif-italic.woff");
- }
- @font-face {
- font-family: mathvariant-script;
- src: url("/fonts/math/mathvariant-script.woff");
- }
- @font-face {
- font-family: mathvariant-stretched;
- src: url("/fonts/math/mathvariant-stretched.woff");
- }
- @font-face {
- font-family: mathvariant-tailed;
- src: url("/fonts/math/mathvariant-tailed.woff");
- }
-</style>
-<body>
- <p>
- <math style="font-family: mathvariant-bold-fraktur">
- <mtext>&#x1D56C;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-bold">
- <mtext>&#x1D400;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-bold-italic">
- <mtext>&#x1D468;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-bold-sans-serif">
- <mtext>&#x1D5D4;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-bold-script">
- <mtext>&#x1D4D0;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-double-struck">
- <mtext>&#x1D538;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-fraktur">
- <mtext>&#x1D504;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-initial">
- <mtext>&#x1EE30;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-italic">
- <mtext>&#x1D434;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-looped">
- <mtext>&#x1EE90;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-monospace">
- <mtext>&#x1D670;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-sans-serif-bold-italic">
- <mtext>&#x1D63C;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-sans-serif">
- <mtext>&#x1D5A0;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-sans-serif-italic">
- <mtext>&#x1D608;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-script">
- <mtext>&#x1D49C;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-stretched">
- <mtext>&#x1EE70;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-tailed">
- <mtext>&#x1EE52;</mtext>
- </math>
- </p>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-case-sensitivity.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-case-sensitivity.html
deleted file mode 100644
index 21c8300a7a7..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-case-sensitivity.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant case sensitivity</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="match" href="mathvariant-case-sensitivity-ref.html"/>
-<meta name="assert" content="Verify that mathvariant value is case insensitive">
-<style>
- @font-face {
- font-family: mathvariant-bold-fraktur;
- src: url("/fonts/math/mathvariant-bold-fraktur.woff");
- }
- @font-face {
- font-family: mathvariant-bold;
- src: url("/fonts/math/mathvariant-bold.woff");
- }
- @font-face {
- font-family: mathvariant-bold-italic;
- src: url("/fonts/math/mathvariant-bold-italic.woff");
- }
- @font-face {
- font-family: mathvariant-bold-sans-serif;
- src: url("/fonts/math/mathvariant-bold-sans-serif.woff");
- }
- @font-face {
- font-family: mathvariant-bold-script;
- src: url("/fonts/math/mathvariant-bold-script.woff");
- }
- @font-face {
- font-family: mathvariant-double-struck;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
- @font-face {
- font-family: mathvariant-fraktur;
- src: url("/fonts/math/mathvariant-fraktur.woff");
- }
- @font-face {
- font-family: mathvariant-initial;
- src: url("/fonts/math/mathvariant-initial.woff");
- }
- @font-face {
- font-family: mathvariant-italic;
- src: url("/fonts/math/mathvariant-italic.woff");
- }
- @font-face {
- font-family: mathvariant-looped;
- src: url("/fonts/math/mathvariant-looped.woff");
- }
- @font-face {
- font-family: mathvariant-monospace;
- src: url("/fonts/math/mathvariant-monospace.woff");
- }
- @font-face {
- font-family: mathvariant-sans-serif-bold-italic;
- src: url("/fonts/math/mathvariant-sans-serif-bold-italic.woff");
- }
- @font-face {
- font-family: mathvariant-sans-serif;
- src: url("/fonts/math/mathvariant-sans-serif.woff");
- }
- @font-face {
- font-family: mathvariant-sans-serif-italic;
- src: url("/fonts/math/mathvariant-sans-serif-italic.woff");
- }
- @font-face {
- font-family: mathvariant-script;
- src: url("/fonts/math/mathvariant-script.woff");
- }
- @font-face {
- font-family: mathvariant-stretched;
- src: url("/fonts/math/mathvariant-stretched.woff");
- }
- @font-face {
- font-family: mathvariant-tailed;
- src: url("/fonts/math/mathvariant-tailed.woff");
- }
-</style>
-<body>
- <p>
- <math style="font-family: mathvariant-bold-fraktur">
- <mtext mathvariant="BoLd-fRaKtUr">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-bold">
- <mtext mathvariant="BoLd">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-bold-italic">
- <mtext mathvariant="BoLd-iTaLiC">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-bold-sans-serif">
- <mtext mathvariant="BoLd-sAnS-SeRiF">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-bold-script">
- <mtext mathvariant="BoLd-sCrIpT">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-double-struck">
- <mtext mathvariant="DoUbLe-sTrUcK">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-fraktur">
- <mtext mathvariant="FrAkTuR">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-initial">
- <mtext mathvariant="InItIaL">&#x641;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-italic">
- <mtext mathvariant="ItAlIc">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-looped">
- <mtext mathvariant="LoOpEd">&#x641;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-monospace">
- <mtext mathvariant="MoNoSpAcE">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-sans-serif-bold-italic">
- <mtext mathvariant="SaNs-sErIf-bOlD-ItAlIc">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-sans-serif">
- <mtext mathvariant="SaNs-sErIf">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-sans-serif-italic">
- <mtext mathvariant="SaNs-sErIf-iTaLiC">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-script">
- <mtext mathvariant="ScRiPt">&#x41;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-stretched">
- <mtext mathvariant="StReTcHeD">&#x641;</mtext>
- </math>
- </p>
- <p>
- <math style="font-family: mathvariant-tailed">
- <mtext mathvariant="TaIlEd">&#x642;</mtext>
- </math>
- </p>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html
deleted file mode 100644
index 817723a62d3..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight-ref.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8"/>
- <title>mathvariant="double-struck" and font-style/font-weight (reference)</title>
- <style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
- .testfont {
- font-family: TestFont;
- font-size: 32px;
- }
- .italic { font-style: italic; }
- .bold { font-weight: bold; }
- </style>
- </head>
- <body>
- <p>Test passes if you see three lines with text <span class="testfont">&#x1EEA1;</span> respectively rendered with italic, bold and bold-italic style:</p>
- <p><math class="testfont"><mtext class="italic">&#x1EEA1;</mtext></math></p>
- <p><math class="testfont"><mtext class="bold">&#x1EEA1;</mtext></math></p>
- <p><math class="testfont"><mtext class="bold italic">&#x1EEA1;</mtext></math></p>
- </body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight.html
deleted file mode 100644
index 2e283e1d702..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-font-style-font-weight.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8"/>
- <title>mathvariant="double-struck" and font-style/font-weight</title>
- <link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
- <link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
- <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1789081">
- <link rel="match" href="mathvariant-double-struck-font-style-font-weight-ref.html"/>
- <meta name="assert" content="Verify that mathvariant='double-struck' don't reset the font-style/font-weight properties.">
- <style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
- .testfont {
- font-family: TestFont;
- font-size: 32px;
- }
- .italic { font-style: italic; }
- .bold { font-weight: bold; }
- </style>
- </head>
- <body>
- <p>Test passes if you see three lines with text <span class="testfont">&#x1EEA1;</span> respectively rendered with italic, bold and bold-italic style:</p>
- <p><math class="testfont"><mtext mathvariant="double-struck" class="italic">&#x628;</mtext></math></p>
- <p><math class="testfont"><mtext mathvariant="double-struck" class="bold">&#x628;</mtext></math></p>
- <p><math class="testfont"><mtext mathvariant="double-struck" class="bold italic">&#x628;</mtext></math></p>
- </body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-ref.html
deleted file mode 100644
index ebdb7a15b0d..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck-ref.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant double-struck (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D538;</mtext></math>=<span>1D538</span></span>
- <span><math class="testfont"><mtext>&#x1D539;</mtext></math>=<span>1D539</span></span>
- <span><math class="testfont"><mtext>&#x2102;</mtext></math>=<span>02102</span></span>
- <span><math class="testfont"><mtext>&#x1D53B;</mtext></math>=<span>1D53B</span></span>
- <span><math class="testfont"><mtext>&#x1D53C;</mtext></math>=<span>1D53C</span></span>
- <span><math class="testfont"><mtext>&#x1D53D;</mtext></math>=<span>1D53D</span></span>
- <span><math class="testfont"><mtext>&#x1D53E;</mtext></math>=<span>1D53E</span></span>
- <span><math class="testfont"><mtext>&#x210D;</mtext></math>=<span>0210D</span></span>
- <span><math class="testfont"><mtext>&#x1D540;</mtext></math>=<span>1D540</span></span>
- <span><math class="testfont"><mtext>&#x1D541;</mtext></math>=<span>1D541</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D542;</mtext></math>=<span>1D542</span></span>
- <span><math class="testfont"><mtext>&#x1D543;</mtext></math>=<span>1D543</span></span>
- <span><math class="testfont"><mtext>&#x1D544;</mtext></math>=<span>1D544</span></span>
- <span><math class="testfont"><mtext>&#x2115;</mtext></math>=<span>02115</span></span>
- <span><math class="testfont"><mtext>&#x1D546;</mtext></math>=<span>1D546</span></span>
- <span><math class="testfont"><mtext>&#x2119;</mtext></math>=<span>02119</span></span>
- <span><math class="testfont"><mtext>&#x211A;</mtext></math>=<span>0211A</span></span>
- <span><math class="testfont"><mtext>&#x211D;</mtext></math>=<span>0211D</span></span>
- <span><math class="testfont"><mtext>&#x1D54A;</mtext></math>=<span>1D54A</span></span>
- <span><math class="testfont"><mtext>&#x1D54B;</mtext></math>=<span>1D54B</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D54C;</mtext></math>=<span>1D54C</span></span>
- <span><math class="testfont"><mtext>&#x1D54D;</mtext></math>=<span>1D54D</span></span>
- <span><math class="testfont"><mtext>&#x1D54E;</mtext></math>=<span>1D54E</span></span>
- <span><math class="testfont"><mtext>&#x1D54F;</mtext></math>=<span>1D54F</span></span>
- <span><math class="testfont"><mtext>&#x1D550;</mtext></math>=<span>1D550</span></span>
- <span><math class="testfont"><mtext>&#x2124;</mtext></math>=<span>02124</span></span>
- <span><math class="testfont"><mtext>&#x1D552;</mtext></math>=<span>1D552</span></span>
- <span><math class="testfont"><mtext>&#x1D553;</mtext></math>=<span>1D553</span></span>
- <span><math class="testfont"><mtext>&#x1D554;</mtext></math>=<span>1D554</span></span>
- <span><math class="testfont"><mtext>&#x1D555;</mtext></math>=<span>1D555</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D556;</mtext></math>=<span>1D556</span></span>
- <span><math class="testfont"><mtext>&#x1D557;</mtext></math>=<span>1D557</span></span>
- <span><math class="testfont"><mtext>&#x1D558;</mtext></math>=<span>1D558</span></span>
- <span><math class="testfont"><mtext>&#x1D559;</mtext></math>=<span>1D559</span></span>
- <span><math class="testfont"><mtext>&#x1D55A;</mtext></math>=<span>1D55A</span></span>
- <span><math class="testfont"><mtext>&#x1D55B;</mtext></math>=<span>1D55B</span></span>
- <span><math class="testfont"><mtext>&#x1D55C;</mtext></math>=<span>1D55C</span></span>
- <span><math class="testfont"><mtext>&#x1D55D;</mtext></math>=<span>1D55D</span></span>
- <span><math class="testfont"><mtext>&#x1D55E;</mtext></math>=<span>1D55E</span></span>
- <span><math class="testfont"><mtext>&#x1D55F;</mtext></math>=<span>1D55F</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D560;</mtext></math>=<span>1D560</span></span>
- <span><math class="testfont"><mtext>&#x1D561;</mtext></math>=<span>1D561</span></span>
- <span><math class="testfont"><mtext>&#x1D562;</mtext></math>=<span>1D562</span></span>
- <span><math class="testfont"><mtext>&#x1D563;</mtext></math>=<span>1D563</span></span>
- <span><math class="testfont"><mtext>&#x1D564;</mtext></math>=<span>1D564</span></span>
- <span><math class="testfont"><mtext>&#x1D565;</mtext></math>=<span>1D565</span></span>
- <span><math class="testfont"><mtext>&#x1D566;</mtext></math>=<span>1D566</span></span>
- <span><math class="testfont"><mtext>&#x1D567;</mtext></math>=<span>1D567</span></span>
- <span><math class="testfont"><mtext>&#x1D568;</mtext></math>=<span>1D568</span></span>
- <span><math class="testfont"><mtext>&#x1D569;</mtext></math>=<span>1D569</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D56A;</mtext></math>=<span>1D56A</span></span>
- <span><math class="testfont"><mtext>&#x1D56B;</mtext></math>=<span>1D56B</span></span>
- <span><math class="testfont"><mtext>&#x1D7D8;</mtext></math>=<span>1D7D8</span></span>
- <span><math class="testfont"><mtext>&#x1D7D9;</mtext></math>=<span>1D7D9</span></span>
- <span><math class="testfont"><mtext>&#x1D7DA;</mtext></math>=<span>1D7DA</span></span>
- <span><math class="testfont"><mtext>&#x1D7DB;</mtext></math>=<span>1D7DB</span></span>
- <span><math class="testfont"><mtext>&#x1D7DC;</mtext></math>=<span>1D7DC</span></span>
- <span><math class="testfont"><mtext>&#x1D7DD;</mtext></math>=<span>1D7DD</span></span>
- <span><math class="testfont"><mtext>&#x1D7DE;</mtext></math>=<span>1D7DE</span></span>
- <span><math class="testfont"><mtext>&#x1D7DF;</mtext></math>=<span>1D7DF</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7E0;</mtext></math>=<span>1D7E0</span></span>
- <span><math class="testfont"><mtext>&#x1D7E1;</mtext></math>=<span>1D7E1</span></span>
- <span><math class="testfont"><mtext>&#x1EEA1;</mtext></math>=<span>1EEA1</span></span>
- <span><math class="testfont"><mtext>&#x1EEA2;</mtext></math>=<span>1EEA2</span></span>
- <span><math class="testfont"><mtext>&#x1EEA3;</mtext></math>=<span>1EEA3</span></span>
- <span><math class="testfont"><mtext>&#x1EEA5;</mtext></math>=<span>1EEA5</span></span>
- <span><math class="testfont"><mtext>&#x1EEA6;</mtext></math>=<span>1EEA6</span></span>
- <span><math class="testfont"><mtext>&#x1EEA7;</mtext></math>=<span>1EEA7</span></span>
- <span><math class="testfont"><mtext>&#x1EEA8;</mtext></math>=<span>1EEA8</span></span>
- <span><math class="testfont"><mtext>&#x1EEA9;</mtext></math>=<span>1EEA9</span></span><br/>
- <span><math class="testfont"><mtext>&#x1EEAB;</mtext></math>=<span>1EEAB</span></span>
- <span><math class="testfont"><mtext>&#x1EEAC;</mtext></math>=<span>1EEAC</span></span>
- <span><math class="testfont"><mtext>&#x1EEAD;</mtext></math>=<span>1EEAD</span></span>
- <span><math class="testfont"><mtext>&#x1EEAE;</mtext></math>=<span>1EEAE</span></span>
- <span><math class="testfont"><mtext>&#x1EEAF;</mtext></math>=<span>1EEAF</span></span>
- <span><math class="testfont"><mtext>&#x1EEB0;</mtext></math>=<span>1EEB0</span></span>
- <span><math class="testfont"><mtext>&#x1EEB1;</mtext></math>=<span>1EEB1</span></span>
- <span><math class="testfont"><mtext>&#x1EEB2;</mtext></math>=<span>1EEB2</span></span>
- <span><math class="testfont"><mtext>&#x1EEB3;</mtext></math>=<span>1EEB3</span></span>
- <span><math class="testfont"><mtext>&#x1EEB4;</mtext></math>=<span>1EEB4</span></span><br/>
- <span><math class="testfont"><mtext>&#x1EEB5;</mtext></math>=<span>1EEB5</span></span>
- <span><math class="testfont"><mtext>&#x1EEB6;</mtext></math>=<span>1EEB6</span></span>
- <span><math class="testfont"><mtext>&#x1EEB7;</mtext></math>=<span>1EEB7</span></span>
- <span><math class="testfont"><mtext>&#x1EEB8;</mtext></math>=<span>1EEB8</span></span>
- <span><math class="testfont"><mtext>&#x1EEB9;</mtext></math>=<span>1EEB9</span></span>
- <span><math class="testfont"><mtext>&#x1EEBA;</mtext></math>=<span>1EEBA</span></span>
- <span><math class="testfont"><mtext>&#x1EEBB;</mtext></math>=<span>1EEBB</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck.html
deleted file mode 100644
index 335234ac385..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-double-struck.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant double-struck</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#double-struck-mappings">
-<link rel="match" href="mathvariant-double-struck-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a double-struck mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x41;</mtext></math>=<span>1D538</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x42;</mtext></math>=<span>1D539</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x43;</mtext></math>=<span>02102</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x44;</mtext></math>=<span>1D53B</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x45;</mtext></math>=<span>1D53C</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x46;</mtext></math>=<span>1D53D</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x47;</mtext></math>=<span>1D53E</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x48;</mtext></math>=<span>0210D</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x49;</mtext></math>=<span>1D540</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x4A;</mtext></math>=<span>1D541</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x4B;</mtext></math>=<span>1D542</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x4C;</mtext></math>=<span>1D543</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x4D;</mtext></math>=<span>1D544</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x4E;</mtext></math>=<span>02115</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x4F;</mtext></math>=<span>1D546</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x50;</mtext></math>=<span>02119</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x51;</mtext></math>=<span>0211A</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x52;</mtext></math>=<span>0211D</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x53;</mtext></math>=<span>1D54A</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x54;</mtext></math>=<span>1D54B</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x55;</mtext></math>=<span>1D54C</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x56;</mtext></math>=<span>1D54D</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x57;</mtext></math>=<span>1D54E</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x58;</mtext></math>=<span>1D54F</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x59;</mtext></math>=<span>1D550</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x5A;</mtext></math>=<span>02124</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x61;</mtext></math>=<span>1D552</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x62;</mtext></math>=<span>1D553</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x63;</mtext></math>=<span>1D554</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x64;</mtext></math>=<span>1D555</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x65;</mtext></math>=<span>1D556</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x66;</mtext></math>=<span>1D557</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x67;</mtext></math>=<span>1D558</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x68;</mtext></math>=<span>1D559</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x69;</mtext></math>=<span>1D55A</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x6A;</mtext></math>=<span>1D55B</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x6B;</mtext></math>=<span>1D55C</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x6C;</mtext></math>=<span>1D55D</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x6D;</mtext></math>=<span>1D55E</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x6E;</mtext></math>=<span>1D55F</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x6F;</mtext></math>=<span>1D560</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x70;</mtext></math>=<span>1D561</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x71;</mtext></math>=<span>1D562</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x72;</mtext></math>=<span>1D563</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x73;</mtext></math>=<span>1D564</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x74;</mtext></math>=<span>1D565</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x75;</mtext></math>=<span>1D566</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x76;</mtext></math>=<span>1D567</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x77;</mtext></math>=<span>1D568</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x78;</mtext></math>=<span>1D569</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x79;</mtext></math>=<span>1D56A</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x7A;</mtext></math>=<span>1D56B</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x30;</mtext></math>=<span>1D7D8</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x31;</mtext></math>=<span>1D7D9</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x32;</mtext></math>=<span>1D7DA</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x33;</mtext></math>=<span>1D7DB</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x34;</mtext></math>=<span>1D7DC</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x35;</mtext></math>=<span>1D7DD</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x36;</mtext></math>=<span>1D7DE</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x37;</mtext></math>=<span>1D7DF</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x38;</mtext></math>=<span>1D7E0</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x39;</mtext></math>=<span>1D7E1</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x628;</mtext></math>=<span>1EEA1</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x62C;</mtext></math>=<span>1EEA2</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x62F;</mtext></math>=<span>1EEA3</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x648;</mtext></math>=<span>1EEA5</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x632;</mtext></math>=<span>1EEA6</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x62D;</mtext></math>=<span>1EEA7</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x637;</mtext></math>=<span>1EEA8</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x64A;</mtext></math>=<span>1EEA9</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x644;</mtext></math>=<span>1EEAB</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x645;</mtext></math>=<span>1EEAC</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x646;</mtext></math>=<span>1EEAD</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x633;</mtext></math>=<span>1EEAE</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x639;</mtext></math>=<span>1EEAF</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x641;</mtext></math>=<span>1EEB0</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x635;</mtext></math>=<span>1EEB1</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x642;</mtext></math>=<span>1EEB2</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x631;</mtext></math>=<span>1EEB3</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x634;</mtext></math>=<span>1EEB4</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x62A;</mtext></math>=<span>1EEB5</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x62B;</mtext></math>=<span>1EEB6</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x62E;</mtext></math>=<span>1EEB7</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x630;</mtext></math>=<span>1EEB8</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x636;</mtext></math>=<span>1EEB9</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x638;</mtext></math>=<span>1EEBA</span></span>
- <span><math class="testfont"><mtext mathvariant="double-struck">&#x63A;</mtext></math>=<span>1EEBB</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-fraktur-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-fraktur-ref.html
deleted file mode 100644
index 3d1dd50a7d4..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-fraktur-ref.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant fraktur (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-fraktur.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D504;</mtext></math>=<span>1D504</span></span>
- <span><math class="testfont"><mtext>&#x1D505;</mtext></math>=<span>1D505</span></span>
- <span><math class="testfont"><mtext>&#x212D;</mtext></math>=<span>0212D</span></span>
- <span><math class="testfont"><mtext>&#x1D507;</mtext></math>=<span>1D507</span></span>
- <span><math class="testfont"><mtext>&#x1D508;</mtext></math>=<span>1D508</span></span>
- <span><math class="testfont"><mtext>&#x1D509;</mtext></math>=<span>1D509</span></span>
- <span><math class="testfont"><mtext>&#x1D50A;</mtext></math>=<span>1D50A</span></span>
- <span><math class="testfont"><mtext>&#x210C;</mtext></math>=<span>0210C</span></span>
- <span><math class="testfont"><mtext>&#x2111;</mtext></math>=<span>02111</span></span>
- <span><math class="testfont"><mtext>&#x1D50D;</mtext></math>=<span>1D50D</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D50E;</mtext></math>=<span>1D50E</span></span>
- <span><math class="testfont"><mtext>&#x1D50F;</mtext></math>=<span>1D50F</span></span>
- <span><math class="testfont"><mtext>&#x1D510;</mtext></math>=<span>1D510</span></span>
- <span><math class="testfont"><mtext>&#x1D511;</mtext></math>=<span>1D511</span></span>
- <span><math class="testfont"><mtext>&#x1D512;</mtext></math>=<span>1D512</span></span>
- <span><math class="testfont"><mtext>&#x1D513;</mtext></math>=<span>1D513</span></span>
- <span><math class="testfont"><mtext>&#x1D514;</mtext></math>=<span>1D514</span></span>
- <span><math class="testfont"><mtext>&#x211C;</mtext></math>=<span>0211C</span></span>
- <span><math class="testfont"><mtext>&#x1D516;</mtext></math>=<span>1D516</span></span>
- <span><math class="testfont"><mtext>&#x1D517;</mtext></math>=<span>1D517</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D518;</mtext></math>=<span>1D518</span></span>
- <span><math class="testfont"><mtext>&#x1D519;</mtext></math>=<span>1D519</span></span>
- <span><math class="testfont"><mtext>&#x1D51A;</mtext></math>=<span>1D51A</span></span>
- <span><math class="testfont"><mtext>&#x1D51B;</mtext></math>=<span>1D51B</span></span>
- <span><math class="testfont"><mtext>&#x1D51C;</mtext></math>=<span>1D51C</span></span>
- <span><math class="testfont"><mtext>&#x2128;</mtext></math>=<span>02128</span></span>
- <span><math class="testfont"><mtext>&#x1D51E;</mtext></math>=<span>1D51E</span></span>
- <span><math class="testfont"><mtext>&#x1D51F;</mtext></math>=<span>1D51F</span></span>
- <span><math class="testfont"><mtext>&#x1D520;</mtext></math>=<span>1D520</span></span>
- <span><math class="testfont"><mtext>&#x1D521;</mtext></math>=<span>1D521</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D522;</mtext></math>=<span>1D522</span></span>
- <span><math class="testfont"><mtext>&#x1D523;</mtext></math>=<span>1D523</span></span>
- <span><math class="testfont"><mtext>&#x1D524;</mtext></math>=<span>1D524</span></span>
- <span><math class="testfont"><mtext>&#x1D525;</mtext></math>=<span>1D525</span></span>
- <span><math class="testfont"><mtext>&#x1D526;</mtext></math>=<span>1D526</span></span>
- <span><math class="testfont"><mtext>&#x1D527;</mtext></math>=<span>1D527</span></span>
- <span><math class="testfont"><mtext>&#x1D528;</mtext></math>=<span>1D528</span></span>
- <span><math class="testfont"><mtext>&#x1D529;</mtext></math>=<span>1D529</span></span>
- <span><math class="testfont"><mtext>&#x1D52A;</mtext></math>=<span>1D52A</span></span>
- <span><math class="testfont"><mtext>&#x1D52B;</mtext></math>=<span>1D52B</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D52C;</mtext></math>=<span>1D52C</span></span>
- <span><math class="testfont"><mtext>&#x1D52D;</mtext></math>=<span>1D52D</span></span>
- <span><math class="testfont"><mtext>&#x1D52E;</mtext></math>=<span>1D52E</span></span>
- <span><math class="testfont"><mtext>&#x1D52F;</mtext></math>=<span>1D52F</span></span>
- <span><math class="testfont"><mtext>&#x1D530;</mtext></math>=<span>1D530</span></span>
- <span><math class="testfont"><mtext>&#x1D531;</mtext></math>=<span>1D531</span></span>
- <span><math class="testfont"><mtext>&#x1D532;</mtext></math>=<span>1D532</span></span>
- <span><math class="testfont"><mtext>&#x1D533;</mtext></math>=<span>1D533</span></span>
- <span><math class="testfont"><mtext>&#x1D534;</mtext></math>=<span>1D534</span></span>
- <span><math class="testfont"><mtext>&#x1D535;</mtext></math>=<span>1D535</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D536;</mtext></math>=<span>1D536</span></span>
- <span><math class="testfont"><mtext>&#x1D537;</mtext></math>=<span>1D537</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-fraktur.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-fraktur.html
deleted file mode 100644
index 9c95cd06e71..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-fraktur.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant fraktur</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#fraktur-mappings">
-<link rel="match" href="mathvariant-fraktur-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a fraktur mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-fraktur.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x41;</mtext></math>=<span>1D504</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x42;</mtext></math>=<span>1D505</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x43;</mtext></math>=<span>0212D</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x44;</mtext></math>=<span>1D507</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x45;</mtext></math>=<span>1D508</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x46;</mtext></math>=<span>1D509</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x47;</mtext></math>=<span>1D50A</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x48;</mtext></math>=<span>0210C</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x49;</mtext></math>=<span>02111</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x4A;</mtext></math>=<span>1D50D</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x4B;</mtext></math>=<span>1D50E</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x4C;</mtext></math>=<span>1D50F</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x4D;</mtext></math>=<span>1D510</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x4E;</mtext></math>=<span>1D511</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x4F;</mtext></math>=<span>1D512</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x50;</mtext></math>=<span>1D513</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x51;</mtext></math>=<span>1D514</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x52;</mtext></math>=<span>0211C</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x53;</mtext></math>=<span>1D516</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x54;</mtext></math>=<span>1D517</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x55;</mtext></math>=<span>1D518</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x56;</mtext></math>=<span>1D519</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x57;</mtext></math>=<span>1D51A</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x58;</mtext></math>=<span>1D51B</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x59;</mtext></math>=<span>1D51C</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x5A;</mtext></math>=<span>02128</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x61;</mtext></math>=<span>1D51E</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x62;</mtext></math>=<span>1D51F</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x63;</mtext></math>=<span>1D520</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x64;</mtext></math>=<span>1D521</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x65;</mtext></math>=<span>1D522</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x66;</mtext></math>=<span>1D523</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x67;</mtext></math>=<span>1D524</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x68;</mtext></math>=<span>1D525</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x69;</mtext></math>=<span>1D526</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x6A;</mtext></math>=<span>1D527</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x6B;</mtext></math>=<span>1D528</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x6C;</mtext></math>=<span>1D529</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x6D;</mtext></math>=<span>1D52A</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x6E;</mtext></math>=<span>1D52B</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x6F;</mtext></math>=<span>1D52C</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x70;</mtext></math>=<span>1D52D</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x71;</mtext></math>=<span>1D52E</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x72;</mtext></math>=<span>1D52F</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x73;</mtext></math>=<span>1D530</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x74;</mtext></math>=<span>1D531</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x75;</mtext></math>=<span>1D532</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x76;</mtext></math>=<span>1D533</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x77;</mtext></math>=<span>1D534</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x78;</mtext></math>=<span>1D535</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x79;</mtext></math>=<span>1D536</span></span>
- <span><math class="testfont"><mtext mathvariant="fraktur">&#x7A;</mtext></math>=<span>1D537</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-initial-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-initial-ref.html
deleted file mode 100644
index 5d5b72a1c5c..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-initial-ref.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant initial (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-initial.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1EE21;</mtext></math>=<span>1EE21</span></span>
- <span><math class="testfont"><mtext>&#x1EE22;</mtext></math>=<span>1EE22</span></span>
- <span><math class="testfont"><mtext>&#x1EE24;</mtext></math>=<span>1EE24</span></span>
- <span><math class="testfont"><mtext>&#x1EE27;</mtext></math>=<span>1EE27</span></span>
- <span><math class="testfont"><mtext>&#x1EE29;</mtext></math>=<span>1EE29</span></span>
- <span><math class="testfont"><mtext>&#x1EE2A;</mtext></math>=<span>1EE2A</span></span>
- <span><math class="testfont"><mtext>&#x1EE2B;</mtext></math>=<span>1EE2B</span></span>
- <span><math class="testfont"><mtext>&#x1EE2C;</mtext></math>=<span>1EE2C</span></span>
- <span><math class="testfont"><mtext>&#x1EE2D;</mtext></math>=<span>1EE2D</span></span>
- <span><math class="testfont"><mtext>&#x1EE2E;</mtext></math>=<span>1EE2E</span></span><br/>
- <span><math class="testfont"><mtext>&#x1EE2F;</mtext></math>=<span>1EE2F</span></span>
- <span><math class="testfont"><mtext>&#x1EE30;</mtext></math>=<span>1EE30</span></span>
- <span><math class="testfont"><mtext>&#x1EE31;</mtext></math>=<span>1EE31</span></span>
- <span><math class="testfont"><mtext>&#x1EE32;</mtext></math>=<span>1EE32</span></span>
- <span><math class="testfont"><mtext>&#x1EE34;</mtext></math>=<span>1EE34</span></span>
- <span><math class="testfont"><mtext>&#x1EE35;</mtext></math>=<span>1EE35</span></span>
- <span><math class="testfont"><mtext>&#x1EE36;</mtext></math>=<span>1EE36</span></span>
- <span><math class="testfont"><mtext>&#x1EE37;</mtext></math>=<span>1EE37</span></span>
- <span><math class="testfont"><mtext>&#x1EE39;</mtext></math>=<span>1EE39</span></span>
- <span><math class="testfont"><mtext>&#x1EE3B;</mtext></math>=<span>1EE3B</span></span><br/>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-initial.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-initial.html
deleted file mode 100644
index 3b0263a1977..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-initial.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant initial</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#initial-mappings">
-<link rel="match" href="mathvariant-initial-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a initial mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-initial.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="initial">&#x628;</mtext></math>=<span>1EE21</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x62C;</mtext></math>=<span>1EE22</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x647;</mtext></math>=<span>1EE24</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x62D;</mtext></math>=<span>1EE27</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x64A;</mtext></math>=<span>1EE29</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x643;</mtext></math>=<span>1EE2A</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x644;</mtext></math>=<span>1EE2B</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x645;</mtext></math>=<span>1EE2C</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x646;</mtext></math>=<span>1EE2D</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x633;</mtext></math>=<span>1EE2E</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="initial">&#x639;</mtext></math>=<span>1EE2F</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x641;</mtext></math>=<span>1EE30</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x635;</mtext></math>=<span>1EE31</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x642;</mtext></math>=<span>1EE32</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x634;</mtext></math>=<span>1EE34</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x62A;</mtext></math>=<span>1EE35</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x62B;</mtext></math>=<span>1EE36</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x62E;</mtext></math>=<span>1EE37</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x636;</mtext></math>=<span>1EE39</span></span>
- <span><math class="testfont"><mtext mathvariant="initial">&#x63A;</mtext></math>=<span>1EE3B</span></span><br/>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-italic-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-italic-ref.html
deleted file mode 100644
index e2078c2948a..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-italic-ref.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant italic (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-italic.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D434;</mtext></math>=<span>1D434</span></span>
- <span><math class="testfont"><mtext>&#x1D435;</mtext></math>=<span>1D435</span></span>
- <span><math class="testfont"><mtext>&#x1D436;</mtext></math>=<span>1D436</span></span>
- <span><math class="testfont"><mtext>&#x1D437;</mtext></math>=<span>1D437</span></span>
- <span><math class="testfont"><mtext>&#x1D438;</mtext></math>=<span>1D438</span></span>
- <span><math class="testfont"><mtext>&#x1D439;</mtext></math>=<span>1D439</span></span>
- <span><math class="testfont"><mtext>&#x1D43A;</mtext></math>=<span>1D43A</span></span>
- <span><math class="testfont"><mtext>&#x1D43B;</mtext></math>=<span>1D43B</span></span>
- <span><math class="testfont"><mtext>&#x1D43C;</mtext></math>=<span>1D43C</span></span>
- <span><math class="testfont"><mtext>&#x1D43D;</mtext></math>=<span>1D43D</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D43E;</mtext></math>=<span>1D43E</span></span>
- <span><math class="testfont"><mtext>&#x1D43F;</mtext></math>=<span>1D43F</span></span>
- <span><math class="testfont"><mtext>&#x1D440;</mtext></math>=<span>1D440</span></span>
- <span><math class="testfont"><mtext>&#x1D441;</mtext></math>=<span>1D441</span></span>
- <span><math class="testfont"><mtext>&#x1D442;</mtext></math>=<span>1D442</span></span>
- <span><math class="testfont"><mtext>&#x1D443;</mtext></math>=<span>1D443</span></span>
- <span><math class="testfont"><mtext>&#x1D444;</mtext></math>=<span>1D444</span></span>
- <span><math class="testfont"><mtext>&#x1D445;</mtext></math>=<span>1D445</span></span>
- <span><math class="testfont"><mtext>&#x1D446;</mtext></math>=<span>1D446</span></span>
- <span><math class="testfont"><mtext>&#x1D447;</mtext></math>=<span>1D447</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D448;</mtext></math>=<span>1D448</span></span>
- <span><math class="testfont"><mtext>&#x1D449;</mtext></math>=<span>1D449</span></span>
- <span><math class="testfont"><mtext>&#x1D44A;</mtext></math>=<span>1D44A</span></span>
- <span><math class="testfont"><mtext>&#x1D44B;</mtext></math>=<span>1D44B</span></span>
- <span><math class="testfont"><mtext>&#x1D44C;</mtext></math>=<span>1D44C</span></span>
- <span><math class="testfont"><mtext>&#x1D44D;</mtext></math>=<span>1D44D</span></span>
- <span><math class="testfont"><mtext>&#x1D44E;</mtext></math>=<span>1D44E</span></span>
- <span><math class="testfont"><mtext>&#x1D44F;</mtext></math>=<span>1D44F</span></span>
- <span><math class="testfont"><mtext>&#x1D450;</mtext></math>=<span>1D450</span></span>
- <span><math class="testfont"><mtext>&#x1D451;</mtext></math>=<span>1D451</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D452;</mtext></math>=<span>1D452</span></span>
- <span><math class="testfont"><mtext>&#x1D453;</mtext></math>=<span>1D453</span></span>
- <span><math class="testfont"><mtext>&#x1D454;</mtext></math>=<span>1D454</span></span>
- <span><math class="testfont"><mtext>&#x210E;</mtext></math>=<span>0210E</span></span>
- <span><math class="testfont"><mtext>&#x1D456;</mtext></math>=<span>1D456</span></span>
- <span><math class="testfont"><mtext>&#x1D457;</mtext></math>=<span>1D457</span></span>
- <span><math class="testfont"><mtext>&#x1D458;</mtext></math>=<span>1D458</span></span>
- <span><math class="testfont"><mtext>&#x1D459;</mtext></math>=<span>1D459</span></span>
- <span><math class="testfont"><mtext>&#x1D45A;</mtext></math>=<span>1D45A</span></span>
- <span><math class="testfont"><mtext>&#x1D45B;</mtext></math>=<span>1D45B</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D45C;</mtext></math>=<span>1D45C</span></span>
- <span><math class="testfont"><mtext>&#x1D45D;</mtext></math>=<span>1D45D</span></span>
- <span><math class="testfont"><mtext>&#x1D45E;</mtext></math>=<span>1D45E</span></span>
- <span><math class="testfont"><mtext>&#x1D45F;</mtext></math>=<span>1D45F</span></span>
- <span><math class="testfont"><mtext>&#x1D460;</mtext></math>=<span>1D460</span></span>
- <span><math class="testfont"><mtext>&#x1D461;</mtext></math>=<span>1D461</span></span>
- <span><math class="testfont"><mtext>&#x1D462;</mtext></math>=<span>1D462</span></span>
- <span><math class="testfont"><mtext>&#x1D463;</mtext></math>=<span>1D463</span></span>
- <span><math class="testfont"><mtext>&#x1D464;</mtext></math>=<span>1D464</span></span>
- <span><math class="testfont"><mtext>&#x1D465;</mtext></math>=<span>1D465</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D466;</mtext></math>=<span>1D466</span></span>
- <span><math class="testfont"><mtext>&#x1D467;</mtext></math>=<span>1D467</span></span>
- <span><math class="testfont"><mtext>&#x1D6A4;</mtext></math>=<span>1D6A4</span></span>
- <span><math class="testfont"><mtext>&#x1D6A5;</mtext></math>=<span>1D6A5</span></span>
- <span><math class="testfont"><mtext>&#x1D6E2;</mtext></math>=<span>1D6E2</span></span>
- <span><math class="testfont"><mtext>&#x1D6E3;</mtext></math>=<span>1D6E3</span></span>
- <span><math class="testfont"><mtext>&#x1D6E4;</mtext></math>=<span>1D6E4</span></span>
- <span><math class="testfont"><mtext>&#x1D6E5;</mtext></math>=<span>1D6E5</span></span>
- <span><math class="testfont"><mtext>&#x1D6E6;</mtext></math>=<span>1D6E6</span></span>
- <span><math class="testfont"><mtext>&#x1D6E7;</mtext></math>=<span>1D6E7</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6E8;</mtext></math>=<span>1D6E8</span></span>
- <span><math class="testfont"><mtext>&#x1D6E9;</mtext></math>=<span>1D6E9</span></span>
- <span><math class="testfont"><mtext>&#x1D6EA;</mtext></math>=<span>1D6EA</span></span>
- <span><math class="testfont"><mtext>&#x1D6EB;</mtext></math>=<span>1D6EB</span></span>
- <span><math class="testfont"><mtext>&#x1D6EC;</mtext></math>=<span>1D6EC</span></span>
- <span><math class="testfont"><mtext>&#x1D6ED;</mtext></math>=<span>1D6ED</span></span>
- <span><math class="testfont"><mtext>&#x1D6EE;</mtext></math>=<span>1D6EE</span></span>
- <span><math class="testfont"><mtext>&#x1D6EF;</mtext></math>=<span>1D6EF</span></span>
- <span><math class="testfont"><mtext>&#x1D6F0;</mtext></math>=<span>1D6F0</span></span>
- <span><math class="testfont"><mtext>&#x1D6F1;</mtext></math>=<span>1D6F1</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6F2;</mtext></math>=<span>1D6F2</span></span>
- <span><math class="testfont"><mtext>&#x1D6F3;</mtext></math>=<span>1D6F3</span></span>
- <span><math class="testfont"><mtext>&#x1D6F4;</mtext></math>=<span>1D6F4</span></span>
- <span><math class="testfont"><mtext>&#x1D6F5;</mtext></math>=<span>1D6F5</span></span>
- <span><math class="testfont"><mtext>&#x1D6F6;</mtext></math>=<span>1D6F6</span></span>
- <span><math class="testfont"><mtext>&#x1D6F7;</mtext></math>=<span>1D6F7</span></span>
- <span><math class="testfont"><mtext>&#x1D6F8;</mtext></math>=<span>1D6F8</span></span>
- <span><math class="testfont"><mtext>&#x1D6F9;</mtext></math>=<span>1D6F9</span></span>
- <span><math class="testfont"><mtext>&#x1D6FA;</mtext></math>=<span>1D6FA</span></span>
- <span><math class="testfont"><mtext>&#x1D6FB;</mtext></math>=<span>1D6FB</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6FC;</mtext></math>=<span>1D6FC</span></span>
- <span><math class="testfont"><mtext>&#x1D6FD;</mtext></math>=<span>1D6FD</span></span>
- <span><math class="testfont"><mtext>&#x1D6FE;</mtext></math>=<span>1D6FE</span></span>
- <span><math class="testfont"><mtext>&#x1D6FF;</mtext></math>=<span>1D6FF</span></span>
- <span><math class="testfont"><mtext>&#x1D700;</mtext></math>=<span>1D700</span></span>
- <span><math class="testfont"><mtext>&#x1D701;</mtext></math>=<span>1D701</span></span>
- <span><math class="testfont"><mtext>&#x1D702;</mtext></math>=<span>1D702</span></span>
- <span><math class="testfont"><mtext>&#x1D703;</mtext></math>=<span>1D703</span></span>
- <span><math class="testfont"><mtext>&#x1D704;</mtext></math>=<span>1D704</span></span>
- <span><math class="testfont"><mtext>&#x1D705;</mtext></math>=<span>1D705</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D706;</mtext></math>=<span>1D706</span></span>
- <span><math class="testfont"><mtext>&#x1D707;</mtext></math>=<span>1D707</span></span>
- <span><math class="testfont"><mtext>&#x1D708;</mtext></math>=<span>1D708</span></span>
- <span><math class="testfont"><mtext>&#x1D709;</mtext></math>=<span>1D709</span></span>
- <span><math class="testfont"><mtext>&#x1D70A;</mtext></math>=<span>1D70A</span></span>
- <span><math class="testfont"><mtext>&#x1D70B;</mtext></math>=<span>1D70B</span></span>
- <span><math class="testfont"><mtext>&#x1D70C;</mtext></math>=<span>1D70C</span></span>
- <span><math class="testfont"><mtext>&#x1D70D;</mtext></math>=<span>1D70D</span></span>
- <span><math class="testfont"><mtext>&#x1D70E;</mtext></math>=<span>1D70E</span></span>
- <span><math class="testfont"><mtext>&#x1D70F;</mtext></math>=<span>1D70F</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D710;</mtext></math>=<span>1D710</span></span>
- <span><math class="testfont"><mtext>&#x1D711;</mtext></math>=<span>1D711</span></span>
- <span><math class="testfont"><mtext>&#x1D712;</mtext></math>=<span>1D712</span></span>
- <span><math class="testfont"><mtext>&#x1D713;</mtext></math>=<span>1D713</span></span>
- <span><math class="testfont"><mtext>&#x1D714;</mtext></math>=<span>1D714</span></span>
- <span><math class="testfont"><mtext>&#x1D715;</mtext></math>=<span>1D715</span></span>
- <span><math class="testfont"><mtext>&#x1D716;</mtext></math>=<span>1D716</span></span>
- <span><math class="testfont"><mtext>&#x1D717;</mtext></math>=<span>1D717</span></span>
- <span><math class="testfont"><mtext>&#x1D718;</mtext></math>=<span>1D718</span></span>
- <span><math class="testfont"><mtext>&#x1D719;</mtext></math>=<span>1D719</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D71A;</mtext></math>=<span>1D71A</span></span>
- <span><math class="testfont"><mtext>&#x1D71B;</mtext></math>=<span>1D71B</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-italic.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-italic.html
deleted file mode 100644
index 1e6aa6512d3..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-italic.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant italic</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#italic-mappings">
-<link rel="match" href="mathvariant-italic-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a italic mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-italic.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="italic">&#x41;</mtext></math>=<span>1D434</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x42;</mtext></math>=<span>1D435</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x43;</mtext></math>=<span>1D436</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x44;</mtext></math>=<span>1D437</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x45;</mtext></math>=<span>1D438</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x46;</mtext></math>=<span>1D439</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x47;</mtext></math>=<span>1D43A</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x48;</mtext></math>=<span>1D43B</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x49;</mtext></math>=<span>1D43C</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x4A;</mtext></math>=<span>1D43D</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x4B;</mtext></math>=<span>1D43E</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x4C;</mtext></math>=<span>1D43F</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x4D;</mtext></math>=<span>1D440</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x4E;</mtext></math>=<span>1D441</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x4F;</mtext></math>=<span>1D442</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x50;</mtext></math>=<span>1D443</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x51;</mtext></math>=<span>1D444</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x52;</mtext></math>=<span>1D445</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x53;</mtext></math>=<span>1D446</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x54;</mtext></math>=<span>1D447</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x55;</mtext></math>=<span>1D448</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x56;</mtext></math>=<span>1D449</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x57;</mtext></math>=<span>1D44A</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x58;</mtext></math>=<span>1D44B</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x59;</mtext></math>=<span>1D44C</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x5A;</mtext></math>=<span>1D44D</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x61;</mtext></math>=<span>1D44E</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x62;</mtext></math>=<span>1D44F</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x63;</mtext></math>=<span>1D450</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x64;</mtext></math>=<span>1D451</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x65;</mtext></math>=<span>1D452</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x66;</mtext></math>=<span>1D453</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x67;</mtext></math>=<span>1D454</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x68;</mtext></math>=<span>0210E</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x69;</mtext></math>=<span>1D456</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x6A;</mtext></math>=<span>1D457</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x6B;</mtext></math>=<span>1D458</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x6C;</mtext></math>=<span>1D459</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x6D;</mtext></math>=<span>1D45A</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x6E;</mtext></math>=<span>1D45B</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x6F;</mtext></math>=<span>1D45C</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x70;</mtext></math>=<span>1D45D</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x71;</mtext></math>=<span>1D45E</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x72;</mtext></math>=<span>1D45F</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x73;</mtext></math>=<span>1D460</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x74;</mtext></math>=<span>1D461</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x75;</mtext></math>=<span>1D462</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x76;</mtext></math>=<span>1D463</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x77;</mtext></math>=<span>1D464</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x78;</mtext></math>=<span>1D465</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x79;</mtext></math>=<span>1D466</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x7A;</mtext></math>=<span>1D467</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x131;</mtext></math>=<span>1D6A4</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x237;</mtext></math>=<span>1D6A5</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x391;</mtext></math>=<span>1D6E2</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x392;</mtext></math>=<span>1D6E3</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x393;</mtext></math>=<span>1D6E4</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x394;</mtext></math>=<span>1D6E5</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x395;</mtext></math>=<span>1D6E6</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x396;</mtext></math>=<span>1D6E7</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x397;</mtext></math>=<span>1D6E8</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x398;</mtext></math>=<span>1D6E9</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x399;</mtext></math>=<span>1D6EA</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x39A;</mtext></math>=<span>1D6EB</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x39B;</mtext></math>=<span>1D6EC</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x39C;</mtext></math>=<span>1D6ED</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x39D;</mtext></math>=<span>1D6EE</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x39E;</mtext></math>=<span>1D6EF</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x39F;</mtext></math>=<span>1D6F0</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A0;</mtext></math>=<span>1D6F1</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A1;</mtext></math>=<span>1D6F2</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3F4;</mtext></math>=<span>1D6F3</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A3;</mtext></math>=<span>1D6F4</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A4;</mtext></math>=<span>1D6F5</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A5;</mtext></math>=<span>1D6F6</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A6;</mtext></math>=<span>1D6F7</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A7;</mtext></math>=<span>1D6F8</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A8;</mtext></math>=<span>1D6F9</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3A9;</mtext></math>=<span>1D6FA</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x2207;</mtext></math>=<span>1D6FB</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B1;</mtext></math>=<span>1D6FC</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B2;</mtext></math>=<span>1D6FD</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B3;</mtext></math>=<span>1D6FE</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B4;</mtext></math>=<span>1D6FF</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B5;</mtext></math>=<span>1D700</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B6;</mtext></math>=<span>1D701</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B7;</mtext></math>=<span>1D702</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B8;</mtext></math>=<span>1D703</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3B9;</mtext></math>=<span>1D704</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3BA;</mtext></math>=<span>1D705</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3BB;</mtext></math>=<span>1D706</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3BC;</mtext></math>=<span>1D707</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3BD;</mtext></math>=<span>1D708</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3BE;</mtext></math>=<span>1D709</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3BF;</mtext></math>=<span>1D70A</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C0;</mtext></math>=<span>1D70B</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C1;</mtext></math>=<span>1D70C</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C2;</mtext></math>=<span>1D70D</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C3;</mtext></math>=<span>1D70E</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C4;</mtext></math>=<span>1D70F</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C5;</mtext></math>=<span>1D710</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C6;</mtext></math>=<span>1D711</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C7;</mtext></math>=<span>1D712</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C8;</mtext></math>=<span>1D713</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3C9;</mtext></math>=<span>1D714</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x2202;</mtext></math>=<span>1D715</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3F5;</mtext></math>=<span>1D716</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3D1;</mtext></math>=<span>1D717</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3F0;</mtext></math>=<span>1D718</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3D5;</mtext></math>=<span>1D719</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3F1;</mtext></math>=<span>1D71A</span></span>
- <span><math class="testfont"><mtext mathvariant="italic">&#x3D6;</mtext></math>=<span>1D71B</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-looped-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-looped-ref.html
deleted file mode 100644
index f00e5d87bb5..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-looped-ref.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant looped (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-looped.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1EE80;</mtext></math>=<span>1EE80</span></span>
- <span><math class="testfont"><mtext>&#x1EE81;</mtext></math>=<span>1EE81</span></span>
- <span><math class="testfont"><mtext>&#x1EE82;</mtext></math>=<span>1EE82</span></span>
- <span><math class="testfont"><mtext>&#x1EE83;</mtext></math>=<span>1EE83</span></span>
- <span><math class="testfont"><mtext>&#x1EE84;</mtext></math>=<span>1EE84</span></span>
- <span><math class="testfont"><mtext>&#x1EE85;</mtext></math>=<span>1EE85</span></span>
- <span><math class="testfont"><mtext>&#x1EE86;</mtext></math>=<span>1EE86</span></span>
- <span><math class="testfont"><mtext>&#x1EE87;</mtext></math>=<span>1EE87</span></span>
- <span><math class="testfont"><mtext>&#x1EE88;</mtext></math>=<span>1EE88</span></span>
- <span><math class="testfont"><mtext>&#x1EE89;</mtext></math>=<span>1EE89</span></span><br/>
- <span><math class="testfont"><mtext>&#x1EE8B;</mtext></math>=<span>1EE8B</span></span>
- <span><math class="testfont"><mtext>&#x1EE8C;</mtext></math>=<span>1EE8C</span></span>
- <span><math class="testfont"><mtext>&#x1EE8D;</mtext></math>=<span>1EE8D</span></span>
- <span><math class="testfont"><mtext>&#x1EE8E;</mtext></math>=<span>1EE8E</span></span>
- <span><math class="testfont"><mtext>&#x1EE8F;</mtext></math>=<span>1EE8F</span></span>
- <span><math class="testfont"><mtext>&#x1EE90;</mtext></math>=<span>1EE90</span></span>
- <span><math class="testfont"><mtext>&#x1EE91;</mtext></math>=<span>1EE91</span></span>
- <span><math class="testfont"><mtext>&#x1EE92;</mtext></math>=<span>1EE92</span></span>
- <span><math class="testfont"><mtext>&#x1EE93;</mtext></math>=<span>1EE93</span></span>
- <span><math class="testfont"><mtext>&#x1EE94;</mtext></math>=<span>1EE94</span></span><br/>
- <span><math class="testfont"><mtext>&#x1EE95;</mtext></math>=<span>1EE95</span></span>
- <span><math class="testfont"><mtext>&#x1EE96;</mtext></math>=<span>1EE96</span></span>
- <span><math class="testfont"><mtext>&#x1EE97;</mtext></math>=<span>1EE97</span></span>
- <span><math class="testfont"><mtext>&#x1EE98;</mtext></math>=<span>1EE98</span></span>
- <span><math class="testfont"><mtext>&#x1EE99;</mtext></math>=<span>1EE99</span></span>
- <span><math class="testfont"><mtext>&#x1EE9A;</mtext></math>=<span>1EE9A</span></span>
- <span><math class="testfont"><mtext>&#x1EE9B;</mtext></math>=<span>1EE9B</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-looped.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-looped.html
deleted file mode 100644
index b208849368b..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-looped.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant looped</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#looped-mappings">
-<link rel="match" href="mathvariant-looped-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a looped mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-looped.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="looped">&#x627;</mtext></math>=<span>1EE80</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x628;</mtext></math>=<span>1EE81</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x62C;</mtext></math>=<span>1EE82</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x62F;</mtext></math>=<span>1EE83</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x647;</mtext></math>=<span>1EE84</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x648;</mtext></math>=<span>1EE85</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x632;</mtext></math>=<span>1EE86</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x62D;</mtext></math>=<span>1EE87</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x637;</mtext></math>=<span>1EE88</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x64A;</mtext></math>=<span>1EE89</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="looped">&#x644;</mtext></math>=<span>1EE8B</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x645;</mtext></math>=<span>1EE8C</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x646;</mtext></math>=<span>1EE8D</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x633;</mtext></math>=<span>1EE8E</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x639;</mtext></math>=<span>1EE8F</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x641;</mtext></math>=<span>1EE90</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x635;</mtext></math>=<span>1EE91</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x642;</mtext></math>=<span>1EE92</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x631;</mtext></math>=<span>1EE93</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x634;</mtext></math>=<span>1EE94</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="looped">&#x62A;</mtext></math>=<span>1EE95</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x62B;</mtext></math>=<span>1EE96</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x62E;</mtext></math>=<span>1EE97</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x630;</mtext></math>=<span>1EE98</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x636;</mtext></math>=<span>1EE99</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x638;</mtext></math>=<span>1EE9A</span></span>
- <span><math class="testfont"><mtext mathvariant="looped">&#x63A;</mtext></math>=<span>1EE9B</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-monospace-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-monospace-ref.html
deleted file mode 100644
index 1d4a0c0a520..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-monospace-ref.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant monospace (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-monospace.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D670;</mtext></math>=<span>1D670</span></span>
- <span><math class="testfont"><mtext>&#x1D671;</mtext></math>=<span>1D671</span></span>
- <span><math class="testfont"><mtext>&#x1D672;</mtext></math>=<span>1D672</span></span>
- <span><math class="testfont"><mtext>&#x1D673;</mtext></math>=<span>1D673</span></span>
- <span><math class="testfont"><mtext>&#x1D674;</mtext></math>=<span>1D674</span></span>
- <span><math class="testfont"><mtext>&#x1D675;</mtext></math>=<span>1D675</span></span>
- <span><math class="testfont"><mtext>&#x1D676;</mtext></math>=<span>1D676</span></span>
- <span><math class="testfont"><mtext>&#x1D677;</mtext></math>=<span>1D677</span></span>
- <span><math class="testfont"><mtext>&#x1D678;</mtext></math>=<span>1D678</span></span>
- <span><math class="testfont"><mtext>&#x1D679;</mtext></math>=<span>1D679</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D67A;</mtext></math>=<span>1D67A</span></span>
- <span><math class="testfont"><mtext>&#x1D67B;</mtext></math>=<span>1D67B</span></span>
- <span><math class="testfont"><mtext>&#x1D67C;</mtext></math>=<span>1D67C</span></span>
- <span><math class="testfont"><mtext>&#x1D67D;</mtext></math>=<span>1D67D</span></span>
- <span><math class="testfont"><mtext>&#x1D67E;</mtext></math>=<span>1D67E</span></span>
- <span><math class="testfont"><mtext>&#x1D67F;</mtext></math>=<span>1D67F</span></span>
- <span><math class="testfont"><mtext>&#x1D680;</mtext></math>=<span>1D680</span></span>
- <span><math class="testfont"><mtext>&#x1D681;</mtext></math>=<span>1D681</span></span>
- <span><math class="testfont"><mtext>&#x1D682;</mtext></math>=<span>1D682</span></span>
- <span><math class="testfont"><mtext>&#x1D683;</mtext></math>=<span>1D683</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D684;</mtext></math>=<span>1D684</span></span>
- <span><math class="testfont"><mtext>&#x1D685;</mtext></math>=<span>1D685</span></span>
- <span><math class="testfont"><mtext>&#x1D686;</mtext></math>=<span>1D686</span></span>
- <span><math class="testfont"><mtext>&#x1D687;</mtext></math>=<span>1D687</span></span>
- <span><math class="testfont"><mtext>&#x1D688;</mtext></math>=<span>1D688</span></span>
- <span><math class="testfont"><mtext>&#x1D689;</mtext></math>=<span>1D689</span></span>
- <span><math class="testfont"><mtext>&#x1D68A;</mtext></math>=<span>1D68A</span></span>
- <span><math class="testfont"><mtext>&#x1D68B;</mtext></math>=<span>1D68B</span></span>
- <span><math class="testfont"><mtext>&#x1D68C;</mtext></math>=<span>1D68C</span></span>
- <span><math class="testfont"><mtext>&#x1D68D;</mtext></math>=<span>1D68D</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D68E;</mtext></math>=<span>1D68E</span></span>
- <span><math class="testfont"><mtext>&#x1D68F;</mtext></math>=<span>1D68F</span></span>
- <span><math class="testfont"><mtext>&#x1D690;</mtext></math>=<span>1D690</span></span>
- <span><math class="testfont"><mtext>&#x1D691;</mtext></math>=<span>1D691</span></span>
- <span><math class="testfont"><mtext>&#x1D692;</mtext></math>=<span>1D692</span></span>
- <span><math class="testfont"><mtext>&#x1D693;</mtext></math>=<span>1D693</span></span>
- <span><math class="testfont"><mtext>&#x1D694;</mtext></math>=<span>1D694</span></span>
- <span><math class="testfont"><mtext>&#x1D695;</mtext></math>=<span>1D695</span></span>
- <span><math class="testfont"><mtext>&#x1D696;</mtext></math>=<span>1D696</span></span>
- <span><math class="testfont"><mtext>&#x1D697;</mtext></math>=<span>1D697</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D698;</mtext></math>=<span>1D698</span></span>
- <span><math class="testfont"><mtext>&#x1D699;</mtext></math>=<span>1D699</span></span>
- <span><math class="testfont"><mtext>&#x1D69A;</mtext></math>=<span>1D69A</span></span>
- <span><math class="testfont"><mtext>&#x1D69B;</mtext></math>=<span>1D69B</span></span>
- <span><math class="testfont"><mtext>&#x1D69C;</mtext></math>=<span>1D69C</span></span>
- <span><math class="testfont"><mtext>&#x1D69D;</mtext></math>=<span>1D69D</span></span>
- <span><math class="testfont"><mtext>&#x1D69E;</mtext></math>=<span>1D69E</span></span>
- <span><math class="testfont"><mtext>&#x1D69F;</mtext></math>=<span>1D69F</span></span>
- <span><math class="testfont"><mtext>&#x1D6A0;</mtext></math>=<span>1D6A0</span></span>
- <span><math class="testfont"><mtext>&#x1D6A1;</mtext></math>=<span>1D6A1</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D6A2;</mtext></math>=<span>1D6A2</span></span>
- <span><math class="testfont"><mtext>&#x1D6A3;</mtext></math>=<span>1D6A3</span></span>
- <span><math class="testfont"><mtext>&#x1D7F6;</mtext></math>=<span>1D7F6</span></span>
- <span><math class="testfont"><mtext>&#x1D7F7;</mtext></math>=<span>1D7F7</span></span>
- <span><math class="testfont"><mtext>&#x1D7F8;</mtext></math>=<span>1D7F8</span></span>
- <span><math class="testfont"><mtext>&#x1D7F9;</mtext></math>=<span>1D7F9</span></span>
- <span><math class="testfont"><mtext>&#x1D7FA;</mtext></math>=<span>1D7FA</span></span>
- <span><math class="testfont"><mtext>&#x1D7FB;</mtext></math>=<span>1D7FB</span></span>
- <span><math class="testfont"><mtext>&#x1D7FC;</mtext></math>=<span>1D7FC</span></span>
- <span><math class="testfont"><mtext>&#x1D7FD;</mtext></math>=<span>1D7FD</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7FE;</mtext></math>=<span>1D7FE</span></span>
- <span><math class="testfont"><mtext>&#x1D7FF;</mtext></math>=<span>1D7FF</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-monospace.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-monospace.html
deleted file mode 100644
index ad5541fe0ec..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-monospace.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant monospace</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#monospace-mappings">
-<link rel="match" href="mathvariant-monospace-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a monospace mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-monospace.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x41;</mtext></math>=<span>1D670</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x42;</mtext></math>=<span>1D671</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x43;</mtext></math>=<span>1D672</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x44;</mtext></math>=<span>1D673</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x45;</mtext></math>=<span>1D674</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x46;</mtext></math>=<span>1D675</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x47;</mtext></math>=<span>1D676</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x48;</mtext></math>=<span>1D677</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x49;</mtext></math>=<span>1D678</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x4A;</mtext></math>=<span>1D679</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x4B;</mtext></math>=<span>1D67A</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x4C;</mtext></math>=<span>1D67B</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x4D;</mtext></math>=<span>1D67C</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x4E;</mtext></math>=<span>1D67D</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x4F;</mtext></math>=<span>1D67E</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x50;</mtext></math>=<span>1D67F</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x51;</mtext></math>=<span>1D680</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x52;</mtext></math>=<span>1D681</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x53;</mtext></math>=<span>1D682</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x54;</mtext></math>=<span>1D683</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x55;</mtext></math>=<span>1D684</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x56;</mtext></math>=<span>1D685</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x57;</mtext></math>=<span>1D686</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x58;</mtext></math>=<span>1D687</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x59;</mtext></math>=<span>1D688</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x5A;</mtext></math>=<span>1D689</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x61;</mtext></math>=<span>1D68A</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x62;</mtext></math>=<span>1D68B</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x63;</mtext></math>=<span>1D68C</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x64;</mtext></math>=<span>1D68D</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x65;</mtext></math>=<span>1D68E</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x66;</mtext></math>=<span>1D68F</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x67;</mtext></math>=<span>1D690</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x68;</mtext></math>=<span>1D691</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x69;</mtext></math>=<span>1D692</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x6A;</mtext></math>=<span>1D693</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x6B;</mtext></math>=<span>1D694</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x6C;</mtext></math>=<span>1D695</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x6D;</mtext></math>=<span>1D696</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x6E;</mtext></math>=<span>1D697</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x6F;</mtext></math>=<span>1D698</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x70;</mtext></math>=<span>1D699</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x71;</mtext></math>=<span>1D69A</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x72;</mtext></math>=<span>1D69B</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x73;</mtext></math>=<span>1D69C</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x74;</mtext></math>=<span>1D69D</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x75;</mtext></math>=<span>1D69E</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x76;</mtext></math>=<span>1D69F</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x77;</mtext></math>=<span>1D6A0</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x78;</mtext></math>=<span>1D6A1</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x79;</mtext></math>=<span>1D6A2</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x7A;</mtext></math>=<span>1D6A3</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x30;</mtext></math>=<span>1D7F6</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x31;</mtext></math>=<span>1D7F7</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x32;</mtext></math>=<span>1D7F8</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x33;</mtext></math>=<span>1D7F9</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x34;</mtext></math>=<span>1D7FA</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x35;</mtext></math>=<span>1D7FB</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x36;</mtext></math>=<span>1D7FC</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x37;</mtext></math>=<span>1D7FD</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x38;</mtext></math>=<span>1D7FE</span></span>
- <span><math class="testfont"><mtext mathvariant="monospace">&#x39;</mtext></math>=<span>1D7FF</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic-ref.html
deleted file mode 100644
index f918db9b48b..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic-ref.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant sans-serif-bold-italic (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-sans-serif-bold-italic.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D63C;</mtext></math>=<span>1D63C</span></span>
- <span><math class="testfont"><mtext>&#x1D63D;</mtext></math>=<span>1D63D</span></span>
- <span><math class="testfont"><mtext>&#x1D63E;</mtext></math>=<span>1D63E</span></span>
- <span><math class="testfont"><mtext>&#x1D63F;</mtext></math>=<span>1D63F</span></span>
- <span><math class="testfont"><mtext>&#x1D640;</mtext></math>=<span>1D640</span></span>
- <span><math class="testfont"><mtext>&#x1D641;</mtext></math>=<span>1D641</span></span>
- <span><math class="testfont"><mtext>&#x1D642;</mtext></math>=<span>1D642</span></span>
- <span><math class="testfont"><mtext>&#x1D643;</mtext></math>=<span>1D643</span></span>
- <span><math class="testfont"><mtext>&#x1D644;</mtext></math>=<span>1D644</span></span>
- <span><math class="testfont"><mtext>&#x1D645;</mtext></math>=<span>1D645</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D646;</mtext></math>=<span>1D646</span></span>
- <span><math class="testfont"><mtext>&#x1D647;</mtext></math>=<span>1D647</span></span>
- <span><math class="testfont"><mtext>&#x1D648;</mtext></math>=<span>1D648</span></span>
- <span><math class="testfont"><mtext>&#x1D649;</mtext></math>=<span>1D649</span></span>
- <span><math class="testfont"><mtext>&#x1D64A;</mtext></math>=<span>1D64A</span></span>
- <span><math class="testfont"><mtext>&#x1D64B;</mtext></math>=<span>1D64B</span></span>
- <span><math class="testfont"><mtext>&#x1D64C;</mtext></math>=<span>1D64C</span></span>
- <span><math class="testfont"><mtext>&#x1D64D;</mtext></math>=<span>1D64D</span></span>
- <span><math class="testfont"><mtext>&#x1D64E;</mtext></math>=<span>1D64E</span></span>
- <span><math class="testfont"><mtext>&#x1D64F;</mtext></math>=<span>1D64F</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D650;</mtext></math>=<span>1D650</span></span>
- <span><math class="testfont"><mtext>&#x1D651;</mtext></math>=<span>1D651</span></span>
- <span><math class="testfont"><mtext>&#x1D652;</mtext></math>=<span>1D652</span></span>
- <span><math class="testfont"><mtext>&#x1D653;</mtext></math>=<span>1D653</span></span>
- <span><math class="testfont"><mtext>&#x1D654;</mtext></math>=<span>1D654</span></span>
- <span><math class="testfont"><mtext>&#x1D655;</mtext></math>=<span>1D655</span></span>
- <span><math class="testfont"><mtext>&#x1D656;</mtext></math>=<span>1D656</span></span>
- <span><math class="testfont"><mtext>&#x1D657;</mtext></math>=<span>1D657</span></span>
- <span><math class="testfont"><mtext>&#x1D658;</mtext></math>=<span>1D658</span></span>
- <span><math class="testfont"><mtext>&#x1D659;</mtext></math>=<span>1D659</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D65A;</mtext></math>=<span>1D65A</span></span>
- <span><math class="testfont"><mtext>&#x1D65B;</mtext></math>=<span>1D65B</span></span>
- <span><math class="testfont"><mtext>&#x1D65C;</mtext></math>=<span>1D65C</span></span>
- <span><math class="testfont"><mtext>&#x1D65D;</mtext></math>=<span>1D65D</span></span>
- <span><math class="testfont"><mtext>&#x1D65E;</mtext></math>=<span>1D65E</span></span>
- <span><math class="testfont"><mtext>&#x1D65F;</mtext></math>=<span>1D65F</span></span>
- <span><math class="testfont"><mtext>&#x1D660;</mtext></math>=<span>1D660</span></span>
- <span><math class="testfont"><mtext>&#x1D661;</mtext></math>=<span>1D661</span></span>
- <span><math class="testfont"><mtext>&#x1D662;</mtext></math>=<span>1D662</span></span>
- <span><math class="testfont"><mtext>&#x1D663;</mtext></math>=<span>1D663</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D664;</mtext></math>=<span>1D664</span></span>
- <span><math class="testfont"><mtext>&#x1D665;</mtext></math>=<span>1D665</span></span>
- <span><math class="testfont"><mtext>&#x1D666;</mtext></math>=<span>1D666</span></span>
- <span><math class="testfont"><mtext>&#x1D667;</mtext></math>=<span>1D667</span></span>
- <span><math class="testfont"><mtext>&#x1D668;</mtext></math>=<span>1D668</span></span>
- <span><math class="testfont"><mtext>&#x1D669;</mtext></math>=<span>1D669</span></span>
- <span><math class="testfont"><mtext>&#x1D66A;</mtext></math>=<span>1D66A</span></span>
- <span><math class="testfont"><mtext>&#x1D66B;</mtext></math>=<span>1D66B</span></span>
- <span><math class="testfont"><mtext>&#x1D66C;</mtext></math>=<span>1D66C</span></span>
- <span><math class="testfont"><mtext>&#x1D66D;</mtext></math>=<span>1D66D</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D66E;</mtext></math>=<span>1D66E</span></span>
- <span><math class="testfont"><mtext>&#x1D66F;</mtext></math>=<span>1D66F</span></span>
- <span><math class="testfont"><mtext>&#x1D790;</mtext></math>=<span>1D790</span></span>
- <span><math class="testfont"><mtext>&#x1D791;</mtext></math>=<span>1D791</span></span>
- <span><math class="testfont"><mtext>&#x1D792;</mtext></math>=<span>1D792</span></span>
- <span><math class="testfont"><mtext>&#x1D793;</mtext></math>=<span>1D793</span></span>
- <span><math class="testfont"><mtext>&#x1D794;</mtext></math>=<span>1D794</span></span>
- <span><math class="testfont"><mtext>&#x1D795;</mtext></math>=<span>1D795</span></span>
- <span><math class="testfont"><mtext>&#x1D796;</mtext></math>=<span>1D796</span></span>
- <span><math class="testfont"><mtext>&#x1D797;</mtext></math>=<span>1D797</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D798;</mtext></math>=<span>1D798</span></span>
- <span><math class="testfont"><mtext>&#x1D799;</mtext></math>=<span>1D799</span></span>
- <span><math class="testfont"><mtext>&#x1D79A;</mtext></math>=<span>1D79A</span></span>
- <span><math class="testfont"><mtext>&#x1D79B;</mtext></math>=<span>1D79B</span></span>
- <span><math class="testfont"><mtext>&#x1D79C;</mtext></math>=<span>1D79C</span></span>
- <span><math class="testfont"><mtext>&#x1D79D;</mtext></math>=<span>1D79D</span></span>
- <span><math class="testfont"><mtext>&#x1D79E;</mtext></math>=<span>1D79E</span></span>
- <span><math class="testfont"><mtext>&#x1D79F;</mtext></math>=<span>1D79F</span></span>
- <span><math class="testfont"><mtext>&#x1D7A0;</mtext></math>=<span>1D7A0</span></span>
- <span><math class="testfont"><mtext>&#x1D7A1;</mtext></math>=<span>1D7A1</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7A2;</mtext></math>=<span>1D7A2</span></span>
- <span><math class="testfont"><mtext>&#x1D7A3;</mtext></math>=<span>1D7A3</span></span>
- <span><math class="testfont"><mtext>&#x1D7A4;</mtext></math>=<span>1D7A4</span></span>
- <span><math class="testfont"><mtext>&#x1D7A5;</mtext></math>=<span>1D7A5</span></span>
- <span><math class="testfont"><mtext>&#x1D7A6;</mtext></math>=<span>1D7A6</span></span>
- <span><math class="testfont"><mtext>&#x1D7A7;</mtext></math>=<span>1D7A7</span></span>
- <span><math class="testfont"><mtext>&#x1D7A8;</mtext></math>=<span>1D7A8</span></span>
- <span><math class="testfont"><mtext>&#x1D7A9;</mtext></math>=<span>1D7A9</span></span>
- <span><math class="testfont"><mtext>&#x1D7AA;</mtext></math>=<span>1D7AA</span></span>
- <span><math class="testfont"><mtext>&#x1D7AB;</mtext></math>=<span>1D7AB</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7AC;</mtext></math>=<span>1D7AC</span></span>
- <span><math class="testfont"><mtext>&#x1D7AD;</mtext></math>=<span>1D7AD</span></span>
- <span><math class="testfont"><mtext>&#x1D7AE;</mtext></math>=<span>1D7AE</span></span>
- <span><math class="testfont"><mtext>&#x1D7AF;</mtext></math>=<span>1D7AF</span></span>
- <span><math class="testfont"><mtext>&#x1D7B0;</mtext></math>=<span>1D7B0</span></span>
- <span><math class="testfont"><mtext>&#x1D7B1;</mtext></math>=<span>1D7B1</span></span>
- <span><math class="testfont"><mtext>&#x1D7B2;</mtext></math>=<span>1D7B2</span></span>
- <span><math class="testfont"><mtext>&#x1D7B3;</mtext></math>=<span>1D7B3</span></span>
- <span><math class="testfont"><mtext>&#x1D7B4;</mtext></math>=<span>1D7B4</span></span>
- <span><math class="testfont"><mtext>&#x1D7B5;</mtext></math>=<span>1D7B5</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7B6;</mtext></math>=<span>1D7B6</span></span>
- <span><math class="testfont"><mtext>&#x1D7B7;</mtext></math>=<span>1D7B7</span></span>
- <span><math class="testfont"><mtext>&#x1D7B8;</mtext></math>=<span>1D7B8</span></span>
- <span><math class="testfont"><mtext>&#x1D7B9;</mtext></math>=<span>1D7B9</span></span>
- <span><math class="testfont"><mtext>&#x1D7BA;</mtext></math>=<span>1D7BA</span></span>
- <span><math class="testfont"><mtext>&#x1D7BB;</mtext></math>=<span>1D7BB</span></span>
- <span><math class="testfont"><mtext>&#x1D7BC;</mtext></math>=<span>1D7BC</span></span>
- <span><math class="testfont"><mtext>&#x1D7BD;</mtext></math>=<span>1D7BD</span></span>
- <span><math class="testfont"><mtext>&#x1D7BE;</mtext></math>=<span>1D7BE</span></span>
- <span><math class="testfont"><mtext>&#x1D7BF;</mtext></math>=<span>1D7BF</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7C0;</mtext></math>=<span>1D7C0</span></span>
- <span><math class="testfont"><mtext>&#x1D7C1;</mtext></math>=<span>1D7C1</span></span>
- <span><math class="testfont"><mtext>&#x1D7C2;</mtext></math>=<span>1D7C2</span></span>
- <span><math class="testfont"><mtext>&#x1D7C3;</mtext></math>=<span>1D7C3</span></span>
- <span><math class="testfont"><mtext>&#x1D7C4;</mtext></math>=<span>1D7C4</span></span>
- <span><math class="testfont"><mtext>&#x1D7C5;</mtext></math>=<span>1D7C5</span></span>
- <span><math class="testfont"><mtext>&#x1D7C6;</mtext></math>=<span>1D7C6</span></span>
- <span><math class="testfont"><mtext>&#x1D7C7;</mtext></math>=<span>1D7C7</span></span>
- <span><math class="testfont"><mtext>&#x1D7C8;</mtext></math>=<span>1D7C8</span></span>
- <span><math class="testfont"><mtext>&#x1D7C9;</mtext></math>=<span>1D7C9</span></span><br/>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic.html
deleted file mode 100644
index d51afe43454..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant sans-serif-bold-italic</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#sans-serif-bold-italic-mappings">
-<link rel="match" href="mathvariant-sans-serif-bold-italic-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a sans-serif-bold-italic mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-sans-serif-bold-italic.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x41;</mtext></math>=<span>1D63C</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x42;</mtext></math>=<span>1D63D</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x43;</mtext></math>=<span>1D63E</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x44;</mtext></math>=<span>1D63F</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x45;</mtext></math>=<span>1D640</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x46;</mtext></math>=<span>1D641</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x47;</mtext></math>=<span>1D642</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x48;</mtext></math>=<span>1D643</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x49;</mtext></math>=<span>1D644</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x4A;</mtext></math>=<span>1D645</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x4B;</mtext></math>=<span>1D646</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x4C;</mtext></math>=<span>1D647</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x4D;</mtext></math>=<span>1D648</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x4E;</mtext></math>=<span>1D649</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x4F;</mtext></math>=<span>1D64A</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x50;</mtext></math>=<span>1D64B</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x51;</mtext></math>=<span>1D64C</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x52;</mtext></math>=<span>1D64D</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x53;</mtext></math>=<span>1D64E</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x54;</mtext></math>=<span>1D64F</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x55;</mtext></math>=<span>1D650</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x56;</mtext></math>=<span>1D651</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x57;</mtext></math>=<span>1D652</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x58;</mtext></math>=<span>1D653</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x59;</mtext></math>=<span>1D654</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x5A;</mtext></math>=<span>1D655</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x61;</mtext></math>=<span>1D656</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x62;</mtext></math>=<span>1D657</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x63;</mtext></math>=<span>1D658</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x64;</mtext></math>=<span>1D659</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x65;</mtext></math>=<span>1D65A</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x66;</mtext></math>=<span>1D65B</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x67;</mtext></math>=<span>1D65C</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x68;</mtext></math>=<span>1D65D</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x69;</mtext></math>=<span>1D65E</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x6A;</mtext></math>=<span>1D65F</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x6B;</mtext></math>=<span>1D660</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x6C;</mtext></math>=<span>1D661</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x6D;</mtext></math>=<span>1D662</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x6E;</mtext></math>=<span>1D663</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x6F;</mtext></math>=<span>1D664</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x70;</mtext></math>=<span>1D665</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x71;</mtext></math>=<span>1D666</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x72;</mtext></math>=<span>1D667</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x73;</mtext></math>=<span>1D668</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x74;</mtext></math>=<span>1D669</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x75;</mtext></math>=<span>1D66A</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x76;</mtext></math>=<span>1D66B</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x77;</mtext></math>=<span>1D66C</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x78;</mtext></math>=<span>1D66D</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x79;</mtext></math>=<span>1D66E</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x7A;</mtext></math>=<span>1D66F</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x391;</mtext></math>=<span>1D790</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x392;</mtext></math>=<span>1D791</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x393;</mtext></math>=<span>1D792</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x394;</mtext></math>=<span>1D793</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x395;</mtext></math>=<span>1D794</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x396;</mtext></math>=<span>1D795</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x397;</mtext></math>=<span>1D796</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x398;</mtext></math>=<span>1D797</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x399;</mtext></math>=<span>1D798</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x39A;</mtext></math>=<span>1D799</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x39B;</mtext></math>=<span>1D79A</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x39C;</mtext></math>=<span>1D79B</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x39D;</mtext></math>=<span>1D79C</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x39E;</mtext></math>=<span>1D79D</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x39F;</mtext></math>=<span>1D79E</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A0;</mtext></math>=<span>1D79F</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A1;</mtext></math>=<span>1D7A0</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3F4;</mtext></math>=<span>1D7A1</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A3;</mtext></math>=<span>1D7A2</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A4;</mtext></math>=<span>1D7A3</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A5;</mtext></math>=<span>1D7A4</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A6;</mtext></math>=<span>1D7A5</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A7;</mtext></math>=<span>1D7A6</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A8;</mtext></math>=<span>1D7A7</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3A9;</mtext></math>=<span>1D7A8</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x2207;</mtext></math>=<span>1D7A9</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B1;</mtext></math>=<span>1D7AA</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B2;</mtext></math>=<span>1D7AB</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B3;</mtext></math>=<span>1D7AC</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B4;</mtext></math>=<span>1D7AD</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B5;</mtext></math>=<span>1D7AE</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B6;</mtext></math>=<span>1D7AF</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B7;</mtext></math>=<span>1D7B0</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B8;</mtext></math>=<span>1D7B1</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3B9;</mtext></math>=<span>1D7B2</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3BA;</mtext></math>=<span>1D7B3</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3BB;</mtext></math>=<span>1D7B4</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3BC;</mtext></math>=<span>1D7B5</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3BD;</mtext></math>=<span>1D7B6</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3BE;</mtext></math>=<span>1D7B7</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3BF;</mtext></math>=<span>1D7B8</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C0;</mtext></math>=<span>1D7B9</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C1;</mtext></math>=<span>1D7BA</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C2;</mtext></math>=<span>1D7BB</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C3;</mtext></math>=<span>1D7BC</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C4;</mtext></math>=<span>1D7BD</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C5;</mtext></math>=<span>1D7BE</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C6;</mtext></math>=<span>1D7BF</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C7;</mtext></math>=<span>1D7C0</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C8;</mtext></math>=<span>1D7C1</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3C9;</mtext></math>=<span>1D7C2</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x2202;</mtext></math>=<span>1D7C3</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3F5;</mtext></math>=<span>1D7C4</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3D1;</mtext></math>=<span>1D7C5</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3F0;</mtext></math>=<span>1D7C6</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3D5;</mtext></math>=<span>1D7C7</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3F1;</mtext></math>=<span>1D7C8</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">&#x3D6;</mtext></math>=<span>1D7C9</span></span><br/>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-italic-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-italic-ref.html
deleted file mode 100644
index d7e23248c69..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-italic-ref.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant sans-serif-italic (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-sans-serif-italic.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D608;</mtext></math>=<span>1D608</span></span>
- <span><math class="testfont"><mtext>&#x1D609;</mtext></math>=<span>1D609</span></span>
- <span><math class="testfont"><mtext>&#x1D60A;</mtext></math>=<span>1D60A</span></span>
- <span><math class="testfont"><mtext>&#x1D60B;</mtext></math>=<span>1D60B</span></span>
- <span><math class="testfont"><mtext>&#x1D60C;</mtext></math>=<span>1D60C</span></span>
- <span><math class="testfont"><mtext>&#x1D60D;</mtext></math>=<span>1D60D</span></span>
- <span><math class="testfont"><mtext>&#x1D60E;</mtext></math>=<span>1D60E</span></span>
- <span><math class="testfont"><mtext>&#x1D60F;</mtext></math>=<span>1D60F</span></span>
- <span><math class="testfont"><mtext>&#x1D610;</mtext></math>=<span>1D610</span></span>
- <span><math class="testfont"><mtext>&#x1D611;</mtext></math>=<span>1D611</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D612;</mtext></math>=<span>1D612</span></span>
- <span><math class="testfont"><mtext>&#x1D613;</mtext></math>=<span>1D613</span></span>
- <span><math class="testfont"><mtext>&#x1D614;</mtext></math>=<span>1D614</span></span>
- <span><math class="testfont"><mtext>&#x1D615;</mtext></math>=<span>1D615</span></span>
- <span><math class="testfont"><mtext>&#x1D616;</mtext></math>=<span>1D616</span></span>
- <span><math class="testfont"><mtext>&#x1D617;</mtext></math>=<span>1D617</span></span>
- <span><math class="testfont"><mtext>&#x1D618;</mtext></math>=<span>1D618</span></span>
- <span><math class="testfont"><mtext>&#x1D619;</mtext></math>=<span>1D619</span></span>
- <span><math class="testfont"><mtext>&#x1D61A;</mtext></math>=<span>1D61A</span></span>
- <span><math class="testfont"><mtext>&#x1D61B;</mtext></math>=<span>1D61B</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D61C;</mtext></math>=<span>1D61C</span></span>
- <span><math class="testfont"><mtext>&#x1D61D;</mtext></math>=<span>1D61D</span></span>
- <span><math class="testfont"><mtext>&#x1D61E;</mtext></math>=<span>1D61E</span></span>
- <span><math class="testfont"><mtext>&#x1D61F;</mtext></math>=<span>1D61F</span></span>
- <span><math class="testfont"><mtext>&#x1D620;</mtext></math>=<span>1D620</span></span>
- <span><math class="testfont"><mtext>&#x1D621;</mtext></math>=<span>1D621</span></span>
- <span><math class="testfont"><mtext>&#x1D622;</mtext></math>=<span>1D622</span></span>
- <span><math class="testfont"><mtext>&#x1D623;</mtext></math>=<span>1D623</span></span>
- <span><math class="testfont"><mtext>&#x1D624;</mtext></math>=<span>1D624</span></span>
- <span><math class="testfont"><mtext>&#x1D625;</mtext></math>=<span>1D625</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D626;</mtext></math>=<span>1D626</span></span>
- <span><math class="testfont"><mtext>&#x1D627;</mtext></math>=<span>1D627</span></span>
- <span><math class="testfont"><mtext>&#x1D628;</mtext></math>=<span>1D628</span></span>
- <span><math class="testfont"><mtext>&#x1D629;</mtext></math>=<span>1D629</span></span>
- <span><math class="testfont"><mtext>&#x1D62A;</mtext></math>=<span>1D62A</span></span>
- <span><math class="testfont"><mtext>&#x1D62B;</mtext></math>=<span>1D62B</span></span>
- <span><math class="testfont"><mtext>&#x1D62C;</mtext></math>=<span>1D62C</span></span>
- <span><math class="testfont"><mtext>&#x1D62D;</mtext></math>=<span>1D62D</span></span>
- <span><math class="testfont"><mtext>&#x1D62E;</mtext></math>=<span>1D62E</span></span>
- <span><math class="testfont"><mtext>&#x1D62F;</mtext></math>=<span>1D62F</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D630;</mtext></math>=<span>1D630</span></span>
- <span><math class="testfont"><mtext>&#x1D631;</mtext></math>=<span>1D631</span></span>
- <span><math class="testfont"><mtext>&#x1D632;</mtext></math>=<span>1D632</span></span>
- <span><math class="testfont"><mtext>&#x1D633;</mtext></math>=<span>1D633</span></span>
- <span><math class="testfont"><mtext>&#x1D634;</mtext></math>=<span>1D634</span></span>
- <span><math class="testfont"><mtext>&#x1D635;</mtext></math>=<span>1D635</span></span>
- <span><math class="testfont"><mtext>&#x1D636;</mtext></math>=<span>1D636</span></span>
- <span><math class="testfont"><mtext>&#x1D637;</mtext></math>=<span>1D637</span></span>
- <span><math class="testfont"><mtext>&#x1D638;</mtext></math>=<span>1D638</span></span>
- <span><math class="testfont"><mtext>&#x1D639;</mtext></math>=<span>1D639</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D63A;</mtext></math>=<span>1D63A</span></span>
- <span><math class="testfont"><mtext>&#x1D63B;</mtext></math>=<span>1D63B</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-italic.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-italic.html
deleted file mode 100644
index e847ca9bb8d..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-italic.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant sans-serif-italic</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#sans-serif-italic-mappings">
-<link rel="match" href="mathvariant-sans-serif-italic-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a sans-serif-italic mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-sans-serif-italic.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x41;</mtext></math>=<span>1D608</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x42;</mtext></math>=<span>1D609</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x43;</mtext></math>=<span>1D60A</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x44;</mtext></math>=<span>1D60B</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x45;</mtext></math>=<span>1D60C</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x46;</mtext></math>=<span>1D60D</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x47;</mtext></math>=<span>1D60E</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x48;</mtext></math>=<span>1D60F</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x49;</mtext></math>=<span>1D610</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x4A;</mtext></math>=<span>1D611</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x4B;</mtext></math>=<span>1D612</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x4C;</mtext></math>=<span>1D613</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x4D;</mtext></math>=<span>1D614</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x4E;</mtext></math>=<span>1D615</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x4F;</mtext></math>=<span>1D616</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x50;</mtext></math>=<span>1D617</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x51;</mtext></math>=<span>1D618</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x52;</mtext></math>=<span>1D619</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x53;</mtext></math>=<span>1D61A</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x54;</mtext></math>=<span>1D61B</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x55;</mtext></math>=<span>1D61C</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x56;</mtext></math>=<span>1D61D</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x57;</mtext></math>=<span>1D61E</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x58;</mtext></math>=<span>1D61F</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x59;</mtext></math>=<span>1D620</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x5A;</mtext></math>=<span>1D621</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x61;</mtext></math>=<span>1D622</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x62;</mtext></math>=<span>1D623</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x63;</mtext></math>=<span>1D624</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x64;</mtext></math>=<span>1D625</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x65;</mtext></math>=<span>1D626</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x66;</mtext></math>=<span>1D627</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x67;</mtext></math>=<span>1D628</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x68;</mtext></math>=<span>1D629</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x69;</mtext></math>=<span>1D62A</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x6A;</mtext></math>=<span>1D62B</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x6B;</mtext></math>=<span>1D62C</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x6C;</mtext></math>=<span>1D62D</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x6D;</mtext></math>=<span>1D62E</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x6E;</mtext></math>=<span>1D62F</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x6F;</mtext></math>=<span>1D630</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x70;</mtext></math>=<span>1D631</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x71;</mtext></math>=<span>1D632</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x72;</mtext></math>=<span>1D633</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x73;</mtext></math>=<span>1D634</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x74;</mtext></math>=<span>1D635</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x75;</mtext></math>=<span>1D636</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x76;</mtext></math>=<span>1D637</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x77;</mtext></math>=<span>1D638</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x78;</mtext></math>=<span>1D639</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x79;</mtext></math>=<span>1D63A</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif-italic">&#x7A;</mtext></math>=<span>1D63B</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-ref.html
deleted file mode 100644
index ced5272ecb5..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif-ref.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant sans-serif (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-sans-serif.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D5A0;</mtext></math>=<span>1D5A0</span></span>
- <span><math class="testfont"><mtext>&#x1D5A1;</mtext></math>=<span>1D5A1</span></span>
- <span><math class="testfont"><mtext>&#x1D5A2;</mtext></math>=<span>1D5A2</span></span>
- <span><math class="testfont"><mtext>&#x1D5A3;</mtext></math>=<span>1D5A3</span></span>
- <span><math class="testfont"><mtext>&#x1D5A4;</mtext></math>=<span>1D5A4</span></span>
- <span><math class="testfont"><mtext>&#x1D5A5;</mtext></math>=<span>1D5A5</span></span>
- <span><math class="testfont"><mtext>&#x1D5A6;</mtext></math>=<span>1D5A6</span></span>
- <span><math class="testfont"><mtext>&#x1D5A7;</mtext></math>=<span>1D5A7</span></span>
- <span><math class="testfont"><mtext>&#x1D5A8;</mtext></math>=<span>1D5A8</span></span>
- <span><math class="testfont"><mtext>&#x1D5A9;</mtext></math>=<span>1D5A9</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5AA;</mtext></math>=<span>1D5AA</span></span>
- <span><math class="testfont"><mtext>&#x1D5AB;</mtext></math>=<span>1D5AB</span></span>
- <span><math class="testfont"><mtext>&#x1D5AC;</mtext></math>=<span>1D5AC</span></span>
- <span><math class="testfont"><mtext>&#x1D5AD;</mtext></math>=<span>1D5AD</span></span>
- <span><math class="testfont"><mtext>&#x1D5AE;</mtext></math>=<span>1D5AE</span></span>
- <span><math class="testfont"><mtext>&#x1D5AF;</mtext></math>=<span>1D5AF</span></span>
- <span><math class="testfont"><mtext>&#x1D5B0;</mtext></math>=<span>1D5B0</span></span>
- <span><math class="testfont"><mtext>&#x1D5B1;</mtext></math>=<span>1D5B1</span></span>
- <span><math class="testfont"><mtext>&#x1D5B2;</mtext></math>=<span>1D5B2</span></span>
- <span><math class="testfont"><mtext>&#x1D5B3;</mtext></math>=<span>1D5B3</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5B4;</mtext></math>=<span>1D5B4</span></span>
- <span><math class="testfont"><mtext>&#x1D5B5;</mtext></math>=<span>1D5B5</span></span>
- <span><math class="testfont"><mtext>&#x1D5B6;</mtext></math>=<span>1D5B6</span></span>
- <span><math class="testfont"><mtext>&#x1D5B7;</mtext></math>=<span>1D5B7</span></span>
- <span><math class="testfont"><mtext>&#x1D5B8;</mtext></math>=<span>1D5B8</span></span>
- <span><math class="testfont"><mtext>&#x1D5B9;</mtext></math>=<span>1D5B9</span></span>
- <span><math class="testfont"><mtext>&#x1D5BA;</mtext></math>=<span>1D5BA</span></span>
- <span><math class="testfont"><mtext>&#x1D5BB;</mtext></math>=<span>1D5BB</span></span>
- <span><math class="testfont"><mtext>&#x1D5BC;</mtext></math>=<span>1D5BC</span></span>
- <span><math class="testfont"><mtext>&#x1D5BD;</mtext></math>=<span>1D5BD</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5BE;</mtext></math>=<span>1D5BE</span></span>
- <span><math class="testfont"><mtext>&#x1D5BF;</mtext></math>=<span>1D5BF</span></span>
- <span><math class="testfont"><mtext>&#x1D5C0;</mtext></math>=<span>1D5C0</span></span>
- <span><math class="testfont"><mtext>&#x1D5C1;</mtext></math>=<span>1D5C1</span></span>
- <span><math class="testfont"><mtext>&#x1D5C2;</mtext></math>=<span>1D5C2</span></span>
- <span><math class="testfont"><mtext>&#x1D5C3;</mtext></math>=<span>1D5C3</span></span>
- <span><math class="testfont"><mtext>&#x1D5C4;</mtext></math>=<span>1D5C4</span></span>
- <span><math class="testfont"><mtext>&#x1D5C5;</mtext></math>=<span>1D5C5</span></span>
- <span><math class="testfont"><mtext>&#x1D5C6;</mtext></math>=<span>1D5C6</span></span>
- <span><math class="testfont"><mtext>&#x1D5C7;</mtext></math>=<span>1D5C7</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5C8;</mtext></math>=<span>1D5C8</span></span>
- <span><math class="testfont"><mtext>&#x1D5C9;</mtext></math>=<span>1D5C9</span></span>
- <span><math class="testfont"><mtext>&#x1D5CA;</mtext></math>=<span>1D5CA</span></span>
- <span><math class="testfont"><mtext>&#x1D5CB;</mtext></math>=<span>1D5CB</span></span>
- <span><math class="testfont"><mtext>&#x1D5CC;</mtext></math>=<span>1D5CC</span></span>
- <span><math class="testfont"><mtext>&#x1D5CD;</mtext></math>=<span>1D5CD</span></span>
- <span><math class="testfont"><mtext>&#x1D5CE;</mtext></math>=<span>1D5CE</span></span>
- <span><math class="testfont"><mtext>&#x1D5CF;</mtext></math>=<span>1D5CF</span></span>
- <span><math class="testfont"><mtext>&#x1D5D0;</mtext></math>=<span>1D5D0</span></span>
- <span><math class="testfont"><mtext>&#x1D5D1;</mtext></math>=<span>1D5D1</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D5D2;</mtext></math>=<span>1D5D2</span></span>
- <span><math class="testfont"><mtext>&#x1D5D3;</mtext></math>=<span>1D5D3</span></span>
- <span><math class="testfont"><mtext>&#x1D7E2;</mtext></math>=<span>1D7E2</span></span>
- <span><math class="testfont"><mtext>&#x1D7E3;</mtext></math>=<span>1D7E3</span></span>
- <span><math class="testfont"><mtext>&#x1D7E4;</mtext></math>=<span>1D7E4</span></span>
- <span><math class="testfont"><mtext>&#x1D7E5;</mtext></math>=<span>1D7E5</span></span>
- <span><math class="testfont"><mtext>&#x1D7E6;</mtext></math>=<span>1D7E6</span></span>
- <span><math class="testfont"><mtext>&#x1D7E7;</mtext></math>=<span>1D7E7</span></span>
- <span><math class="testfont"><mtext>&#x1D7E8;</mtext></math>=<span>1D7E8</span></span>
- <span><math class="testfont"><mtext>&#x1D7E9;</mtext></math>=<span>1D7E9</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D7EA;</mtext></math>=<span>1D7EA</span></span>
- <span><math class="testfont"><mtext>&#x1D7EB;</mtext></math>=<span>1D7EB</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif.html
deleted file mode 100644
index 43a1fa821f3..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-sans-serif.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant sans-serif</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#sans-serif-mappings">
-<link rel="match" href="mathvariant-sans-serif-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a sans-serif mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-sans-serif.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x41;</mtext></math>=<span>1D5A0</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x42;</mtext></math>=<span>1D5A1</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x43;</mtext></math>=<span>1D5A2</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x44;</mtext></math>=<span>1D5A3</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x45;</mtext></math>=<span>1D5A4</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x46;</mtext></math>=<span>1D5A5</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x47;</mtext></math>=<span>1D5A6</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x48;</mtext></math>=<span>1D5A7</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x49;</mtext></math>=<span>1D5A8</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x4A;</mtext></math>=<span>1D5A9</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x4B;</mtext></math>=<span>1D5AA</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x4C;</mtext></math>=<span>1D5AB</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x4D;</mtext></math>=<span>1D5AC</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x4E;</mtext></math>=<span>1D5AD</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x4F;</mtext></math>=<span>1D5AE</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x50;</mtext></math>=<span>1D5AF</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x51;</mtext></math>=<span>1D5B0</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x52;</mtext></math>=<span>1D5B1</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x53;</mtext></math>=<span>1D5B2</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x54;</mtext></math>=<span>1D5B3</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x55;</mtext></math>=<span>1D5B4</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x56;</mtext></math>=<span>1D5B5</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x57;</mtext></math>=<span>1D5B6</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x58;</mtext></math>=<span>1D5B7</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x59;</mtext></math>=<span>1D5B8</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x5A;</mtext></math>=<span>1D5B9</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x61;</mtext></math>=<span>1D5BA</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x62;</mtext></math>=<span>1D5BB</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x63;</mtext></math>=<span>1D5BC</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x64;</mtext></math>=<span>1D5BD</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x65;</mtext></math>=<span>1D5BE</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x66;</mtext></math>=<span>1D5BF</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x67;</mtext></math>=<span>1D5C0</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x68;</mtext></math>=<span>1D5C1</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x69;</mtext></math>=<span>1D5C2</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x6A;</mtext></math>=<span>1D5C3</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x6B;</mtext></math>=<span>1D5C4</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x6C;</mtext></math>=<span>1D5C5</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x6D;</mtext></math>=<span>1D5C6</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x6E;</mtext></math>=<span>1D5C7</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x6F;</mtext></math>=<span>1D5C8</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x70;</mtext></math>=<span>1D5C9</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x71;</mtext></math>=<span>1D5CA</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x72;</mtext></math>=<span>1D5CB</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x73;</mtext></math>=<span>1D5CC</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x74;</mtext></math>=<span>1D5CD</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x75;</mtext></math>=<span>1D5CE</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x76;</mtext></math>=<span>1D5CF</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x77;</mtext></math>=<span>1D5D0</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x78;</mtext></math>=<span>1D5D1</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x79;</mtext></math>=<span>1D5D2</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x7A;</mtext></math>=<span>1D5D3</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x30;</mtext></math>=<span>1D7E2</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x31;</mtext></math>=<span>1D7E3</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x32;</mtext></math>=<span>1D7E4</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x33;</mtext></math>=<span>1D7E5</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x34;</mtext></math>=<span>1D7E6</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x35;</mtext></math>=<span>1D7E7</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x36;</mtext></math>=<span>1D7E8</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x37;</mtext></math>=<span>1D7E9</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x38;</mtext></math>=<span>1D7EA</span></span>
- <span><math class="testfont"><mtext mathvariant="sans-serif">&#x39;</mtext></math>=<span>1D7EB</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-script-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-script-ref.html
deleted file mode 100644
index 60ced85bc3a..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-script-ref.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant script (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-script.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1D49C;</mtext></math>=<span>1D49C</span></span>
- <span><math class="testfont"><mtext>&#x212C;</mtext></math>=<span>0212C</span></span>
- <span><math class="testfont"><mtext>&#x1D49E;</mtext></math>=<span>1D49E</span></span>
- <span><math class="testfont"><mtext>&#x1D49F;</mtext></math>=<span>1D49F</span></span>
- <span><math class="testfont"><mtext>&#x2130;</mtext></math>=<span>02130</span></span>
- <span><math class="testfont"><mtext>&#x2131;</mtext></math>=<span>02131</span></span>
- <span><math class="testfont"><mtext>&#x1D4A2;</mtext></math>=<span>1D4A2</span></span>
- <span><math class="testfont"><mtext>&#x210B;</mtext></math>=<span>0210B</span></span>
- <span><math class="testfont"><mtext>&#x2110;</mtext></math>=<span>02110</span></span>
- <span><math class="testfont"><mtext>&#x1D4A5;</mtext></math>=<span>1D4A5</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D4A6;</mtext></math>=<span>1D4A6</span></span>
- <span><math class="testfont"><mtext>&#x2112;</mtext></math>=<span>02112</span></span>
- <span><math class="testfont"><mtext>&#x2133;</mtext></math>=<span>02133</span></span>
- <span><math class="testfont"><mtext>&#x1D4A9;</mtext></math>=<span>1D4A9</span></span>
- <span><math class="testfont"><mtext>&#x1D4AA;</mtext></math>=<span>1D4AA</span></span>
- <span><math class="testfont"><mtext>&#x1D4AB;</mtext></math>=<span>1D4AB</span></span>
- <span><math class="testfont"><mtext>&#x1D4AC;</mtext></math>=<span>1D4AC</span></span>
- <span><math class="testfont"><mtext>&#x211B;</mtext></math>=<span>0211B</span></span>
- <span><math class="testfont"><mtext>&#x1D4AE;</mtext></math>=<span>1D4AE</span></span>
- <span><math class="testfont"><mtext>&#x1D4AF;</mtext></math>=<span>1D4AF</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D4B0;</mtext></math>=<span>1D4B0</span></span>
- <span><math class="testfont"><mtext>&#x1D4B1;</mtext></math>=<span>1D4B1</span></span>
- <span><math class="testfont"><mtext>&#x1D4B2;</mtext></math>=<span>1D4B2</span></span>
- <span><math class="testfont"><mtext>&#x1D4B3;</mtext></math>=<span>1D4B3</span></span>
- <span><math class="testfont"><mtext>&#x1D4B4;</mtext></math>=<span>1D4B4</span></span>
- <span><math class="testfont"><mtext>&#x1D4B5;</mtext></math>=<span>1D4B5</span></span>
- <span><math class="testfont"><mtext>&#x1D4B6;</mtext></math>=<span>1D4B6</span></span>
- <span><math class="testfont"><mtext>&#x1D4B7;</mtext></math>=<span>1D4B7</span></span>
- <span><math class="testfont"><mtext>&#x1D4B8;</mtext></math>=<span>1D4B8</span></span>
- <span><math class="testfont"><mtext>&#x1D4B9;</mtext></math>=<span>1D4B9</span></span><br/>
- <span><math class="testfont"><mtext>&#x212F;</mtext></math>=<span>0212F</span></span>
- <span><math class="testfont"><mtext>&#x1D4BB;</mtext></math>=<span>1D4BB</span></span>
- <span><math class="testfont"><mtext>&#x210A;</mtext></math>=<span>0210A</span></span>
- <span><math class="testfont"><mtext>&#x1D4BD;</mtext></math>=<span>1D4BD</span></span>
- <span><math class="testfont"><mtext>&#x1D4BE;</mtext></math>=<span>1D4BE</span></span>
- <span><math class="testfont"><mtext>&#x1D4BF;</mtext></math>=<span>1D4BF</span></span>
- <span><math class="testfont"><mtext>&#x1D4C0;</mtext></math>=<span>1D4C0</span></span>
- <span><math class="testfont"><mtext>&#x1D4C1;</mtext></math>=<span>1D4C1</span></span>
- <span><math class="testfont"><mtext>&#x1D4C2;</mtext></math>=<span>1D4C2</span></span>
- <span><math class="testfont"><mtext>&#x1D4C3;</mtext></math>=<span>1D4C3</span></span><br/>
- <span><math class="testfont"><mtext>&#x2134;</mtext></math>=<span>02134</span></span>
- <span><math class="testfont"><mtext>&#x1D4C5;</mtext></math>=<span>1D4C5</span></span>
- <span><math class="testfont"><mtext>&#x1D4C6;</mtext></math>=<span>1D4C6</span></span>
- <span><math class="testfont"><mtext>&#x1D4C7;</mtext></math>=<span>1D4C7</span></span>
- <span><math class="testfont"><mtext>&#x1D4C8;</mtext></math>=<span>1D4C8</span></span>
- <span><math class="testfont"><mtext>&#x1D4C9;</mtext></math>=<span>1D4C9</span></span>
- <span><math class="testfont"><mtext>&#x1D4CA;</mtext></math>=<span>1D4CA</span></span>
- <span><math class="testfont"><mtext>&#x1D4CB;</mtext></math>=<span>1D4CB</span></span>
- <span><math class="testfont"><mtext>&#x1D4CC;</mtext></math>=<span>1D4CC</span></span>
- <span><math class="testfont"><mtext>&#x1D4CD;</mtext></math>=<span>1D4CD</span></span><br/>
- <span><math class="testfont"><mtext>&#x1D4CE;</mtext></math>=<span>1D4CE</span></span>
- <span><math class="testfont"><mtext>&#x1D4CF;</mtext></math>=<span>1D4CF</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-script.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-script.html
deleted file mode 100644
index afbdfd9f946..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-script.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant script</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#script-mappings">
-<link rel="match" href="mathvariant-script-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a script mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-script.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="script">&#x41;</mtext></math>=<span>1D49C</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x42;</mtext></math>=<span>0212C</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x43;</mtext></math>=<span>1D49E</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x44;</mtext></math>=<span>1D49F</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x45;</mtext></math>=<span>02130</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x46;</mtext></math>=<span>02131</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x47;</mtext></math>=<span>1D4A2</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x48;</mtext></math>=<span>0210B</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x49;</mtext></math>=<span>02110</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x4A;</mtext></math>=<span>1D4A5</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="script">&#x4B;</mtext></math>=<span>1D4A6</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x4C;</mtext></math>=<span>02112</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x4D;</mtext></math>=<span>02133</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x4E;</mtext></math>=<span>1D4A9</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x4F;</mtext></math>=<span>1D4AA</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x50;</mtext></math>=<span>1D4AB</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x51;</mtext></math>=<span>1D4AC</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x52;</mtext></math>=<span>0211B</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x53;</mtext></math>=<span>1D4AE</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x54;</mtext></math>=<span>1D4AF</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="script">&#x55;</mtext></math>=<span>1D4B0</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x56;</mtext></math>=<span>1D4B1</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x57;</mtext></math>=<span>1D4B2</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x58;</mtext></math>=<span>1D4B3</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x59;</mtext></math>=<span>1D4B4</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x5A;</mtext></math>=<span>1D4B5</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x61;</mtext></math>=<span>1D4B6</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x62;</mtext></math>=<span>1D4B7</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x63;</mtext></math>=<span>1D4B8</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x64;</mtext></math>=<span>1D4B9</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="script">&#x65;</mtext></math>=<span>0212F</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x66;</mtext></math>=<span>1D4BB</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x67;</mtext></math>=<span>0210A</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x68;</mtext></math>=<span>1D4BD</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x69;</mtext></math>=<span>1D4BE</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x6A;</mtext></math>=<span>1D4BF</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x6B;</mtext></math>=<span>1D4C0</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x6C;</mtext></math>=<span>1D4C1</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x6D;</mtext></math>=<span>1D4C2</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x6E;</mtext></math>=<span>1D4C3</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="script">&#x6F;</mtext></math>=<span>02134</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x70;</mtext></math>=<span>1D4C5</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x71;</mtext></math>=<span>1D4C6</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x72;</mtext></math>=<span>1D4C7</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x73;</mtext></math>=<span>1D4C8</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x74;</mtext></math>=<span>1D4C9</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x75;</mtext></math>=<span>1D4CA</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x76;</mtext></math>=<span>1D4CB</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x77;</mtext></math>=<span>1D4CC</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x78;</mtext></math>=<span>1D4CD</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="script">&#x79;</mtext></math>=<span>1D4CE</span></span>
- <span><math class="testfont"><mtext mathvariant="script">&#x7A;</mtext></math>=<span>1D4CF</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-stretched-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-stretched-ref.html
deleted file mode 100644
index 454f2004ac1..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-stretched-ref.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant stretched (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-stretched.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1EE61;</mtext></math>=<span>1EE61</span></span>
- <span><math class="testfont"><mtext>&#x1EE62;</mtext></math>=<span>1EE62</span></span>
- <span><math class="testfont"><mtext>&#x1EE64;</mtext></math>=<span>1EE64</span></span>
- <span><math class="testfont"><mtext>&#x1EE67;</mtext></math>=<span>1EE67</span></span>
- <span><math class="testfont"><mtext>&#x1EE68;</mtext></math>=<span>1EE68</span></span>
- <span><math class="testfont"><mtext>&#x1EE69;</mtext></math>=<span>1EE69</span></span>
- <span><math class="testfont"><mtext>&#x1EE6A;</mtext></math>=<span>1EE6A</span></span>
- <span><math class="testfont"><mtext>&#x1EE6C;</mtext></math>=<span>1EE6C</span></span>
- <span><math class="testfont"><mtext>&#x1EE6D;</mtext></math>=<span>1EE6D</span></span>
- <span><math class="testfont"><mtext>&#x1EE6E;</mtext></math>=<span>1EE6E</span></span><br/>
- <span><math class="testfont"><mtext>&#x1EE6F;</mtext></math>=<span>1EE6F</span></span>
- <span><math class="testfont"><mtext>&#x1EE70;</mtext></math>=<span>1EE70</span></span>
- <span><math class="testfont"><mtext>&#x1EE71;</mtext></math>=<span>1EE71</span></span>
- <span><math class="testfont"><mtext>&#x1EE72;</mtext></math>=<span>1EE72</span></span>
- <span><math class="testfont"><mtext>&#x1EE74;</mtext></math>=<span>1EE74</span></span>
- <span><math class="testfont"><mtext>&#x1EE75;</mtext></math>=<span>1EE75</span></span>
- <span><math class="testfont"><mtext>&#x1EE76;</mtext></math>=<span>1EE76</span></span>
- <span><math class="testfont"><mtext>&#x1EE77;</mtext></math>=<span>1EE77</span></span>
- <span><math class="testfont"><mtext>&#x1EE79;</mtext></math>=<span>1EE79</span></span>
- <span><math class="testfont"><mtext>&#x1EE7A;</mtext></math>=<span>1EE7A</span></span><br/>
- <span><math class="testfont"><mtext>&#x1EE7B;</mtext></math>=<span>1EE7B</span></span>
- <span><math class="testfont"><mtext>&#x1EE7C;</mtext></math>=<span>1EE7C</span></span>
- <span><math class="testfont"><mtext>&#x1EE7E;</mtext></math>=<span>1EE7E</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-stretched.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-stretched.html
deleted file mode 100644
index 99b06fb41be..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-stretched.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant stretched</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#stretched-mappings">
-<link rel="match" href="mathvariant-stretched-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a stretched mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-stretched.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x628;</mtext></math>=<span>1EE61</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x62C;</mtext></math>=<span>1EE62</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x647;</mtext></math>=<span>1EE64</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x62D;</mtext></math>=<span>1EE67</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x637;</mtext></math>=<span>1EE68</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x64A;</mtext></math>=<span>1EE69</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x643;</mtext></math>=<span>1EE6A</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x645;</mtext></math>=<span>1EE6C</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x646;</mtext></math>=<span>1EE6D</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x633;</mtext></math>=<span>1EE6E</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x639;</mtext></math>=<span>1EE6F</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x641;</mtext></math>=<span>1EE70</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x635;</mtext></math>=<span>1EE71</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x642;</mtext></math>=<span>1EE72</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x634;</mtext></math>=<span>1EE74</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x62A;</mtext></math>=<span>1EE75</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x62B;</mtext></math>=<span>1EE76</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x62E;</mtext></math>=<span>1EE77</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x636;</mtext></math>=<span>1EE79</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x638;</mtext></math>=<span>1EE7A</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x63A;</mtext></math>=<span>1EE7B</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x66E;</mtext></math>=<span>1EE7C</span></span>
- <span><math class="testfont"><mtext mathvariant="stretched">&#x6A1;</mtext></math>=<span>1EE7E</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-tailed-ref.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-tailed-ref.html
deleted file mode 100644
index 5e1461cd33e..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-tailed-ref.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant tailed (reference)</title>
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-tailed.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext>&#x1EE42;</mtext></math>=<span>1EE42</span></span>
- <span><math class="testfont"><mtext>&#x1EE47;</mtext></math>=<span>1EE47</span></span>
- <span><math class="testfont"><mtext>&#x1EE49;</mtext></math>=<span>1EE49</span></span>
- <span><math class="testfont"><mtext>&#x1EE4B;</mtext></math>=<span>1EE4B</span></span>
- <span><math class="testfont"><mtext>&#x1EE4D;</mtext></math>=<span>1EE4D</span></span>
- <span><math class="testfont"><mtext>&#x1EE4E;</mtext></math>=<span>1EE4E</span></span>
- <span><math class="testfont"><mtext>&#x1EE4F;</mtext></math>=<span>1EE4F</span></span>
- <span><math class="testfont"><mtext>&#x1EE51;</mtext></math>=<span>1EE51</span></span>
- <span><math class="testfont"><mtext>&#x1EE52;</mtext></math>=<span>1EE52</span></span>
- <span><math class="testfont"><mtext>&#x1EE54;</mtext></math>=<span>1EE54</span></span><br/>
- <span><math class="testfont"><mtext>&#x1EE57;</mtext></math>=<span>1EE57</span></span>
- <span><math class="testfont"><mtext>&#x1EE59;</mtext></math>=<span>1EE59</span></span>
- <span><math class="testfont"><mtext>&#x1EE5B;</mtext></math>=<span>1EE5B</span></span>
- <span><math class="testfont"><mtext>&#x1EE5D;</mtext></math>=<span>1EE5D</span></span>
- <span><math class="testfont"><mtext>&#x1EE5F;</mtext></math>=<span>1EE5F</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-tailed.html b/tests/wpt/tests/mathml/relations/css-styling/mathvariant-tailed.html
deleted file mode 100644
index 43fbca5e80d..00000000000
--- a/tests/wpt/tests/mathml/relations/css-styling/mathvariant-tailed.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8"/>
-<title>mathvariant tailed</title>
-<link rel="help" href="https://w3c.github.io/mathml-core/#css-styling">
-<link rel="help" href="https://w3c.github.io/mathml-core/#the-mathvariant-attribute">
-<link rel="help" href="https://w3c.github.io/mathml-core/#new-text-transform-values">
-<link rel="help" href="https://w3c.github.io/mathml-core/#tailed-mappings">
-<link rel="match" href="mathvariant-tailed-ref.html"/>
-<meta name="assert" content="Verify that a single-char <mtext> with a tailed mathvariant is equivalent to an <mtext> with the transformed unicode character.">
-<style>
- @font-face {
- font-family: TestFont;
- src: url("/fonts/math/mathvariant-tailed.woff");
- }
- body > span {
- padding: 10px;
- }
- span > span {
- font-family: monospace;
- font-size: 10px;
- }
- .testfont {
- font-family: TestFont;
- font-size: 10px;
- }
-</style>
-<body>
- <!-- Generated by mathml/tools/mathvariant.py; DO NOT EDIT. -->
- <p>Test passes if all the equalities below are true.</p>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x62C;</mtext></math>=<span>1EE42</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x62D;</mtext></math>=<span>1EE47</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x64A;</mtext></math>=<span>1EE49</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x644;</mtext></math>=<span>1EE4B</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x646;</mtext></math>=<span>1EE4D</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x633;</mtext></math>=<span>1EE4E</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x639;</mtext></math>=<span>1EE4F</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x635;</mtext></math>=<span>1EE51</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x642;</mtext></math>=<span>1EE52</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x634;</mtext></math>=<span>1EE54</span></span><br/>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x62E;</mtext></math>=<span>1EE57</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x636;</mtext></math>=<span>1EE59</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x63A;</mtext></math>=<span>1EE5B</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x6BA;</mtext></math>=<span>1EE5D</span></span>
- <span><math class="testfont"><mtext mathvariant="tailed">&#x66F;</mtext></math>=<span>1EE5F</span></span>
-</body>
-</html>
diff --git a/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001-ref.html b/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001-ref.html
index 3d71d72fb34..ca539440f8a 100644
--- a/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001-ref.html
+++ b/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001-ref.html
@@ -41,8 +41,8 @@
</math>
</p>
<p>mathvariant:
- <math style="font-family: DoubleStruck, Italic;">
- <mtext style="text-transform: math-italic">&#x628;</mtext>
+ <math>
+ <mi style="text-transform: uppercase">sin</mi>
</math>
</p>
<p>displaystyle:
diff --git a/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001.html b/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001.html
index 842d04b40af..96ee69541bc 100644
--- a/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001.html
+++ b/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-001.html
@@ -14,14 +14,6 @@
<link rel="stylesheet" href="/fonts/ahem.css">
<meta name="assert" content="Verify that local author style wins over presentation hints attributes">
<style>
- @font-face {
- font-family: DoubleStruck;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
- @font-face {
- font-family: Italic;
- src: url("/fonts/math/mathvariant-italic.woff");
- }
math {
font: 25px/1 Ahem;
}
@@ -50,9 +42,8 @@
</math>
</p>
<p>mathvariant:
- <math style="font-family: DoubleStruck, Italic;">
- <mtext mathvariant="double-struck"
- style="text-transform: math-italic">&#x628;</mtext>
+ <math>
+ <mi mathvariant="normal" style="text-transform: uppercase">sin</mi>
</math>
</p>
<p>displaystyle:
diff --git a/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002-ref.html b/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002-ref.html
index b8f5458b9bb..fa22741efe5 100644
--- a/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002-ref.html
+++ b/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002-ref.html
@@ -5,13 +5,13 @@
<title>presentational hints (dynamic)</title>
<link rel="stylesheet" href="/fonts/ahem.css">
<style>
- @font-face {
- font-family: DoubleStruck;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
math {
font: 25px/1 Ahem;
}
+ @font-face {
+ font-family: Italic;
+ src: url("/fonts/math/mathvariant-italic.woff");
+ }
</style>
</head>
<body>
@@ -38,8 +38,8 @@
</math>
</p>
<p>mathvariant:
- <math style="font-family: DoubleStruck;">
- <mtext mathvariant="double-struck">&#x628;</mtext>
+ <math style="font-family: Italic">
+ <mi mathvariant="normal">X</mi>
</math>
</p>
<p>displaystyle:
diff --git a/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002.html b/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002.html
index fc89b07a37b..8bb9153b863 100644
--- a/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002.html
+++ b/tests/wpt/tests/mathml/relations/css-styling/presentational-hints-002.html
@@ -14,13 +14,13 @@
<link rel="stylesheet" href="/fonts/ahem.css">
<meta name="assert" content="Verify dynamically setting attributes mapped to style.">
<style>
- @font-face {
- font-family: DoubleStruck;
- src: url("/fonts/math/mathvariant-double-struck.woff");
- }
math {
font: 25px/1 Ahem;
}
+ @font-face {
+ font-family: Italic;
+ src: url("/fonts/math/mathvariant-italic.woff");
+ }
</style>
<script>
window.addEventListener("load", function() {
@@ -31,7 +31,7 @@
document.getElementById("mathcolor").setAttribute("mathcolor", "green");
document.getElementById("mathbackground").setAttribute("mathbackground", "green");
document.getElementById("mathsize").setAttribute("mathsize", "300%");
- document.getElementById("mathvariant").setAttribute("mathvariant", "double-struck");
+ document.getElementById("mathvariant").setAttribute("mathvariant", "normal");
document.getElementById("displaystyle").setAttribute("displaystyle", "true");
document.getElementById("scriptlevel").setAttribute("scriptlevel", "-1");
@@ -63,8 +63,8 @@
</math>
</p>
<p>mathvariant:
- <math style="font-family: DoubleStruck;">
- <mtext id="mathvariant">&#x628;</mtext>
+ <math style="font-family: Italic">
+ <mi id="mathvariant">X</mi>
</math>
</p>
<p>displaystyle:
diff --git a/tests/wpt/tests/mathml/tools/mathvariant-transforms.py b/tests/wpt/tests/mathml/tools/mathvariant-transforms.py
index a7a48eb9412..e4857d2a3e3 100755
--- a/tests/wpt/tests/mathml/tools/mathvariant-transforms.py
+++ b/tests/wpt/tests/mathml/tools/mathvariant-transforms.py
@@ -193,9 +193,10 @@ def generateTestFor(mathvariant, mathml):
# Generate css/css-text/text-transform/math/text-transform-math-auto-001.html
generateTestFor(mathvariant="auto", mathml=False)
+generateTestFor(mathvariant="auto", mathml=True)
-# Generate mathml/relations/css-styling/mathvariant-* tests.
-# TODO: Remove these tests from WPT and move them back to internal repos of
-# WebKit and Mozilla. See https://github.com/w3c/mathml-core/issues/182
-for mathvariant in mathvariantTransforms:
- generateTestFor(mathvariant, mathml=True)
+# Other mathvariant tests can be generated by the following command. They are
+# still use internally by browsers implementing full mathvariant support.
+# See https://github.com/w3c/mathml-core/issues/182
+# for mathvariant in mathvariantTransforms:
+# generateTestFor(mathvariant, mathml=True)
diff --git a/tests/wpt/tests/media-source/mse-for-webcodecs/tentative/mediasource-webcodecs-addsourcebuffer.html b/tests/wpt/tests/media-source/mse-for-webcodecs/tentative/mediasource-webcodecs-addsourcebuffer.html
index cc9cdc2b501..e29600f99c6 100644
--- a/tests/wpt/tests/media-source/mse-for-webcodecs/tentative/mediasource-webcodecs-addsourcebuffer.html
+++ b/tests/wpt/tests/media-source/mse-for-webcodecs/tentative/mediasource-webcodecs-addsourcebuffer.html
@@ -46,18 +46,6 @@ function testInvalidArguments() {
},
name: '{ valid audioConfig and videoConfig }',
},
- {
- arg: {
- audioConfig: {
- codec: 'bogus',
- sampleRate: 48000,
- numberOfChannels: 2
- }
- },
- name: 'bad audio config codec',
- },
- { arg: { videoConfig: { codec: 'bogus' } },
- name: 'bad video config codec' },
{ arg: { audioConfig: { sampleRate: 48000, numberOfChannels: 2 } },
name: 'audio config missing required member "codec"' },
{ arg: { videoConfig: { } },
diff --git a/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/simple-test-for-condition-main-resource.html b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/simple-test-for-condition-main-resource.html
new file mode 100644
index 00000000000..0c3e3e78707
--- /dev/null
+++ b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/simple-test-for-condition-main-resource.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html>
+<title>Simple</title>
+Here's a simple html file.
diff --git a/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js
index deb7a3e0b47..e698d34c527 100644
--- a/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js
+++ b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/resources/static-router-sw.js
@@ -1,10 +1,14 @@
'use strict';
+var requests = [];
+
self.addEventListener('install', e => {
- e.registerRouter({
- condition: {urlPattern: "*.txt"},
- source: "network"
- });
+ e.registerRouter([
+ {condition: {urlPattern: '*.txt'}, source: 'network'}, {
+ condition: {urlPattern: '*/simple-test-for-condition-main-resource.html'},
+ source: 'network'
+ }
+ ]);
self.skipWaiting();
});
@@ -13,7 +17,13 @@ self.addEventListener('activate', e => {
});
self.addEventListener('fetch', function(event) {
+ requests.push({url: event.request.url, mode: event.request.mode});
const url = new URL(event.request.url);
const nonce = url.searchParams.get('nonce');
event.respondWith(new Response(nonce));
});
+
+self.addEventListener('message', function(event) {
+ event.data.port.postMessage({requests: requests});
+ requests = [];
+});
diff --git a/tests/wpt/tests/service-workers/service-worker/tentative/static-router/static-router-main-resource.https.html b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/static-router-main-resource.https.html
new file mode 100644
index 00000000000..5a55783af57
--- /dev/null
+++ b/tests/wpt/tests/service-workers/service-worker/tentative/static-router/static-router-main-resource.https.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Static Router: simply skip fetch handler for main resource if pattern matches</title>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<body>
+<script>
+const SCRIPT = 'resources/static-router-sw.js';
+const SCOPE = 'resources/';
+const REGISTERED_ROUTE_HTML =
+ 'resources/simple-test-for-condition-main-resource.html';
+const NON_REGISTERED_ROUTE_HTML = 'resources/simple.html';
+const host_info = get_host_info();
+const path = new URL(".", window.location).pathname;
+
+// Register a service worker, then create an iframe at url.
+function iframeTest(url, callback, name) {
+ return promise_test(async t => {
+ const reg = await service_worker_unregister_and_register(t, SCRIPT, SCOPE);
+ add_completion_callback(() => reg.unregister());
+ const worker = reg.installing;
+ await wait_for_state(t, worker, 'activated');
+ const iframe = await with_iframe(url);
+ const iwin = iframe.contentWindow;
+ t.add_cleanup(() => iframe.remove());
+ await callback(t, iwin, worker);
+ }, name);
+}
+
+function get_fetched_urls(worker) {
+ return new Promise(function(resolve) {
+ var channel = new MessageChannel();
+ channel.port1.onmessage = function(msg) { resolve(msg); };
+ worker.postMessage({port: channel.port2}, [channel.port2]);
+ });
+}
+
+iframeTest(REGISTERED_ROUTE_HTML, async (t, iwin, worker) => {
+ const fetched_urls = await get_fetched_urls(worker);
+ const {requests} = fetched_urls.data;
+ assert_equals(requests.length, 0);
+ assert_equals(iwin.document.body.innerText, "Here's a simple html file.");
+}, 'Main resource load matched with the condition');
+
+iframeTest(NON_REGISTERED_ROUTE_HTML, async (t, iwin, worker) => {
+ const fetched_urls = await get_fetched_urls(worker);
+ const {requests} = fetched_urls.data;
+ assert_equals(requests.length, 1);
+ assert_equals(
+ requests[0].url,
+ `${host_info['HTTPS_ORIGIN']}${path}${NON_REGISTERED_ROUTE_HTML}`);
+ assert_equals(requests[0].mode, 'navigate');
+}, 'Main resource load not matched with the condition');
+
+</script>
+</body>
diff --git a/tests/wpt/tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html b/tests/wpt/tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html
index 1c9e5b41731..1cbd7e8e717 100644
--- a/tests/wpt/tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html
+++ b/tests/wpt/tests/speculation-rules/prefetch/no-vary-search/prefetch-single-with-hint.https.html
@@ -34,19 +34,14 @@ No-Vary-Search headers also match during navigation</title>
<meta name="variant" content="?22-22">
<meta name="variant" content="?23-23">
<meta name="variant" content="?24-24">
-<meta name="variant" content="?25-last">
+<meta name="variant" content="?25-25">
+<meta name="variant" content="?26-26">
+<meta name="variant" content="?27-27">
+<meta name="variant" content="?28-last">
<script>
setup(() => assertSpeculationRulesIsSupported());
- function addNoVarySearchHeaderUsingQueryParam(url, value){
- // Use nvs_header query parameter to ask the wpt server
- // to populate No-Vary-Search response header.
- if(value){
- url.searchParams.append("nvs_header", value);
- }
- }
-
/*
remoteAgent: the RemoteContext instance used to communicate between the
test and the window where prefetch/navigation is happening
@@ -289,6 +284,30 @@ No-Vary-Search headers also match during navigation</title>
navigateQuery: "b=5&a=3&d=6&c=3",
shouldUsePrefetch: true},
+ {description:"Use the in-flight prefetch. Invalid No-Vary-Search means default URL variance." +
+ " The prefetched and the navigated URLs have to be the same.",
+ noVarySearch: "",
+ noVarySearchHint: "params=(a)",
+ prefetchQuery: "b=5&a=3&d=6&c=3",
+ navigateQuery: "b=5&a=3&d=6&c=3",
+ shouldUsePrefetch: true},
+
+ {description:"Don't use the in-flight prefetch. Invalid No-Vary-Search means default URL variance." +
+ " The prefetched and the navigated URLs are not the same.",
+ noVarySearch: "",
+ noVarySearchHint: "params=(a)",
+ prefetchQuery: "b=5&a=3&d=6&c=3",
+ navigateQuery: "b=5&a=4&d=6&c=3",
+ shouldUsePrefetch: false},
+
+ {description:"No-Vary-Search hint must be a string so the speculation rule will be ignored." +
+ " There is no prefetch happening.",
+ noVarySearch: "",
+ noVarySearchHint: 0,
+ prefetchQuery: "b=5&a=3&d=6&c=3",
+ navigateQuery: "b=5&a=3&d=6&c=3",
+ shouldUsePrefetch: false},
+
{description:"Use the in-flight prefetch. Empty No-Vary-Search means default URL variance." +
" The prefetched and the navigated URLs have to be the same.",
noVarySearch: "",
diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py b/tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py
index 09c5d2eb737..1de33a75d86 100644
--- a/tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py
+++ b/tests/wpt/tests/speculation-rules/prefetch/resources/prefetch_nvs_hint.py
@@ -2,17 +2,31 @@ import time
def main(request, response):
uuid = request.GET[b"uuid"]
+ wait_for_prefetch_start_uuid = None
+ if b"wait_for_prefetch_uuid" in request.GET:
+ wait_for_prefetch_start_uuid = request.GET[b"wait_for_prefetch_uuid"]
prefetch = request.headers.get(
"Sec-Purpose", b"").decode("utf-8").startswith("prefetch")
if b"unblock" in request.GET:
request.server.stash.put(uuid, 0)
return ''
+ if b"wait_for_prefetch" in request.GET:
+ if wait_for_prefetch_start_uuid is None:
+ return ''
+ wait_for_prefetch = None
+ while wait_for_prefetch is None:
+ time.sleep(0.1)
+ wait_for_prefetch = request.server.stash.take(wait_for_prefetch_start_uuid)
+ return ''
+
if b"nvs_header" in request.GET:
nvs_header = request.GET[b"nvs_header"]
response.headers.set("No-Vary-Search", nvs_header)
if prefetch:
+ if wait_for_prefetch_start_uuid is not None:
+ request.server.stash.put(wait_for_prefetch_start_uuid, 0)
nvswait = None
while nvswait is None:
time.sleep(0.1)
diff --git a/tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js b/tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js
index 75cc86c509f..73624c0c25b 100644
--- a/tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js
+++ b/tests/wpt/tests/speculation-rules/prefetch/resources/utils.sub.js
@@ -41,10 +41,13 @@ class PrefetchAgent extends RemoteContext {
// In the future, this should also use browser hooks to force the prefetch to
// occur despite heuristic matching, etc., and await the completion of the
// prefetch.
- async forceSinglePrefetch(url, extra = {}) {
+ async forceSinglePrefetch(url, extra = {}, wait_for_completion = true) {
await this.execute_script((url, extra) => {
insertSpeculationRules({ prefetch: [{source: 'list', urls: [url], ...extra}] });
}, [url, extra]);
+ if (!wait_for_completion) {
+ return Promise.resolve();
+ }
return new Promise(resolve => this.t.step_timeout(resolve, 2000));
}
@@ -129,11 +132,17 @@ async function isUrlPrefetched(url) {
}
// Must also include /common/utils.js and /common/dispatcher/dispatcher.js to use this.
-async function spawnWindow(t, options = {}, uuid = token()) {
+async function spawnWindowWithReference(t, options = {}, uuid = token()) {
let agent = new PrefetchAgent(uuid, t);
let w = window.open(agent.getExecutorURL(options), '_blank', options);
t.add_cleanup(() => w.close());
- return agent;
+ return {"agent":agent, "window":w};
+}
+
+// Must also include /common/utils.js and /common/dispatcher/dispatcher.js to use this.
+async function spawnWindow(t, options = {}, uuid = token()) {
+ let agent_window_pair = await spawnWindowWithReference(t, options, uuid);
+ return agent_window_pair.agent;
}
function insertSpeculationRules(body) {
@@ -176,3 +185,11 @@ function assert_not_prefetched (requestHeaders, description){
assert_equals(requestHeaders.purpose, "", description);
assert_equals(requestHeaders.sec_purpose, "", description);
}
+
+// Use nvs_header query parameter to ask the wpt server
+// to populate No-Vary-Search response header.
+function addNoVarySearchHeaderUsingQueryParam(url, value){
+ if(value){
+ url.searchParams.append("nvs_header", value);
+ }
+}
diff --git a/tests/wpt/tests/tools/ci/ci_built_diff.sh b/tests/wpt/tests/tools/ci/ci_built_diff.sh
index fad946d2973..7cf9b23db1c 100755
--- a/tests/wpt/tests/tools/ci/ci_built_diff.sh
+++ b/tests/wpt/tests/tools/ci/ci_built_diff.sh
@@ -12,10 +12,10 @@ main() {
# Exclude tests that rely on font rendering
excluded=(
- 'html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.basic.png'
- 'html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.large.png'
- 'html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fill.rtl.png'
- 'html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.stroke.basic.png'
+ 'html/canvas/element/text/2d.text.draw.fill.basic.png'
+ 'html/canvas/element/text/2d.text.draw.fill.maxWidth.large.png'
+ 'html/canvas/element/text/2d.text.draw.fill.rtl.png'
+ 'html/canvas/element/text/2d.text.draw.stroke.basic.png'
'html/canvas/offscreen/text/2d.text.draw.fill.basic.png'
'html/canvas/offscreen/text/2d.text.draw.fill.maxWidth.large.png'
'html/canvas/offscreen/text/2d.text.draw.fill.rtl.png'
diff --git a/tests/wpt/tests/tools/ci/requirements_tc.txt b/tests/wpt/tests/tools/ci/requirements_tc.txt
index 9c3a0d639af..e577a83fe39 100644
--- a/tests/wpt/tests/tools/ci/requirements_tc.txt
+++ b/tests/wpt/tests/tools/ci/requirements_tc.txt
@@ -1,4 +1,4 @@
pygithub==1.58.2
pyyaml==6.0.1
requests==2.31.0
-taskcluster==54.4.0
+taskcluster==54.4.1
diff --git a/tests/wpt/tests/tools/requirements_mypy.txt b/tests/wpt/tests/tools/requirements_mypy.txt
index c31e7f5bce3..41ab1211b23 100644
--- a/tests/wpt/tests/tools/requirements_mypy.txt
+++ b/tests/wpt/tests/tools/requirements_mypy.txt
@@ -4,11 +4,11 @@ toml==0.10.2
tomli==2.0.1
typed-ast==1.5.4
types-atomicwrites==1.4.5.1
-types-python-dateutil==2.8.19.13
-types-PyYAML==6.0.12.10
-types-requests==2.31.0.1
-types-setuptools==68.0.0.2
+types-python-dateutil==2.8.19.14
+types-PyYAML==6.0.12.11
+types-requests==2.31.0.2
+types-setuptools==68.0.0.3
types-six==1.16.21.9
-types-ujson==5.7.0.5
+types-ujson==5.8.0.1
types-urllib3==1.26.25.14
-typing_extensions==4.6.3
+typing_extensions==4.7.1
diff --git a/tests/wpt/tests/tools/requirements_tests.txt b/tests/wpt/tests/tools/requirements_tests.txt
index 96e00c745dc..8225875c8e5 100644
--- a/tests/wpt/tests/tools/requirements_tests.txt
+++ b/tests/wpt/tests/tools/requirements_tests.txt
@@ -2,4 +2,4 @@ httpx[http2]==0.24.1
json-e==4.5.2
jsonschema==4.17.3
pyyaml==6.0.1
-taskcluster==54.4.0
+taskcluster==54.4.1
diff --git a/tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py b/tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py
index 47f94d83d13..8507a51543d 100644
--- a/tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py
+++ b/tests/wpt/tests/tools/webdriver/webdriver/bidi/error.py
@@ -63,6 +63,10 @@ class NoSuchScriptException(BidiException):
error_code = "no such script"
+class UnableToCaptureScreenException(BidiException):
+ error_code = "unable to capture screen"
+
+
class UnknownCommandException(BidiException):
error_code = "unknown command"
diff --git a/tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py b/tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py
index b256bd1ae67..8aca3e6f67f 100644
--- a/tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py
+++ b/tests/wpt/tests/tools/webdriver/webdriver/bidi/modules/browsing_context.py
@@ -1,18 +1,46 @@
import base64
-from typing import Any, List, Mapping, MutableMapping, Optional
+from typing import Any, Dict, List, Mapping, MutableMapping, Optional, Union
from ._module import BidiModule, command
+class ElementOptions(Dict[str, Any]):
+ def __init__(
+ self, element: Mapping[str, Any], scroll_into_view: Optional[bool] = None
+ ):
+ self["type"] = "element"
+ self["element"] = element
+
+ if scroll_into_view is not None:
+ self["scrollIntoView"] = scroll_into_view
+
+
+class ViewportOptions(Dict[str, Any]):
+ def __init__(self, x: float, y: float, width: float, height: float):
+ self["type"] = "viewport"
+ self["x"] = x
+ self["y"] = y
+ self["width"] = width
+ self["height"] = height
+
+
+ClipOptions = Union[ElementOptions, ViewportOptions]
+
+
class BrowsingContext(BidiModule):
@command
def activate(self, context: str) -> Mapping[str, Any]:
return {"context": context}
@command
- def capture_screenshot(self, context: str) -> Mapping[str, Any]:
+ def capture_screenshot(
+ self, context: str, clip: Optional[ClipOptions] = None
+ ) -> Mapping[str, Any]:
params: MutableMapping[str, Any] = {"context": context}
+ if clip is not None:
+ params["clip"] = clip
+
return params
@capture_screenshot.result
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py
index 04c0ca70c4c..4bbb42cc267 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/content_shell.py
@@ -53,6 +53,9 @@ def browser_kwargs(logger, test_type, run_info_data, config, **kwargs):
args.append(
f"--origin-to-force-quic-on=web-platform.test:{webtranport_h3_port[0]}")
+ if not kwargs["headless"]:
+ args.append("--disable-headless-mode")
+
# These flags are specific to content_shell - they activate web test protocol mode.
args.append("--run-web-tests")
args.append("-")
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py
index d558ce07f4a..1ff25781ba4 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorcontentshell.py
@@ -150,8 +150,33 @@ class ContentShellErrorsPart(ProtocolPart):
return result
+class ContentShellBasePart(ProtocolPart):
+ """This protocol part provides functionality common to all executors.
+
+ In particular, this protocol part implements `wait()`, which, when
+ `--pause-after-test` is enabled, test runners block on until the next test
+ should run.
+ """
+ name = "base"
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.io_stopped = parent.browser.io_stopped
+
+ def wait(self):
+ # This worker is unpaused when the browser window is closed, which this
+ # `multiprocessing.Event` signals.
+ self.io_stopped.wait()
+ # Never rerun the test.
+ return False
+
+
class ContentShellProtocol(Protocol):
- implements = [ContentShellTestPart, ContentShellErrorsPart]
+ implements = [
+ ContentShellBasePart,
+ ContentShellTestPart,
+ ContentShellErrorsPart,
+ ]
init_timeout = 10 # Timeout (seconds) to wait for #READY message.
def connect(self):
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py
index d2ed58444ab..b405dabd1dd 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py
@@ -330,7 +330,7 @@ class TestRunnerManager(threading.Thread):
self.test_runner_proc = None
- threading.Thread.__init__(self, name="TestRunnerManager-%s-%i" % (test_type, index))
+ super().__init__(name=f"TestRunnerManager-{index}")
# This is started in the actual new thread
self.logger = None
diff --git a/tests/wpt/tests/top-level-storage-access-api/tentative/requestStorageAccessFor.sub.https.window.js b/tests/wpt/tests/top-level-storage-access-api/tentative/requestStorageAccessFor.sub.https.window.js
index e82cce699fa..8af30c497f2 100644
--- a/tests/wpt/tests/top-level-storage-access-api/tentative/requestStorageAccessFor.sub.https.window.js
+++ b/tests/wpt/tests/top-level-storage-access-api/tentative/requestStorageAccessFor.sub.https.window.js
@@ -78,7 +78,7 @@ promise_test(
'granted');
const frame = await CreateFrame(
- '/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js');
+ altOrigin + '/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js');
await RunCallbackWithGesture(() => document.requestStorageAccessFor(altOrigin));
assert_true(await RequestStorageAccessInFrame(frame));
diff --git a/tests/wpt/tests/webcodecs/audio-decoder.https.any.js b/tests/wpt/tests/webcodecs/audio-decoder.https.any.js
index 4374e904a33..f83efe17a0f 100644
--- a/tests/wpt/tests/webcodecs/audio-decoder.https.any.js
+++ b/tests/wpt/tests/webcodecs/audio-decoder.https.any.js
@@ -3,24 +3,49 @@
const invalidConfigs = [
{
+ comment: 'Missing codec',
+ config: {
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ },
+ },
+ {
comment: 'Empty codec',
- config: {codec: ''},
+ config: {
+ codec: '',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ },
},
{
- comment: 'Unrecognized codec',
- config: {codec: 'bogus'},
+ comment: 'Missing sampleRate',
+ config: {
+ codec: 'opus',
+ sampleRate: 48000,
+ },
},
{
- comment: 'Video codec',
- config: {codec: 'vp8'},
+ comment: 'Missing numberOfChannels',
+ config: {
+ codec: 'opus',
+ sampleRate: 48000,
+ },
},
{
- comment: 'Ambiguous codec',
- config: {codec: 'vp9'},
+ comment: 'Zero sampleRate',
+ config: {
+ codec: 'opus',
+ sampleRate: 0,
+ numberOfChannels: 2,
+ },
},
{
- comment: 'Codec with MIME type',
- config: {codec: 'audio/webm; codecs="opus"'},
+ comment: 'Zero channels',
+ config: {
+ codec: 'opus',
+ sampleRate: 8000,
+ numberOfChannels: 0,
+ },
},
];
@@ -30,7 +55,7 @@ invalidConfigs.forEach(entry => {
return promise_rejects_js(
t, TypeError, AudioDecoder.isConfigSupported(entry.config));
},
- 'Test that AudioDecoder.isConfigSupported() rejects invalid config:' +
+ 'Test that AudioDecoder.isConfigSupported() rejects invalid config: ' +
entry.comment);
});
@@ -43,7 +68,82 @@ invalidConfigs.forEach(entry => {
});
t.done();
},
- 'Test that AudioDecoder.configure() rejects invalid config:' +
+ 'Test that AudioDecoder.configure() rejects invalid config: ' +
+ entry.comment);
+});
+
+const validButUnsupportedConfigs = [
+ {
+ comment: 'Unrecognized codec',
+ config: {
+ codec: 'bogus',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ },
+ },
+ {
+ comment: 'Video codec',
+ config: {
+ codec: 'vp8',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ },
+ },
+ {
+ comment: 'Ambiguous codec',
+ config: {
+ codec: 'vp9',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ },
+ },
+ {
+ comment: 'Codec with MIME type',
+ config: {
+ codec: 'audio/webm; codecs="opus"',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ },
+ },
+ {
+ comment: 'Possible future opus codec string',
+ config: {
+ codec: 'opus.123',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ }
+ },
+ {
+ comment: 'Possible future aac codec string',
+ config: {
+ codec: 'mp4a.FF.9',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ }
+ },
+];
+
+validButUnsupportedConfigs.forEach(entry => {
+ promise_test(
+ t => {
+ return AudioDecoder.isConfigSupported(entry.config).then(support => {
+ assert_false(support.supported);
+ });
+ },
+ 'Test that AudioDecoder.isConfigSupported() doesn\'t support config: ' +
+ entry.comment);
+});
+
+validButUnsupportedConfigs.forEach(entry => {
+ async_test(
+ t => {
+ let codec = new AudioDecoder(getDefaultCodecInit(t));
+ assert_throws_dom('NotSupportedError', () => {
+ codec.configure(entry.config);
+ });
+ t.done();
+ },
+ 'Test that AudioDecoder.configure() doesn\'t support config: ' +
entry.comment);
});
diff --git a/tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js b/tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js
index 52ff3dc16e6..845b399744e 100644
--- a/tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js
+++ b/tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js
@@ -3,50 +3,58 @@
const invalidConfigs = [
{
- comment: 'Emtpy codec',
- config: {codec: ''},
+ comment: 'Missing codec',
+ config: {
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ },
},
{
- comment: 'Unrecognized codec',
- config: {codec: 'bogus'},
+ comment: 'Empty codec',
+ config: {
+ codec: '',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ },
},
{
- comment: 'Sample rate is too small',
+ comment: 'Missing sampleRate',
config: {
codec: 'opus',
- sampleRate: 100,
- numberOfChannels: 2,
+ sampleRate: 48000,
},
},
{
- comment: 'Sample rate is too large',
+ comment: 'Missing numberOfChannels',
config: {
codec: 'opus',
- sampleRate: 1e6,
- numberOfChannels: 2,
+ sampleRate: 48000,
},
},
{
- comment: 'Too few channels',
+ comment: 'Zero sampleRate',
config: {
codec: 'opus',
- sampleRate: 8000,
- numberOfChannels: 0,
+ sampleRate: 0,
+ numberOfChannels: 2,
},
},
{
- comment: 'Way too many channels',
+ comment: 'Zero channels',
config: {
codec: 'opus',
sampleRate: 8000,
- numberOfChannels: 100,
- bitrate: 128000
+ numberOfChannels: 0,
},
},
{
comment: 'Bit rate too big',
- config:
- {codec: 'opus', sampleRate: 8000, numberOfChannels: 2, bitrate: 6e9},
+ config: {
+ codec: 'opus',
+ sampleRate: 8000,
+ numberOfChannels: 2,
+ bitrate: 6e9,
+ },
},
{
comment: 'Opus complexity too big',
@@ -88,7 +96,7 @@ const invalidConfigs = [
sampleRate: 8000,
numberOfChannels: 2,
opus: {
- frameDuration: 122500,
+ frameDuration: 120 * 1000 + 1,
},
},
},
@@ -106,42 +114,115 @@ const invalidConfigs = [
];
invalidConfigs.forEach(entry => {
- promise_test(t => {
- return promise_rejects_js(t, TypeError, AudioEncoder.isConfigSupported(entry.config));
- }, 'Test that AudioEncoder.isConfigSupported() rejects invalid config:' + entry.comment);
+ promise_test(
+ t => {
+ return promise_rejects_js(
+ t, TypeError, AudioEncoder.isConfigSupported(entry.config));
+ },
+ 'Test that AudioEncoder.isConfigSupported() rejects invalid config: ' +
+ entry.comment);
+});
+
+invalidConfigs.forEach(entry => {
+ async_test(
+ t => {
+ let codec = new AudioEncoder(getDefaultCodecInit(t));
+ assert_throws_js(TypeError, () => {
+ codec.configure(entry.config);
+ });
+ t.done();
+ },
+ 'Test that AudioEncoder.configure() rejects invalid config: ' +
+ entry.comment);
});
const validButUnsupportedConfigs = [
{
- comment: 'Too many channels',
+ comment: 'Bitrate is too low',
config: {
codec: 'opus',
sampleRate: 48000,
- numberOfChannels: 30,
+ numberOfChannels: 2,
+ bitrate: 1,
},
},
{
- comment: 'Bitrate is too low',
+ comment: 'Unrecognized codec',
config: {
- codec: 'opus',
+ codec: 'bogus',
sampleRate: 48000,
numberOfChannels: 2,
- bitrate: 1
},
- }
+ },
+ {
+ comment: 'Sample rate is too small',
+ config: {
+ codec: 'opus',
+ sampleRate: 1,
+ numberOfChannels: 2,
+ },
+ },
+ {
+ comment: 'Sample rate is too large',
+ config: {
+ codec: 'opus',
+ sampleRate: 10000000,
+ numberOfChannels: 2,
+ },
+ },
+ {
+ comment: 'Way too many channels',
+ config: {
+ codec: 'opus',
+ sampleRate: 8000,
+ numberOfChannels: 1024,
+ bitrate: 128000,
+ },
+ },
+ {
+ comment: 'Possible future opus codec string',
+ config: {
+ codec: 'opus.123',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ }
+ },
+ {
+ comment: 'Possible future aac codec string',
+ config: {
+ codec: 'mp4a.FF.9',
+ sampleRate: 48000,
+ numberOfChannels: 2,
+ }
+ },
];
validButUnsupportedConfigs.forEach(entry => {
- promise_test(async t => {
- let support = await AudioEncoder.isConfigSupported(entry.config);
- assert_false(support.supported);
+ promise_test(
+ async t => {
+ let support = await AudioEncoder.isConfigSupported(entry.config);
+ assert_false(support.supported);
- let config = support.config;
- assert_equals(config.codec, entry.config.codec);
- assert_equals(config.sampleRate, entry.config.sampleRate);
- assert_equals(config.numberOfChannels, entry.config.numberOfChannels);
+ let config = support.config;
+ assert_equals(config.codec, entry.config.codec);
+ assert_equals(config.sampleRate, entry.config.sampleRate);
+ assert_equals(config.numberOfChannels, entry.config.numberOfChannels);
+ },
+ 'Test that AudioEncoder.isConfigSupported() doesn\'t support config: ' +
+ entry.comment);
+});
- }, "Test that AudioEncoder.isConfigSupported() doesn't support config:" + entry.comment);
+validButUnsupportedConfigs.forEach(entry => {
+ async_test(
+ t => {
+ let codec = new AudioEncoder(getDefaultCodecInit(t));
+ assert_throws_dom('NotSupportedError', () => {
+ codec.configure(entry.config);
+ });
+ t.done();
+ },
+ 'Test that AudioEncoder.configure() doesn\'t support config: ' +
+ entry.comment);
});
const validConfigs = [
@@ -233,5 +314,5 @@ validConfigs.forEach(config => {
}
assert_false(new_config.hasOwnProperty('bogus'));
- }, "AudioEncoder.isConfigSupported() supports:" + JSON.stringify(config));
+ }, 'AudioEncoder.isConfigSupported() supports: ' + JSON.stringify(config));
});
diff --git a/tests/wpt/tests/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.helper.html b/tests/wpt/tests/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.helper.html
new file mode 100644
index 00000000000..424ce927f9a
--- /dev/null
+++ b/tests/wpt/tests/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.helper.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<body>
+<p id='location'></p>
+<div id='log'></div>
+<script>
+ document.querySelector('#location').innerHTML = window.origin;
+ let received = new Map();
+ window.onmessage = (e) => {
+ let msg = e.data + ' (from ' + e.origin + ')';
+ document.querySelector('#log').innerHTML += '<p>' + msg + '<p>';
+ if (e.data.hasOwnProperty('id')) {
+ e.source.postMessage(
+ received.get(e.data.id) ? 'RECEIVED' : 'NOT_RECEIVED', '*');
+ return;
+ }
+ if (e.data.toString() == '[object EncodedVideoChunk]') {
+ received.set(e.data.timestamp, e.data);
+ }
+ };
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.https.html b/tests/wpt/tests/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.https.html
new file mode 100644
index 00000000000..fb104a3a1b1
--- /dev/null
+++ b/tests/wpt/tests/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.https.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+ <script src='/common/get-host-info.sub.js'></script>
+ <script src='/webcodecs/utils.js'></script>
+ <script id='workerCode' type='javascript/worker'>
+ self.onmessage = (e) => {
+ postMessage(e.data);
+ };
+ </script>
+ <script id='sharedWorkerCode' type='javascript/worker'>
+ let received = new Map();
+ self.onconnect = function (event) {
+ const port = event.ports[0];
+ port.onmessage = function (e) {
+ if (e.data == 'create-chunk') {
+ let chunkOrError = null;
+ try {
+ chunkOrError = new EncodedVideoChunk({
+ type: 'key',
+ timestamp: 0,
+ duration: 1,
+ data: new Uint8Array([2, 3, 4, 5])
+ });
+ } catch (error) {
+ chunkOrError = error
+ }
+ port.postMessage(chunkOrError);
+ return;
+ }
+ if (e.data.hasOwnProperty('id')) {
+ port.postMessage(
+ received.get(e.data.id) ? 'RECEIVED' : 'NOT_RECEIVED');
+ return;
+ }
+ if (e.data.toString() == '[object EncodedVideoChunk]') {
+ received.set(e.data.timestamp, e.data);
+ }
+ };
+ };
+ </script>
+</head>
+<body>
+<script>
+const HELPER = '/webcodecs/encodedVideoChunk-serialization.crossAgentCluster.helper.html';
+const SAMEORIGIN_BASE = get_host_info().HTTPS_ORIGIN;
+const CROSSORIGIN_BASE = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+const SAMEORIGIN_HELPER = SAMEORIGIN_BASE + HELPER;
+const CROSSORIGIN_HELPER = CROSSORIGIN_BASE + HELPER;
+const SERVICE_WORKER = 'serialization.crossAgentCluster.serviceworker.js';
+
+promise_test(async () => {
+ const target = (await appendIframe(SAMEORIGIN_HELPER)).contentWindow;
+ let chunk = createEncodedVideoChunk(10);
+ assert_true(await canSerializeEncodedVideoChunk(target, chunk));
+}, 'Verify chunks can be passed within the same agent clusters');
+
+promise_test(async () => {
+ const target = (await appendIframe(CROSSORIGIN_HELPER)).contentWindow;
+ let chunk = createEncodedVideoChunk(20);
+ assert_false(await canSerializeEncodedVideoChunk(target, chunk));
+}, 'Verify chunks cannot be passed accross the different agent clusters');
+
+promise_test(async () => {
+ const blob = new Blob([document.querySelector('#workerCode').textContent], {
+ type: 'text/javascript',
+ });
+ const worker = new Worker(window.URL.createObjectURL(blob));
+ let chunk = createEncodedVideoChunk(30);
+ worker.postMessage(chunk);
+ const received = await new Promise(resolve => worker.onmessage = e => {
+ resolve(e.data);
+ });
+ assert_equals(received.toString(), '[object EncodedVideoChunk]');
+ assert_equals(received.timestamp, 30);
+}, 'Verify chunks can be passed back and forth between main and worker');
+
+promise_test(async () => {
+ const encodedScriptText = btoa("self.onmessage = (e) => { postMessage(e.data);};");
+ const scriptURL = 'data:text/javascript;base64,' + encodedScriptText;
+ const worker = new Worker(scriptURL);
+ let chunk = createEncodedVideoChunk(40);
+ worker.postMessage(chunk);
+ const received = await new Promise(resolve => worker.onmessage = e => {
+ resolve(e.data);
+ });
+ assert_equals(received.toString(), '[object EncodedVideoChunk]');
+ assert_equals(received.timestamp, 40);
+
+}, 'Verify chunks can be passed back and forth between main and data-url worker');
+
+promise_test(async () => {
+ const blob = new Blob([document.querySelector('#sharedWorkerCode').textContent], {
+ type: 'text/javascript',
+ });
+ const worker = new SharedWorker(window.URL.createObjectURL(blob));
+ let chunk = createEncodedVideoChunk(50);
+ worker.port.postMessage(chunk);
+ worker.port.postMessage({'id': 50});
+ const received = await new Promise(resolve => worker.port.onmessage = e => {
+ resolve(e.data);
+ });
+ assert_equals(received, 'NOT_RECEIVED');
+}, 'Verify chunks cannot be passed to sharedworker');
+
+promise_test(async () => {
+ navigator.serviceWorker.register(SERVICE_WORKER);
+ navigator.serviceWorker.ready.then((registration) => {
+ let chunk = createEncodedVideoChunk(60);
+ registration.active.postMessage(chunk);
+ registration.active.postMessage({'encodedVideoChunkId': 60});
+ });
+ const received = await new Promise(resolve =>
+ navigator.serviceWorker.onmessage = (e) => { resolve(e.data); });
+ assert_equals(received, 'NOT_RECEIVED');
+}, 'Verify chunks cannot be passed to serviceworker');
+
+promise_test(async () => {
+ const blob = new Blob([document.querySelector('#sharedWorkerCode').textContent], {
+ type: 'text/javascript',
+ });
+ const worker = new SharedWorker(window.URL.createObjectURL(blob));
+ worker.port.postMessage('create-chunk');
+ const received = await new Promise(resolve => worker.port.onmessage = e => {
+ resolve(e.data);
+ });
+ assert_true(received instanceof ReferenceError);
+}, 'Verify chunks is unavailable in sharedworker');
+
+promise_test(async () => {
+ navigator.serviceWorker.register(SERVICE_WORKER);
+ let registration = await navigator.serviceWorker.ready;
+ registration.active.postMessage('create-EncodedVideoChunk');
+ const received = await new Promise(resolve =>
+ navigator.serviceWorker.onmessage = (e) => { resolve(e.data); });
+ assert_true(received instanceof ReferenceError);
+}, 'Verify chunks is unavailable in serviceworker');
+
+function appendIframe(src) {
+ const frame = document.createElement('iframe');
+ document.body.appendChild(frame);
+ frame.src = src;
+ return new Promise(resolve => frame.onload = () => resolve(frame));
+};
+
+function createEncodedVideoChunk(ts) {
+ return new EncodedVideoChunk({
+ type: 'key',
+ timestamp: ts,
+ duration: 1234,
+ data: new Uint8Array([5, 6, 7, 8])
+ });
+}
+
+function canSerializeEncodedVideoChunk(target, chunk) {
+ target.postMessage(chunk, '*');
+ target.postMessage({'id': chunk.timestamp}, '*');
+ return new Promise(resolve => window.onmessage = e => {
+ resolve(e.data == 'RECEIVED');
+ });
+};
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/webcodecs/serialization.crossAgentCluster.serviceworker.js b/tests/wpt/tests/webcodecs/serialization.crossAgentCluster.serviceworker.js
new file mode 100644
index 00000000000..bb3ec0df5b7
--- /dev/null
+++ b/tests/wpt/tests/webcodecs/serialization.crossAgentCluster.serviceworker.js
@@ -0,0 +1,61 @@
+let videoFrameMap = new Map();
+let encodedVideoChunkMap = new Map();
+
+self.onmessage = (e) => {
+ if (e.data == 'create-VideoFrame') {
+ let frameOrError = null;
+ try {
+ frameOrError = new VideoFrame(
+ new Uint8Array([
+ 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16,
+ ]), {
+ timestamp: 0,
+ codedWidth: 2,
+ codedHeight: 2,
+ format: 'RGBA',
+ });
+ } catch (error) {
+ frameOrError = error
+ }
+ e.source.postMessage(frameOrError);
+ return;
+ }
+
+ if (e.data == 'create-EncodedVideoChunk') {
+ let chunkOrError = null;
+ try {
+ chunkOrError = new EncodedVideoChunk({
+ type: 'key',
+ timestamp: 0,
+ duration: 1,
+ data: new Uint8Array([2, 3, 4, 5])
+ });
+ } catch (error) {
+ chunkOrError = error
+ }
+ e.source.postMessage(chunkOrError);
+ return;
+ }
+
+ if (e.data.hasOwnProperty('videoFrameId')) {
+ e.source.postMessage(
+ videoFrameMap.get(e.data.videoFrameId) ? 'RECEIVED' : 'NOT_RECEIVED');
+ return;
+ }
+
+ if (e.data.hasOwnProperty('encodedVideoChunkId')) {
+ e.source.postMessage(
+ encodedVideoChunkMap.get(e.data.encodedVideoChunkId) ? 'RECEIVED' : 'NOT_RECEIVED');
+ return;
+ }
+
+ if (e.data.toString() == '[object VideoFrame]') {
+ videoFrameMap.set(e.data.timestamp, e.data);
+ return;
+ }
+
+ if (e.data.toString() == '[object EncodedVideoChunk]') {
+ encodedVideoChunkMap.set(e.data.timestamp, e.data);
+ }
+};
diff --git a/tests/wpt/tests/webcodecs/utils.js b/tests/wpt/tests/webcodecs/utils.js
index bbb53e70e0d..f09334677a6 100644
--- a/tests/wpt/tests/webcodecs/utils.js
+++ b/tests/wpt/tests/webcodecs/utils.js
@@ -49,10 +49,10 @@ function getDefaultCodecInit(test) {
// Checks that codec can be configured, reset, reconfigured, and that incomplete
// or invalid configs throw errors immediately.
-function testConfigurations(codec, validCondig, invalidCodecs) {
+function testConfigurations(codec, validConfig, unsupportedCodecsList) {
assert_equals(codec.state, "unconfigured");
- const requiredConfigPairs = validCondig;
+ const requiredConfigPairs = validConfig;
let incrementalConfig = {};
for (let key in requiredConfigPairs) {
@@ -72,11 +72,13 @@ function testConfigurations(codec, validCondig, invalidCodecs) {
let config = incrementalConfig;
- invalidCodecs.forEach(badCodec => {
+ unsupportedCodecsList.forEach(unsupportedCodec => {
// Invalid codecs should fail.
- config.codec = badCodec;
- assert_throws_js(TypeError, () => { codec.configure(config); }, badCodec);
- })
+ config.codec = unsupportedCodec;
+ assert_throws_dom('NotSupportedError', () => {
+ codec.configure(config);
+ }, unsupportedCodec);
+ });
// The failed configures should not affect the current config.
assert_equals(codec.state, "configured");
@@ -85,7 +87,7 @@ function testConfigurations(codec, validCondig, invalidCodecs) {
codec.reset()
assert_equals(codec.state, "unconfigured");
- codec.configure(validCondig);
+ codec.configure(validConfig);
assert_equals(codec.state, "configured");
}
diff --git a/tests/wpt/tests/webcodecs/video-decoder.https.any.js b/tests/wpt/tests/webcodecs/video-decoder.https.any.js
index 565134271d6..3c4ca479ce4 100644
--- a/tests/wpt/tests/webcodecs/video-decoder.https.any.js
+++ b/tests/wpt/tests/webcodecs/video-decoder.https.any.js
@@ -3,9 +3,39 @@
const invalidConfigs = [
{
+ comment: 'Missing codec',
+ config: {},
+ },
+ {
comment: 'Empty codec',
config: {codec: ''},
},
+]; // invalidConfigs
+
+invalidConfigs.forEach(entry => {
+ promise_test(
+ t => {
+ return promise_rejects_js(
+ t, TypeError, VideoDecoder.isConfigSupported(entry.config));
+ },
+ 'Test that VideoDecoder.isConfigSupported() rejects invalid config:' +
+ entry.comment);
+});
+
+invalidConfigs.forEach(entry => {
+ async_test(
+ t => {
+ let codec = new VideoDecoder(getDefaultCodecInit(t));
+ assert_throws_js(TypeError, () => {
+ codec.configure(entry.config);
+ });
+ t.done();
+ },
+ 'Test that VideoDecoder.configure() rejects invalid config:' +
+ entry.comment);
+});
+
+const validButUnsupportedConfigs = [
{
comment: 'Unrecognized codec',
config: {codec: 'bogus'},
@@ -22,28 +52,45 @@ const invalidConfigs = [
comment: 'Codec with MIME type',
config: {codec: 'video/webm; codecs="vp8"'},
},
-]; // invalidConfigs
+ {
+ comment: 'Possible future H264 codec string',
+ config: {codec: 'avc1.FF000b'},
+ },
+ {
+ comment: 'Possible future HEVC codec string',
+ config: {codec: 'hvc1.C99.6FFFFFF.L93'},
+ },
+ {
+ comment: 'Possible future VP9 codec string',
+ config: {codec: 'vp09.99.99.08'},
+ },
+ {
+ comment: 'Possible future AV1 codec string',
+ config: {codec: 'av01.9.99M.08'},
+ },
+]; // validButUnsupportedConfigs
-invalidConfigs.forEach(entry => {
+validButUnsupportedConfigs.forEach(entry => {
promise_test(
t => {
- return promise_rejects_js(
- t, TypeError, VideoDecoder.isConfigSupported(entry.config));
+ return VideoDecoder.isConfigSupported(entry.config).then(support => {
+ assert_false(support.supported);
+ });
},
- 'Test that VideoDecoder.isConfigSupported() rejects invalid config:' +
+ 'Test that VideoDecoder.isConfigSupported() doesn\'t support config: ' +
entry.comment);
});
-invalidConfigs.forEach(entry => {
+validButUnsupportedConfigs.forEach(entry => {
async_test(
t => {
let codec = new VideoDecoder(getDefaultCodecInit(t));
- assert_throws_js(TypeError, () => {
+ assert_throws_dom('NotSupportedError', () => {
codec.configure(entry.config);
});
t.done();
},
- 'Test that VideoDecoder.configure() rejects invalid config:' +
+ 'Test that VideoDecoder.configure() doesn\'t support config: ' +
entry.comment);
});
diff --git a/tests/wpt/tests/webcodecs/video-encoder-config.https.any.js b/tests/wpt/tests/webcodecs/video-encoder-config.https.any.js
index fbb6d91b9b8..be2574f7901 100644
--- a/tests/wpt/tests/webcodecs/video-encoder-config.https.any.js
+++ b/tests/wpt/tests/webcodecs/video-encoder-config.https.any.js
@@ -3,17 +3,16 @@
const invalidConfigs = [
{
- comment: 'Emtpy codec',
+ comment: 'Missing codec',
config: {
- codec: '',
width: 640,
height: 480,
},
},
{
- comment: 'Unrecognized codec',
+ comment: 'Empty codec',
config: {
- codec: 'bogus',
+ codec: '',
width: 640,
height: 480,
},
@@ -51,15 +50,31 @@ const invalidConfigs = [
displayHeight: 0,
height: 480,
},
- }
+ },
];
invalidConfigs.forEach(entry => {
- promise_test(t => {
- return promise_rejects_js(t, TypeError, VideoEncoder.isConfigSupported(entry.config));
- }, 'Test that VideoEncoder.isConfigSupported() rejects invalid config:' + entry.comment);
+ promise_test(
+ t => {
+ return promise_rejects_js(
+ t, TypeError, VideoEncoder.isConfigSupported(entry.config));
+ },
+ 'Test that VideoEncoder.isConfigSupported() rejects invalid config: ' +
+ entry.comment);
});
+invalidConfigs.forEach(entry => {
+ async_test(
+ t => {
+ let codec = new VideoEncoder(getDefaultCodecInit(t));
+ assert_throws_js(TypeError, () => {
+ codec.configure(entry.config);
+ });
+ t.done();
+ },
+ 'Test that VideoEncoder.configure() rejects invalid config: ' +
+ entry.comment);
+});
const validButUnsupportedConfigs = [
{
@@ -67,6 +82,14 @@ const validButUnsupportedConfigs = [
config: {codec: 'vp8', width: 640, height: 480, scalabilityMode: 'ABC'}
},
{
+ comment: 'Unrecognized codec',
+ config: {
+ codec: 'bogus',
+ width: 640,
+ height: 480,
+ },
+ },
+ {
comment: 'Width is too large',
config: {
codec: 'vp8',
@@ -85,10 +108,10 @@ const validButUnsupportedConfigs = [
{
comment: 'Too strenuous accelerated encoding parameters',
config: {
- codec: "vp8",
- hardwareAcceleration: "prefer-hardware",
- width: 7000,
- height: 7000,
+ codec: 'vp8',
+ hardwareAcceleration: 'prefer-hardware',
+ width: 20000,
+ height: 20000,
bitrate: 1,
framerate: 240,
}
@@ -96,30 +119,78 @@ const validButUnsupportedConfigs = [
{
comment: 'Odd sized frames for H264',
config: {
- codec: "avc1.42001E",
+ codec: 'avc1.42001E',
width: 641,
height: 480,
bitrate: 1000000,
framerate: 24,
}
},
+ {
+ comment: 'Possible future H264 codec string',
+ config: {
+ codec: 'avc1.FF000b',
+ width: 640,
+ height: 480,
+ },
+ },
+ {
+ comment: 'Possible future HEVC codec string',
+ config: {
+ codec: 'hvc1.C99.6FFFFFF.L93',
+ width: 640,
+ height: 480,
+ },
+ },
+ {
+ comment: 'Possible future VP9 codec string',
+ config: {
+ codec: 'vp09.99.99.08',
+ width: 640,
+ height: 480,
+ },
+ },
+ {
+ comment: 'Possible future AV1 codec string',
+ config: {
+ codec: 'av01.9.99M.08',
+ width: 640,
+ height: 480,
+ },
+ },
];
validButUnsupportedConfigs.forEach(entry => {
let config = entry.config;
- promise_test(async t => {
- let support = await VideoEncoder.isConfigSupported(config);
- assert_false(support.supported);
+ promise_test(
+ async t => {
+ let support = await VideoEncoder.isConfigSupported(config);
+ assert_false(support.supported);
- let new_config = support.config;
- assert_equals(new_config.codec, config.codec);
- assert_equals(new_config.width, config.width);
- assert_equals(new_config.height, config.height);
- if (config.bitrate)
- assert_equals(new_config.bitrate, config.bitrate);
- if (config.framerate)
- assert_equals(new_config.framerate, config.framerate);
- }, "VideoEncoder.isConfigSupported() doesn't support config:" + entry.comment);
+ let new_config = support.config;
+ assert_equals(new_config.codec, config.codec);
+ assert_equals(new_config.width, config.width);
+ assert_equals(new_config.height, config.height);
+ if (config.bitrate)
+ assert_equals(new_config.bitrate, config.bitrate);
+ if (config.framerate)
+ assert_equals(new_config.framerate, config.framerate);
+ },
+ 'Test that VideoEncoder.isConfigSupported() doesn\'t support config: ' +
+ entry.comment);
+});
+
+validButUnsupportedConfigs.forEach(entry => {
+ async_test(
+ t => {
+ let codec = new VideoEncoder(getDefaultCodecInit(t));
+ assert_throws_dom('NotSupportedError', () => {
+ codec.configure(entry.config);
+ });
+ t.done();
+ },
+ 'Test that VideoEncoder.configure() doesn\'t support config: ' +
+ entry.comment);
});
const validConfigs = [
@@ -189,5 +260,3 @@ validConfigs.forEach(config => {
}
}, "VideoEncoder.isConfigSupported() supports:" + JSON.stringify(config));
});
-
-
diff --git a/tests/wpt/tests/webcodecs/video-encoder.https.any.js b/tests/wpt/tests/webcodecs/video-encoder.https.any.js
index 229ae32edd4..c8db068e12f 100644
--- a/tests/wpt/tests/webcodecs/video-encoder.https.any.js
+++ b/tests/wpt/tests/webcodecs/video-encoder.https.any.js
@@ -26,15 +26,14 @@ promise_test(t => {
promise_test(t => {
let encoder = new VideoEncoder(getDefaultCodecInit(t));
- let badCodecsList = [
- '', // Empty codec
- 'bogus', // Non exsitent codec
+ let unsupportedCodecsList = [
+ 'bogus', // Non existent codec
'vorbis', // Audio codec
'vp9', // Ambiguous codec
'video/webm; codecs="vp9"' // Codec with mime type
]
- testConfigurations(encoder, defaultConfig, badCodecsList);
+ testConfigurations(encoder, defaultConfig, unsupportedCodecsList);
return endAfterEventLoopTurn();
}, 'Test VideoEncoder.configure()');
@@ -261,6 +260,9 @@ promise_test(async t => {
// Verify that a failed call to configure does not change the encoder's state.
let badConfig = { ...defaultConfig };
badConfig.codec = 'bogus';
+ assert_throws_dom('NotSupportedError', () => encoder.configure(badConfig));
+
+ delete badConfig['codec'];
assert_throws_js(TypeError, () => encoder.configure(badConfig));
encoder.encode(frame4);
diff --git a/tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html b/tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html
index 27f624a8449..11b5e23124e 100644
--- a/tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html
+++ b/tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.https.html
@@ -58,7 +58,7 @@ const SAMEORIGIN_BASE = get_host_info().HTTPS_ORIGIN;
const CROSSORIGIN_BASE = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
const SAMEORIGIN_HELPER = SAMEORIGIN_BASE + HELPER;
const CROSSORIGIN_HELPER = CROSSORIGIN_BASE + HELPER;
-const SERVICE_WORKER = 'videoFrame-serialization.crossAgentCluster.serviceworker.js';
+const SERVICE_WORKER = 'serialization.crossAgentCluster.serviceworker.js';
promise_test(async () => {
const target = (await appendIframe(SAMEORIGIN_HELPER)).contentWindow;
@@ -118,7 +118,7 @@ promise_test(async () => {
navigator.serviceWorker.ready.then((registration) => {
let frame = createVideoFrame(60);
registration.active.postMessage(frame);
- registration.active.postMessage({'id': 60});
+ registration.active.postMessage({'videoFrameId': 60});
});
const received = await new Promise(resolve => navigator.serviceWorker.onmessage = (e) => {
resolve(e.data);
@@ -185,7 +185,7 @@ promise_test(async () => {
navigator.serviceWorker.ready.then((registration) => {
let frame = createVideoFrame(120);
registration.active.postMessage(frame, [frame]);
- registration.active.postMessage({'id': 120});
+ registration.active.postMessage({'videoFrameId': 120});
});
const received = await new Promise(resolve => navigator.serviceWorker.onmessage = (e) => {
resolve(e.data);
@@ -208,7 +208,7 @@ promise_test(async () => {
promise_test(async () => {
navigator.serviceWorker.register(SERVICE_WORKER);
let registration = await navigator.serviceWorker.ready;
- registration.active.postMessage('create-frame');
+ registration.active.postMessage('create-VideoFrame');
const received = await new Promise(resolve => navigator.serviceWorker.onmessage = (e) => {
resolve(e.data);
});
diff --git a/tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.serviceworker.js b/tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.serviceworker.js
deleted file mode 100644
index 9b963610bef..00000000000
--- a/tests/wpt/tests/webcodecs/videoFrame-serialization.crossAgentCluster.serviceworker.js
+++ /dev/null
@@ -1,30 +0,0 @@
-const data = new Uint8Array([
- 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16,
-]);
-let received = new Map();
-self.onmessage = (e) => {
- if (e.data == 'create-frame') {
- let frameOrError = null;
- try {
- frameOrError = new VideoFrame(data, {
- timestamp: 0,
- codedWidth: 2,
- codedHeight: 2,
- format: 'RGBA',
- });
- } catch (error) {
- frameOrError = error
- }
- e.source.postMessage(frameOrError);
- return;
- }
- if (e.data.hasOwnProperty('id')) {
- e.source.postMessage(
- received.get(e.data.id) ? 'RECEIVED' : 'NOT_RECEIVED');
- return;
- }
- if (e.data.toString() == '[object VideoFrame]') {
- received.set(e.data.timestamp, e.data);
- }
-};
diff --git a/tests/wpt/tests/webdriver/tests/bidi/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/__init__.py
index eb412738a83..9d049f0a548 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/__init__.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/__init__.py
@@ -87,6 +87,20 @@ async def get_device_pixel_ratio(bidi_session, context: str) -> float:
return result["value"]
+async def get_element_dimensions(bidi_session, context, element):
+ result = await bidi_session.script.call_function(
+ arguments=[element],
+ function_declaration="""(element) => {
+ const rect = element.getBoundingClientRect();
+ return { height: rect.height, width: rect.width }
+ }""",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+
+ return remote_mapping_to_dict(result["value"])
+
+
async def get_viewport_dimensions(bidi_session, context: str):
expression = """
({
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/__init__.py
index 64f25b9b861..6a21f11e7ba 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/__init__.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/__init__.py
@@ -1,7 +1,63 @@
from math import floor
+from ... import (
+ get_device_pixel_ratio,
+ get_element_dimensions,
+ get_viewport_dimensions,
+ remote_mapping_to_dict,
+)
+
from webdriver.bidi.modules.script import ContextTarget
+from webdriver.bidi.modules.browsing_context import ElementOptions
+
+
+async def get_element_coordinates(bidi_session, context, element):
+ """Get the coordinates of the element.
+
+ :param bidi_session: BiDiSession
+ :param context: Browsing context ID
+ :param element: Serialized element
+ :returns: Tuple of (int, int) containing element x, element y coordinates.
+ """
+ result = await bidi_session.script.call_function(
+ arguments=[element],
+ function_declaration="""(element) => {
+ const rect = element.getBoundingClientRect();
+ return { x: rect.x, y: rect.y }
+ }""",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ value = remote_mapping_to_dict(result["value"])
+
+ return (value["x"], value["y"])
+
+
+async def get_page_y_offset(bidi_session, context):
+ """Get the window.pageYOffset of the context's viewport.
+
+ :param bidi_session: BiDiSession
+ :param context: Browsing context ID
+ :returns: int value of window.pageYOffset.
+ """
+ result = await bidi_session.script.evaluate(
+ expression="window.pageYOffset",
+ target=ContextTarget(context["context"]),
+ await_promise=False,
+ )
+ return result["value"]
-from ... import get_device_pixel_ratio, get_viewport_dimensions
+
+async def get_physical_element_dimensions(bidi_session, context, element):
+ """Get the physical dimensions of the element.
+
+ :param bidi_session: BiDiSession
+ :param context: Browsing context ID
+ :param element: Serialized element
+ :returns: Tuple of (int, int) containing element width, element height.
+ """
+ element_dimensions = await get_element_dimensions(bidi_session, context, element)
+ dpr = await get_device_pixel_ratio(bidi_session, context)
+ return (element_dimensions["width"] * dpr, element_dimensions["height"] * dpr)
async def get_physical_viewport_dimensions(bidi_session, context):
@@ -14,3 +70,27 @@ async def get_physical_viewport_dimensions(bidi_session, context):
viewport = await get_viewport_dimensions(bidi_session, context)
dpr = await get_device_pixel_ratio(bidi_session, context)
return (floor(viewport["width"] * dpr), floor(viewport["height"] * dpr))
+
+
+async def get_reference_screenshot(bidi_session, inline, context, html):
+ """Get the reference screenshot for the given context and html.
+
+ :param bidi_session: BiDiSession
+ :param context: Browsing context ID
+ :param html: Html string
+ :returns: Screenshot image.
+ """
+ url = inline(html)
+ await bidi_session.browsing_context.navigate(
+ context=context, url=url, wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('div')",
+ target=ContextTarget(context),
+ )
+
+ return await bidi_session.browsing_context.capture_screenshot(
+ context=context,
+ clip=ElementOptions(element=element),
+ )
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/clip.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/clip.py
new file mode 100644
index 00000000000..4cc83f2c221
--- /dev/null
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/clip.py
@@ -0,0 +1,307 @@
+import pytest
+from tests.support.image import png_dimensions
+from webdriver.bidi.modules.browsing_context import ElementOptions, ViewportOptions
+from webdriver.bidi.modules.script import ContextTarget
+
+from . import (
+ get_element_coordinates,
+ get_page_y_offset,
+ get_physical_element_dimensions,
+ get_reference_screenshot,
+)
+from ... import get_viewport_dimensions
+
+pytestmark = pytest.mark.asyncio
+
+
+async def test_clip_element(bidi_session, top_context, inline, compare_png_bidi):
+ url = inline("<input />")
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=url, wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('input')",
+ target=ContextTarget(top_context["context"]),
+ )
+ expected_size = await get_physical_element_dimensions(
+ bidi_session, top_context, element
+ )
+ reference_data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"], clip=ElementOptions(element=element)
+ )
+ reference_data_dimensions = png_dimensions(reference_data)
+ assert reference_data_dimensions == expected_size
+
+ # Compare with the screenshot of the different element.
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=inline("<div>foo</div>"), wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('div')",
+ target=ContextTarget(top_context["context"]),
+ )
+ data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"], clip=ElementOptions(element=element)
+ )
+
+ assert png_dimensions(data) != reference_data_dimensions
+
+ # Take a second screenshot that should be identical to validate that
+ # we don't just always return false here.
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=inline("<div>foo</div>"), wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('div')",
+ target=ContextTarget(top_context["context"]),
+ )
+ new_data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"], clip=ElementOptions(element=element)
+ )
+
+ comparison = await compare_png_bidi(new_data, data)
+ assert comparison.equal()
+
+
+async def test_clip_element_with_scroll_into_view(
+ bidi_session, top_context, inline, compare_png_bidi
+):
+ element_styles = "background-color: black; width: 50px; height:50px;"
+
+ # Render an element inside of viewport for the reference.
+ reference_data = await get_reference_screenshot(
+ bidi_session,
+ inline,
+ top_context["context"],
+ f"""<div style="{element_styles}"></div>""",
+ )
+
+ viewport_dimensions = await get_viewport_dimensions(bidi_session, top_context)
+
+ # Render the same element outside of viewport.
+ url = inline(
+ f"""<div style="{element_styles} margin-top: {viewport_dimensions["height"]}px"></div>"""
+ )
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=url, wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('div')",
+ target=ContextTarget(top_context["context"]),
+ )
+ expected_size = await get_physical_element_dimensions(
+ bidi_session, top_context, element
+ )
+
+ assert await get_page_y_offset(bidi_session, top_context) == 0
+
+ data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ElementOptions(element=element, scroll_into_view=True),
+ )
+
+ assert png_dimensions(data) == expected_size
+ assert await get_page_y_offset(bidi_session, top_context) >= 0
+
+ comparison = await compare_png_bidi(reference_data, data)
+ assert comparison.equal()
+
+
+async def test_clip_viewport(bidi_session, top_context, inline, compare_png_bidi):
+ url = inline("<input>")
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=url, wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('input')",
+ target=ContextTarget(top_context["context"]),
+ )
+ element_coordinates = await get_element_coordinates(
+ bidi_session, top_context, element
+ )
+ expected_size = await get_physical_element_dimensions(
+ bidi_session, top_context, element
+ )
+ reference_data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(
+ x=element_coordinates[0],
+ y=element_coordinates[1],
+ width=expected_size[0],
+ height=expected_size[1],
+ ),
+ )
+ reference_data_dimensions = png_dimensions(reference_data)
+ assert reference_data_dimensions == expected_size
+
+ # Compare with the screenshot of the different element.
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=inline("<div>foo</div>"), wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('div')",
+ target=ContextTarget(top_context["context"]),
+ )
+ element_coordinates = await get_element_coordinates(
+ bidi_session, top_context, element
+ )
+ element_dimensions = await get_physical_element_dimensions(
+ bidi_session, top_context, element
+ )
+ data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(
+ x=element_coordinates[0],
+ y=element_coordinates[1],
+ width=element_dimensions[0],
+ height=element_dimensions[1],
+ ),
+ )
+
+ assert png_dimensions(data) != reference_data_dimensions
+
+ # Take a second screenshot that should be identical to validate that
+ # we don't just always return false here.
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=inline("<div>foo</div>"), wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('div')",
+ target=ContextTarget(top_context["context"]),
+ )
+ element_coordinates = await get_element_coordinates(
+ bidi_session, top_context, element
+ )
+ element_dimensions = await get_physical_element_dimensions(
+ bidi_session, top_context, element
+ )
+ new_data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(
+ x=element_coordinates[0],
+ y=element_coordinates[1],
+ width=element_dimensions[0],
+ height=element_dimensions[1],
+ ),
+ )
+
+ comparison = await compare_png_bidi(new_data, data)
+ assert comparison.equal()
+
+
+async def test_clip_viewport_scroll_to(
+ bidi_session, top_context, inline, compare_png_bidi
+):
+ element_styles = "background-color: black; width: 50px; height:50px;"
+
+ # Render an element inside of viewport for the reference.
+ reference_data = await get_reference_screenshot(
+ bidi_session,
+ inline,
+ top_context["context"],
+ f"""<div style="{element_styles}"></div>""",
+ )
+
+ viewport_dimensions = await get_viewport_dimensions(bidi_session, top_context)
+
+ # Render the same element outside of viewport.
+ url = inline(
+ f"""<div style="{element_styles} margin-top: {viewport_dimensions["height"]}px"></div>"""
+ )
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=url, wait="complete"
+ )
+
+ element = await bidi_session.script.call_function(
+ await_promise=False,
+ function_declaration=f"""() => {{
+ const element = document.querySelector('div');
+
+ const rect = element.getBoundingClientRect();
+ // Scroll to have the element in the viewport.
+ window.scrollTo(0, rect.y);
+
+ return element;
+ }}""",
+ target=ContextTarget(top_context["context"]),
+ )
+ element_coordinates = await get_element_coordinates(
+ bidi_session, top_context, element
+ )
+ element_dimensions = await get_physical_element_dimensions(
+ bidi_session, top_context, element
+ )
+ new_data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(
+ x=element_coordinates[0],
+ y=element_coordinates[1],
+ width=element_dimensions[0],
+ height=element_dimensions[1],
+ ),
+ )
+
+ assert png_dimensions(new_data) == element_dimensions
+
+ comparison = await compare_png_bidi(reference_data, new_data)
+ assert comparison.equal()
+
+
+async def test_clip_viewport_partially_visible(
+ bidi_session, top_context, inline, compare_png_bidi
+):
+ viewport_dimensions = await get_viewport_dimensions(bidi_session, top_context)
+ element_styles = f"background-color: black; width: {viewport_dimensions['width']}px; height: 50px;"
+
+ # Render an element fully inside of viewport for the reference.
+ reference_data = await get_reference_screenshot(
+ bidi_session,
+ inline,
+ top_context["context"],
+ f"""<div style="{element_styles}"></div>""",
+ )
+
+ reference_data_dimensions = png_dimensions(reference_data)
+
+ element_styles = f"background-color: black; width: {viewport_dimensions['width'] + 100}px; height: 50px;"
+
+ url = inline(f"""<div style="{element_styles}"></div>""")
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=url, wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('div')",
+ target=ContextTarget(top_context["context"]),
+ )
+ element_coordinates = await get_element_coordinates(
+ bidi_session, top_context, element
+ )
+ expected_size = await get_physical_element_dimensions(
+ bidi_session, top_context, element
+ )
+ new_data = await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(
+ x=element_coordinates[0],
+ y=element_coordinates[1],
+ width=expected_size[0],
+ height=expected_size[1],
+ ),
+ )
+ new_data_dimensions = png_dimensions(new_data)
+
+ # Since the rendered element only partially visible,
+ # the screenshot dimensions will not be equal the element size.
+ assert new_data_dimensions != expected_size
+ assert new_data_dimensions == reference_data_dimensions
+
+ comparison = await compare_png_bidi(reference_data, new_data)
+ assert comparison.equal()
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py
index 885baf229d3..c6efbbbb7ae 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/capture_screenshot/invalid.py
@@ -1,23 +1,26 @@
import pytest
+from ... import get_viewport_dimensions
+
import webdriver.bidi.error as error
+from webdriver.bidi.modules.browsing_context import ElementOptions, ViewportOptions
+from webdriver.bidi.modules.script import ContextTarget
+
+pytestmark = pytest.mark.asyncio
@pytest.mark.parametrize("value", [None, False, 42, {}, []])
-@pytest.mark.asyncio
async def test_params_context_invalid_type(bidi_session, value):
with pytest.raises(error.InvalidArgumentException):
await bidi_session.browsing_context.capture_screenshot(context=value)
-@pytest.mark.asyncio
@pytest.mark.parametrize("value", ["", "somestring"])
async def test_invalid_frame(bidi_session, value):
with pytest.raises(error.NoSuchFrameException):
await bidi_session.browsing_context.capture_screenshot(context=value)
-@pytest.mark.asyncio
async def test_closed_frame(bidi_session, top_context, inline, add_and_remove_iframe):
url = inline("<div>foo</div>")
await bidi_session.browsing_context.navigate(
@@ -26,3 +29,156 @@ async def test_closed_frame(bidi_session, top_context, inline, add_and_remove_if
frame_id = await add_and_remove_iframe(top_context)
with pytest.raises(error.NoSuchFrameException):
await bidi_session.browsing_context.capture_screenshot(context=frame_id)
+
+
+@pytest.mark.parametrize("value", [False, 42, "foo", []])
+async def test_params_clip_invalid_type(bidi_session, top_context, value):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"], clip=value
+ )
+
+
+@pytest.mark.parametrize("value", [None, False, 42, {}, []])
+async def test_params_clip_type_invalid_type(bidi_session, top_context, value):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"], clip={"type": value}
+ )
+
+
+async def test_params_clip_type_invalid_value(bidi_session, top_context):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"], clip={"type": "foo"}
+ )
+
+
+@pytest.mark.parametrize("value", [None, False, 42, "foo", []])
+async def test_params_clip_element_invalid_type(bidi_session, top_context, value):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ElementOptions(element=value),
+ )
+
+
+@pytest.mark.parametrize("value", [None, False, 42, {}, []])
+async def test_params_clip_element_sharedId_invalid_type(
+ bidi_session, top_context, value
+):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ElementOptions(element={"shareId": value}),
+ )
+
+
+async def test_params_clip_element_sharedId_invalid_value(bidi_session, top_context):
+ with pytest.raises(error.NoSuchNodeException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ElementOptions(element={"sharedId": "foo"}),
+ )
+
+
+@pytest.mark.parametrize("value", [42, "foo", {}, []])
+async def test_params_clip_element_scroll_into_view_invalid_type(
+ bidi_session, top_context, value
+):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ElementOptions(element={}, scroll_into_view=value),
+ )
+
+
+@pytest.mark.parametrize("value", [None, False, "foo", {}, []])
+async def test_params_clip_viewport_x_invalid_type(bidi_session, top_context, value):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(x=value, y=0, width=0, height=0),
+ )
+
+
+@pytest.mark.parametrize("value", [None, False, "foo", {}, []])
+async def test_params_clip_viewport_y_invalid_type(bidi_session, top_context, value):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(x=0, y=value, width=0, height=0),
+ )
+
+
+@pytest.mark.parametrize("value", [None, False, "foo", {}, []])
+async def test_params_clip_viewport_width_invalid_type(
+ bidi_session, top_context, value
+):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(x=0, y=0, width=value, height=0),
+ )
+
+
+@pytest.mark.parametrize("value", [None, False, "foo", {}, []])
+async def test_params_clip_viewport_height_invalid_type(
+ bidi_session, top_context, value
+):
+ with pytest.raises(error.InvalidArgumentException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(x=0, y=0, width=0, height=value),
+ )
+
+
+async def test_params_clip_viewport_dimensions_invalid_value(bidi_session, top_context):
+ with pytest.raises(error.UnableToCaptureScreenException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(x=0, y=0, width=0, height=0),
+ )
+
+
+async def test_params_clip_viewport_outside_of_window_viewport(
+ bidi_session, top_context
+):
+ viewport_dimensions = await get_viewport_dimensions(bidi_session, top_context)
+
+ with pytest.raises(error.UnableToCaptureScreenException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ViewportOptions(
+ x=viewport_dimensions["width"],
+ y=viewport_dimensions["height"],
+ width=1,
+ height=1,
+ ),
+ )
+
+
+async def test_params_clip_element_outside_of_window_viewport(
+ bidi_session, top_context, inline
+):
+ viewport_dimensions = await get_viewport_dimensions(bidi_session, top_context)
+
+ element_styles = "background-color: black; width: 50px; height:50px;"
+ # Render element outside of viewport.
+ url = inline(
+ f"""<div style="{element_styles} margin-top: {viewport_dimensions["height"]}px"></div>"""
+ )
+ await bidi_session.browsing_context.navigate(
+ context=top_context["context"], url=url, wait="complete"
+ )
+ element = await bidi_session.script.evaluate(
+ await_promise=False,
+ expression="document.querySelector('div')",
+ target=ContextTarget(top_context["context"]),
+ )
+
+ with pytest.raises(error.UnableToCaptureScreenException):
+ await bidi_session.browsing_context.capture_screenshot(
+ context=top_context["context"],
+ clip=ElementOptions(element=element),
+ )
diff --git a/tests/wpt/tests/websockets/stream/tentative/abort.any.js b/tests/wpt/tests/websockets/stream/tentative/abort.any.js
index 6742bf2b38f..9047f246f96 100644
--- a/tests/wpt/tests/websockets/stream/tentative/abort.any.js
+++ b/tests/wpt/tests/websockets/stream/tentative/abort.any.js
@@ -16,9 +16,10 @@ promise_test(async t => {
// We intentionally use the port for the HTTP server, not the WebSocket
// server, because we don't expect the connection to be performed.
const wss = new WebSocketStream(wsUrl, { signal: controller.signal });
- await promise_rejects_dom(t, 'AbortError', wss.connection,
- 'connection should reject');
- await promise_rejects_dom(t, 'AbortError', wss.closed, 'closed should reject');
+ await promise_rejects_dom(
+ t, 'AbortError', wss.opened, 'opened should reject');
+ await promise_rejects_dom(
+ t, 'AbortError', wss.closed, 'closed should reject');
// An incorrect implementation could pass this test due a race condition,
// but it is hard to completely eliminate the possibility.
const response = await fetch(`/fetch/api/resources/stash-take.py?key=${key}`);
@@ -32,15 +33,16 @@ promise_test(async t => {
// Give the connection a chance to start.
await new Promise(resolve => t.step_timeout(resolve, 0));
controller.abort();
- await promise_rejects_dom(t, 'AbortError', wss.connection,
- 'connection should reject');
- await promise_rejects_dom(t, 'AbortError', wss.closed, 'closed should reject');
+ await promise_rejects_dom(
+ t, 'AbortError', wss.opened, 'opened should reject');
+ await promise_rejects_dom(
+ t, 'AbortError', wss.closed, 'closed should reject');
}, 'abort during handshake should work');
promise_test(async t => {
const controller = new AbortController();
const wss = new WebSocketStream(ECHOURL, { signal: controller.signal });
- const { readable, writable } = await wss.connection;
+ const { readable, writable } = await wss.opened;
controller.abort();
writable.getWriter().write('connected');
const { value } = await readable.getReader().read();
diff --git a/tests/wpt/tests/websockets/stream/tentative/backpressure-receive.any.js b/tests/wpt/tests/websockets/stream/tentative/backpressure-receive.any.js
index cce5bf2a47e..236bb2e40fa 100644
--- a/tests/wpt/tests/websockets/stream/tentative/backpressure-receive.any.js
+++ b/tests/wpt/tests/websockets/stream/tentative/backpressure-receive.any.js
@@ -16,7 +16,7 @@ const LARGE_MESSAGE_COUNT = 16;
// the large message.
promise_test(async t => {
const wss = new WebSocketStream(`${BASEURL}/send-backpressure`);
- const { readable } = await wss.connection;
+ const { readable } = await wss.opened;
const reader = readable.getReader();
// Create backpressure for 2 seconds.
diff --git a/tests/wpt/tests/websockets/stream/tentative/backpressure-send.any.js b/tests/wpt/tests/websockets/stream/tentative/backpressure-send.any.js
index c17f1cc2b8b..e4a80f6e1c0 100644
--- a/tests/wpt/tests/websockets/stream/tentative/backpressure-send.any.js
+++ b/tests/wpt/tests/websockets/stream/tentative/backpressure-send.any.js
@@ -16,7 +16,7 @@ const MESSAGE_SIZE = 8 * 1024 * 1024;
// times how long it takes to send the first message.
promise_test(async t => {
const wss = new WebSocketStream(`${BASEURL}/receive-backpressure`);
- const { writable } = await wss.connection;
+ const { writable } = await wss.opened;
const writer = writable.getWriter();
const start = performance.now();
await writer.write(new Uint8Array(MESSAGE_SIZE));
diff --git a/tests/wpt/tests/websockets/stream/tentative/close.any.js b/tests/wpt/tests/websockets/stream/tentative/close.any.js
index 0ed91cc8a64..2be9034872e 100644
--- a/tests/wpt/tests/websockets/stream/tentative/close.any.js
+++ b/tests/wpt/tests/websockets/stream/tentative/close.any.js
@@ -6,7 +6,7 @@
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
wss.close({code: 3456, reason: 'pizza'});
const { code, reason } = await wss.closed;
assert_equals(code, 3456, 'code should match');
@@ -15,7 +15,7 @@ promise_test(async () => {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
wss.close();
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
@@ -24,7 +24,7 @@ promise_test(async () => {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
wss.close({});
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
@@ -33,7 +33,7 @@ promise_test(async () => {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
wss.close({reason: ''});
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
@@ -42,7 +42,7 @@ promise_test(async () => {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
wss.close({reason: 'non-empty'});
const { code, reason } = await wss.closed;
assert_equals(code, 1000, 'code should be set');
@@ -51,14 +51,14 @@ promise_test(async () => {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
assert_throws_js(TypeError, () => wss.close(true),
'close should throw a TypeError');
}, 'close(true) should throw a TypeError');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
const reason = '.'.repeat(124);
assert_throws_dom('SyntaxError', () => wss.close({ reason }),
'close should throw a TypeError');
@@ -68,16 +68,17 @@ promise_test(t => {
const wss = new WebSocketStream(ECHOURL);
wss.close();
return Promise.all([
- promise_rejects_dom(t, 'NetworkError', wss.connection,
- 'connection promise should reject'),
- promise_rejects_dom(t, 'NetworkError', wss.closed,
- 'closed promise should reject')]);
+ promise_rejects_dom(
+ t, 'NetworkError', wss.opened, 'opened promise should reject'),
+ promise_rejects_dom(
+ t, 'NetworkError', wss.closed, 'closed promise should reject'),
+ ]);
}, 'close during handshake should work');
for (const invalidCode of [999, 1001, 2999, 5000]) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
assert_throws_dom('InvalidAccessError', () => wss.close({ code: invalidCode }),
'close should throw a TypeError');
}, `close() with invalid code ${invalidCode} should throw`);
@@ -85,7 +86,7 @@ for (const invalidCode of [999, 1001, 2999, 5000]) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const { writable } = await wss.connection;
+ const { writable } = await wss.opened;
writable.getWriter().close();
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
@@ -94,7 +95,7 @@ promise_test(async () => {
promise_test(async () => {
const wss = new WebSocketStream(`${BASEURL}/delayed-passive-close`);
- const { writable } = await wss.connection;
+ const { writable } = await wss.opened;
const startTime = performance.now();
await writable.getWriter().close();
const elapsed = performance.now() - startTime;
@@ -120,7 +121,7 @@ for (const { method, voweling, stream } of abortOrCancel) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const info = await wss.connection;
+ const info = await wss.opened;
info[stream][method]();
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
@@ -129,7 +130,7 @@ for (const { method, voweling, stream } of abortOrCancel) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const info = await wss.connection;
+ const info = await wss.opened;
info[stream][method]({ code: 3333 });
const { code, reason } = await wss.closed;
assert_equals(code, 3333, 'code should be used');
@@ -138,7 +139,7 @@ for (const { method, voweling, stream } of abortOrCancel) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const info = await wss.connection;
+ const info = await wss.opened;
info[stream][method]({ code: 3456, reason: 'set' });
const { code, reason } = await wss.closed;
assert_equals(code, 3456, 'code should be used');
@@ -147,7 +148,7 @@ for (const { method, voweling, stream } of abortOrCancel) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const info = await wss.connection;
+ const info = await wss.opened;
info[stream][method]({ reason: 'specified' });
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
@@ -156,7 +157,7 @@ for (const { method, voweling, stream } of abortOrCancel) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const info = await wss.connection;
+ const info = await wss.opened;
info[stream][method]({ code: 999 });
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
@@ -165,7 +166,7 @@ for (const { method, voweling, stream } of abortOrCancel) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const info = await wss.connection;
+ const info = await wss.opened;
info[stream][method]({ code: 1000, reason: 'x'.repeat(128) });
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
@@ -176,7 +177,7 @@ for (const { method, voweling, stream } of abortOrCancel) {
// be a valid WebSocket close code.
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const info = await wss.connection;
+ const info = await wss.opened;
info[stream][method](new DOMException('yes', 'DataCloneError'));
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
diff --git a/tests/wpt/tests/websockets/stream/tentative/constructor.any.js b/tests/wpt/tests/websockets/stream/tentative/constructor.any.js
index 454dd4c0942..4d67d81cf28 100644
--- a/tests/wpt/tests/websockets/stream/tentative/constructor.any.js
+++ b/tests/wpt/tests/websockets/stream/tentative/constructor.any.js
@@ -10,25 +10,25 @@ test(() => {
}, 'constructing with no URL should throw');
test(() => {
- assert_throws_dom("SyntaxError", () => new WebSocketStream('invalid:'),
- "constructor should throw");
+ assert_throws_dom('SyntaxError', () => new WebSocketStream('invalid:'),
+ 'constructor should throw');
}, 'constructing with an invalid URL should throw');
test(() => {
assert_throws_js(TypeError,
() => new WebSocketStream(`${BASEURL}/`, true),
- "constructor should throw");
+ 'constructor should throw');
}, 'constructing with invalid options should throw');
test(() => {
assert_throws_js(TypeError,
() => new WebSocketStream(`${BASEURL}/`, {protocols: 'hi'}),
- "constructor should throw");
+ 'constructor should throw');
}, 'protocols should be required to be a list');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- await wss.connection;
+ await wss.opened;
assert_equals(wss.url, ECHOURL, 'url should match');
wss.close();
}, 'constructing with a valid URL should work');
@@ -36,7 +36,7 @@ promise_test(async () => {
promise_test(async () => {
const wss = new WebSocketStream(`${BASEURL}/protocol_array`,
{protocols: ['alpha', 'beta']});
- const { readable, protocol } = await wss.connection;
+ const { readable, protocol } = await wss.opened;
assert_equals(protocol, 'alpha', 'protocol should be right');
const reader = readable.getReader();
const { value, done } = await reader.read();
@@ -47,15 +47,14 @@ promise_test(async () => {
promise_test(t => {
const wss = new WebSocketStream(`${BASEURL}/404`);
return Promise.all([
- promise_rejects_dom(t, 'NetworkError', wss.connection,
- 'connection should reject'),
- promise_rejects_dom(t, 'NetworkError', wss.closed, 'closed should reject')
+ promise_rejects_dom(t, 'NetworkError', wss.opened, 'opened should reject'),
+ promise_rejects_dom(t, 'NetworkError', wss.closed, 'closed should reject'),
]);
}, 'connection failure should reject the promises');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
- const { readable, writable, protocol, extensions} = await wss.connection;
+ const { readable, writable, protocol, extensions} = await wss.opened;
// Verify that |readable| really is a ReadableStream using the getReader()
// brand check. If it doesn't throw the test passes.
ReadableStream.prototype.getReader.call(readable);
@@ -65,4 +64,4 @@ promise_test(async () => {
assert_equals(typeof protocol, 'string', 'protocol should be a string');
assert_equals(typeof extensions, 'string', 'extensions should be a string');
wss.close();
-}, 'wss.connection should resolve to the right types');
+}, 'wss.opened should resolve to the right types');
diff --git a/tests/wpt/tests/webtransport/close.https.any.js b/tests/wpt/tests/webtransport/close.https.any.js
index 77b3055c1de..0d8579584fb 100644
--- a/tests/wpt/tests/webtransport/close.https.any.js
+++ b/tests/wpt/tests/webtransport/close.https.any.js
@@ -2,7 +2,6 @@
// META: script=/common/get-host-info.sub.js
// META: script=resources/webtransport-test-helpers.sub.js
// META: script=/common/utils.js
-// META: timeout=long
promise_test(async t => {
const id = token();
diff --git a/tests/wpt/tests/webtransport/connect.https.any.js b/tests/wpt/tests/webtransport/connect.https.any.js
index 6bd18ae8de4..93df5fe3f47 100644
--- a/tests/wpt/tests/webtransport/connect.https.any.js
+++ b/tests/wpt/tests/webtransport/connect.https.any.js
@@ -1,7 +1,6 @@
// META: global=window,worker
// META: script=/common/get-host-info.sub.js
// META: script=resources/webtransport-test-helpers.sub.js
-// META: timeout=long
promise_test(async t => {
const wt = new WebTransport(webtransport_url('custom-response.py?:status=200'));