diff options
Diffstat (limited to 'tests/wpt')
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: <basic-shape> 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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 Binary files differindex 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 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> </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> </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> </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> </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>𝕬</mtext></math>=<span>1D56C</span></span> - <span><math class="testfont"><mtext>𝕭</mtext></math>=<span>1D56D</span></span> - <span><math class="testfont"><mtext>𝕮</mtext></math>=<span>1D56E</span></span> - <span><math class="testfont"><mtext>𝕯</mtext></math>=<span>1D56F</span></span> - <span><math class="testfont"><mtext>𝕰</mtext></math>=<span>1D570</span></span> - <span><math class="testfont"><mtext>𝕱</mtext></math>=<span>1D571</span></span> - <span><math class="testfont"><mtext>𝕲</mtext></math>=<span>1D572</span></span> - <span><math class="testfont"><mtext>𝕳</mtext></math>=<span>1D573</span></span> - <span><math class="testfont"><mtext>𝕴</mtext></math>=<span>1D574</span></span> - <span><math class="testfont"><mtext>𝕵</mtext></math>=<span>1D575</span></span><br/> - <span><math class="testfont"><mtext>𝕶</mtext></math>=<span>1D576</span></span> - <span><math class="testfont"><mtext>𝕷</mtext></math>=<span>1D577</span></span> - <span><math class="testfont"><mtext>𝕸</mtext></math>=<span>1D578</span></span> - <span><math class="testfont"><mtext>𝕹</mtext></math>=<span>1D579</span></span> - <span><math class="testfont"><mtext>𝕺</mtext></math>=<span>1D57A</span></span> - <span><math class="testfont"><mtext>𝕻</mtext></math>=<span>1D57B</span></span> - <span><math class="testfont"><mtext>𝕼</mtext></math>=<span>1D57C</span></span> - <span><math class="testfont"><mtext>𝕽</mtext></math>=<span>1D57D</span></span> - <span><math class="testfont"><mtext>𝕾</mtext></math>=<span>1D57E</span></span> - <span><math class="testfont"><mtext>𝕿</mtext></math>=<span>1D57F</span></span><br/> - <span><math class="testfont"><mtext>𝖀</mtext></math>=<span>1D580</span></span> - <span><math class="testfont"><mtext>𝖁</mtext></math>=<span>1D581</span></span> - <span><math class="testfont"><mtext>𝖂</mtext></math>=<span>1D582</span></span> - <span><math class="testfont"><mtext>𝖃</mtext></math>=<span>1D583</span></span> - <span><math class="testfont"><mtext>𝖄</mtext></math>=<span>1D584</span></span> - <span><math class="testfont"><mtext>𝖅</mtext></math>=<span>1D585</span></span> - <span><math class="testfont"><mtext>𝖆</mtext></math>=<span>1D586</span></span> - <span><math class="testfont"><mtext>𝖇</mtext></math>=<span>1D587</span></span> - <span><math class="testfont"><mtext>𝖈</mtext></math>=<span>1D588</span></span> - <span><math class="testfont"><mtext>𝖉</mtext></math>=<span>1D589</span></span><br/> - <span><math class="testfont"><mtext>𝖊</mtext></math>=<span>1D58A</span></span> - <span><math class="testfont"><mtext>𝖋</mtext></math>=<span>1D58B</span></span> - <span><math class="testfont"><mtext>𝖌</mtext></math>=<span>1D58C</span></span> - <span><math class="testfont"><mtext>𝖍</mtext></math>=<span>1D58D</span></span> - <span><math class="testfont"><mtext>𝖎</mtext></math>=<span>1D58E</span></span> - <span><math class="testfont"><mtext>𝖏</mtext></math>=<span>1D58F</span></span> - <span><math class="testfont"><mtext>𝖐</mtext></math>=<span>1D590</span></span> - <span><math class="testfont"><mtext>𝖑</mtext></math>=<span>1D591</span></span> - <span><math class="testfont"><mtext>𝖒</mtext></math>=<span>1D592</span></span> - <span><math class="testfont"><mtext>𝖓</mtext></math>=<span>1D593</span></span><br/> - <span><math class="testfont"><mtext>𝖔</mtext></math>=<span>1D594</span></span> - <span><math class="testfont"><mtext>𝖕</mtext></math>=<span>1D595</span></span> - <span><math class="testfont"><mtext>𝖖</mtext></math>=<span>1D596</span></span> - <span><math class="testfont"><mtext>𝖗</mtext></math>=<span>1D597</span></span> - <span><math class="testfont"><mtext>𝖘</mtext></math>=<span>1D598</span></span> - <span><math class="testfont"><mtext>𝖙</mtext></math>=<span>1D599</span></span> - <span><math class="testfont"><mtext>𝖚</mtext></math>=<span>1D59A</span></span> - <span><math class="testfont"><mtext>𝖛</mtext></math>=<span>1D59B</span></span> - <span><math class="testfont"><mtext>𝖜</mtext></math>=<span>1D59C</span></span> - <span><math class="testfont"><mtext>𝖝</mtext></math>=<span>1D59D</span></span><br/> - <span><math class="testfont"><mtext>𝖞</mtext></math>=<span>1D59E</span></span> - <span><math class="testfont"><mtext>𝖟</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">A</mtext></math>=<span>1D56C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">B</mtext></math>=<span>1D56D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">C</mtext></math>=<span>1D56E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">D</mtext></math>=<span>1D56F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">E</mtext></math>=<span>1D570</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">F</mtext></math>=<span>1D571</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">G</mtext></math>=<span>1D572</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">H</mtext></math>=<span>1D573</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">I</mtext></math>=<span>1D574</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">J</mtext></math>=<span>1D575</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">K</mtext></math>=<span>1D576</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">L</mtext></math>=<span>1D577</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">M</mtext></math>=<span>1D578</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">N</mtext></math>=<span>1D579</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">O</mtext></math>=<span>1D57A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">P</mtext></math>=<span>1D57B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">Q</mtext></math>=<span>1D57C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">R</mtext></math>=<span>1D57D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">S</mtext></math>=<span>1D57E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">T</mtext></math>=<span>1D57F</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">U</mtext></math>=<span>1D580</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">V</mtext></math>=<span>1D581</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">W</mtext></math>=<span>1D582</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">X</mtext></math>=<span>1D583</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">Y</mtext></math>=<span>1D584</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">Z</mtext></math>=<span>1D585</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">a</mtext></math>=<span>1D586</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">b</mtext></math>=<span>1D587</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">c</mtext></math>=<span>1D588</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">d</mtext></math>=<span>1D589</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">e</mtext></math>=<span>1D58A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">f</mtext></math>=<span>1D58B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">g</mtext></math>=<span>1D58C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">h</mtext></math>=<span>1D58D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">i</mtext></math>=<span>1D58E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">j</mtext></math>=<span>1D58F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">k</mtext></math>=<span>1D590</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">l</mtext></math>=<span>1D591</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">m</mtext></math>=<span>1D592</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">n</mtext></math>=<span>1D593</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">o</mtext></math>=<span>1D594</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">p</mtext></math>=<span>1D595</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">q</mtext></math>=<span>1D596</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">r</mtext></math>=<span>1D597</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">s</mtext></math>=<span>1D598</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">t</mtext></math>=<span>1D599</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">u</mtext></math>=<span>1D59A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">v</mtext></math>=<span>1D59B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">w</mtext></math>=<span>1D59C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">x</mtext></math>=<span>1D59D</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">y</mtext></math>=<span>1D59E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-fraktur">z</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>𝑨</mtext></math>=<span>1D468</span></span> - <span><math class="testfont"><mtext>𝑩</mtext></math>=<span>1D469</span></span> - <span><math class="testfont"><mtext>𝑪</mtext></math>=<span>1D46A</span></span> - <span><math class="testfont"><mtext>𝑫</mtext></math>=<span>1D46B</span></span> - <span><math class="testfont"><mtext>𝑬</mtext></math>=<span>1D46C</span></span> - <span><math class="testfont"><mtext>𝑭</mtext></math>=<span>1D46D</span></span> - <span><math class="testfont"><mtext>𝑮</mtext></math>=<span>1D46E</span></span> - <span><math class="testfont"><mtext>𝑯</mtext></math>=<span>1D46F</span></span> - <span><math class="testfont"><mtext>𝑰</mtext></math>=<span>1D470</span></span> - <span><math class="testfont"><mtext>𝑱</mtext></math>=<span>1D471</span></span><br/> - <span><math class="testfont"><mtext>𝑲</mtext></math>=<span>1D472</span></span> - <span><math class="testfont"><mtext>𝑳</mtext></math>=<span>1D473</span></span> - <span><math class="testfont"><mtext>𝑴</mtext></math>=<span>1D474</span></span> - <span><math class="testfont"><mtext>𝑵</mtext></math>=<span>1D475</span></span> - <span><math class="testfont"><mtext>𝑶</mtext></math>=<span>1D476</span></span> - <span><math class="testfont"><mtext>𝑷</mtext></math>=<span>1D477</span></span> - <span><math class="testfont"><mtext>𝑸</mtext></math>=<span>1D478</span></span> - <span><math class="testfont"><mtext>𝑹</mtext></math>=<span>1D479</span></span> - <span><math class="testfont"><mtext>𝑺</mtext></math>=<span>1D47A</span></span> - <span><math class="testfont"><mtext>𝑻</mtext></math>=<span>1D47B</span></span><br/> - <span><math class="testfont"><mtext>𝑼</mtext></math>=<span>1D47C</span></span> - <span><math class="testfont"><mtext>𝑽</mtext></math>=<span>1D47D</span></span> - <span><math class="testfont"><mtext>𝑾</mtext></math>=<span>1D47E</span></span> - <span><math class="testfont"><mtext>𝑿</mtext></math>=<span>1D47F</span></span> - <span><math class="testfont"><mtext>𝒀</mtext></math>=<span>1D480</span></span> - <span><math class="testfont"><mtext>𝒁</mtext></math>=<span>1D481</span></span> - <span><math class="testfont"><mtext>𝒂</mtext></math>=<span>1D482</span></span> - <span><math class="testfont"><mtext>𝒃</mtext></math>=<span>1D483</span></span> - <span><math class="testfont"><mtext>𝒄</mtext></math>=<span>1D484</span></span> - <span><math class="testfont"><mtext>𝒅</mtext></math>=<span>1D485</span></span><br/> - <span><math class="testfont"><mtext>𝒆</mtext></math>=<span>1D486</span></span> - <span><math class="testfont"><mtext>𝒇</mtext></math>=<span>1D487</span></span> - <span><math class="testfont"><mtext>𝒈</mtext></math>=<span>1D488</span></span> - <span><math class="testfont"><mtext>𝒉</mtext></math>=<span>1D489</span></span> - <span><math class="testfont"><mtext>𝒊</mtext></math>=<span>1D48A</span></span> - <span><math class="testfont"><mtext>𝒋</mtext></math>=<span>1D48B</span></span> - <span><math class="testfont"><mtext>𝒌</mtext></math>=<span>1D48C</span></span> - <span><math class="testfont"><mtext>𝒍</mtext></math>=<span>1D48D</span></span> - <span><math class="testfont"><mtext>𝒎</mtext></math>=<span>1D48E</span></span> - <span><math class="testfont"><mtext>𝒏</mtext></math>=<span>1D48F</span></span><br/> - <span><math class="testfont"><mtext>𝒐</mtext></math>=<span>1D490</span></span> - <span><math class="testfont"><mtext>𝒑</mtext></math>=<span>1D491</span></span> - <span><math class="testfont"><mtext>𝒒</mtext></math>=<span>1D492</span></span> - <span><math class="testfont"><mtext>𝒓</mtext></math>=<span>1D493</span></span> - <span><math class="testfont"><mtext>𝒔</mtext></math>=<span>1D494</span></span> - <span><math class="testfont"><mtext>𝒕</mtext></math>=<span>1D495</span></span> - <span><math class="testfont"><mtext>𝒖</mtext></math>=<span>1D496</span></span> - <span><math class="testfont"><mtext>𝒗</mtext></math>=<span>1D497</span></span> - <span><math class="testfont"><mtext>𝒘</mtext></math>=<span>1D498</span></span> - <span><math class="testfont"><mtext>𝒙</mtext></math>=<span>1D499</span></span><br/> - <span><math class="testfont"><mtext>𝒚</mtext></math>=<span>1D49A</span></span> - <span><math class="testfont"><mtext>𝒛</mtext></math>=<span>1D49B</span></span> - <span><math class="testfont"><mtext>𝜜</mtext></math>=<span>1D71C</span></span> - <span><math class="testfont"><mtext>𝜝</mtext></math>=<span>1D71D</span></span> - <span><math class="testfont"><mtext>𝜞</mtext></math>=<span>1D71E</span></span> - <span><math class="testfont"><mtext>𝜟</mtext></math>=<span>1D71F</span></span> - <span><math class="testfont"><mtext>𝜠</mtext></math>=<span>1D720</span></span> - <span><math class="testfont"><mtext>𝜡</mtext></math>=<span>1D721</span></span> - <span><math class="testfont"><mtext>𝜢</mtext></math>=<span>1D722</span></span> - <span><math class="testfont"><mtext>𝜣</mtext></math>=<span>1D723</span></span><br/> - <span><math class="testfont"><mtext>𝜤</mtext></math>=<span>1D724</span></span> - <span><math class="testfont"><mtext>𝜥</mtext></math>=<span>1D725</span></span> - <span><math class="testfont"><mtext>𝜦</mtext></math>=<span>1D726</span></span> - <span><math class="testfont"><mtext>𝜧</mtext></math>=<span>1D727</span></span> - <span><math class="testfont"><mtext>𝜨</mtext></math>=<span>1D728</span></span> - <span><math class="testfont"><mtext>𝜩</mtext></math>=<span>1D729</span></span> - <span><math class="testfont"><mtext>𝜪</mtext></math>=<span>1D72A</span></span> - <span><math class="testfont"><mtext>𝜫</mtext></math>=<span>1D72B</span></span> - <span><math class="testfont"><mtext>𝜬</mtext></math>=<span>1D72C</span></span> - <span><math class="testfont"><mtext>𝜭</mtext></math>=<span>1D72D</span></span><br/> - <span><math class="testfont"><mtext>𝜮</mtext></math>=<span>1D72E</span></span> - <span><math class="testfont"><mtext>𝜯</mtext></math>=<span>1D72F</span></span> - <span><math class="testfont"><mtext>𝜰</mtext></math>=<span>1D730</span></span> - <span><math class="testfont"><mtext>𝜱</mtext></math>=<span>1D731</span></span> - <span><math class="testfont"><mtext>𝜲</mtext></math>=<span>1D732</span></span> - <span><math class="testfont"><mtext>𝜳</mtext></math>=<span>1D733</span></span> - <span><math class="testfont"><mtext>𝜴</mtext></math>=<span>1D734</span></span> - <span><math class="testfont"><mtext>𝜵</mtext></math>=<span>1D735</span></span> - <span><math class="testfont"><mtext>𝜶</mtext></math>=<span>1D736</span></span> - <span><math class="testfont"><mtext>𝜷</mtext></math>=<span>1D737</span></span><br/> - <span><math class="testfont"><mtext>𝜸</mtext></math>=<span>1D738</span></span> - <span><math class="testfont"><mtext>𝜹</mtext></math>=<span>1D739</span></span> - <span><math class="testfont"><mtext>𝜺</mtext></math>=<span>1D73A</span></span> - <span><math class="testfont"><mtext>𝜻</mtext></math>=<span>1D73B</span></span> - <span><math class="testfont"><mtext>𝜼</mtext></math>=<span>1D73C</span></span> - <span><math class="testfont"><mtext>𝜽</mtext></math>=<span>1D73D</span></span> - <span><math class="testfont"><mtext>𝜾</mtext></math>=<span>1D73E</span></span> - <span><math class="testfont"><mtext>𝜿</mtext></math>=<span>1D73F</span></span> - <span><math class="testfont"><mtext>𝝀</mtext></math>=<span>1D740</span></span> - <span><math class="testfont"><mtext>𝝁</mtext></math>=<span>1D741</span></span><br/> - <span><math class="testfont"><mtext>𝝂</mtext></math>=<span>1D742</span></span> - <span><math class="testfont"><mtext>𝝃</mtext></math>=<span>1D743</span></span> - <span><math class="testfont"><mtext>𝝄</mtext></math>=<span>1D744</span></span> - <span><math class="testfont"><mtext>𝝅</mtext></math>=<span>1D745</span></span> - <span><math class="testfont"><mtext>𝝆</mtext></math>=<span>1D746</span></span> - <span><math class="testfont"><mtext>𝝇</mtext></math>=<span>1D747</span></span> - <span><math class="testfont"><mtext>𝝈</mtext></math>=<span>1D748</span></span> - <span><math class="testfont"><mtext>𝝉</mtext></math>=<span>1D749</span></span> - <span><math class="testfont"><mtext>𝝊</mtext></math>=<span>1D74A</span></span> - <span><math class="testfont"><mtext>𝝋</mtext></math>=<span>1D74B</span></span><br/> - <span><math class="testfont"><mtext>𝝌</mtext></math>=<span>1D74C</span></span> - <span><math class="testfont"><mtext>𝝍</mtext></math>=<span>1D74D</span></span> - <span><math class="testfont"><mtext>𝝎</mtext></math>=<span>1D74E</span></span> - <span><math class="testfont"><mtext>𝝏</mtext></math>=<span>1D74F</span></span> - <span><math class="testfont"><mtext>𝝐</mtext></math>=<span>1D750</span></span> - <span><math class="testfont"><mtext>𝝑</mtext></math>=<span>1D751</span></span> - <span><math class="testfont"><mtext>𝝒</mtext></math>=<span>1D752</span></span> - <span><math class="testfont"><mtext>𝝓</mtext></math>=<span>1D753</span></span> - <span><math class="testfont"><mtext>𝝔</mtext></math>=<span>1D754</span></span> - <span><math class="testfont"><mtext>𝝕</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">A</mtext></math>=<span>1D468</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">B</mtext></math>=<span>1D469</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">C</mtext></math>=<span>1D46A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">D</mtext></math>=<span>1D46B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">E</mtext></math>=<span>1D46C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">F</mtext></math>=<span>1D46D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">G</mtext></math>=<span>1D46E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">H</mtext></math>=<span>1D46F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">I</mtext></math>=<span>1D470</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">J</mtext></math>=<span>1D471</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">K</mtext></math>=<span>1D472</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">L</mtext></math>=<span>1D473</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">M</mtext></math>=<span>1D474</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">N</mtext></math>=<span>1D475</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">O</mtext></math>=<span>1D476</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">P</mtext></math>=<span>1D477</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Q</mtext></math>=<span>1D478</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">R</mtext></math>=<span>1D479</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">S</mtext></math>=<span>1D47A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">T</mtext></math>=<span>1D47B</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">U</mtext></math>=<span>1D47C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">V</mtext></math>=<span>1D47D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">W</mtext></math>=<span>1D47E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">X</mtext></math>=<span>1D47F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Y</mtext></math>=<span>1D480</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Z</mtext></math>=<span>1D481</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">a</mtext></math>=<span>1D482</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">b</mtext></math>=<span>1D483</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">c</mtext></math>=<span>1D484</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">d</mtext></math>=<span>1D485</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">e</mtext></math>=<span>1D486</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">f</mtext></math>=<span>1D487</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">g</mtext></math>=<span>1D488</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">h</mtext></math>=<span>1D489</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">i</mtext></math>=<span>1D48A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">j</mtext></math>=<span>1D48B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">k</mtext></math>=<span>1D48C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">l</mtext></math>=<span>1D48D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">m</mtext></math>=<span>1D48E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">n</mtext></math>=<span>1D48F</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">o</mtext></math>=<span>1D490</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">p</mtext></math>=<span>1D491</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">q</mtext></math>=<span>1D492</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">r</mtext></math>=<span>1D493</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">s</mtext></math>=<span>1D494</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">t</mtext></math>=<span>1D495</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">u</mtext></math>=<span>1D496</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">v</mtext></math>=<span>1D497</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">w</mtext></math>=<span>1D498</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">x</mtext></math>=<span>1D499</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">y</mtext></math>=<span>1D49A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">z</mtext></math>=<span>1D49B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Α</mtext></math>=<span>1D71C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Β</mtext></math>=<span>1D71D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Γ</mtext></math>=<span>1D71E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Δ</mtext></math>=<span>1D71F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ε</mtext></math>=<span>1D720</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ζ</mtext></math>=<span>1D721</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Η</mtext></math>=<span>1D722</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Θ</mtext></math>=<span>1D723</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ι</mtext></math>=<span>1D724</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Κ</mtext></math>=<span>1D725</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Λ</mtext></math>=<span>1D726</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Μ</mtext></math>=<span>1D727</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ν</mtext></math>=<span>1D728</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ξ</mtext></math>=<span>1D729</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ο</mtext></math>=<span>1D72A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Π</mtext></math>=<span>1D72B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ρ</mtext></math>=<span>1D72C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ϴ</mtext></math>=<span>1D72D</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">Σ</mtext></math>=<span>1D72E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Τ</mtext></math>=<span>1D72F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Υ</mtext></math>=<span>1D730</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Φ</mtext></math>=<span>1D731</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Χ</mtext></math>=<span>1D732</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ψ</mtext></math>=<span>1D733</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">Ω</mtext></math>=<span>1D734</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">∇</mtext></math>=<span>1D735</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">α</mtext></math>=<span>1D736</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">β</mtext></math>=<span>1D737</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">γ</mtext></math>=<span>1D738</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">δ</mtext></math>=<span>1D739</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ε</mtext></math>=<span>1D73A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ζ</mtext></math>=<span>1D73B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">η</mtext></math>=<span>1D73C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">θ</mtext></math>=<span>1D73D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ι</mtext></math>=<span>1D73E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">κ</mtext></math>=<span>1D73F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">λ</mtext></math>=<span>1D740</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">μ</mtext></math>=<span>1D741</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">ν</mtext></math>=<span>1D742</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ξ</mtext></math>=<span>1D743</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ο</mtext></math>=<span>1D744</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">π</mtext></math>=<span>1D745</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ρ</mtext></math>=<span>1D746</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ς</mtext></math>=<span>1D747</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">σ</mtext></math>=<span>1D748</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">τ</mtext></math>=<span>1D749</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">υ</mtext></math>=<span>1D74A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">φ</mtext></math>=<span>1D74B</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-italic">χ</mtext></math>=<span>1D74C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ψ</mtext></math>=<span>1D74D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ω</mtext></math>=<span>1D74E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">∂</mtext></math>=<span>1D74F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ϵ</mtext></math>=<span>1D750</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ϑ</mtext></math>=<span>1D751</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ϰ</mtext></math>=<span>1D752</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ϕ</mtext></math>=<span>1D753</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ϱ</mtext></math>=<span>1D754</span></span> - <span><math class="testfont"><mtext mathvariant="bold-italic">ϖ</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>𝐀</mtext></math>=<span>1D400</span></span> - <span><math class="testfont"><mtext>𝐁</mtext></math>=<span>1D401</span></span> - <span><math class="testfont"><mtext>𝐂</mtext></math>=<span>1D402</span></span> - <span><math class="testfont"><mtext>𝐃</mtext></math>=<span>1D403</span></span> - <span><math class="testfont"><mtext>𝐄</mtext></math>=<span>1D404</span></span> - <span><math class="testfont"><mtext>𝐅</mtext></math>=<span>1D405</span></span> - <span><math class="testfont"><mtext>𝐆</mtext></math>=<span>1D406</span></span> - <span><math class="testfont"><mtext>𝐇</mtext></math>=<span>1D407</span></span> - <span><math class="testfont"><mtext>𝐈</mtext></math>=<span>1D408</span></span> - <span><math class="testfont"><mtext>𝐉</mtext></math>=<span>1D409</span></span><br/> - <span><math class="testfont"><mtext>𝐊</mtext></math>=<span>1D40A</span></span> - <span><math class="testfont"><mtext>𝐋</mtext></math>=<span>1D40B</span></span> - <span><math class="testfont"><mtext>𝐌</mtext></math>=<span>1D40C</span></span> - <span><math class="testfont"><mtext>𝐍</mtext></math>=<span>1D40D</span></span> - <span><math class="testfont"><mtext>𝐎</mtext></math>=<span>1D40E</span></span> - <span><math class="testfont"><mtext>𝐏</mtext></math>=<span>1D40F</span></span> - <span><math class="testfont"><mtext>𝐐</mtext></math>=<span>1D410</span></span> - <span><math class="testfont"><mtext>𝐑</mtext></math>=<span>1D411</span></span> - <span><math class="testfont"><mtext>𝐒</mtext></math>=<span>1D412</span></span> - <span><math class="testfont"><mtext>𝐓</mtext></math>=<span>1D413</span></span><br/> - <span><math class="testfont"><mtext>𝐔</mtext></math>=<span>1D414</span></span> - <span><math class="testfont"><mtext>𝐕</mtext></math>=<span>1D415</span></span> - <span><math class="testfont"><mtext>𝐖</mtext></math>=<span>1D416</span></span> - <span><math class="testfont"><mtext>𝐗</mtext></math>=<span>1D417</span></span> - <span><math class="testfont"><mtext>𝐘</mtext></math>=<span>1D418</span></span> - <span><math class="testfont"><mtext>𝐙</mtext></math>=<span>1D419</span></span> - <span><math class="testfont"><mtext>𝐚</mtext></math>=<span>1D41A</span></span> - <span><math class="testfont"><mtext>𝐛</mtext></math>=<span>1D41B</span></span> - <span><math class="testfont"><mtext>𝐜</mtext></math>=<span>1D41C</span></span> - <span><math class="testfont"><mtext>𝐝</mtext></math>=<span>1D41D</span></span><br/> - <span><math class="testfont"><mtext>𝐞</mtext></math>=<span>1D41E</span></span> - <span><math class="testfont"><mtext>𝐟</mtext></math>=<span>1D41F</span></span> - <span><math class="testfont"><mtext>𝐠</mtext></math>=<span>1D420</span></span> - <span><math class="testfont"><mtext>𝐡</mtext></math>=<span>1D421</span></span> - <span><math class="testfont"><mtext>𝐢</mtext></math>=<span>1D422</span></span> - <span><math class="testfont"><mtext>𝐣</mtext></math>=<span>1D423</span></span> - <span><math class="testfont"><mtext>𝐤</mtext></math>=<span>1D424</span></span> - <span><math class="testfont"><mtext>𝐥</mtext></math>=<span>1D425</span></span> - <span><math class="testfont"><mtext>𝐦</mtext></math>=<span>1D426</span></span> - <span><math class="testfont"><mtext>𝐧</mtext></math>=<span>1D427</span></span><br/> - <span><math class="testfont"><mtext>𝐨</mtext></math>=<span>1D428</span></span> - <span><math class="testfont"><mtext>𝐩</mtext></math>=<span>1D429</span></span> - <span><math class="testfont"><mtext>𝐪</mtext></math>=<span>1D42A</span></span> - <span><math class="testfont"><mtext>𝐫</mtext></math>=<span>1D42B</span></span> - <span><math class="testfont"><mtext>𝐬</mtext></math>=<span>1D42C</span></span> - <span><math class="testfont"><mtext>𝐭</mtext></math>=<span>1D42D</span></span> - <span><math class="testfont"><mtext>𝐮</mtext></math>=<span>1D42E</span></span> - <span><math class="testfont"><mtext>𝐯</mtext></math>=<span>1D42F</span></span> - <span><math class="testfont"><mtext>𝐰</mtext></math>=<span>1D430</span></span> - <span><math class="testfont"><mtext>𝐱</mtext></math>=<span>1D431</span></span><br/> - <span><math class="testfont"><mtext>𝐲</mtext></math>=<span>1D432</span></span> - <span><math class="testfont"><mtext>𝐳</mtext></math>=<span>1D433</span></span> - <span><math class="testfont"><mtext>𝚨</mtext></math>=<span>1D6A8</span></span> - <span><math class="testfont"><mtext>𝚩</mtext></math>=<span>1D6A9</span></span> - <span><math class="testfont"><mtext>𝚪</mtext></math>=<span>1D6AA</span></span> - <span><math class="testfont"><mtext>𝚫</mtext></math>=<span>1D6AB</span></span> - <span><math class="testfont"><mtext>𝚬</mtext></math>=<span>1D6AC</span></span> - <span><math class="testfont"><mtext>𝚭</mtext></math>=<span>1D6AD</span></span> - <span><math class="testfont"><mtext>𝚮</mtext></math>=<span>1D6AE</span></span> - <span><math class="testfont"><mtext>𝚯</mtext></math>=<span>1D6AF</span></span><br/> - <span><math class="testfont"><mtext>𝚰</mtext></math>=<span>1D6B0</span></span> - <span><math class="testfont"><mtext>𝚱</mtext></math>=<span>1D6B1</span></span> - <span><math class="testfont"><mtext>𝚲</mtext></math>=<span>1D6B2</span></span> - <span><math class="testfont"><mtext>𝚳</mtext></math>=<span>1D6B3</span></span> - <span><math class="testfont"><mtext>𝚴</mtext></math>=<span>1D6B4</span></span> - <span><math class="testfont"><mtext>𝚵</mtext></math>=<span>1D6B5</span></span> - <span><math class="testfont"><mtext>𝚶</mtext></math>=<span>1D6B6</span></span> - <span><math class="testfont"><mtext>𝚷</mtext></math>=<span>1D6B7</span></span> - <span><math class="testfont"><mtext>𝚸</mtext></math>=<span>1D6B8</span></span> - <span><math class="testfont"><mtext>𝚹</mtext></math>=<span>1D6B9</span></span><br/> - <span><math class="testfont"><mtext>𝚺</mtext></math>=<span>1D6BA</span></span> - <span><math class="testfont"><mtext>𝚻</mtext></math>=<span>1D6BB</span></span> - <span><math class="testfont"><mtext>𝚼</mtext></math>=<span>1D6BC</span></span> - <span><math class="testfont"><mtext>𝚽</mtext></math>=<span>1D6BD</span></span> - <span><math class="testfont"><mtext>𝚾</mtext></math>=<span>1D6BE</span></span> - <span><math class="testfont"><mtext>𝚿</mtext></math>=<span>1D6BF</span></span> - <span><math class="testfont"><mtext>𝛀</mtext></math>=<span>1D6C0</span></span> - <span><math class="testfont"><mtext>𝛁</mtext></math>=<span>1D6C1</span></span> - <span><math class="testfont"><mtext>𝛂</mtext></math>=<span>1D6C2</span></span> - <span><math class="testfont"><mtext>𝛃</mtext></math>=<span>1D6C3</span></span><br/> - <span><math class="testfont"><mtext>𝛄</mtext></math>=<span>1D6C4</span></span> - <span><math class="testfont"><mtext>𝛅</mtext></math>=<span>1D6C5</span></span> - <span><math class="testfont"><mtext>𝛆</mtext></math>=<span>1D6C6</span></span> - <span><math class="testfont"><mtext>𝛇</mtext></math>=<span>1D6C7</span></span> - <span><math class="testfont"><mtext>𝛈</mtext></math>=<span>1D6C8</span></span> - <span><math class="testfont"><mtext>𝛉</mtext></math>=<span>1D6C9</span></span> - <span><math class="testfont"><mtext>𝛊</mtext></math>=<span>1D6CA</span></span> - <span><math class="testfont"><mtext>𝛋</mtext></math>=<span>1D6CB</span></span> - <span><math class="testfont"><mtext>𝛌</mtext></math>=<span>1D6CC</span></span> - <span><math class="testfont"><mtext>𝛍</mtext></math>=<span>1D6CD</span></span><br/> - <span><math class="testfont"><mtext>𝛎</mtext></math>=<span>1D6CE</span></span> - <span><math class="testfont"><mtext>𝛏</mtext></math>=<span>1D6CF</span></span> - <span><math class="testfont"><mtext>𝛐</mtext></math>=<span>1D6D0</span></span> - <span><math class="testfont"><mtext>𝛑</mtext></math>=<span>1D6D1</span></span> - <span><math class="testfont"><mtext>𝛒</mtext></math>=<span>1D6D2</span></span> - <span><math class="testfont"><mtext>𝛓</mtext></math>=<span>1D6D3</span></span> - <span><math class="testfont"><mtext>𝛔</mtext></math>=<span>1D6D4</span></span> - <span><math class="testfont"><mtext>𝛕</mtext></math>=<span>1D6D5</span></span> - <span><math class="testfont"><mtext>𝛖</mtext></math>=<span>1D6D6</span></span> - <span><math class="testfont"><mtext>𝛗</mtext></math>=<span>1D6D7</span></span><br/> - <span><math class="testfont"><mtext>𝛘</mtext></math>=<span>1D6D8</span></span> - <span><math class="testfont"><mtext>𝛙</mtext></math>=<span>1D6D9</span></span> - <span><math class="testfont"><mtext>𝛚</mtext></math>=<span>1D6DA</span></span> - <span><math class="testfont"><mtext>𝛛</mtext></math>=<span>1D6DB</span></span> - <span><math class="testfont"><mtext>𝛜</mtext></math>=<span>1D6DC</span></span> - <span><math class="testfont"><mtext>𝛝</mtext></math>=<span>1D6DD</span></span> - <span><math class="testfont"><mtext>𝛞</mtext></math>=<span>1D6DE</span></span> - <span><math class="testfont"><mtext>𝛟</mtext></math>=<span>1D6DF</span></span> - <span><math class="testfont"><mtext>𝛠</mtext></math>=<span>1D6E0</span></span> - <span><math class="testfont"><mtext>𝛡</mtext></math>=<span>1D6E1</span></span><br/> - <span><math class="testfont"><mtext>𝟊</mtext></math>=<span>1D7CA</span></span> - <span><math class="testfont"><mtext>𝟋</mtext></math>=<span>1D7CB</span></span> - <span><math class="testfont"><mtext>𝟎</mtext></math>=<span>1D7CE</span></span> - <span><math class="testfont"><mtext>𝟏</mtext></math>=<span>1D7CF</span></span> - <span><math class="testfont"><mtext>𝟐</mtext></math>=<span>1D7D0</span></span> - <span><math class="testfont"><mtext>𝟑</mtext></math>=<span>1D7D1</span></span> - <span><math class="testfont"><mtext>𝟒</mtext></math>=<span>1D7D2</span></span> - <span><math class="testfont"><mtext>𝟓</mtext></math>=<span>1D7D3</span></span> - <span><math class="testfont"><mtext>𝟔</mtext></math>=<span>1D7D4</span></span> - <span><math class="testfont"><mtext>𝟕</mtext></math>=<span>1D7D5</span></span><br/> - <span><math class="testfont"><mtext>𝟖</mtext></math>=<span>1D7D6</span></span> - <span><math class="testfont"><mtext>𝟗</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>𝗔</mtext></math>=<span>1D5D4</span></span> - <span><math class="testfont"><mtext>𝗕</mtext></math>=<span>1D5D5</span></span> - <span><math class="testfont"><mtext>𝗖</mtext></math>=<span>1D5D6</span></span> - <span><math class="testfont"><mtext>𝗗</mtext></math>=<span>1D5D7</span></span> - <span><math class="testfont"><mtext>𝗘</mtext></math>=<span>1D5D8</span></span> - <span><math class="testfont"><mtext>𝗙</mtext></math>=<span>1D5D9</span></span> - <span><math class="testfont"><mtext>𝗚</mtext></math>=<span>1D5DA</span></span> - <span><math class="testfont"><mtext>𝗛</mtext></math>=<span>1D5DB</span></span> - <span><math class="testfont"><mtext>𝗜</mtext></math>=<span>1D5DC</span></span> - <span><math class="testfont"><mtext>𝗝</mtext></math>=<span>1D5DD</span></span><br/> - <span><math class="testfont"><mtext>𝗞</mtext></math>=<span>1D5DE</span></span> - <span><math class="testfont"><mtext>𝗟</mtext></math>=<span>1D5DF</span></span> - <span><math class="testfont"><mtext>𝗠</mtext></math>=<span>1D5E0</span></span> - <span><math class="testfont"><mtext>𝗡</mtext></math>=<span>1D5E1</span></span> - <span><math class="testfont"><mtext>𝗢</mtext></math>=<span>1D5E2</span></span> - <span><math class="testfont"><mtext>𝗣</mtext></math>=<span>1D5E3</span></span> - <span><math class="testfont"><mtext>𝗤</mtext></math>=<span>1D5E4</span></span> - <span><math class="testfont"><mtext>𝗥</mtext></math>=<span>1D5E5</span></span> - <span><math class="testfont"><mtext>𝗦</mtext></math>=<span>1D5E6</span></span> - <span><math class="testfont"><mtext>𝗧</mtext></math>=<span>1D5E7</span></span><br/> - <span><math class="testfont"><mtext>𝗨</mtext></math>=<span>1D5E8</span></span> - <span><math class="testfont"><mtext>𝗩</mtext></math>=<span>1D5E9</span></span> - <span><math class="testfont"><mtext>𝗪</mtext></math>=<span>1D5EA</span></span> - <span><math class="testfont"><mtext>𝗫</mtext></math>=<span>1D5EB</span></span> - <span><math class="testfont"><mtext>𝗬</mtext></math>=<span>1D5EC</span></span> - <span><math class="testfont"><mtext>𝗭</mtext></math>=<span>1D5ED</span></span> - <span><math class="testfont"><mtext>𝗮</mtext></math>=<span>1D5EE</span></span> - <span><math class="testfont"><mtext>𝗯</mtext></math>=<span>1D5EF</span></span> - <span><math class="testfont"><mtext>𝗰</mtext></math>=<span>1D5F0</span></span> - <span><math class="testfont"><mtext>𝗱</mtext></math>=<span>1D5F1</span></span><br/> - <span><math class="testfont"><mtext>𝗲</mtext></math>=<span>1D5F2</span></span> - <span><math class="testfont"><mtext>𝗳</mtext></math>=<span>1D5F3</span></span> - <span><math class="testfont"><mtext>𝗴</mtext></math>=<span>1D5F4</span></span> - <span><math class="testfont"><mtext>𝗵</mtext></math>=<span>1D5F5</span></span> - <span><math class="testfont"><mtext>𝗶</mtext></math>=<span>1D5F6</span></span> - <span><math class="testfont"><mtext>𝗷</mtext></math>=<span>1D5F7</span></span> - <span><math class="testfont"><mtext>𝗸</mtext></math>=<span>1D5F8</span></span> - <span><math class="testfont"><mtext>𝗹</mtext></math>=<span>1D5F9</span></span> - <span><math class="testfont"><mtext>𝗺</mtext></math>=<span>1D5FA</span></span> - <span><math class="testfont"><mtext>𝗻</mtext></math>=<span>1D5FB</span></span><br/> - <span><math class="testfont"><mtext>𝗼</mtext></math>=<span>1D5FC</span></span> - <span><math class="testfont"><mtext>𝗽</mtext></math>=<span>1D5FD</span></span> - <span><math class="testfont"><mtext>𝗾</mtext></math>=<span>1D5FE</span></span> - <span><math class="testfont"><mtext>𝗿</mtext></math>=<span>1D5FF</span></span> - <span><math class="testfont"><mtext>𝘀</mtext></math>=<span>1D600</span></span> - <span><math class="testfont"><mtext>𝘁</mtext></math>=<span>1D601</span></span> - <span><math class="testfont"><mtext>𝘂</mtext></math>=<span>1D602</span></span> - <span><math class="testfont"><mtext>𝘃</mtext></math>=<span>1D603</span></span> - <span><math class="testfont"><mtext>𝘄</mtext></math>=<span>1D604</span></span> - <span><math class="testfont"><mtext>𝘅</mtext></math>=<span>1D605</span></span><br/> - <span><math class="testfont"><mtext>𝘆</mtext></math>=<span>1D606</span></span> - <span><math class="testfont"><mtext>𝘇</mtext></math>=<span>1D607</span></span> - <span><math class="testfont"><mtext>𝝖</mtext></math>=<span>1D756</span></span> - <span><math class="testfont"><mtext>𝝗</mtext></math>=<span>1D757</span></span> - <span><math class="testfont"><mtext>𝝘</mtext></math>=<span>1D758</span></span> - <span><math class="testfont"><mtext>𝝙</mtext></math>=<span>1D759</span></span> - <span><math class="testfont"><mtext>𝝚</mtext></math>=<span>1D75A</span></span> - <span><math class="testfont"><mtext>𝝛</mtext></math>=<span>1D75B</span></span> - <span><math class="testfont"><mtext>𝝜</mtext></math>=<span>1D75C</span></span> - <span><math class="testfont"><mtext>𝝝</mtext></math>=<span>1D75D</span></span><br/> - <span><math class="testfont"><mtext>𝝞</mtext></math>=<span>1D75E</span></span> - <span><math class="testfont"><mtext>𝝟</mtext></math>=<span>1D75F</span></span> - <span><math class="testfont"><mtext>𝝠</mtext></math>=<span>1D760</span></span> - <span><math class="testfont"><mtext>𝝡</mtext></math>=<span>1D761</span></span> - <span><math class="testfont"><mtext>𝝢</mtext></math>=<span>1D762</span></span> - <span><math class="testfont"><mtext>𝝣</mtext></math>=<span>1D763</span></span> - <span><math class="testfont"><mtext>𝝤</mtext></math>=<span>1D764</span></span> - <span><math class="testfont"><mtext>𝝥</mtext></math>=<span>1D765</span></span> - <span><math class="testfont"><mtext>𝝦</mtext></math>=<span>1D766</span></span> - <span><math class="testfont"><mtext>𝝧</mtext></math>=<span>1D767</span></span><br/> - <span><math class="testfont"><mtext>𝝨</mtext></math>=<span>1D768</span></span> - <span><math class="testfont"><mtext>𝝩</mtext></math>=<span>1D769</span></span> - <span><math class="testfont"><mtext>𝝪</mtext></math>=<span>1D76A</span></span> - <span><math class="testfont"><mtext>𝝫</mtext></math>=<span>1D76B</span></span> - <span><math class="testfont"><mtext>𝝬</mtext></math>=<span>1D76C</span></span> - <span><math class="testfont"><mtext>𝝭</mtext></math>=<span>1D76D</span></span> - <span><math class="testfont"><mtext>𝝮</mtext></math>=<span>1D76E</span></span> - <span><math class="testfont"><mtext>𝝯</mtext></math>=<span>1D76F</span></span> - <span><math class="testfont"><mtext>𝝰</mtext></math>=<span>1D770</span></span> - <span><math class="testfont"><mtext>𝝱</mtext></math>=<span>1D771</span></span><br/> - <span><math class="testfont"><mtext>𝝲</mtext></math>=<span>1D772</span></span> - <span><math class="testfont"><mtext>𝝳</mtext></math>=<span>1D773</span></span> - <span><math class="testfont"><mtext>𝝴</mtext></math>=<span>1D774</span></span> - <span><math class="testfont"><mtext>𝝵</mtext></math>=<span>1D775</span></span> - <span><math class="testfont"><mtext>𝝶</mtext></math>=<span>1D776</span></span> - <span><math class="testfont"><mtext>𝝷</mtext></math>=<span>1D777</span></span> - <span><math class="testfont"><mtext>𝝸</mtext></math>=<span>1D778</span></span> - <span><math class="testfont"><mtext>𝝹</mtext></math>=<span>1D779</span></span> - <span><math class="testfont"><mtext>𝝺</mtext></math>=<span>1D77A</span></span> - <span><math class="testfont"><mtext>𝝻</mtext></math>=<span>1D77B</span></span><br/> - <span><math class="testfont"><mtext>𝝼</mtext></math>=<span>1D77C</span></span> - <span><math class="testfont"><mtext>𝝽</mtext></math>=<span>1D77D</span></span> - <span><math class="testfont"><mtext>𝝾</mtext></math>=<span>1D77E</span></span> - <span><math class="testfont"><mtext>𝝿</mtext></math>=<span>1D77F</span></span> - <span><math class="testfont"><mtext>𝞀</mtext></math>=<span>1D780</span></span> - <span><math class="testfont"><mtext>𝞁</mtext></math>=<span>1D781</span></span> - <span><math class="testfont"><mtext>𝞂</mtext></math>=<span>1D782</span></span> - <span><math class="testfont"><mtext>𝞃</mtext></math>=<span>1D783</span></span> - <span><math class="testfont"><mtext>𝞄</mtext></math>=<span>1D784</span></span> - <span><math class="testfont"><mtext>𝞅</mtext></math>=<span>1D785</span></span><br/> - <span><math class="testfont"><mtext>𝞆</mtext></math>=<span>1D786</span></span> - <span><math class="testfont"><mtext>𝞇</mtext></math>=<span>1D787</span></span> - <span><math class="testfont"><mtext>𝞈</mtext></math>=<span>1D788</span></span> - <span><math class="testfont"><mtext>𝞉</mtext></math>=<span>1D789</span></span> - <span><math class="testfont"><mtext>𝞊</mtext></math>=<span>1D78A</span></span> - <span><math class="testfont"><mtext>𝞋</mtext></math>=<span>1D78B</span></span> - <span><math class="testfont"><mtext>𝞌</mtext></math>=<span>1D78C</span></span> - <span><math class="testfont"><mtext>𝞍</mtext></math>=<span>1D78D</span></span> - <span><math class="testfont"><mtext>𝞎</mtext></math>=<span>1D78E</span></span> - <span><math class="testfont"><mtext>𝞏</mtext></math>=<span>1D78F</span></span><br/> - <span><math class="testfont"><mtext>𝟬</mtext></math>=<span>1D7EC</span></span> - <span><math class="testfont"><mtext>𝟭</mtext></math>=<span>1D7ED</span></span> - <span><math class="testfont"><mtext>𝟮</mtext></math>=<span>1D7EE</span></span> - <span><math class="testfont"><mtext>𝟯</mtext></math>=<span>1D7EF</span></span> - <span><math class="testfont"><mtext>𝟰</mtext></math>=<span>1D7F0</span></span> - <span><math class="testfont"><mtext>𝟱</mtext></math>=<span>1D7F1</span></span> - <span><math class="testfont"><mtext>𝟲</mtext></math>=<span>1D7F2</span></span> - <span><math class="testfont"><mtext>𝟳</mtext></math>=<span>1D7F3</span></span> - <span><math class="testfont"><mtext>𝟴</mtext></math>=<span>1D7F4</span></span> - <span><math class="testfont"><mtext>𝟵</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">A</mtext></math>=<span>1D5D4</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">B</mtext></math>=<span>1D5D5</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">C</mtext></math>=<span>1D5D6</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">D</mtext></math>=<span>1D5D7</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">E</mtext></math>=<span>1D5D8</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">F</mtext></math>=<span>1D5D9</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">G</mtext></math>=<span>1D5DA</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">H</mtext></math>=<span>1D5DB</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">I</mtext></math>=<span>1D5DC</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">J</mtext></math>=<span>1D5DD</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">K</mtext></math>=<span>1D5DE</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">L</mtext></math>=<span>1D5DF</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">M</mtext></math>=<span>1D5E0</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">N</mtext></math>=<span>1D5E1</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">O</mtext></math>=<span>1D5E2</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">P</mtext></math>=<span>1D5E3</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Q</mtext></math>=<span>1D5E4</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">R</mtext></math>=<span>1D5E5</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">S</mtext></math>=<span>1D5E6</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">T</mtext></math>=<span>1D5E7</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">U</mtext></math>=<span>1D5E8</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">V</mtext></math>=<span>1D5E9</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">W</mtext></math>=<span>1D5EA</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">X</mtext></math>=<span>1D5EB</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Y</mtext></math>=<span>1D5EC</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Z</mtext></math>=<span>1D5ED</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">a</mtext></math>=<span>1D5EE</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">b</mtext></math>=<span>1D5EF</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">c</mtext></math>=<span>1D5F0</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">d</mtext></math>=<span>1D5F1</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">e</mtext></math>=<span>1D5F2</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">f</mtext></math>=<span>1D5F3</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">g</mtext></math>=<span>1D5F4</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">h</mtext></math>=<span>1D5F5</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">i</mtext></math>=<span>1D5F6</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">j</mtext></math>=<span>1D5F7</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">k</mtext></math>=<span>1D5F8</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">l</mtext></math>=<span>1D5F9</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">m</mtext></math>=<span>1D5FA</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">n</mtext></math>=<span>1D5FB</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">o</mtext></math>=<span>1D5FC</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">p</mtext></math>=<span>1D5FD</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">q</mtext></math>=<span>1D5FE</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">r</mtext></math>=<span>1D5FF</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">s</mtext></math>=<span>1D600</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">t</mtext></math>=<span>1D601</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">u</mtext></math>=<span>1D602</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">v</mtext></math>=<span>1D603</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">w</mtext></math>=<span>1D604</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">x</mtext></math>=<span>1D605</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">y</mtext></math>=<span>1D606</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">z</mtext></math>=<span>1D607</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Α</mtext></math>=<span>1D756</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Β</mtext></math>=<span>1D757</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Γ</mtext></math>=<span>1D758</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Δ</mtext></math>=<span>1D759</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ε</mtext></math>=<span>1D75A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ζ</mtext></math>=<span>1D75B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Η</mtext></math>=<span>1D75C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Θ</mtext></math>=<span>1D75D</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ι</mtext></math>=<span>1D75E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Κ</mtext></math>=<span>1D75F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Λ</mtext></math>=<span>1D760</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Μ</mtext></math>=<span>1D761</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ν</mtext></math>=<span>1D762</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ξ</mtext></math>=<span>1D763</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ο</mtext></math>=<span>1D764</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Π</mtext></math>=<span>1D765</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ρ</mtext></math>=<span>1D766</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ϴ</mtext></math>=<span>1D767</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Σ</mtext></math>=<span>1D768</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Τ</mtext></math>=<span>1D769</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Υ</mtext></math>=<span>1D76A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Φ</mtext></math>=<span>1D76B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Χ</mtext></math>=<span>1D76C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ψ</mtext></math>=<span>1D76D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">Ω</mtext></math>=<span>1D76E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">∇</mtext></math>=<span>1D76F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">α</mtext></math>=<span>1D770</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">β</mtext></math>=<span>1D771</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">γ</mtext></math>=<span>1D772</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">δ</mtext></math>=<span>1D773</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ε</mtext></math>=<span>1D774</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ζ</mtext></math>=<span>1D775</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">η</mtext></math>=<span>1D776</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">θ</mtext></math>=<span>1D777</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ι</mtext></math>=<span>1D778</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">κ</mtext></math>=<span>1D779</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">λ</mtext></math>=<span>1D77A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">μ</mtext></math>=<span>1D77B</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ν</mtext></math>=<span>1D77C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ξ</mtext></math>=<span>1D77D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ο</mtext></math>=<span>1D77E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">π</mtext></math>=<span>1D77F</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ρ</mtext></math>=<span>1D780</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ς</mtext></math>=<span>1D781</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">σ</mtext></math>=<span>1D782</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">τ</mtext></math>=<span>1D783</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">υ</mtext></math>=<span>1D784</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">φ</mtext></math>=<span>1D785</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">χ</mtext></math>=<span>1D786</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ψ</mtext></math>=<span>1D787</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ω</mtext></math>=<span>1D788</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">∂</mtext></math>=<span>1D789</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ϵ</mtext></math>=<span>1D78A</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ϑ</mtext></math>=<span>1D78B</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ϰ</mtext></math>=<span>1D78C</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ϕ</mtext></math>=<span>1D78D</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ϱ</mtext></math>=<span>1D78E</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">ϖ</mtext></math>=<span>1D78F</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">0</mtext></math>=<span>1D7EC</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">1</mtext></math>=<span>1D7ED</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">2</mtext></math>=<span>1D7EE</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">3</mtext></math>=<span>1D7EF</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">4</mtext></math>=<span>1D7F0</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">5</mtext></math>=<span>1D7F1</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">6</mtext></math>=<span>1D7F2</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">7</mtext></math>=<span>1D7F3</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">8</mtext></math>=<span>1D7F4</span></span> - <span><math class="testfont"><mtext mathvariant="bold-sans-serif">9</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>𝓐</mtext></math>=<span>1D4D0</span></span> - <span><math class="testfont"><mtext>𝓑</mtext></math>=<span>1D4D1</span></span> - <span><math class="testfont"><mtext>𝓒</mtext></math>=<span>1D4D2</span></span> - <span><math class="testfont"><mtext>𝓓</mtext></math>=<span>1D4D3</span></span> - <span><math class="testfont"><mtext>𝓔</mtext></math>=<span>1D4D4</span></span> - <span><math class="testfont"><mtext>𝓕</mtext></math>=<span>1D4D5</span></span> - <span><math class="testfont"><mtext>𝓖</mtext></math>=<span>1D4D6</span></span> - <span><math class="testfont"><mtext>𝓗</mtext></math>=<span>1D4D7</span></span> - <span><math class="testfont"><mtext>𝓘</mtext></math>=<span>1D4D8</span></span> - <span><math class="testfont"><mtext>𝓙</mtext></math>=<span>1D4D9</span></span><br/> - <span><math class="testfont"><mtext>𝓚</mtext></math>=<span>1D4DA</span></span> - <span><math class="testfont"><mtext>𝓛</mtext></math>=<span>1D4DB</span></span> - <span><math class="testfont"><mtext>𝓜</mtext></math>=<span>1D4DC</span></span> - <span><math class="testfont"><mtext>𝓝</mtext></math>=<span>1D4DD</span></span> - <span><math class="testfont"><mtext>𝓞</mtext></math>=<span>1D4DE</span></span> - <span><math class="testfont"><mtext>𝓟</mtext></math>=<span>1D4DF</span></span> - <span><math class="testfont"><mtext>𝓠</mtext></math>=<span>1D4E0</span></span> - <span><math class="testfont"><mtext>𝓡</mtext></math>=<span>1D4E1</span></span> - <span><math class="testfont"><mtext>𝓢</mtext></math>=<span>1D4E2</span></span> - <span><math class="testfont"><mtext>𝓣</mtext></math>=<span>1D4E3</span></span><br/> - <span><math class="testfont"><mtext>𝓤</mtext></math>=<span>1D4E4</span></span> - <span><math class="testfont"><mtext>𝓥</mtext></math>=<span>1D4E5</span></span> - <span><math class="testfont"><mtext>𝓦</mtext></math>=<span>1D4E6</span></span> - <span><math class="testfont"><mtext>𝓧</mtext></math>=<span>1D4E7</span></span> - <span><math class="testfont"><mtext>𝓨</mtext></math>=<span>1D4E8</span></span> - <span><math class="testfont"><mtext>𝓩</mtext></math>=<span>1D4E9</span></span> - <span><math class="testfont"><mtext>𝓪</mtext></math>=<span>1D4EA</span></span> - <span><math class="testfont"><mtext>𝓫</mtext></math>=<span>1D4EB</span></span> - <span><math class="testfont"><mtext>𝓬</mtext></math>=<span>1D4EC</span></span> - <span><math class="testfont"><mtext>𝓭</mtext></math>=<span>1D4ED</span></span><br/> - <span><math class="testfont"><mtext>𝓮</mtext></math>=<span>1D4EE</span></span> - <span><math class="testfont"><mtext>𝓯</mtext></math>=<span>1D4EF</span></span> - <span><math class="testfont"><mtext>𝓰</mtext></math>=<span>1D4F0</span></span> - <span><math class="testfont"><mtext>𝓱</mtext></math>=<span>1D4F1</span></span> - <span><math class="testfont"><mtext>𝓲</mtext></math>=<span>1D4F2</span></span> - <span><math class="testfont"><mtext>𝓳</mtext></math>=<span>1D4F3</span></span> - <span><math class="testfont"><mtext>𝓴</mtext></math>=<span>1D4F4</span></span> - <span><math class="testfont"><mtext>𝓵</mtext></math>=<span>1D4F5</span></span> - <span><math class="testfont"><mtext>𝓶</mtext></math>=<span>1D4F6</span></span> - <span><math class="testfont"><mtext>𝓷</mtext></math>=<span>1D4F7</span></span><br/> - <span><math class="testfont"><mtext>𝓸</mtext></math>=<span>1D4F8</span></span> - <span><math class="testfont"><mtext>𝓹</mtext></math>=<span>1D4F9</span></span> - <span><math class="testfont"><mtext>𝓺</mtext></math>=<span>1D4FA</span></span> - <span><math class="testfont"><mtext>𝓻</mtext></math>=<span>1D4FB</span></span> - <span><math class="testfont"><mtext>𝓼</mtext></math>=<span>1D4FC</span></span> - <span><math class="testfont"><mtext>𝓽</mtext></math>=<span>1D4FD</span></span> - <span><math class="testfont"><mtext>𝓾</mtext></math>=<span>1D4FE</span></span> - <span><math class="testfont"><mtext>𝓿</mtext></math>=<span>1D4FF</span></span> - <span><math class="testfont"><mtext>𝔀</mtext></math>=<span>1D500</span></span> - <span><math class="testfont"><mtext>𝔁</mtext></math>=<span>1D501</span></span><br/> - <span><math class="testfont"><mtext>𝔂</mtext></math>=<span>1D502</span></span> - <span><math class="testfont"><mtext>𝔃</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">A</mtext></math>=<span>1D4D0</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">B</mtext></math>=<span>1D4D1</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">C</mtext></math>=<span>1D4D2</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">D</mtext></math>=<span>1D4D3</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">E</mtext></math>=<span>1D4D4</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">F</mtext></math>=<span>1D4D5</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">G</mtext></math>=<span>1D4D6</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">H</mtext></math>=<span>1D4D7</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">I</mtext></math>=<span>1D4D8</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">J</mtext></math>=<span>1D4D9</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-script">K</mtext></math>=<span>1D4DA</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">L</mtext></math>=<span>1D4DB</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">M</mtext></math>=<span>1D4DC</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">N</mtext></math>=<span>1D4DD</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">O</mtext></math>=<span>1D4DE</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">P</mtext></math>=<span>1D4DF</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">Q</mtext></math>=<span>1D4E0</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">R</mtext></math>=<span>1D4E1</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">S</mtext></math>=<span>1D4E2</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">T</mtext></math>=<span>1D4E3</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-script">U</mtext></math>=<span>1D4E4</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">V</mtext></math>=<span>1D4E5</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">W</mtext></math>=<span>1D4E6</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">X</mtext></math>=<span>1D4E7</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">Y</mtext></math>=<span>1D4E8</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">Z</mtext></math>=<span>1D4E9</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">a</mtext></math>=<span>1D4EA</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">b</mtext></math>=<span>1D4EB</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">c</mtext></math>=<span>1D4EC</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">d</mtext></math>=<span>1D4ED</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-script">e</mtext></math>=<span>1D4EE</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">f</mtext></math>=<span>1D4EF</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">g</mtext></math>=<span>1D4F0</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">h</mtext></math>=<span>1D4F1</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">i</mtext></math>=<span>1D4F2</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">j</mtext></math>=<span>1D4F3</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">k</mtext></math>=<span>1D4F4</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">l</mtext></math>=<span>1D4F5</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">m</mtext></math>=<span>1D4F6</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">n</mtext></math>=<span>1D4F7</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-script">o</mtext></math>=<span>1D4F8</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">p</mtext></math>=<span>1D4F9</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">q</mtext></math>=<span>1D4FA</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">r</mtext></math>=<span>1D4FB</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">s</mtext></math>=<span>1D4FC</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">t</mtext></math>=<span>1D4FD</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">u</mtext></math>=<span>1D4FE</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">v</mtext></math>=<span>1D4FF</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">w</mtext></math>=<span>1D500</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">x</mtext></math>=<span>1D501</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold-script">y</mtext></math>=<span>1D502</span></span> - <span><math class="testfont"><mtext mathvariant="bold-script">z</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">A</mtext></math>=<span>1D400</span></span> - <span><math class="testfont"><mtext mathvariant="bold">B</mtext></math>=<span>1D401</span></span> - <span><math class="testfont"><mtext mathvariant="bold">C</mtext></math>=<span>1D402</span></span> - <span><math class="testfont"><mtext mathvariant="bold">D</mtext></math>=<span>1D403</span></span> - <span><math class="testfont"><mtext mathvariant="bold">E</mtext></math>=<span>1D404</span></span> - <span><math class="testfont"><mtext mathvariant="bold">F</mtext></math>=<span>1D405</span></span> - <span><math class="testfont"><mtext mathvariant="bold">G</mtext></math>=<span>1D406</span></span> - <span><math class="testfont"><mtext mathvariant="bold">H</mtext></math>=<span>1D407</span></span> - <span><math class="testfont"><mtext mathvariant="bold">I</mtext></math>=<span>1D408</span></span> - <span><math class="testfont"><mtext mathvariant="bold">J</mtext></math>=<span>1D409</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">K</mtext></math>=<span>1D40A</span></span> - <span><math class="testfont"><mtext mathvariant="bold">L</mtext></math>=<span>1D40B</span></span> - <span><math class="testfont"><mtext mathvariant="bold">M</mtext></math>=<span>1D40C</span></span> - <span><math class="testfont"><mtext mathvariant="bold">N</mtext></math>=<span>1D40D</span></span> - <span><math class="testfont"><mtext mathvariant="bold">O</mtext></math>=<span>1D40E</span></span> - <span><math class="testfont"><mtext mathvariant="bold">P</mtext></math>=<span>1D40F</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Q</mtext></math>=<span>1D410</span></span> - <span><math class="testfont"><mtext mathvariant="bold">R</mtext></math>=<span>1D411</span></span> - <span><math class="testfont"><mtext mathvariant="bold">S</mtext></math>=<span>1D412</span></span> - <span><math class="testfont"><mtext mathvariant="bold">T</mtext></math>=<span>1D413</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">U</mtext></math>=<span>1D414</span></span> - <span><math class="testfont"><mtext mathvariant="bold">V</mtext></math>=<span>1D415</span></span> - <span><math class="testfont"><mtext mathvariant="bold">W</mtext></math>=<span>1D416</span></span> - <span><math class="testfont"><mtext mathvariant="bold">X</mtext></math>=<span>1D417</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Y</mtext></math>=<span>1D418</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Z</mtext></math>=<span>1D419</span></span> - <span><math class="testfont"><mtext mathvariant="bold">a</mtext></math>=<span>1D41A</span></span> - <span><math class="testfont"><mtext mathvariant="bold">b</mtext></math>=<span>1D41B</span></span> - <span><math class="testfont"><mtext mathvariant="bold">c</mtext></math>=<span>1D41C</span></span> - <span><math class="testfont"><mtext mathvariant="bold">d</mtext></math>=<span>1D41D</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">e</mtext></math>=<span>1D41E</span></span> - <span><math class="testfont"><mtext mathvariant="bold">f</mtext></math>=<span>1D41F</span></span> - <span><math class="testfont"><mtext mathvariant="bold">g</mtext></math>=<span>1D420</span></span> - <span><math class="testfont"><mtext mathvariant="bold">h</mtext></math>=<span>1D421</span></span> - <span><math class="testfont"><mtext mathvariant="bold">i</mtext></math>=<span>1D422</span></span> - <span><math class="testfont"><mtext mathvariant="bold">j</mtext></math>=<span>1D423</span></span> - <span><math class="testfont"><mtext mathvariant="bold">k</mtext></math>=<span>1D424</span></span> - <span><math class="testfont"><mtext mathvariant="bold">l</mtext></math>=<span>1D425</span></span> - <span><math class="testfont"><mtext mathvariant="bold">m</mtext></math>=<span>1D426</span></span> - <span><math class="testfont"><mtext mathvariant="bold">n</mtext></math>=<span>1D427</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">o</mtext></math>=<span>1D428</span></span> - <span><math class="testfont"><mtext mathvariant="bold">p</mtext></math>=<span>1D429</span></span> - <span><math class="testfont"><mtext mathvariant="bold">q</mtext></math>=<span>1D42A</span></span> - <span><math class="testfont"><mtext mathvariant="bold">r</mtext></math>=<span>1D42B</span></span> - <span><math class="testfont"><mtext mathvariant="bold">s</mtext></math>=<span>1D42C</span></span> - <span><math class="testfont"><mtext mathvariant="bold">t</mtext></math>=<span>1D42D</span></span> - <span><math class="testfont"><mtext mathvariant="bold">u</mtext></math>=<span>1D42E</span></span> - <span><math class="testfont"><mtext mathvariant="bold">v</mtext></math>=<span>1D42F</span></span> - <span><math class="testfont"><mtext mathvariant="bold">w</mtext></math>=<span>1D430</span></span> - <span><math class="testfont"><mtext mathvariant="bold">x</mtext></math>=<span>1D431</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">y</mtext></math>=<span>1D432</span></span> - <span><math class="testfont"><mtext mathvariant="bold">z</mtext></math>=<span>1D433</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Α</mtext></math>=<span>1D6A8</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Β</mtext></math>=<span>1D6A9</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Γ</mtext></math>=<span>1D6AA</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Δ</mtext></math>=<span>1D6AB</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Ε</mtext></math>=<span>1D6AC</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Ζ</mtext></math>=<span>1D6AD</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Η</mtext></math>=<span>1D6AE</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Θ</mtext></math>=<span>1D6AF</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">Ι</mtext></math>=<span>1D6B0</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Κ</mtext></math>=<span>1D6B1</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Λ</mtext></math>=<span>1D6B2</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Μ</mtext></math>=<span>1D6B3</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Ν</mtext></math>=<span>1D6B4</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Ξ</mtext></math>=<span>1D6B5</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Ο</mtext></math>=<span>1D6B6</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Π</mtext></math>=<span>1D6B7</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Ρ</mtext></math>=<span>1D6B8</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ϴ</mtext></math>=<span>1D6B9</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">Σ</mtext></math>=<span>1D6BA</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Τ</mtext></math>=<span>1D6BB</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Υ</mtext></math>=<span>1D6BC</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Φ</mtext></math>=<span>1D6BD</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Χ</mtext></math>=<span>1D6BE</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Ψ</mtext></math>=<span>1D6BF</span></span> - <span><math class="testfont"><mtext mathvariant="bold">Ω</mtext></math>=<span>1D6C0</span></span> - <span><math class="testfont"><mtext mathvariant="bold">∇</mtext></math>=<span>1D6C1</span></span> - <span><math class="testfont"><mtext mathvariant="bold">α</mtext></math>=<span>1D6C2</span></span> - <span><math class="testfont"><mtext mathvariant="bold">β</mtext></math>=<span>1D6C3</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">γ</mtext></math>=<span>1D6C4</span></span> - <span><math class="testfont"><mtext mathvariant="bold">δ</mtext></math>=<span>1D6C5</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ε</mtext></math>=<span>1D6C6</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ζ</mtext></math>=<span>1D6C7</span></span> - <span><math class="testfont"><mtext mathvariant="bold">η</mtext></math>=<span>1D6C8</span></span> - <span><math class="testfont"><mtext mathvariant="bold">θ</mtext></math>=<span>1D6C9</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ι</mtext></math>=<span>1D6CA</span></span> - <span><math class="testfont"><mtext mathvariant="bold">κ</mtext></math>=<span>1D6CB</span></span> - <span><math class="testfont"><mtext mathvariant="bold">λ</mtext></math>=<span>1D6CC</span></span> - <span><math class="testfont"><mtext mathvariant="bold">μ</mtext></math>=<span>1D6CD</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">ν</mtext></math>=<span>1D6CE</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ξ</mtext></math>=<span>1D6CF</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ο</mtext></math>=<span>1D6D0</span></span> - <span><math class="testfont"><mtext mathvariant="bold">π</mtext></math>=<span>1D6D1</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ρ</mtext></math>=<span>1D6D2</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ς</mtext></math>=<span>1D6D3</span></span> - <span><math class="testfont"><mtext mathvariant="bold">σ</mtext></math>=<span>1D6D4</span></span> - <span><math class="testfont"><mtext mathvariant="bold">τ</mtext></math>=<span>1D6D5</span></span> - <span><math class="testfont"><mtext mathvariant="bold">υ</mtext></math>=<span>1D6D6</span></span> - <span><math class="testfont"><mtext mathvariant="bold">φ</mtext></math>=<span>1D6D7</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">χ</mtext></math>=<span>1D6D8</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ψ</mtext></math>=<span>1D6D9</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ω</mtext></math>=<span>1D6DA</span></span> - <span><math class="testfont"><mtext mathvariant="bold">∂</mtext></math>=<span>1D6DB</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ϵ</mtext></math>=<span>1D6DC</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ϑ</mtext></math>=<span>1D6DD</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ϰ</mtext></math>=<span>1D6DE</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ϕ</mtext></math>=<span>1D6DF</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ϱ</mtext></math>=<span>1D6E0</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ϖ</mtext></math>=<span>1D6E1</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">Ϝ</mtext></math>=<span>1D7CA</span></span> - <span><math class="testfont"><mtext mathvariant="bold">ϝ</mtext></math>=<span>1D7CB</span></span> - <span><math class="testfont"><mtext mathvariant="bold">0</mtext></math>=<span>1D7CE</span></span> - <span><math class="testfont"><mtext mathvariant="bold">1</mtext></math>=<span>1D7CF</span></span> - <span><math class="testfont"><mtext mathvariant="bold">2</mtext></math>=<span>1D7D0</span></span> - <span><math class="testfont"><mtext mathvariant="bold">3</mtext></math>=<span>1D7D1</span></span> - <span><math class="testfont"><mtext mathvariant="bold">4</mtext></math>=<span>1D7D2</span></span> - <span><math class="testfont"><mtext mathvariant="bold">5</mtext></math>=<span>1D7D3</span></span> - <span><math class="testfont"><mtext mathvariant="bold">6</mtext></math>=<span>1D7D4</span></span> - <span><math class="testfont"><mtext mathvariant="bold">7</mtext></math>=<span>1D7D5</span></span><br/> - <span><math class="testfont"><mtext mathvariant="bold">8</mtext></math>=<span>1D7D6</span></span> - <span><math class="testfont"><mtext mathvariant="bold">9</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>𝕬</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-bold"> - <mtext>𝐀</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-bold-italic"> - <mtext>𝑨</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-bold-sans-serif"> - <mtext>𝗔</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-bold-script"> - <mtext>𝓐</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-double-struck"> - <mtext>𝔸</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-fraktur"> - <mtext>𝔄</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-initial"> - <mtext>𞸰</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-italic"> - <mtext>𝐴</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-looped"> - <mtext>𞺐</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-monospace"> - <mtext>𝙰</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-sans-serif-bold-italic"> - <mtext>𝘼</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-sans-serif"> - <mtext>𝖠</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-sans-serif-italic"> - <mtext>𝘈</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-script"> - <mtext>𝒜</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-stretched"> - <mtext>𞹰</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-tailed"> - <mtext>𞹒</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">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-bold"> - <mtext mathvariant="BoLd">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-bold-italic"> - <mtext mathvariant="BoLd-iTaLiC">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-bold-sans-serif"> - <mtext mathvariant="BoLd-sAnS-SeRiF">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-bold-script"> - <mtext mathvariant="BoLd-sCrIpT">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-double-struck"> - <mtext mathvariant="DoUbLe-sTrUcK">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-fraktur"> - <mtext mathvariant="FrAkTuR">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-initial"> - <mtext mathvariant="InItIaL">ف</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-italic"> - <mtext mathvariant="ItAlIc">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-looped"> - <mtext mathvariant="LoOpEd">ف</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-monospace"> - <mtext mathvariant="MoNoSpAcE">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-sans-serif-bold-italic"> - <mtext mathvariant="SaNs-sErIf-bOlD-ItAlIc">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-sans-serif"> - <mtext mathvariant="SaNs-sErIf">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-sans-serif-italic"> - <mtext mathvariant="SaNs-sErIf-iTaLiC">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-script"> - <mtext mathvariant="ScRiPt">A</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-stretched"> - <mtext mathvariant="StReTcHeD">ف</mtext> - </math> - </p> - <p> - <math style="font-family: mathvariant-tailed"> - <mtext mathvariant="TaIlEd">ق</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">𞺡</span> respectively rendered with italic, bold and bold-italic style:</p> - <p><math class="testfont"><mtext class="italic">𞺡</mtext></math></p> - <p><math class="testfont"><mtext class="bold">𞺡</mtext></math></p> - <p><math class="testfont"><mtext class="bold italic">𞺡</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">𞺡</span> respectively rendered with italic, bold and bold-italic style:</p> - <p><math class="testfont"><mtext mathvariant="double-struck" class="italic">ب</mtext></math></p> - <p><math class="testfont"><mtext mathvariant="double-struck" class="bold">ب</mtext></math></p> - <p><math class="testfont"><mtext mathvariant="double-struck" class="bold italic">ب</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>𝔸</mtext></math>=<span>1D538</span></span> - <span><math class="testfont"><mtext>𝔹</mtext></math>=<span>1D539</span></span> - <span><math class="testfont"><mtext>ℂ</mtext></math>=<span>02102</span></span> - <span><math class="testfont"><mtext>𝔻</mtext></math>=<span>1D53B</span></span> - <span><math class="testfont"><mtext>𝔼</mtext></math>=<span>1D53C</span></span> - <span><math class="testfont"><mtext>𝔽</mtext></math>=<span>1D53D</span></span> - <span><math class="testfont"><mtext>𝔾</mtext></math>=<span>1D53E</span></span> - <span><math class="testfont"><mtext>ℍ</mtext></math>=<span>0210D</span></span> - <span><math class="testfont"><mtext>𝕀</mtext></math>=<span>1D540</span></span> - <span><math class="testfont"><mtext>𝕁</mtext></math>=<span>1D541</span></span><br/> - <span><math class="testfont"><mtext>𝕂</mtext></math>=<span>1D542</span></span> - <span><math class="testfont"><mtext>𝕃</mtext></math>=<span>1D543</span></span> - <span><math class="testfont"><mtext>𝕄</mtext></math>=<span>1D544</span></span> - <span><math class="testfont"><mtext>ℕ</mtext></math>=<span>02115</span></span> - <span><math class="testfont"><mtext>𝕆</mtext></math>=<span>1D546</span></span> - <span><math class="testfont"><mtext>ℙ</mtext></math>=<span>02119</span></span> - <span><math class="testfont"><mtext>ℚ</mtext></math>=<span>0211A</span></span> - <span><math class="testfont"><mtext>ℝ</mtext></math>=<span>0211D</span></span> - <span><math class="testfont"><mtext>𝕊</mtext></math>=<span>1D54A</span></span> - <span><math class="testfont"><mtext>𝕋</mtext></math>=<span>1D54B</span></span><br/> - <span><math class="testfont"><mtext>𝕌</mtext></math>=<span>1D54C</span></span> - <span><math class="testfont"><mtext>𝕍</mtext></math>=<span>1D54D</span></span> - <span><math class="testfont"><mtext>𝕎</mtext></math>=<span>1D54E</span></span> - <span><math class="testfont"><mtext>𝕏</mtext></math>=<span>1D54F</span></span> - <span><math class="testfont"><mtext>𝕐</mtext></math>=<span>1D550</span></span> - <span><math class="testfont"><mtext>ℤ</mtext></math>=<span>02124</span></span> - <span><math class="testfont"><mtext>𝕒</mtext></math>=<span>1D552</span></span> - <span><math class="testfont"><mtext>𝕓</mtext></math>=<span>1D553</span></span> - <span><math class="testfont"><mtext>𝕔</mtext></math>=<span>1D554</span></span> - <span><math class="testfont"><mtext>𝕕</mtext></math>=<span>1D555</span></span><br/> - <span><math class="testfont"><mtext>𝕖</mtext></math>=<span>1D556</span></span> - <span><math class="testfont"><mtext>𝕗</mtext></math>=<span>1D557</span></span> - <span><math class="testfont"><mtext>𝕘</mtext></math>=<span>1D558</span></span> - <span><math class="testfont"><mtext>𝕙</mtext></math>=<span>1D559</span></span> - <span><math class="testfont"><mtext>𝕚</mtext></math>=<span>1D55A</span></span> - <span><math class="testfont"><mtext>𝕛</mtext></math>=<span>1D55B</span></span> - <span><math class="testfont"><mtext>𝕜</mtext></math>=<span>1D55C</span></span> - <span><math class="testfont"><mtext>𝕝</mtext></math>=<span>1D55D</span></span> - <span><math class="testfont"><mtext>𝕞</mtext></math>=<span>1D55E</span></span> - <span><math class="testfont"><mtext>𝕟</mtext></math>=<span>1D55F</span></span><br/> - <span><math class="testfont"><mtext>𝕠</mtext></math>=<span>1D560</span></span> - <span><math class="testfont"><mtext>𝕡</mtext></math>=<span>1D561</span></span> - <span><math class="testfont"><mtext>𝕢</mtext></math>=<span>1D562</span></span> - <span><math class="testfont"><mtext>𝕣</mtext></math>=<span>1D563</span></span> - <span><math class="testfont"><mtext>𝕤</mtext></math>=<span>1D564</span></span> - <span><math class="testfont"><mtext>𝕥</mtext></math>=<span>1D565</span></span> - <span><math class="testfont"><mtext>𝕦</mtext></math>=<span>1D566</span></span> - <span><math class="testfont"><mtext>𝕧</mtext></math>=<span>1D567</span></span> - <span><math class="testfont"><mtext>𝕨</mtext></math>=<span>1D568</span></span> - <span><math class="testfont"><mtext>𝕩</mtext></math>=<span>1D569</span></span><br/> - <span><math class="testfont"><mtext>𝕪</mtext></math>=<span>1D56A</span></span> - <span><math class="testfont"><mtext>𝕫</mtext></math>=<span>1D56B</span></span> - <span><math class="testfont"><mtext>𝟘</mtext></math>=<span>1D7D8</span></span> - <span><math class="testfont"><mtext>𝟙</mtext></math>=<span>1D7D9</span></span> - <span><math class="testfont"><mtext>𝟚</mtext></math>=<span>1D7DA</span></span> - <span><math class="testfont"><mtext>𝟛</mtext></math>=<span>1D7DB</span></span> - <span><math class="testfont"><mtext>𝟜</mtext></math>=<span>1D7DC</span></span> - <span><math class="testfont"><mtext>𝟝</mtext></math>=<span>1D7DD</span></span> - <span><math class="testfont"><mtext>𝟞</mtext></math>=<span>1D7DE</span></span> - <span><math class="testfont"><mtext>𝟟</mtext></math>=<span>1D7DF</span></span><br/> - <span><math class="testfont"><mtext>𝟠</mtext></math>=<span>1D7E0</span></span> - <span><math class="testfont"><mtext>𝟡</mtext></math>=<span>1D7E1</span></span> - <span><math class="testfont"><mtext>𞺡</mtext></math>=<span>1EEA1</span></span> - <span><math class="testfont"><mtext>𞺢</mtext></math>=<span>1EEA2</span></span> - <span><math class="testfont"><mtext>𞺣</mtext></math>=<span>1EEA3</span></span> - <span><math class="testfont"><mtext>𞺥</mtext></math>=<span>1EEA5</span></span> - <span><math class="testfont"><mtext>𞺦</mtext></math>=<span>1EEA6</span></span> - <span><math class="testfont"><mtext>𞺧</mtext></math>=<span>1EEA7</span></span> - <span><math class="testfont"><mtext>𞺨</mtext></math>=<span>1EEA8</span></span> - <span><math class="testfont"><mtext>𞺩</mtext></math>=<span>1EEA9</span></span><br/> - <span><math class="testfont"><mtext>𞺫</mtext></math>=<span>1EEAB</span></span> - <span><math class="testfont"><mtext>𞺬</mtext></math>=<span>1EEAC</span></span> - <span><math class="testfont"><mtext>𞺭</mtext></math>=<span>1EEAD</span></span> - <span><math class="testfont"><mtext>𞺮</mtext></math>=<span>1EEAE</span></span> - <span><math class="testfont"><mtext>𞺯</mtext></math>=<span>1EEAF</span></span> - <span><math class="testfont"><mtext>𞺰</mtext></math>=<span>1EEB0</span></span> - <span><math class="testfont"><mtext>𞺱</mtext></math>=<span>1EEB1</span></span> - <span><math class="testfont"><mtext>𞺲</mtext></math>=<span>1EEB2</span></span> - <span><math class="testfont"><mtext>𞺳</mtext></math>=<span>1EEB3</span></span> - <span><math class="testfont"><mtext>𞺴</mtext></math>=<span>1EEB4</span></span><br/> - <span><math class="testfont"><mtext>𞺵</mtext></math>=<span>1EEB5</span></span> - <span><math class="testfont"><mtext>𞺶</mtext></math>=<span>1EEB6</span></span> - <span><math class="testfont"><mtext>𞺷</mtext></math>=<span>1EEB7</span></span> - <span><math class="testfont"><mtext>𞺸</mtext></math>=<span>1EEB8</span></span> - <span><math class="testfont"><mtext>𞺹</mtext></math>=<span>1EEB9</span></span> - <span><math class="testfont"><mtext>𞺺</mtext></math>=<span>1EEBA</span></span> - <span><math class="testfont"><mtext>𞺻</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">A</mtext></math>=<span>1D538</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">B</mtext></math>=<span>1D539</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">C</mtext></math>=<span>02102</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">D</mtext></math>=<span>1D53B</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">E</mtext></math>=<span>1D53C</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">F</mtext></math>=<span>1D53D</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">G</mtext></math>=<span>1D53E</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">H</mtext></math>=<span>0210D</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">I</mtext></math>=<span>1D540</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">J</mtext></math>=<span>1D541</span></span><br/> - <span><math class="testfont"><mtext mathvariant="double-struck">K</mtext></math>=<span>1D542</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">L</mtext></math>=<span>1D543</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">M</mtext></math>=<span>1D544</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">N</mtext></math>=<span>02115</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">O</mtext></math>=<span>1D546</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">P</mtext></math>=<span>02119</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">Q</mtext></math>=<span>0211A</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">R</mtext></math>=<span>0211D</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">S</mtext></math>=<span>1D54A</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">T</mtext></math>=<span>1D54B</span></span><br/> - <span><math class="testfont"><mtext mathvariant="double-struck">U</mtext></math>=<span>1D54C</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">V</mtext></math>=<span>1D54D</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">W</mtext></math>=<span>1D54E</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">X</mtext></math>=<span>1D54F</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">Y</mtext></math>=<span>1D550</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">Z</mtext></math>=<span>02124</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">a</mtext></math>=<span>1D552</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">b</mtext></math>=<span>1D553</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">c</mtext></math>=<span>1D554</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">d</mtext></math>=<span>1D555</span></span><br/> - <span><math class="testfont"><mtext mathvariant="double-struck">e</mtext></math>=<span>1D556</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">f</mtext></math>=<span>1D557</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">g</mtext></math>=<span>1D558</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">h</mtext></math>=<span>1D559</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">i</mtext></math>=<span>1D55A</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">j</mtext></math>=<span>1D55B</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">k</mtext></math>=<span>1D55C</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">l</mtext></math>=<span>1D55D</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">m</mtext></math>=<span>1D55E</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">n</mtext></math>=<span>1D55F</span></span><br/> - <span><math class="testfont"><mtext mathvariant="double-struck">o</mtext></math>=<span>1D560</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">p</mtext></math>=<span>1D561</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">q</mtext></math>=<span>1D562</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">r</mtext></math>=<span>1D563</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">s</mtext></math>=<span>1D564</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">t</mtext></math>=<span>1D565</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">u</mtext></math>=<span>1D566</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">v</mtext></math>=<span>1D567</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">w</mtext></math>=<span>1D568</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">x</mtext></math>=<span>1D569</span></span><br/> - <span><math class="testfont"><mtext mathvariant="double-struck">y</mtext></math>=<span>1D56A</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">z</mtext></math>=<span>1D56B</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">0</mtext></math>=<span>1D7D8</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">1</mtext></math>=<span>1D7D9</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">2</mtext></math>=<span>1D7DA</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">3</mtext></math>=<span>1D7DB</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">4</mtext></math>=<span>1D7DC</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">5</mtext></math>=<span>1D7DD</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">6</mtext></math>=<span>1D7DE</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">7</mtext></math>=<span>1D7DF</span></span><br/> - <span><math class="testfont"><mtext mathvariant="double-struck">8</mtext></math>=<span>1D7E0</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">9</mtext></math>=<span>1D7E1</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ب</mtext></math>=<span>1EEA1</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ج</mtext></math>=<span>1EEA2</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">د</mtext></math>=<span>1EEA3</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">و</mtext></math>=<span>1EEA5</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ز</mtext></math>=<span>1EEA6</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ح</mtext></math>=<span>1EEA7</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ط</mtext></math>=<span>1EEA8</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ي</mtext></math>=<span>1EEA9</span></span><br/> - <span><math class="testfont"><mtext mathvariant="double-struck">ل</mtext></math>=<span>1EEAB</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">م</mtext></math>=<span>1EEAC</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ن</mtext></math>=<span>1EEAD</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">س</mtext></math>=<span>1EEAE</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ع</mtext></math>=<span>1EEAF</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ف</mtext></math>=<span>1EEB0</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ص</mtext></math>=<span>1EEB1</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ق</mtext></math>=<span>1EEB2</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ر</mtext></math>=<span>1EEB3</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ش</mtext></math>=<span>1EEB4</span></span><br/> - <span><math class="testfont"><mtext mathvariant="double-struck">ت</mtext></math>=<span>1EEB5</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ث</mtext></math>=<span>1EEB6</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">خ</mtext></math>=<span>1EEB7</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ذ</mtext></math>=<span>1EEB8</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ض</mtext></math>=<span>1EEB9</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">ظ</mtext></math>=<span>1EEBA</span></span> - <span><math class="testfont"><mtext mathvariant="double-struck">غ</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>𝔄</mtext></math>=<span>1D504</span></span> - <span><math class="testfont"><mtext>𝔅</mtext></math>=<span>1D505</span></span> - <span><math class="testfont"><mtext>ℭ</mtext></math>=<span>0212D</span></span> - <span><math class="testfont"><mtext>𝔇</mtext></math>=<span>1D507</span></span> - <span><math class="testfont"><mtext>𝔈</mtext></math>=<span>1D508</span></span> - <span><math class="testfont"><mtext>𝔉</mtext></math>=<span>1D509</span></span> - <span><math class="testfont"><mtext>𝔊</mtext></math>=<span>1D50A</span></span> - <span><math class="testfont"><mtext>ℌ</mtext></math>=<span>0210C</span></span> - <span><math class="testfont"><mtext>ℑ</mtext></math>=<span>02111</span></span> - <span><math class="testfont"><mtext>𝔍</mtext></math>=<span>1D50D</span></span><br/> - <span><math class="testfont"><mtext>𝔎</mtext></math>=<span>1D50E</span></span> - <span><math class="testfont"><mtext>𝔏</mtext></math>=<span>1D50F</span></span> - <span><math class="testfont"><mtext>𝔐</mtext></math>=<span>1D510</span></span> - <span><math class="testfont"><mtext>𝔑</mtext></math>=<span>1D511</span></span> - <span><math class="testfont"><mtext>𝔒</mtext></math>=<span>1D512</span></span> - <span><math class="testfont"><mtext>𝔓</mtext></math>=<span>1D513</span></span> - <span><math class="testfont"><mtext>𝔔</mtext></math>=<span>1D514</span></span> - <span><math class="testfont"><mtext>ℜ</mtext></math>=<span>0211C</span></span> - <span><math class="testfont"><mtext>𝔖</mtext></math>=<span>1D516</span></span> - <span><math class="testfont"><mtext>𝔗</mtext></math>=<span>1D517</span></span><br/> - <span><math class="testfont"><mtext>𝔘</mtext></math>=<span>1D518</span></span> - <span><math class="testfont"><mtext>𝔙</mtext></math>=<span>1D519</span></span> - <span><math class="testfont"><mtext>𝔚</mtext></math>=<span>1D51A</span></span> - <span><math class="testfont"><mtext>𝔛</mtext></math>=<span>1D51B</span></span> - <span><math class="testfont"><mtext>𝔜</mtext></math>=<span>1D51C</span></span> - <span><math class="testfont"><mtext>ℨ</mtext></math>=<span>02128</span></span> - <span><math class="testfont"><mtext>𝔞</mtext></math>=<span>1D51E</span></span> - <span><math class="testfont"><mtext>𝔟</mtext></math>=<span>1D51F</span></span> - <span><math class="testfont"><mtext>𝔠</mtext></math>=<span>1D520</span></span> - <span><math class="testfont"><mtext>𝔡</mtext></math>=<span>1D521</span></span><br/> - <span><math class="testfont"><mtext>𝔢</mtext></math>=<span>1D522</span></span> - <span><math class="testfont"><mtext>𝔣</mtext></math>=<span>1D523</span></span> - <span><math class="testfont"><mtext>𝔤</mtext></math>=<span>1D524</span></span> - <span><math class="testfont"><mtext>𝔥</mtext></math>=<span>1D525</span></span> - <span><math class="testfont"><mtext>𝔦</mtext></math>=<span>1D526</span></span> - <span><math class="testfont"><mtext>𝔧</mtext></math>=<span>1D527</span></span> - <span><math class="testfont"><mtext>𝔨</mtext></math>=<span>1D528</span></span> - <span><math class="testfont"><mtext>𝔩</mtext></math>=<span>1D529</span></span> - <span><math class="testfont"><mtext>𝔪</mtext></math>=<span>1D52A</span></span> - <span><math class="testfont"><mtext>𝔫</mtext></math>=<span>1D52B</span></span><br/> - <span><math class="testfont"><mtext>𝔬</mtext></math>=<span>1D52C</span></span> - <span><math class="testfont"><mtext>𝔭</mtext></math>=<span>1D52D</span></span> - <span><math class="testfont"><mtext>𝔮</mtext></math>=<span>1D52E</span></span> - <span><math class="testfont"><mtext>𝔯</mtext></math>=<span>1D52F</span></span> - <span><math class="testfont"><mtext>𝔰</mtext></math>=<span>1D530</span></span> - <span><math class="testfont"><mtext>𝔱</mtext></math>=<span>1D531</span></span> - <span><math class="testfont"><mtext>𝔲</mtext></math>=<span>1D532</span></span> - <span><math class="testfont"><mtext>𝔳</mtext></math>=<span>1D533</span></span> - <span><math class="testfont"><mtext>𝔴</mtext></math>=<span>1D534</span></span> - <span><math class="testfont"><mtext>𝔵</mtext></math>=<span>1D535</span></span><br/> - <span><math class="testfont"><mtext>𝔶</mtext></math>=<span>1D536</span></span> - <span><math class="testfont"><mtext>𝔷</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">A</mtext></math>=<span>1D504</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">B</mtext></math>=<span>1D505</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">C</mtext></math>=<span>0212D</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">D</mtext></math>=<span>1D507</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">E</mtext></math>=<span>1D508</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">F</mtext></math>=<span>1D509</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">G</mtext></math>=<span>1D50A</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">H</mtext></math>=<span>0210C</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">I</mtext></math>=<span>02111</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">J</mtext></math>=<span>1D50D</span></span><br/> - <span><math class="testfont"><mtext mathvariant="fraktur">K</mtext></math>=<span>1D50E</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">L</mtext></math>=<span>1D50F</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">M</mtext></math>=<span>1D510</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">N</mtext></math>=<span>1D511</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">O</mtext></math>=<span>1D512</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">P</mtext></math>=<span>1D513</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">Q</mtext></math>=<span>1D514</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">R</mtext></math>=<span>0211C</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">S</mtext></math>=<span>1D516</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">T</mtext></math>=<span>1D517</span></span><br/> - <span><math class="testfont"><mtext mathvariant="fraktur">U</mtext></math>=<span>1D518</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">V</mtext></math>=<span>1D519</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">W</mtext></math>=<span>1D51A</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">X</mtext></math>=<span>1D51B</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">Y</mtext></math>=<span>1D51C</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">Z</mtext></math>=<span>02128</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">a</mtext></math>=<span>1D51E</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">b</mtext></math>=<span>1D51F</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">c</mtext></math>=<span>1D520</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">d</mtext></math>=<span>1D521</span></span><br/> - <span><math class="testfont"><mtext mathvariant="fraktur">e</mtext></math>=<span>1D522</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">f</mtext></math>=<span>1D523</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">g</mtext></math>=<span>1D524</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">h</mtext></math>=<span>1D525</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">i</mtext></math>=<span>1D526</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">j</mtext></math>=<span>1D527</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">k</mtext></math>=<span>1D528</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">l</mtext></math>=<span>1D529</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">m</mtext></math>=<span>1D52A</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">n</mtext></math>=<span>1D52B</span></span><br/> - <span><math class="testfont"><mtext mathvariant="fraktur">o</mtext></math>=<span>1D52C</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">p</mtext></math>=<span>1D52D</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">q</mtext></math>=<span>1D52E</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">r</mtext></math>=<span>1D52F</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">s</mtext></math>=<span>1D530</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">t</mtext></math>=<span>1D531</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">u</mtext></math>=<span>1D532</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">v</mtext></math>=<span>1D533</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">w</mtext></math>=<span>1D534</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">x</mtext></math>=<span>1D535</span></span><br/> - <span><math class="testfont"><mtext mathvariant="fraktur">y</mtext></math>=<span>1D536</span></span> - <span><math class="testfont"><mtext mathvariant="fraktur">z</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>𞸡</mtext></math>=<span>1EE21</span></span> - <span><math class="testfont"><mtext>𞸢</mtext></math>=<span>1EE22</span></span> - <span><math class="testfont"><mtext>𞸤</mtext></math>=<span>1EE24</span></span> - <span><math class="testfont"><mtext>𞸧</mtext></math>=<span>1EE27</span></span> - <span><math class="testfont"><mtext>𞸩</mtext></math>=<span>1EE29</span></span> - <span><math class="testfont"><mtext>𞸪</mtext></math>=<span>1EE2A</span></span> - <span><math class="testfont"><mtext>𞸫</mtext></math>=<span>1EE2B</span></span> - <span><math class="testfont"><mtext>𞸬</mtext></math>=<span>1EE2C</span></span> - <span><math class="testfont"><mtext>𞸭</mtext></math>=<span>1EE2D</span></span> - <span><math class="testfont"><mtext>𞸮</mtext></math>=<span>1EE2E</span></span><br/> - <span><math class="testfont"><mtext>𞸯</mtext></math>=<span>1EE2F</span></span> - <span><math class="testfont"><mtext>𞸰</mtext></math>=<span>1EE30</span></span> - <span><math class="testfont"><mtext>𞸱</mtext></math>=<span>1EE31</span></span> - <span><math class="testfont"><mtext>𞸲</mtext></math>=<span>1EE32</span></span> - <span><math class="testfont"><mtext>𞸴</mtext></math>=<span>1EE34</span></span> - <span><math class="testfont"><mtext>𞸵</mtext></math>=<span>1EE35</span></span> - <span><math class="testfont"><mtext>𞸶</mtext></math>=<span>1EE36</span></span> - <span><math class="testfont"><mtext>𞸷</mtext></math>=<span>1EE37</span></span> - <span><math class="testfont"><mtext>𞸹</mtext></math>=<span>1EE39</span></span> - <span><math class="testfont"><mtext>𞸻</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">ب</mtext></math>=<span>1EE21</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ج</mtext></math>=<span>1EE22</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ه</mtext></math>=<span>1EE24</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ح</mtext></math>=<span>1EE27</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ي</mtext></math>=<span>1EE29</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ك</mtext></math>=<span>1EE2A</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ل</mtext></math>=<span>1EE2B</span></span> - <span><math class="testfont"><mtext mathvariant="initial">م</mtext></math>=<span>1EE2C</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ن</mtext></math>=<span>1EE2D</span></span> - <span><math class="testfont"><mtext mathvariant="initial">س</mtext></math>=<span>1EE2E</span></span><br/> - <span><math class="testfont"><mtext mathvariant="initial">ع</mtext></math>=<span>1EE2F</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ف</mtext></math>=<span>1EE30</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ص</mtext></math>=<span>1EE31</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ق</mtext></math>=<span>1EE32</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ش</mtext></math>=<span>1EE34</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ت</mtext></math>=<span>1EE35</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ث</mtext></math>=<span>1EE36</span></span> - <span><math class="testfont"><mtext mathvariant="initial">خ</mtext></math>=<span>1EE37</span></span> - <span><math class="testfont"><mtext mathvariant="initial">ض</mtext></math>=<span>1EE39</span></span> - <span><math class="testfont"><mtext mathvariant="initial">غ</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>𝐴</mtext></math>=<span>1D434</span></span> - <span><math class="testfont"><mtext>𝐵</mtext></math>=<span>1D435</span></span> - <span><math class="testfont"><mtext>𝐶</mtext></math>=<span>1D436</span></span> - <span><math class="testfont"><mtext>𝐷</mtext></math>=<span>1D437</span></span> - <span><math class="testfont"><mtext>𝐸</mtext></math>=<span>1D438</span></span> - <span><math class="testfont"><mtext>𝐹</mtext></math>=<span>1D439</span></span> - <span><math class="testfont"><mtext>𝐺</mtext></math>=<span>1D43A</span></span> - <span><math class="testfont"><mtext>𝐻</mtext></math>=<span>1D43B</span></span> - <span><math class="testfont"><mtext>𝐼</mtext></math>=<span>1D43C</span></span> - <span><math class="testfont"><mtext>𝐽</mtext></math>=<span>1D43D</span></span><br/> - <span><math class="testfont"><mtext>𝐾</mtext></math>=<span>1D43E</span></span> - <span><math class="testfont"><mtext>𝐿</mtext></math>=<span>1D43F</span></span> - <span><math class="testfont"><mtext>𝑀</mtext></math>=<span>1D440</span></span> - <span><math class="testfont"><mtext>𝑁</mtext></math>=<span>1D441</span></span> - <span><math class="testfont"><mtext>𝑂</mtext></math>=<span>1D442</span></span> - <span><math class="testfont"><mtext>𝑃</mtext></math>=<span>1D443</span></span> - <span><math class="testfont"><mtext>𝑄</mtext></math>=<span>1D444</span></span> - <span><math class="testfont"><mtext>𝑅</mtext></math>=<span>1D445</span></span> - <span><math class="testfont"><mtext>𝑆</mtext></math>=<span>1D446</span></span> - <span><math class="testfont"><mtext>𝑇</mtext></math>=<span>1D447</span></span><br/> - <span><math class="testfont"><mtext>𝑈</mtext></math>=<span>1D448</span></span> - <span><math class="testfont"><mtext>𝑉</mtext></math>=<span>1D449</span></span> - <span><math class="testfont"><mtext>𝑊</mtext></math>=<span>1D44A</span></span> - <span><math class="testfont"><mtext>𝑋</mtext></math>=<span>1D44B</span></span> - <span><math class="testfont"><mtext>𝑌</mtext></math>=<span>1D44C</span></span> - <span><math class="testfont"><mtext>𝑍</mtext></math>=<span>1D44D</span></span> - <span><math class="testfont"><mtext>𝑎</mtext></math>=<span>1D44E</span></span> - <span><math class="testfont"><mtext>𝑏</mtext></math>=<span>1D44F</span></span> - <span><math class="testfont"><mtext>𝑐</mtext></math>=<span>1D450</span></span> - <span><math class="testfont"><mtext>𝑑</mtext></math>=<span>1D451</span></span><br/> - <span><math class="testfont"><mtext>𝑒</mtext></math>=<span>1D452</span></span> - <span><math class="testfont"><mtext>𝑓</mtext></math>=<span>1D453</span></span> - <span><math class="testfont"><mtext>𝑔</mtext></math>=<span>1D454</span></span> - <span><math class="testfont"><mtext>ℎ</mtext></math>=<span>0210E</span></span> - <span><math class="testfont"><mtext>𝑖</mtext></math>=<span>1D456</span></span> - <span><math class="testfont"><mtext>𝑗</mtext></math>=<span>1D457</span></span> - <span><math class="testfont"><mtext>𝑘</mtext></math>=<span>1D458</span></span> - <span><math class="testfont"><mtext>𝑙</mtext></math>=<span>1D459</span></span> - <span><math class="testfont"><mtext>𝑚</mtext></math>=<span>1D45A</span></span> - <span><math class="testfont"><mtext>𝑛</mtext></math>=<span>1D45B</span></span><br/> - <span><math class="testfont"><mtext>𝑜</mtext></math>=<span>1D45C</span></span> - <span><math class="testfont"><mtext>𝑝</mtext></math>=<span>1D45D</span></span> - <span><math class="testfont"><mtext>𝑞</mtext></math>=<span>1D45E</span></span> - <span><math class="testfont"><mtext>𝑟</mtext></math>=<span>1D45F</span></span> - <span><math class="testfont"><mtext>𝑠</mtext></math>=<span>1D460</span></span> - <span><math class="testfont"><mtext>𝑡</mtext></math>=<span>1D461</span></span> - <span><math class="testfont"><mtext>𝑢</mtext></math>=<span>1D462</span></span> - <span><math class="testfont"><mtext>𝑣</mtext></math>=<span>1D463</span></span> - <span><math class="testfont"><mtext>𝑤</mtext></math>=<span>1D464</span></span> - <span><math class="testfont"><mtext>𝑥</mtext></math>=<span>1D465</span></span><br/> - <span><math class="testfont"><mtext>𝑦</mtext></math>=<span>1D466</span></span> - <span><math class="testfont"><mtext>𝑧</mtext></math>=<span>1D467</span></span> - <span><math class="testfont"><mtext>𝚤</mtext></math>=<span>1D6A4</span></span> - <span><math class="testfont"><mtext>𝚥</mtext></math>=<span>1D6A5</span></span> - <span><math class="testfont"><mtext>𝛢</mtext></math>=<span>1D6E2</span></span> - <span><math class="testfont"><mtext>𝛣</mtext></math>=<span>1D6E3</span></span> - <span><math class="testfont"><mtext>𝛤</mtext></math>=<span>1D6E4</span></span> - <span><math class="testfont"><mtext>𝛥</mtext></math>=<span>1D6E5</span></span> - <span><math class="testfont"><mtext>𝛦</mtext></math>=<span>1D6E6</span></span> - <span><math class="testfont"><mtext>𝛧</mtext></math>=<span>1D6E7</span></span><br/> - <span><math class="testfont"><mtext>𝛨</mtext></math>=<span>1D6E8</span></span> - <span><math class="testfont"><mtext>𝛩</mtext></math>=<span>1D6E9</span></span> - <span><math class="testfont"><mtext>𝛪</mtext></math>=<span>1D6EA</span></span> - <span><math class="testfont"><mtext>𝛫</mtext></math>=<span>1D6EB</span></span> - <span><math class="testfont"><mtext>𝛬</mtext></math>=<span>1D6EC</span></span> - <span><math class="testfont"><mtext>𝛭</mtext></math>=<span>1D6ED</span></span> - <span><math class="testfont"><mtext>𝛮</mtext></math>=<span>1D6EE</span></span> - <span><math class="testfont"><mtext>𝛯</mtext></math>=<span>1D6EF</span></span> - <span><math class="testfont"><mtext>𝛰</mtext></math>=<span>1D6F0</span></span> - <span><math class="testfont"><mtext>𝛱</mtext></math>=<span>1D6F1</span></span><br/> - <span><math class="testfont"><mtext>𝛲</mtext></math>=<span>1D6F2</span></span> - <span><math class="testfont"><mtext>𝛳</mtext></math>=<span>1D6F3</span></span> - <span><math class="testfont"><mtext>𝛴</mtext></math>=<span>1D6F4</span></span> - <span><math class="testfont"><mtext>𝛵</mtext></math>=<span>1D6F5</span></span> - <span><math class="testfont"><mtext>𝛶</mtext></math>=<span>1D6F6</span></span> - <span><math class="testfont"><mtext>𝛷</mtext></math>=<span>1D6F7</span></span> - <span><math class="testfont"><mtext>𝛸</mtext></math>=<span>1D6F8</span></span> - <span><math class="testfont"><mtext>𝛹</mtext></math>=<span>1D6F9</span></span> - <span><math class="testfont"><mtext>𝛺</mtext></math>=<span>1D6FA</span></span> - <span><math class="testfont"><mtext>𝛻</mtext></math>=<span>1D6FB</span></span><br/> - <span><math class="testfont"><mtext>𝛼</mtext></math>=<span>1D6FC</span></span> - <span><math class="testfont"><mtext>𝛽</mtext></math>=<span>1D6FD</span></span> - <span><math class="testfont"><mtext>𝛾</mtext></math>=<span>1D6FE</span></span> - <span><math class="testfont"><mtext>𝛿</mtext></math>=<span>1D6FF</span></span> - <span><math class="testfont"><mtext>𝜀</mtext></math>=<span>1D700</span></span> - <span><math class="testfont"><mtext>𝜁</mtext></math>=<span>1D701</span></span> - <span><math class="testfont"><mtext>𝜂</mtext></math>=<span>1D702</span></span> - <span><math class="testfont"><mtext>𝜃</mtext></math>=<span>1D703</span></span> - <span><math class="testfont"><mtext>𝜄</mtext></math>=<span>1D704</span></span> - <span><math class="testfont"><mtext>𝜅</mtext></math>=<span>1D705</span></span><br/> - <span><math class="testfont"><mtext>𝜆</mtext></math>=<span>1D706</span></span> - <span><math class="testfont"><mtext>𝜇</mtext></math>=<span>1D707</span></span> - <span><math class="testfont"><mtext>𝜈</mtext></math>=<span>1D708</span></span> - <span><math class="testfont"><mtext>𝜉</mtext></math>=<span>1D709</span></span> - <span><math class="testfont"><mtext>𝜊</mtext></math>=<span>1D70A</span></span> - <span><math class="testfont"><mtext>𝜋</mtext></math>=<span>1D70B</span></span> - <span><math class="testfont"><mtext>𝜌</mtext></math>=<span>1D70C</span></span> - <span><math class="testfont"><mtext>𝜍</mtext></math>=<span>1D70D</span></span> - <span><math class="testfont"><mtext>𝜎</mtext></math>=<span>1D70E</span></span> - <span><math class="testfont"><mtext>𝜏</mtext></math>=<span>1D70F</span></span><br/> - <span><math class="testfont"><mtext>𝜐</mtext></math>=<span>1D710</span></span> - <span><math class="testfont"><mtext>𝜑</mtext></math>=<span>1D711</span></span> - <span><math class="testfont"><mtext>𝜒</mtext></math>=<span>1D712</span></span> - <span><math class="testfont"><mtext>𝜓</mtext></math>=<span>1D713</span></span> - <span><math class="testfont"><mtext>𝜔</mtext></math>=<span>1D714</span></span> - <span><math class="testfont"><mtext>𝜕</mtext></math>=<span>1D715</span></span> - <span><math class="testfont"><mtext>𝜖</mtext></math>=<span>1D716</span></span> - <span><math class="testfont"><mtext>𝜗</mtext></math>=<span>1D717</span></span> - <span><math class="testfont"><mtext>𝜘</mtext></math>=<span>1D718</span></span> - <span><math class="testfont"><mtext>𝜙</mtext></math>=<span>1D719</span></span><br/> - <span><math class="testfont"><mtext>𝜚</mtext></math>=<span>1D71A</span></span> - <span><math class="testfont"><mtext>𝜛</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">A</mtext></math>=<span>1D434</span></span> - <span><math class="testfont"><mtext mathvariant="italic">B</mtext></math>=<span>1D435</span></span> - <span><math class="testfont"><mtext mathvariant="italic">C</mtext></math>=<span>1D436</span></span> - <span><math class="testfont"><mtext mathvariant="italic">D</mtext></math>=<span>1D437</span></span> - <span><math class="testfont"><mtext mathvariant="italic">E</mtext></math>=<span>1D438</span></span> - <span><math class="testfont"><mtext mathvariant="italic">F</mtext></math>=<span>1D439</span></span> - <span><math class="testfont"><mtext mathvariant="italic">G</mtext></math>=<span>1D43A</span></span> - <span><math class="testfont"><mtext mathvariant="italic">H</mtext></math>=<span>1D43B</span></span> - <span><math class="testfont"><mtext mathvariant="italic">I</mtext></math>=<span>1D43C</span></span> - <span><math class="testfont"><mtext mathvariant="italic">J</mtext></math>=<span>1D43D</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">K</mtext></math>=<span>1D43E</span></span> - <span><math class="testfont"><mtext mathvariant="italic">L</mtext></math>=<span>1D43F</span></span> - <span><math class="testfont"><mtext mathvariant="italic">M</mtext></math>=<span>1D440</span></span> - <span><math class="testfont"><mtext mathvariant="italic">N</mtext></math>=<span>1D441</span></span> - <span><math class="testfont"><mtext mathvariant="italic">O</mtext></math>=<span>1D442</span></span> - <span><math class="testfont"><mtext mathvariant="italic">P</mtext></math>=<span>1D443</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Q</mtext></math>=<span>1D444</span></span> - <span><math class="testfont"><mtext mathvariant="italic">R</mtext></math>=<span>1D445</span></span> - <span><math class="testfont"><mtext mathvariant="italic">S</mtext></math>=<span>1D446</span></span> - <span><math class="testfont"><mtext mathvariant="italic">T</mtext></math>=<span>1D447</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">U</mtext></math>=<span>1D448</span></span> - <span><math class="testfont"><mtext mathvariant="italic">V</mtext></math>=<span>1D449</span></span> - <span><math class="testfont"><mtext mathvariant="italic">W</mtext></math>=<span>1D44A</span></span> - <span><math class="testfont"><mtext mathvariant="italic">X</mtext></math>=<span>1D44B</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Y</mtext></math>=<span>1D44C</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Z</mtext></math>=<span>1D44D</span></span> - <span><math class="testfont"><mtext mathvariant="italic">a</mtext></math>=<span>1D44E</span></span> - <span><math class="testfont"><mtext mathvariant="italic">b</mtext></math>=<span>1D44F</span></span> - <span><math class="testfont"><mtext mathvariant="italic">c</mtext></math>=<span>1D450</span></span> - <span><math class="testfont"><mtext mathvariant="italic">d</mtext></math>=<span>1D451</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">e</mtext></math>=<span>1D452</span></span> - <span><math class="testfont"><mtext mathvariant="italic">f</mtext></math>=<span>1D453</span></span> - <span><math class="testfont"><mtext mathvariant="italic">g</mtext></math>=<span>1D454</span></span> - <span><math class="testfont"><mtext mathvariant="italic">h</mtext></math>=<span>0210E</span></span> - <span><math class="testfont"><mtext mathvariant="italic">i</mtext></math>=<span>1D456</span></span> - <span><math class="testfont"><mtext mathvariant="italic">j</mtext></math>=<span>1D457</span></span> - <span><math class="testfont"><mtext mathvariant="italic">k</mtext></math>=<span>1D458</span></span> - <span><math class="testfont"><mtext mathvariant="italic">l</mtext></math>=<span>1D459</span></span> - <span><math class="testfont"><mtext mathvariant="italic">m</mtext></math>=<span>1D45A</span></span> - <span><math class="testfont"><mtext mathvariant="italic">n</mtext></math>=<span>1D45B</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">o</mtext></math>=<span>1D45C</span></span> - <span><math class="testfont"><mtext mathvariant="italic">p</mtext></math>=<span>1D45D</span></span> - <span><math class="testfont"><mtext mathvariant="italic">q</mtext></math>=<span>1D45E</span></span> - <span><math class="testfont"><mtext mathvariant="italic">r</mtext></math>=<span>1D45F</span></span> - <span><math class="testfont"><mtext mathvariant="italic">s</mtext></math>=<span>1D460</span></span> - <span><math class="testfont"><mtext mathvariant="italic">t</mtext></math>=<span>1D461</span></span> - <span><math class="testfont"><mtext mathvariant="italic">u</mtext></math>=<span>1D462</span></span> - <span><math class="testfont"><mtext mathvariant="italic">v</mtext></math>=<span>1D463</span></span> - <span><math class="testfont"><mtext mathvariant="italic">w</mtext></math>=<span>1D464</span></span> - <span><math class="testfont"><mtext mathvariant="italic">x</mtext></math>=<span>1D465</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">y</mtext></math>=<span>1D466</span></span> - <span><math class="testfont"><mtext mathvariant="italic">z</mtext></math>=<span>1D467</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ı</mtext></math>=<span>1D6A4</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ȷ</mtext></math>=<span>1D6A5</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Α</mtext></math>=<span>1D6E2</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Β</mtext></math>=<span>1D6E3</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Γ</mtext></math>=<span>1D6E4</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Δ</mtext></math>=<span>1D6E5</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Ε</mtext></math>=<span>1D6E6</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Ζ</mtext></math>=<span>1D6E7</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">Η</mtext></math>=<span>1D6E8</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Θ</mtext></math>=<span>1D6E9</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Ι</mtext></math>=<span>1D6EA</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Κ</mtext></math>=<span>1D6EB</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Λ</mtext></math>=<span>1D6EC</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Μ</mtext></math>=<span>1D6ED</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Ν</mtext></math>=<span>1D6EE</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Ξ</mtext></math>=<span>1D6EF</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Ο</mtext></math>=<span>1D6F0</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Π</mtext></math>=<span>1D6F1</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">Ρ</mtext></math>=<span>1D6F2</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ϴ</mtext></math>=<span>1D6F3</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Σ</mtext></math>=<span>1D6F4</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Τ</mtext></math>=<span>1D6F5</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Υ</mtext></math>=<span>1D6F6</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Φ</mtext></math>=<span>1D6F7</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Χ</mtext></math>=<span>1D6F8</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Ψ</mtext></math>=<span>1D6F9</span></span> - <span><math class="testfont"><mtext mathvariant="italic">Ω</mtext></math>=<span>1D6FA</span></span> - <span><math class="testfont"><mtext mathvariant="italic">∇</mtext></math>=<span>1D6FB</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">α</mtext></math>=<span>1D6FC</span></span> - <span><math class="testfont"><mtext mathvariant="italic">β</mtext></math>=<span>1D6FD</span></span> - <span><math class="testfont"><mtext mathvariant="italic">γ</mtext></math>=<span>1D6FE</span></span> - <span><math class="testfont"><mtext mathvariant="italic">δ</mtext></math>=<span>1D6FF</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ε</mtext></math>=<span>1D700</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ζ</mtext></math>=<span>1D701</span></span> - <span><math class="testfont"><mtext mathvariant="italic">η</mtext></math>=<span>1D702</span></span> - <span><math class="testfont"><mtext mathvariant="italic">θ</mtext></math>=<span>1D703</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ι</mtext></math>=<span>1D704</span></span> - <span><math class="testfont"><mtext mathvariant="italic">κ</mtext></math>=<span>1D705</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">λ</mtext></math>=<span>1D706</span></span> - <span><math class="testfont"><mtext mathvariant="italic">μ</mtext></math>=<span>1D707</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ν</mtext></math>=<span>1D708</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ξ</mtext></math>=<span>1D709</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ο</mtext></math>=<span>1D70A</span></span> - <span><math class="testfont"><mtext mathvariant="italic">π</mtext></math>=<span>1D70B</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ρ</mtext></math>=<span>1D70C</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ς</mtext></math>=<span>1D70D</span></span> - <span><math class="testfont"><mtext mathvariant="italic">σ</mtext></math>=<span>1D70E</span></span> - <span><math class="testfont"><mtext mathvariant="italic">τ</mtext></math>=<span>1D70F</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">υ</mtext></math>=<span>1D710</span></span> - <span><math class="testfont"><mtext mathvariant="italic">φ</mtext></math>=<span>1D711</span></span> - <span><math class="testfont"><mtext mathvariant="italic">χ</mtext></math>=<span>1D712</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ψ</mtext></math>=<span>1D713</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ω</mtext></math>=<span>1D714</span></span> - <span><math class="testfont"><mtext mathvariant="italic">∂</mtext></math>=<span>1D715</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ϵ</mtext></math>=<span>1D716</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ϑ</mtext></math>=<span>1D717</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ϰ</mtext></math>=<span>1D718</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ϕ</mtext></math>=<span>1D719</span></span><br/> - <span><math class="testfont"><mtext mathvariant="italic">ϱ</mtext></math>=<span>1D71A</span></span> - <span><math class="testfont"><mtext mathvariant="italic">ϖ</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>𞺀</mtext></math>=<span>1EE80</span></span> - <span><math class="testfont"><mtext>𞺁</mtext></math>=<span>1EE81</span></span> - <span><math class="testfont"><mtext>𞺂</mtext></math>=<span>1EE82</span></span> - <span><math class="testfont"><mtext>𞺃</mtext></math>=<span>1EE83</span></span> - <span><math class="testfont"><mtext>𞺄</mtext></math>=<span>1EE84</span></span> - <span><math class="testfont"><mtext>𞺅</mtext></math>=<span>1EE85</span></span> - <span><math class="testfont"><mtext>𞺆</mtext></math>=<span>1EE86</span></span> - <span><math class="testfont"><mtext>𞺇</mtext></math>=<span>1EE87</span></span> - <span><math class="testfont"><mtext>𞺈</mtext></math>=<span>1EE88</span></span> - <span><math class="testfont"><mtext>𞺉</mtext></math>=<span>1EE89</span></span><br/> - <span><math class="testfont"><mtext>𞺋</mtext></math>=<span>1EE8B</span></span> - <span><math class="testfont"><mtext>𞺌</mtext></math>=<span>1EE8C</span></span> - <span><math class="testfont"><mtext>𞺍</mtext></math>=<span>1EE8D</span></span> - <span><math class="testfont"><mtext>𞺎</mtext></math>=<span>1EE8E</span></span> - <span><math class="testfont"><mtext>𞺏</mtext></math>=<span>1EE8F</span></span> - <span><math class="testfont"><mtext>𞺐</mtext></math>=<span>1EE90</span></span> - <span><math class="testfont"><mtext>𞺑</mtext></math>=<span>1EE91</span></span> - <span><math class="testfont"><mtext>𞺒</mtext></math>=<span>1EE92</span></span> - <span><math class="testfont"><mtext>𞺓</mtext></math>=<span>1EE93</span></span> - <span><math class="testfont"><mtext>𞺔</mtext></math>=<span>1EE94</span></span><br/> - <span><math class="testfont"><mtext>𞺕</mtext></math>=<span>1EE95</span></span> - <span><math class="testfont"><mtext>𞺖</mtext></math>=<span>1EE96</span></span> - <span><math class="testfont"><mtext>𞺗</mtext></math>=<span>1EE97</span></span> - <span><math class="testfont"><mtext>𞺘</mtext></math>=<span>1EE98</span></span> - <span><math class="testfont"><mtext>𞺙</mtext></math>=<span>1EE99</span></span> - <span><math class="testfont"><mtext>𞺚</mtext></math>=<span>1EE9A</span></span> - <span><math class="testfont"><mtext>𞺛</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">ا</mtext></math>=<span>1EE80</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ب</mtext></math>=<span>1EE81</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ج</mtext></math>=<span>1EE82</span></span> - <span><math class="testfont"><mtext mathvariant="looped">د</mtext></math>=<span>1EE83</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ه</mtext></math>=<span>1EE84</span></span> - <span><math class="testfont"><mtext mathvariant="looped">و</mtext></math>=<span>1EE85</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ز</mtext></math>=<span>1EE86</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ح</mtext></math>=<span>1EE87</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ط</mtext></math>=<span>1EE88</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ي</mtext></math>=<span>1EE89</span></span><br/> - <span><math class="testfont"><mtext mathvariant="looped">ل</mtext></math>=<span>1EE8B</span></span> - <span><math class="testfont"><mtext mathvariant="looped">م</mtext></math>=<span>1EE8C</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ن</mtext></math>=<span>1EE8D</span></span> - <span><math class="testfont"><mtext mathvariant="looped">س</mtext></math>=<span>1EE8E</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ع</mtext></math>=<span>1EE8F</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ف</mtext></math>=<span>1EE90</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ص</mtext></math>=<span>1EE91</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ق</mtext></math>=<span>1EE92</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ر</mtext></math>=<span>1EE93</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ش</mtext></math>=<span>1EE94</span></span><br/> - <span><math class="testfont"><mtext mathvariant="looped">ت</mtext></math>=<span>1EE95</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ث</mtext></math>=<span>1EE96</span></span> - <span><math class="testfont"><mtext mathvariant="looped">خ</mtext></math>=<span>1EE97</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ذ</mtext></math>=<span>1EE98</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ض</mtext></math>=<span>1EE99</span></span> - <span><math class="testfont"><mtext mathvariant="looped">ظ</mtext></math>=<span>1EE9A</span></span> - <span><math class="testfont"><mtext mathvariant="looped">غ</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>𝙰</mtext></math>=<span>1D670</span></span> - <span><math class="testfont"><mtext>𝙱</mtext></math>=<span>1D671</span></span> - <span><math class="testfont"><mtext>𝙲</mtext></math>=<span>1D672</span></span> - <span><math class="testfont"><mtext>𝙳</mtext></math>=<span>1D673</span></span> - <span><math class="testfont"><mtext>𝙴</mtext></math>=<span>1D674</span></span> - <span><math class="testfont"><mtext>𝙵</mtext></math>=<span>1D675</span></span> - <span><math class="testfont"><mtext>𝙶</mtext></math>=<span>1D676</span></span> - <span><math class="testfont"><mtext>𝙷</mtext></math>=<span>1D677</span></span> - <span><math class="testfont"><mtext>𝙸</mtext></math>=<span>1D678</span></span> - <span><math class="testfont"><mtext>𝙹</mtext></math>=<span>1D679</span></span><br/> - <span><math class="testfont"><mtext>𝙺</mtext></math>=<span>1D67A</span></span> - <span><math class="testfont"><mtext>𝙻</mtext></math>=<span>1D67B</span></span> - <span><math class="testfont"><mtext>𝙼</mtext></math>=<span>1D67C</span></span> - <span><math class="testfont"><mtext>𝙽</mtext></math>=<span>1D67D</span></span> - <span><math class="testfont"><mtext>𝙾</mtext></math>=<span>1D67E</span></span> - <span><math class="testfont"><mtext>𝙿</mtext></math>=<span>1D67F</span></span> - <span><math class="testfont"><mtext>𝚀</mtext></math>=<span>1D680</span></span> - <span><math class="testfont"><mtext>𝚁</mtext></math>=<span>1D681</span></span> - <span><math class="testfont"><mtext>𝚂</mtext></math>=<span>1D682</span></span> - <span><math class="testfont"><mtext>𝚃</mtext></math>=<span>1D683</span></span><br/> - <span><math class="testfont"><mtext>𝚄</mtext></math>=<span>1D684</span></span> - <span><math class="testfont"><mtext>𝚅</mtext></math>=<span>1D685</span></span> - <span><math class="testfont"><mtext>𝚆</mtext></math>=<span>1D686</span></span> - <span><math class="testfont"><mtext>𝚇</mtext></math>=<span>1D687</span></span> - <span><math class="testfont"><mtext>𝚈</mtext></math>=<span>1D688</span></span> - <span><math class="testfont"><mtext>𝚉</mtext></math>=<span>1D689</span></span> - <span><math class="testfont"><mtext>𝚊</mtext></math>=<span>1D68A</span></span> - <span><math class="testfont"><mtext>𝚋</mtext></math>=<span>1D68B</span></span> - <span><math class="testfont"><mtext>𝚌</mtext></math>=<span>1D68C</span></span> - <span><math class="testfont"><mtext>𝚍</mtext></math>=<span>1D68D</span></span><br/> - <span><math class="testfont"><mtext>𝚎</mtext></math>=<span>1D68E</span></span> - <span><math class="testfont"><mtext>𝚏</mtext></math>=<span>1D68F</span></span> - <span><math class="testfont"><mtext>𝚐</mtext></math>=<span>1D690</span></span> - <span><math class="testfont"><mtext>𝚑</mtext></math>=<span>1D691</span></span> - <span><math class="testfont"><mtext>𝚒</mtext></math>=<span>1D692</span></span> - <span><math class="testfont"><mtext>𝚓</mtext></math>=<span>1D693</span></span> - <span><math class="testfont"><mtext>𝚔</mtext></math>=<span>1D694</span></span> - <span><math class="testfont"><mtext>𝚕</mtext></math>=<span>1D695</span></span> - <span><math class="testfont"><mtext>𝚖</mtext></math>=<span>1D696</span></span> - <span><math class="testfont"><mtext>𝚗</mtext></math>=<span>1D697</span></span><br/> - <span><math class="testfont"><mtext>𝚘</mtext></math>=<span>1D698</span></span> - <span><math class="testfont"><mtext>𝚙</mtext></math>=<span>1D699</span></span> - <span><math class="testfont"><mtext>𝚚</mtext></math>=<span>1D69A</span></span> - <span><math class="testfont"><mtext>𝚛</mtext></math>=<span>1D69B</span></span> - <span><math class="testfont"><mtext>𝚜</mtext></math>=<span>1D69C</span></span> - <span><math class="testfont"><mtext>𝚝</mtext></math>=<span>1D69D</span></span> - <span><math class="testfont"><mtext>𝚞</mtext></math>=<span>1D69E</span></span> - <span><math class="testfont"><mtext>𝚟</mtext></math>=<span>1D69F</span></span> - <span><math class="testfont"><mtext>𝚠</mtext></math>=<span>1D6A0</span></span> - <span><math class="testfont"><mtext>𝚡</mtext></math>=<span>1D6A1</span></span><br/> - <span><math class="testfont"><mtext>𝚢</mtext></math>=<span>1D6A2</span></span> - <span><math class="testfont"><mtext>𝚣</mtext></math>=<span>1D6A3</span></span> - <span><math class="testfont"><mtext>𝟶</mtext></math>=<span>1D7F6</span></span> - <span><math class="testfont"><mtext>𝟷</mtext></math>=<span>1D7F7</span></span> - <span><math class="testfont"><mtext>𝟸</mtext></math>=<span>1D7F8</span></span> - <span><math class="testfont"><mtext>𝟹</mtext></math>=<span>1D7F9</span></span> - <span><math class="testfont"><mtext>𝟺</mtext></math>=<span>1D7FA</span></span> - <span><math class="testfont"><mtext>𝟻</mtext></math>=<span>1D7FB</span></span> - <span><math class="testfont"><mtext>𝟼</mtext></math>=<span>1D7FC</span></span> - <span><math class="testfont"><mtext>𝟽</mtext></math>=<span>1D7FD</span></span><br/> - <span><math class="testfont"><mtext>𝟾</mtext></math>=<span>1D7FE</span></span> - <span><math class="testfont"><mtext>𝟿</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">A</mtext></math>=<span>1D670</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">B</mtext></math>=<span>1D671</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">C</mtext></math>=<span>1D672</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">D</mtext></math>=<span>1D673</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">E</mtext></math>=<span>1D674</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">F</mtext></math>=<span>1D675</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">G</mtext></math>=<span>1D676</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">H</mtext></math>=<span>1D677</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">I</mtext></math>=<span>1D678</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">J</mtext></math>=<span>1D679</span></span><br/> - <span><math class="testfont"><mtext mathvariant="monospace">K</mtext></math>=<span>1D67A</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">L</mtext></math>=<span>1D67B</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">M</mtext></math>=<span>1D67C</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">N</mtext></math>=<span>1D67D</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">O</mtext></math>=<span>1D67E</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">P</mtext></math>=<span>1D67F</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">Q</mtext></math>=<span>1D680</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">R</mtext></math>=<span>1D681</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">S</mtext></math>=<span>1D682</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">T</mtext></math>=<span>1D683</span></span><br/> - <span><math class="testfont"><mtext mathvariant="monospace">U</mtext></math>=<span>1D684</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">V</mtext></math>=<span>1D685</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">W</mtext></math>=<span>1D686</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">X</mtext></math>=<span>1D687</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">Y</mtext></math>=<span>1D688</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">Z</mtext></math>=<span>1D689</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">a</mtext></math>=<span>1D68A</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">b</mtext></math>=<span>1D68B</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">c</mtext></math>=<span>1D68C</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">d</mtext></math>=<span>1D68D</span></span><br/> - <span><math class="testfont"><mtext mathvariant="monospace">e</mtext></math>=<span>1D68E</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">f</mtext></math>=<span>1D68F</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">g</mtext></math>=<span>1D690</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">h</mtext></math>=<span>1D691</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">i</mtext></math>=<span>1D692</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">j</mtext></math>=<span>1D693</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">k</mtext></math>=<span>1D694</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">l</mtext></math>=<span>1D695</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">m</mtext></math>=<span>1D696</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">n</mtext></math>=<span>1D697</span></span><br/> - <span><math class="testfont"><mtext mathvariant="monospace">o</mtext></math>=<span>1D698</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">p</mtext></math>=<span>1D699</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">q</mtext></math>=<span>1D69A</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">r</mtext></math>=<span>1D69B</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">s</mtext></math>=<span>1D69C</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">t</mtext></math>=<span>1D69D</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">u</mtext></math>=<span>1D69E</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">v</mtext></math>=<span>1D69F</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">w</mtext></math>=<span>1D6A0</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">x</mtext></math>=<span>1D6A1</span></span><br/> - <span><math class="testfont"><mtext mathvariant="monospace">y</mtext></math>=<span>1D6A2</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">z</mtext></math>=<span>1D6A3</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">0</mtext></math>=<span>1D7F6</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">1</mtext></math>=<span>1D7F7</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">2</mtext></math>=<span>1D7F8</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">3</mtext></math>=<span>1D7F9</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">4</mtext></math>=<span>1D7FA</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">5</mtext></math>=<span>1D7FB</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">6</mtext></math>=<span>1D7FC</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">7</mtext></math>=<span>1D7FD</span></span><br/> - <span><math class="testfont"><mtext mathvariant="monospace">8</mtext></math>=<span>1D7FE</span></span> - <span><math class="testfont"><mtext mathvariant="monospace">9</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>𝘼</mtext></math>=<span>1D63C</span></span> - <span><math class="testfont"><mtext>𝘽</mtext></math>=<span>1D63D</span></span> - <span><math class="testfont"><mtext>𝘾</mtext></math>=<span>1D63E</span></span> - <span><math class="testfont"><mtext>𝘿</mtext></math>=<span>1D63F</span></span> - <span><math class="testfont"><mtext>𝙀</mtext></math>=<span>1D640</span></span> - <span><math class="testfont"><mtext>𝙁</mtext></math>=<span>1D641</span></span> - <span><math class="testfont"><mtext>𝙂</mtext></math>=<span>1D642</span></span> - <span><math class="testfont"><mtext>𝙃</mtext></math>=<span>1D643</span></span> - <span><math class="testfont"><mtext>𝙄</mtext></math>=<span>1D644</span></span> - <span><math class="testfont"><mtext>𝙅</mtext></math>=<span>1D645</span></span><br/> - <span><math class="testfont"><mtext>𝙆</mtext></math>=<span>1D646</span></span> - <span><math class="testfont"><mtext>𝙇</mtext></math>=<span>1D647</span></span> - <span><math class="testfont"><mtext>𝙈</mtext></math>=<span>1D648</span></span> - <span><math class="testfont"><mtext>𝙉</mtext></math>=<span>1D649</span></span> - <span><math class="testfont"><mtext>𝙊</mtext></math>=<span>1D64A</span></span> - <span><math class="testfont"><mtext>𝙋</mtext></math>=<span>1D64B</span></span> - <span><math class="testfont"><mtext>𝙌</mtext></math>=<span>1D64C</span></span> - <span><math class="testfont"><mtext>𝙍</mtext></math>=<span>1D64D</span></span> - <span><math class="testfont"><mtext>𝙎</mtext></math>=<span>1D64E</span></span> - <span><math class="testfont"><mtext>𝙏</mtext></math>=<span>1D64F</span></span><br/> - <span><math class="testfont"><mtext>𝙐</mtext></math>=<span>1D650</span></span> - <span><math class="testfont"><mtext>𝙑</mtext></math>=<span>1D651</span></span> - <span><math class="testfont"><mtext>𝙒</mtext></math>=<span>1D652</span></span> - <span><math class="testfont"><mtext>𝙓</mtext></math>=<span>1D653</span></span> - <span><math class="testfont"><mtext>𝙔</mtext></math>=<span>1D654</span></span> - <span><math class="testfont"><mtext>𝙕</mtext></math>=<span>1D655</span></span> - <span><math class="testfont"><mtext>𝙖</mtext></math>=<span>1D656</span></span> - <span><math class="testfont"><mtext>𝙗</mtext></math>=<span>1D657</span></span> - <span><math class="testfont"><mtext>𝙘</mtext></math>=<span>1D658</span></span> - <span><math class="testfont"><mtext>𝙙</mtext></math>=<span>1D659</span></span><br/> - <span><math class="testfont"><mtext>𝙚</mtext></math>=<span>1D65A</span></span> - <span><math class="testfont"><mtext>𝙛</mtext></math>=<span>1D65B</span></span> - <span><math class="testfont"><mtext>𝙜</mtext></math>=<span>1D65C</span></span> - <span><math class="testfont"><mtext>𝙝</mtext></math>=<span>1D65D</span></span> - <span><math class="testfont"><mtext>𝙞</mtext></math>=<span>1D65E</span></span> - <span><math class="testfont"><mtext>𝙟</mtext></math>=<span>1D65F</span></span> - <span><math class="testfont"><mtext>𝙠</mtext></math>=<span>1D660</span></span> - <span><math class="testfont"><mtext>𝙡</mtext></math>=<span>1D661</span></span> - <span><math class="testfont"><mtext>𝙢</mtext></math>=<span>1D662</span></span> - <span><math class="testfont"><mtext>𝙣</mtext></math>=<span>1D663</span></span><br/> - <span><math class="testfont"><mtext>𝙤</mtext></math>=<span>1D664</span></span> - <span><math class="testfont"><mtext>𝙥</mtext></math>=<span>1D665</span></span> - <span><math class="testfont"><mtext>𝙦</mtext></math>=<span>1D666</span></span> - <span><math class="testfont"><mtext>𝙧</mtext></math>=<span>1D667</span></span> - <span><math class="testfont"><mtext>𝙨</mtext></math>=<span>1D668</span></span> - <span><math class="testfont"><mtext>𝙩</mtext></math>=<span>1D669</span></span> - <span><math class="testfont"><mtext>𝙪</mtext></math>=<span>1D66A</span></span> - <span><math class="testfont"><mtext>𝙫</mtext></math>=<span>1D66B</span></span> - <span><math class="testfont"><mtext>𝙬</mtext></math>=<span>1D66C</span></span> - <span><math class="testfont"><mtext>𝙭</mtext></math>=<span>1D66D</span></span><br/> - <span><math class="testfont"><mtext>𝙮</mtext></math>=<span>1D66E</span></span> - <span><math class="testfont"><mtext>𝙯</mtext></math>=<span>1D66F</span></span> - <span><math class="testfont"><mtext>𝞐</mtext></math>=<span>1D790</span></span> - <span><math class="testfont"><mtext>𝞑</mtext></math>=<span>1D791</span></span> - <span><math class="testfont"><mtext>𝞒</mtext></math>=<span>1D792</span></span> - <span><math class="testfont"><mtext>𝞓</mtext></math>=<span>1D793</span></span> - <span><math class="testfont"><mtext>𝞔</mtext></math>=<span>1D794</span></span> - <span><math class="testfont"><mtext>𝞕</mtext></math>=<span>1D795</span></span> - <span><math class="testfont"><mtext>𝞖</mtext></math>=<span>1D796</span></span> - <span><math class="testfont"><mtext>𝞗</mtext></math>=<span>1D797</span></span><br/> - <span><math class="testfont"><mtext>𝞘</mtext></math>=<span>1D798</span></span> - <span><math class="testfont"><mtext>𝞙</mtext></math>=<span>1D799</span></span> - <span><math class="testfont"><mtext>𝞚</mtext></math>=<span>1D79A</span></span> - <span><math class="testfont"><mtext>𝞛</mtext></math>=<span>1D79B</span></span> - <span><math class="testfont"><mtext>𝞜</mtext></math>=<span>1D79C</span></span> - <span><math class="testfont"><mtext>𝞝</mtext></math>=<span>1D79D</span></span> - <span><math class="testfont"><mtext>𝞞</mtext></math>=<span>1D79E</span></span> - <span><math class="testfont"><mtext>𝞟</mtext></math>=<span>1D79F</span></span> - <span><math class="testfont"><mtext>𝞠</mtext></math>=<span>1D7A0</span></span> - <span><math class="testfont"><mtext>𝞡</mtext></math>=<span>1D7A1</span></span><br/> - <span><math class="testfont"><mtext>𝞢</mtext></math>=<span>1D7A2</span></span> - <span><math class="testfont"><mtext>𝞣</mtext></math>=<span>1D7A3</span></span> - <span><math class="testfont"><mtext>𝞤</mtext></math>=<span>1D7A4</span></span> - <span><math class="testfont"><mtext>𝞥</mtext></math>=<span>1D7A5</span></span> - <span><math class="testfont"><mtext>𝞦</mtext></math>=<span>1D7A6</span></span> - <span><math class="testfont"><mtext>𝞧</mtext></math>=<span>1D7A7</span></span> - <span><math class="testfont"><mtext>𝞨</mtext></math>=<span>1D7A8</span></span> - <span><math class="testfont"><mtext>𝞩</mtext></math>=<span>1D7A9</span></span> - <span><math class="testfont"><mtext>𝞪</mtext></math>=<span>1D7AA</span></span> - <span><math class="testfont"><mtext>𝞫</mtext></math>=<span>1D7AB</span></span><br/> - <span><math class="testfont"><mtext>𝞬</mtext></math>=<span>1D7AC</span></span> - <span><math class="testfont"><mtext>𝞭</mtext></math>=<span>1D7AD</span></span> - <span><math class="testfont"><mtext>𝞮</mtext></math>=<span>1D7AE</span></span> - <span><math class="testfont"><mtext>𝞯</mtext></math>=<span>1D7AF</span></span> - <span><math class="testfont"><mtext>𝞰</mtext></math>=<span>1D7B0</span></span> - <span><math class="testfont"><mtext>𝞱</mtext></math>=<span>1D7B1</span></span> - <span><math class="testfont"><mtext>𝞲</mtext></math>=<span>1D7B2</span></span> - <span><math class="testfont"><mtext>𝞳</mtext></math>=<span>1D7B3</span></span> - <span><math class="testfont"><mtext>𝞴</mtext></math>=<span>1D7B4</span></span> - <span><math class="testfont"><mtext>𝞵</mtext></math>=<span>1D7B5</span></span><br/> - <span><math class="testfont"><mtext>𝞶</mtext></math>=<span>1D7B6</span></span> - <span><math class="testfont"><mtext>𝞷</mtext></math>=<span>1D7B7</span></span> - <span><math class="testfont"><mtext>𝞸</mtext></math>=<span>1D7B8</span></span> - <span><math class="testfont"><mtext>𝞹</mtext></math>=<span>1D7B9</span></span> - <span><math class="testfont"><mtext>𝞺</mtext></math>=<span>1D7BA</span></span> - <span><math class="testfont"><mtext>𝞻</mtext></math>=<span>1D7BB</span></span> - <span><math class="testfont"><mtext>𝞼</mtext></math>=<span>1D7BC</span></span> - <span><math class="testfont"><mtext>𝞽</mtext></math>=<span>1D7BD</span></span> - <span><math class="testfont"><mtext>𝞾</mtext></math>=<span>1D7BE</span></span> - <span><math class="testfont"><mtext>𝞿</mtext></math>=<span>1D7BF</span></span><br/> - <span><math class="testfont"><mtext>𝟀</mtext></math>=<span>1D7C0</span></span> - <span><math class="testfont"><mtext>𝟁</mtext></math>=<span>1D7C1</span></span> - <span><math class="testfont"><mtext>𝟂</mtext></math>=<span>1D7C2</span></span> - <span><math class="testfont"><mtext>𝟃</mtext></math>=<span>1D7C3</span></span> - <span><math class="testfont"><mtext>𝟄</mtext></math>=<span>1D7C4</span></span> - <span><math class="testfont"><mtext>𝟅</mtext></math>=<span>1D7C5</span></span> - <span><math class="testfont"><mtext>𝟆</mtext></math>=<span>1D7C6</span></span> - <span><math class="testfont"><mtext>𝟇</mtext></math>=<span>1D7C7</span></span> - <span><math class="testfont"><mtext>𝟈</mtext></math>=<span>1D7C8</span></span> - <span><math class="testfont"><mtext>𝟉</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">A</mtext></math>=<span>1D63C</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">B</mtext></math>=<span>1D63D</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">C</mtext></math>=<span>1D63E</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">D</mtext></math>=<span>1D63F</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">E</mtext></math>=<span>1D640</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">F</mtext></math>=<span>1D641</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">G</mtext></math>=<span>1D642</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">H</mtext></math>=<span>1D643</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">I</mtext></math>=<span>1D644</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">J</mtext></math>=<span>1D645</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">K</mtext></math>=<span>1D646</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">L</mtext></math>=<span>1D647</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">M</mtext></math>=<span>1D648</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">N</mtext></math>=<span>1D649</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">O</mtext></math>=<span>1D64A</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">P</mtext></math>=<span>1D64B</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Q</mtext></math>=<span>1D64C</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">R</mtext></math>=<span>1D64D</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">S</mtext></math>=<span>1D64E</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">T</mtext></math>=<span>1D64F</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">U</mtext></math>=<span>1D650</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">V</mtext></math>=<span>1D651</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">W</mtext></math>=<span>1D652</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">X</mtext></math>=<span>1D653</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Y</mtext></math>=<span>1D654</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Z</mtext></math>=<span>1D655</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">a</mtext></math>=<span>1D656</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">b</mtext></math>=<span>1D657</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">c</mtext></math>=<span>1D658</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">d</mtext></math>=<span>1D659</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">e</mtext></math>=<span>1D65A</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">f</mtext></math>=<span>1D65B</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">g</mtext></math>=<span>1D65C</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">h</mtext></math>=<span>1D65D</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">i</mtext></math>=<span>1D65E</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">j</mtext></math>=<span>1D65F</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">k</mtext></math>=<span>1D660</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">l</mtext></math>=<span>1D661</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">m</mtext></math>=<span>1D662</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">n</mtext></math>=<span>1D663</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">o</mtext></math>=<span>1D664</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">p</mtext></math>=<span>1D665</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">q</mtext></math>=<span>1D666</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">r</mtext></math>=<span>1D667</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">s</mtext></math>=<span>1D668</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">t</mtext></math>=<span>1D669</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">u</mtext></math>=<span>1D66A</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">v</mtext></math>=<span>1D66B</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">w</mtext></math>=<span>1D66C</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">x</mtext></math>=<span>1D66D</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">y</mtext></math>=<span>1D66E</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">z</mtext></math>=<span>1D66F</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Α</mtext></math>=<span>1D790</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Β</mtext></math>=<span>1D791</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Γ</mtext></math>=<span>1D792</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Δ</mtext></math>=<span>1D793</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ε</mtext></math>=<span>1D794</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ζ</mtext></math>=<span>1D795</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Η</mtext></math>=<span>1D796</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Θ</mtext></math>=<span>1D797</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ι</mtext></math>=<span>1D798</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Κ</mtext></math>=<span>1D799</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Λ</mtext></math>=<span>1D79A</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Μ</mtext></math>=<span>1D79B</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ν</mtext></math>=<span>1D79C</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ξ</mtext></math>=<span>1D79D</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ο</mtext></math>=<span>1D79E</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Π</mtext></math>=<span>1D79F</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ρ</mtext></math>=<span>1D7A0</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ϴ</mtext></math>=<span>1D7A1</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Σ</mtext></math>=<span>1D7A2</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Τ</mtext></math>=<span>1D7A3</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Υ</mtext></math>=<span>1D7A4</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Φ</mtext></math>=<span>1D7A5</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Χ</mtext></math>=<span>1D7A6</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ψ</mtext></math>=<span>1D7A7</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">Ω</mtext></math>=<span>1D7A8</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">∇</mtext></math>=<span>1D7A9</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">α</mtext></math>=<span>1D7AA</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">β</mtext></math>=<span>1D7AB</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">γ</mtext></math>=<span>1D7AC</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">δ</mtext></math>=<span>1D7AD</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ε</mtext></math>=<span>1D7AE</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ζ</mtext></math>=<span>1D7AF</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">η</mtext></math>=<span>1D7B0</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">θ</mtext></math>=<span>1D7B1</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ι</mtext></math>=<span>1D7B2</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">κ</mtext></math>=<span>1D7B3</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">λ</mtext></math>=<span>1D7B4</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">μ</mtext></math>=<span>1D7B5</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ν</mtext></math>=<span>1D7B6</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ξ</mtext></math>=<span>1D7B7</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ο</mtext></math>=<span>1D7B8</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">π</mtext></math>=<span>1D7B9</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ρ</mtext></math>=<span>1D7BA</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ς</mtext></math>=<span>1D7BB</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">σ</mtext></math>=<span>1D7BC</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">τ</mtext></math>=<span>1D7BD</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">υ</mtext></math>=<span>1D7BE</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">φ</mtext></math>=<span>1D7BF</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">χ</mtext></math>=<span>1D7C0</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ψ</mtext></math>=<span>1D7C1</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ω</mtext></math>=<span>1D7C2</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">∂</mtext></math>=<span>1D7C3</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ϵ</mtext></math>=<span>1D7C4</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ϑ</mtext></math>=<span>1D7C5</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ϰ</mtext></math>=<span>1D7C6</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ϕ</mtext></math>=<span>1D7C7</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ϱ</mtext></math>=<span>1D7C8</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-bold-italic">ϖ</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>𝘈</mtext></math>=<span>1D608</span></span> - <span><math class="testfont"><mtext>𝘉</mtext></math>=<span>1D609</span></span> - <span><math class="testfont"><mtext>𝘊</mtext></math>=<span>1D60A</span></span> - <span><math class="testfont"><mtext>𝘋</mtext></math>=<span>1D60B</span></span> - <span><math class="testfont"><mtext>𝘌</mtext></math>=<span>1D60C</span></span> - <span><math class="testfont"><mtext>𝘍</mtext></math>=<span>1D60D</span></span> - <span><math class="testfont"><mtext>𝘎</mtext></math>=<span>1D60E</span></span> - <span><math class="testfont"><mtext>𝘏</mtext></math>=<span>1D60F</span></span> - <span><math class="testfont"><mtext>𝘐</mtext></math>=<span>1D610</span></span> - <span><math class="testfont"><mtext>𝘑</mtext></math>=<span>1D611</span></span><br/> - <span><math class="testfont"><mtext>𝘒</mtext></math>=<span>1D612</span></span> - <span><math class="testfont"><mtext>𝘓</mtext></math>=<span>1D613</span></span> - <span><math class="testfont"><mtext>𝘔</mtext></math>=<span>1D614</span></span> - <span><math class="testfont"><mtext>𝘕</mtext></math>=<span>1D615</span></span> - <span><math class="testfont"><mtext>𝘖</mtext></math>=<span>1D616</span></span> - <span><math class="testfont"><mtext>𝘗</mtext></math>=<span>1D617</span></span> - <span><math class="testfont"><mtext>𝘘</mtext></math>=<span>1D618</span></span> - <span><math class="testfont"><mtext>𝘙</mtext></math>=<span>1D619</span></span> - <span><math class="testfont"><mtext>𝘚</mtext></math>=<span>1D61A</span></span> - <span><math class="testfont"><mtext>𝘛</mtext></math>=<span>1D61B</span></span><br/> - <span><math class="testfont"><mtext>𝘜</mtext></math>=<span>1D61C</span></span> - <span><math class="testfont"><mtext>𝘝</mtext></math>=<span>1D61D</span></span> - <span><math class="testfont"><mtext>𝘞</mtext></math>=<span>1D61E</span></span> - <span><math class="testfont"><mtext>𝘟</mtext></math>=<span>1D61F</span></span> - <span><math class="testfont"><mtext>𝘠</mtext></math>=<span>1D620</span></span> - <span><math class="testfont"><mtext>𝘡</mtext></math>=<span>1D621</span></span> - <span><math class="testfont"><mtext>𝘢</mtext></math>=<span>1D622</span></span> - <span><math class="testfont"><mtext>𝘣</mtext></math>=<span>1D623</span></span> - <span><math class="testfont"><mtext>𝘤</mtext></math>=<span>1D624</span></span> - <span><math class="testfont"><mtext>𝘥</mtext></math>=<span>1D625</span></span><br/> - <span><math class="testfont"><mtext>𝘦</mtext></math>=<span>1D626</span></span> - <span><math class="testfont"><mtext>𝘧</mtext></math>=<span>1D627</span></span> - <span><math class="testfont"><mtext>𝘨</mtext></math>=<span>1D628</span></span> - <span><math class="testfont"><mtext>𝘩</mtext></math>=<span>1D629</span></span> - <span><math class="testfont"><mtext>𝘪</mtext></math>=<span>1D62A</span></span> - <span><math class="testfont"><mtext>𝘫</mtext></math>=<span>1D62B</span></span> - <span><math class="testfont"><mtext>𝘬</mtext></math>=<span>1D62C</span></span> - <span><math class="testfont"><mtext>𝘭</mtext></math>=<span>1D62D</span></span> - <span><math class="testfont"><mtext>𝘮</mtext></math>=<span>1D62E</span></span> - <span><math class="testfont"><mtext>𝘯</mtext></math>=<span>1D62F</span></span><br/> - <span><math class="testfont"><mtext>𝘰</mtext></math>=<span>1D630</span></span> - <span><math class="testfont"><mtext>𝘱</mtext></math>=<span>1D631</span></span> - <span><math class="testfont"><mtext>𝘲</mtext></math>=<span>1D632</span></span> - <span><math class="testfont"><mtext>𝘳</mtext></math>=<span>1D633</span></span> - <span><math class="testfont"><mtext>𝘴</mtext></math>=<span>1D634</span></span> - <span><math class="testfont"><mtext>𝘵</mtext></math>=<span>1D635</span></span> - <span><math class="testfont"><mtext>𝘶</mtext></math>=<span>1D636</span></span> - <span><math class="testfont"><mtext>𝘷</mtext></math>=<span>1D637</span></span> - <span><math class="testfont"><mtext>𝘸</mtext></math>=<span>1D638</span></span> - <span><math class="testfont"><mtext>𝘹</mtext></math>=<span>1D639</span></span><br/> - <span><math class="testfont"><mtext>𝘺</mtext></math>=<span>1D63A</span></span> - <span><math class="testfont"><mtext>𝘻</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">A</mtext></math>=<span>1D608</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">B</mtext></math>=<span>1D609</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">C</mtext></math>=<span>1D60A</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">D</mtext></math>=<span>1D60B</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">E</mtext></math>=<span>1D60C</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">F</mtext></math>=<span>1D60D</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">G</mtext></math>=<span>1D60E</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">H</mtext></math>=<span>1D60F</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">I</mtext></math>=<span>1D610</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">J</mtext></math>=<span>1D611</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">K</mtext></math>=<span>1D612</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">L</mtext></math>=<span>1D613</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">M</mtext></math>=<span>1D614</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">N</mtext></math>=<span>1D615</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">O</mtext></math>=<span>1D616</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">P</mtext></math>=<span>1D617</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">Q</mtext></math>=<span>1D618</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">R</mtext></math>=<span>1D619</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">S</mtext></math>=<span>1D61A</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">T</mtext></math>=<span>1D61B</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">U</mtext></math>=<span>1D61C</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">V</mtext></math>=<span>1D61D</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">W</mtext></math>=<span>1D61E</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">X</mtext></math>=<span>1D61F</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">Y</mtext></math>=<span>1D620</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">Z</mtext></math>=<span>1D621</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">a</mtext></math>=<span>1D622</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">b</mtext></math>=<span>1D623</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">c</mtext></math>=<span>1D624</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">d</mtext></math>=<span>1D625</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">e</mtext></math>=<span>1D626</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">f</mtext></math>=<span>1D627</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">g</mtext></math>=<span>1D628</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">h</mtext></math>=<span>1D629</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">i</mtext></math>=<span>1D62A</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">j</mtext></math>=<span>1D62B</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">k</mtext></math>=<span>1D62C</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">l</mtext></math>=<span>1D62D</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">m</mtext></math>=<span>1D62E</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">n</mtext></math>=<span>1D62F</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">o</mtext></math>=<span>1D630</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">p</mtext></math>=<span>1D631</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">q</mtext></math>=<span>1D632</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">r</mtext></math>=<span>1D633</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">s</mtext></math>=<span>1D634</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">t</mtext></math>=<span>1D635</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">u</mtext></math>=<span>1D636</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">v</mtext></math>=<span>1D637</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">w</mtext></math>=<span>1D638</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">x</mtext></math>=<span>1D639</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">y</mtext></math>=<span>1D63A</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif-italic">z</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>𝖠</mtext></math>=<span>1D5A0</span></span> - <span><math class="testfont"><mtext>𝖡</mtext></math>=<span>1D5A1</span></span> - <span><math class="testfont"><mtext>𝖢</mtext></math>=<span>1D5A2</span></span> - <span><math class="testfont"><mtext>𝖣</mtext></math>=<span>1D5A3</span></span> - <span><math class="testfont"><mtext>𝖤</mtext></math>=<span>1D5A4</span></span> - <span><math class="testfont"><mtext>𝖥</mtext></math>=<span>1D5A5</span></span> - <span><math class="testfont"><mtext>𝖦</mtext></math>=<span>1D5A6</span></span> - <span><math class="testfont"><mtext>𝖧</mtext></math>=<span>1D5A7</span></span> - <span><math class="testfont"><mtext>𝖨</mtext></math>=<span>1D5A8</span></span> - <span><math class="testfont"><mtext>𝖩</mtext></math>=<span>1D5A9</span></span><br/> - <span><math class="testfont"><mtext>𝖪</mtext></math>=<span>1D5AA</span></span> - <span><math class="testfont"><mtext>𝖫</mtext></math>=<span>1D5AB</span></span> - <span><math class="testfont"><mtext>𝖬</mtext></math>=<span>1D5AC</span></span> - <span><math class="testfont"><mtext>𝖭</mtext></math>=<span>1D5AD</span></span> - <span><math class="testfont"><mtext>𝖮</mtext></math>=<span>1D5AE</span></span> - <span><math class="testfont"><mtext>𝖯</mtext></math>=<span>1D5AF</span></span> - <span><math class="testfont"><mtext>𝖰</mtext></math>=<span>1D5B0</span></span> - <span><math class="testfont"><mtext>𝖱</mtext></math>=<span>1D5B1</span></span> - <span><math class="testfont"><mtext>𝖲</mtext></math>=<span>1D5B2</span></span> - <span><math class="testfont"><mtext>𝖳</mtext></math>=<span>1D5B3</span></span><br/> - <span><math class="testfont"><mtext>𝖴</mtext></math>=<span>1D5B4</span></span> - <span><math class="testfont"><mtext>𝖵</mtext></math>=<span>1D5B5</span></span> - <span><math class="testfont"><mtext>𝖶</mtext></math>=<span>1D5B6</span></span> - <span><math class="testfont"><mtext>𝖷</mtext></math>=<span>1D5B7</span></span> - <span><math class="testfont"><mtext>𝖸</mtext></math>=<span>1D5B8</span></span> - <span><math class="testfont"><mtext>𝖹</mtext></math>=<span>1D5B9</span></span> - <span><math class="testfont"><mtext>𝖺</mtext></math>=<span>1D5BA</span></span> - <span><math class="testfont"><mtext>𝖻</mtext></math>=<span>1D5BB</span></span> - <span><math class="testfont"><mtext>𝖼</mtext></math>=<span>1D5BC</span></span> - <span><math class="testfont"><mtext>𝖽</mtext></math>=<span>1D5BD</span></span><br/> - <span><math class="testfont"><mtext>𝖾</mtext></math>=<span>1D5BE</span></span> - <span><math class="testfont"><mtext>𝖿</mtext></math>=<span>1D5BF</span></span> - <span><math class="testfont"><mtext>𝗀</mtext></math>=<span>1D5C0</span></span> - <span><math class="testfont"><mtext>𝗁</mtext></math>=<span>1D5C1</span></span> - <span><math class="testfont"><mtext>𝗂</mtext></math>=<span>1D5C2</span></span> - <span><math class="testfont"><mtext>𝗃</mtext></math>=<span>1D5C3</span></span> - <span><math class="testfont"><mtext>𝗄</mtext></math>=<span>1D5C4</span></span> - <span><math class="testfont"><mtext>𝗅</mtext></math>=<span>1D5C5</span></span> - <span><math class="testfont"><mtext>𝗆</mtext></math>=<span>1D5C6</span></span> - <span><math class="testfont"><mtext>𝗇</mtext></math>=<span>1D5C7</span></span><br/> - <span><math class="testfont"><mtext>𝗈</mtext></math>=<span>1D5C8</span></span> - <span><math class="testfont"><mtext>𝗉</mtext></math>=<span>1D5C9</span></span> - <span><math class="testfont"><mtext>𝗊</mtext></math>=<span>1D5CA</span></span> - <span><math class="testfont"><mtext>𝗋</mtext></math>=<span>1D5CB</span></span> - <span><math class="testfont"><mtext>𝗌</mtext></math>=<span>1D5CC</span></span> - <span><math class="testfont"><mtext>𝗍</mtext></math>=<span>1D5CD</span></span> - <span><math class="testfont"><mtext>𝗎</mtext></math>=<span>1D5CE</span></span> - <span><math class="testfont"><mtext>𝗏</mtext></math>=<span>1D5CF</span></span> - <span><math class="testfont"><mtext>𝗐</mtext></math>=<span>1D5D0</span></span> - <span><math class="testfont"><mtext>𝗑</mtext></math>=<span>1D5D1</span></span><br/> - <span><math class="testfont"><mtext>𝗒</mtext></math>=<span>1D5D2</span></span> - <span><math class="testfont"><mtext>𝗓</mtext></math>=<span>1D5D3</span></span> - <span><math class="testfont"><mtext>𝟢</mtext></math>=<span>1D7E2</span></span> - <span><math class="testfont"><mtext>𝟣</mtext></math>=<span>1D7E3</span></span> - <span><math class="testfont"><mtext>𝟤</mtext></math>=<span>1D7E4</span></span> - <span><math class="testfont"><mtext>𝟥</mtext></math>=<span>1D7E5</span></span> - <span><math class="testfont"><mtext>𝟦</mtext></math>=<span>1D7E6</span></span> - <span><math class="testfont"><mtext>𝟧</mtext></math>=<span>1D7E7</span></span> - <span><math class="testfont"><mtext>𝟨</mtext></math>=<span>1D7E8</span></span> - <span><math class="testfont"><mtext>𝟩</mtext></math>=<span>1D7E9</span></span><br/> - <span><math class="testfont"><mtext>𝟪</mtext></math>=<span>1D7EA</span></span> - <span><math class="testfont"><mtext>𝟫</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">A</mtext></math>=<span>1D5A0</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">B</mtext></math>=<span>1D5A1</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">C</mtext></math>=<span>1D5A2</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">D</mtext></math>=<span>1D5A3</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">E</mtext></math>=<span>1D5A4</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">F</mtext></math>=<span>1D5A5</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">G</mtext></math>=<span>1D5A6</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">H</mtext></math>=<span>1D5A7</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">I</mtext></math>=<span>1D5A8</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">J</mtext></math>=<span>1D5A9</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif">K</mtext></math>=<span>1D5AA</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">L</mtext></math>=<span>1D5AB</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">M</mtext></math>=<span>1D5AC</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">N</mtext></math>=<span>1D5AD</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">O</mtext></math>=<span>1D5AE</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">P</mtext></math>=<span>1D5AF</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">Q</mtext></math>=<span>1D5B0</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">R</mtext></math>=<span>1D5B1</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">S</mtext></math>=<span>1D5B2</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">T</mtext></math>=<span>1D5B3</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif">U</mtext></math>=<span>1D5B4</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">V</mtext></math>=<span>1D5B5</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">W</mtext></math>=<span>1D5B6</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">X</mtext></math>=<span>1D5B7</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">Y</mtext></math>=<span>1D5B8</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">Z</mtext></math>=<span>1D5B9</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">a</mtext></math>=<span>1D5BA</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">b</mtext></math>=<span>1D5BB</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">c</mtext></math>=<span>1D5BC</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">d</mtext></math>=<span>1D5BD</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif">e</mtext></math>=<span>1D5BE</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">f</mtext></math>=<span>1D5BF</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">g</mtext></math>=<span>1D5C0</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">h</mtext></math>=<span>1D5C1</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">i</mtext></math>=<span>1D5C2</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">j</mtext></math>=<span>1D5C3</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">k</mtext></math>=<span>1D5C4</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">l</mtext></math>=<span>1D5C5</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">m</mtext></math>=<span>1D5C6</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">n</mtext></math>=<span>1D5C7</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif">o</mtext></math>=<span>1D5C8</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">p</mtext></math>=<span>1D5C9</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">q</mtext></math>=<span>1D5CA</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">r</mtext></math>=<span>1D5CB</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">s</mtext></math>=<span>1D5CC</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">t</mtext></math>=<span>1D5CD</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">u</mtext></math>=<span>1D5CE</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">v</mtext></math>=<span>1D5CF</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">w</mtext></math>=<span>1D5D0</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">x</mtext></math>=<span>1D5D1</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif">y</mtext></math>=<span>1D5D2</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">z</mtext></math>=<span>1D5D3</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">0</mtext></math>=<span>1D7E2</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">1</mtext></math>=<span>1D7E3</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">2</mtext></math>=<span>1D7E4</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">3</mtext></math>=<span>1D7E5</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">4</mtext></math>=<span>1D7E6</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">5</mtext></math>=<span>1D7E7</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">6</mtext></math>=<span>1D7E8</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">7</mtext></math>=<span>1D7E9</span></span><br/> - <span><math class="testfont"><mtext mathvariant="sans-serif">8</mtext></math>=<span>1D7EA</span></span> - <span><math class="testfont"><mtext mathvariant="sans-serif">9</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>𝒜</mtext></math>=<span>1D49C</span></span> - <span><math class="testfont"><mtext>ℬ</mtext></math>=<span>0212C</span></span> - <span><math class="testfont"><mtext>𝒞</mtext></math>=<span>1D49E</span></span> - <span><math class="testfont"><mtext>𝒟</mtext></math>=<span>1D49F</span></span> - <span><math class="testfont"><mtext>ℰ</mtext></math>=<span>02130</span></span> - <span><math class="testfont"><mtext>ℱ</mtext></math>=<span>02131</span></span> - <span><math class="testfont"><mtext>𝒢</mtext></math>=<span>1D4A2</span></span> - <span><math class="testfont"><mtext>ℋ</mtext></math>=<span>0210B</span></span> - <span><math class="testfont"><mtext>ℐ</mtext></math>=<span>02110</span></span> - <span><math class="testfont"><mtext>𝒥</mtext></math>=<span>1D4A5</span></span><br/> - <span><math class="testfont"><mtext>𝒦</mtext></math>=<span>1D4A6</span></span> - <span><math class="testfont"><mtext>ℒ</mtext></math>=<span>02112</span></span> - <span><math class="testfont"><mtext>ℳ</mtext></math>=<span>02133</span></span> - <span><math class="testfont"><mtext>𝒩</mtext></math>=<span>1D4A9</span></span> - <span><math class="testfont"><mtext>𝒪</mtext></math>=<span>1D4AA</span></span> - <span><math class="testfont"><mtext>𝒫</mtext></math>=<span>1D4AB</span></span> - <span><math class="testfont"><mtext>𝒬</mtext></math>=<span>1D4AC</span></span> - <span><math class="testfont"><mtext>ℛ</mtext></math>=<span>0211B</span></span> - <span><math class="testfont"><mtext>𝒮</mtext></math>=<span>1D4AE</span></span> - <span><math class="testfont"><mtext>𝒯</mtext></math>=<span>1D4AF</span></span><br/> - <span><math class="testfont"><mtext>𝒰</mtext></math>=<span>1D4B0</span></span> - <span><math class="testfont"><mtext>𝒱</mtext></math>=<span>1D4B1</span></span> - <span><math class="testfont"><mtext>𝒲</mtext></math>=<span>1D4B2</span></span> - <span><math class="testfont"><mtext>𝒳</mtext></math>=<span>1D4B3</span></span> - <span><math class="testfont"><mtext>𝒴</mtext></math>=<span>1D4B4</span></span> - <span><math class="testfont"><mtext>𝒵</mtext></math>=<span>1D4B5</span></span> - <span><math class="testfont"><mtext>𝒶</mtext></math>=<span>1D4B6</span></span> - <span><math class="testfont"><mtext>𝒷</mtext></math>=<span>1D4B7</span></span> - <span><math class="testfont"><mtext>𝒸</mtext></math>=<span>1D4B8</span></span> - <span><math class="testfont"><mtext>𝒹</mtext></math>=<span>1D4B9</span></span><br/> - <span><math class="testfont"><mtext>ℯ</mtext></math>=<span>0212F</span></span> - <span><math class="testfont"><mtext>𝒻</mtext></math>=<span>1D4BB</span></span> - <span><math class="testfont"><mtext>ℊ</mtext></math>=<span>0210A</span></span> - <span><math class="testfont"><mtext>𝒽</mtext></math>=<span>1D4BD</span></span> - <span><math class="testfont"><mtext>𝒾</mtext></math>=<span>1D4BE</span></span> - <span><math class="testfont"><mtext>𝒿</mtext></math>=<span>1D4BF</span></span> - <span><math class="testfont"><mtext>𝓀</mtext></math>=<span>1D4C0</span></span> - <span><math class="testfont"><mtext>𝓁</mtext></math>=<span>1D4C1</span></span> - <span><math class="testfont"><mtext>𝓂</mtext></math>=<span>1D4C2</span></span> - <span><math class="testfont"><mtext>𝓃</mtext></math>=<span>1D4C3</span></span><br/> - <span><math class="testfont"><mtext>ℴ</mtext></math>=<span>02134</span></span> - <span><math class="testfont"><mtext>𝓅</mtext></math>=<span>1D4C5</span></span> - <span><math class="testfont"><mtext>𝓆</mtext></math>=<span>1D4C6</span></span> - <span><math class="testfont"><mtext>𝓇</mtext></math>=<span>1D4C7</span></span> - <span><math class="testfont"><mtext>𝓈</mtext></math>=<span>1D4C8</span></span> - <span><math class="testfont"><mtext>𝓉</mtext></math>=<span>1D4C9</span></span> - <span><math class="testfont"><mtext>𝓊</mtext></math>=<span>1D4CA</span></span> - <span><math class="testfont"><mtext>𝓋</mtext></math>=<span>1D4CB</span></span> - <span><math class="testfont"><mtext>𝓌</mtext></math>=<span>1D4CC</span></span> - <span><math class="testfont"><mtext>𝓍</mtext></math>=<span>1D4CD</span></span><br/> - <span><math class="testfont"><mtext>𝓎</mtext></math>=<span>1D4CE</span></span> - <span><math class="testfont"><mtext>𝓏</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">A</mtext></math>=<span>1D49C</span></span> - <span><math class="testfont"><mtext mathvariant="script">B</mtext></math>=<span>0212C</span></span> - <span><math class="testfont"><mtext mathvariant="script">C</mtext></math>=<span>1D49E</span></span> - <span><math class="testfont"><mtext mathvariant="script">D</mtext></math>=<span>1D49F</span></span> - <span><math class="testfont"><mtext mathvariant="script">E</mtext></math>=<span>02130</span></span> - <span><math class="testfont"><mtext mathvariant="script">F</mtext></math>=<span>02131</span></span> - <span><math class="testfont"><mtext mathvariant="script">G</mtext></math>=<span>1D4A2</span></span> - <span><math class="testfont"><mtext mathvariant="script">H</mtext></math>=<span>0210B</span></span> - <span><math class="testfont"><mtext mathvariant="script">I</mtext></math>=<span>02110</span></span> - <span><math class="testfont"><mtext mathvariant="script">J</mtext></math>=<span>1D4A5</span></span><br/> - <span><math class="testfont"><mtext mathvariant="script">K</mtext></math>=<span>1D4A6</span></span> - <span><math class="testfont"><mtext mathvariant="script">L</mtext></math>=<span>02112</span></span> - <span><math class="testfont"><mtext mathvariant="script">M</mtext></math>=<span>02133</span></span> - <span><math class="testfont"><mtext mathvariant="script">N</mtext></math>=<span>1D4A9</span></span> - <span><math class="testfont"><mtext mathvariant="script">O</mtext></math>=<span>1D4AA</span></span> - <span><math class="testfont"><mtext mathvariant="script">P</mtext></math>=<span>1D4AB</span></span> - <span><math class="testfont"><mtext mathvariant="script">Q</mtext></math>=<span>1D4AC</span></span> - <span><math class="testfont"><mtext mathvariant="script">R</mtext></math>=<span>0211B</span></span> - <span><math class="testfont"><mtext mathvariant="script">S</mtext></math>=<span>1D4AE</span></span> - <span><math class="testfont"><mtext mathvariant="script">T</mtext></math>=<span>1D4AF</span></span><br/> - <span><math class="testfont"><mtext mathvariant="script">U</mtext></math>=<span>1D4B0</span></span> - <span><math class="testfont"><mtext mathvariant="script">V</mtext></math>=<span>1D4B1</span></span> - <span><math class="testfont"><mtext mathvariant="script">W</mtext></math>=<span>1D4B2</span></span> - <span><math class="testfont"><mtext mathvariant="script">X</mtext></math>=<span>1D4B3</span></span> - <span><math class="testfont"><mtext mathvariant="script">Y</mtext></math>=<span>1D4B4</span></span> - <span><math class="testfont"><mtext mathvariant="script">Z</mtext></math>=<span>1D4B5</span></span> - <span><math class="testfont"><mtext mathvariant="script">a</mtext></math>=<span>1D4B6</span></span> - <span><math class="testfont"><mtext mathvariant="script">b</mtext></math>=<span>1D4B7</span></span> - <span><math class="testfont"><mtext mathvariant="script">c</mtext></math>=<span>1D4B8</span></span> - <span><math class="testfont"><mtext mathvariant="script">d</mtext></math>=<span>1D4B9</span></span><br/> - <span><math class="testfont"><mtext mathvariant="script">e</mtext></math>=<span>0212F</span></span> - <span><math class="testfont"><mtext mathvariant="script">f</mtext></math>=<span>1D4BB</span></span> - <span><math class="testfont"><mtext mathvariant="script">g</mtext></math>=<span>0210A</span></span> - <span><math class="testfont"><mtext mathvariant="script">h</mtext></math>=<span>1D4BD</span></span> - <span><math class="testfont"><mtext mathvariant="script">i</mtext></math>=<span>1D4BE</span></span> - <span><math class="testfont"><mtext mathvariant="script">j</mtext></math>=<span>1D4BF</span></span> - <span><math class="testfont"><mtext mathvariant="script">k</mtext></math>=<span>1D4C0</span></span> - <span><math class="testfont"><mtext mathvariant="script">l</mtext></math>=<span>1D4C1</span></span> - <span><math class="testfont"><mtext mathvariant="script">m</mtext></math>=<span>1D4C2</span></span> - <span><math class="testfont"><mtext mathvariant="script">n</mtext></math>=<span>1D4C3</span></span><br/> - <span><math class="testfont"><mtext mathvariant="script">o</mtext></math>=<span>02134</span></span> - <span><math class="testfont"><mtext mathvariant="script">p</mtext></math>=<span>1D4C5</span></span> - <span><math class="testfont"><mtext mathvariant="script">q</mtext></math>=<span>1D4C6</span></span> - <span><math class="testfont"><mtext mathvariant="script">r</mtext></math>=<span>1D4C7</span></span> - <span><math class="testfont"><mtext mathvariant="script">s</mtext></math>=<span>1D4C8</span></span> - <span><math class="testfont"><mtext mathvariant="script">t</mtext></math>=<span>1D4C9</span></span> - <span><math class="testfont"><mtext mathvariant="script">u</mtext></math>=<span>1D4CA</span></span> - <span><math class="testfont"><mtext mathvariant="script">v</mtext></math>=<span>1D4CB</span></span> - <span><math class="testfont"><mtext mathvariant="script">w</mtext></math>=<span>1D4CC</span></span> - <span><math class="testfont"><mtext mathvariant="script">x</mtext></math>=<span>1D4CD</span></span><br/> - <span><math class="testfont"><mtext mathvariant="script">y</mtext></math>=<span>1D4CE</span></span> - <span><math class="testfont"><mtext mathvariant="script">z</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>𞹡</mtext></math>=<span>1EE61</span></span> - <span><math class="testfont"><mtext>𞹢</mtext></math>=<span>1EE62</span></span> - <span><math class="testfont"><mtext>𞹤</mtext></math>=<span>1EE64</span></span> - <span><math class="testfont"><mtext>𞹧</mtext></math>=<span>1EE67</span></span> - <span><math class="testfont"><mtext>𞹨</mtext></math>=<span>1EE68</span></span> - <span><math class="testfont"><mtext>𞹩</mtext></math>=<span>1EE69</span></span> - <span><math class="testfont"><mtext>𞹪</mtext></math>=<span>1EE6A</span></span> - <span><math class="testfont"><mtext>𞹬</mtext></math>=<span>1EE6C</span></span> - <span><math class="testfont"><mtext>𞹭</mtext></math>=<span>1EE6D</span></span> - <span><math class="testfont"><mtext>𞹮</mtext></math>=<span>1EE6E</span></span><br/> - <span><math class="testfont"><mtext>𞹯</mtext></math>=<span>1EE6F</span></span> - <span><math class="testfont"><mtext>𞹰</mtext></math>=<span>1EE70</span></span> - <span><math class="testfont"><mtext>𞹱</mtext></math>=<span>1EE71</span></span> - <span><math class="testfont"><mtext>𞹲</mtext></math>=<span>1EE72</span></span> - <span><math class="testfont"><mtext>𞹴</mtext></math>=<span>1EE74</span></span> - <span><math class="testfont"><mtext>𞹵</mtext></math>=<span>1EE75</span></span> - <span><math class="testfont"><mtext>𞹶</mtext></math>=<span>1EE76</span></span> - <span><math class="testfont"><mtext>𞹷</mtext></math>=<span>1EE77</span></span> - <span><math class="testfont"><mtext>𞹹</mtext></math>=<span>1EE79</span></span> - <span><math class="testfont"><mtext>𞹺</mtext></math>=<span>1EE7A</span></span><br/> - <span><math class="testfont"><mtext>𞹻</mtext></math>=<span>1EE7B</span></span> - <span><math class="testfont"><mtext>𞹼</mtext></math>=<span>1EE7C</span></span> - <span><math class="testfont"><mtext>𞹾</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">ب</mtext></math>=<span>1EE61</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ج</mtext></math>=<span>1EE62</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ه</mtext></math>=<span>1EE64</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ح</mtext></math>=<span>1EE67</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ط</mtext></math>=<span>1EE68</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ي</mtext></math>=<span>1EE69</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ك</mtext></math>=<span>1EE6A</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">م</mtext></math>=<span>1EE6C</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ن</mtext></math>=<span>1EE6D</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">س</mtext></math>=<span>1EE6E</span></span><br/> - <span><math class="testfont"><mtext mathvariant="stretched">ع</mtext></math>=<span>1EE6F</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ف</mtext></math>=<span>1EE70</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ص</mtext></math>=<span>1EE71</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ق</mtext></math>=<span>1EE72</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ش</mtext></math>=<span>1EE74</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ت</mtext></math>=<span>1EE75</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ث</mtext></math>=<span>1EE76</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">خ</mtext></math>=<span>1EE77</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ض</mtext></math>=<span>1EE79</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ظ</mtext></math>=<span>1EE7A</span></span><br/> - <span><math class="testfont"><mtext mathvariant="stretched">غ</mtext></math>=<span>1EE7B</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ٮ</mtext></math>=<span>1EE7C</span></span> - <span><math class="testfont"><mtext mathvariant="stretched">ڡ</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>𞹂</mtext></math>=<span>1EE42</span></span> - <span><math class="testfont"><mtext>𞹇</mtext></math>=<span>1EE47</span></span> - <span><math class="testfont"><mtext>𞹉</mtext></math>=<span>1EE49</span></span> - <span><math class="testfont"><mtext>𞹋</mtext></math>=<span>1EE4B</span></span> - <span><math class="testfont"><mtext>𞹍</mtext></math>=<span>1EE4D</span></span> - <span><math class="testfont"><mtext>𞹎</mtext></math>=<span>1EE4E</span></span> - <span><math class="testfont"><mtext>𞹏</mtext></math>=<span>1EE4F</span></span> - <span><math class="testfont"><mtext>𞹑</mtext></math>=<span>1EE51</span></span> - <span><math class="testfont"><mtext>𞹒</mtext></math>=<span>1EE52</span></span> - <span><math class="testfont"><mtext>𞹔</mtext></math>=<span>1EE54</span></span><br/> - <span><math class="testfont"><mtext>𞹗</mtext></math>=<span>1EE57</span></span> - <span><math class="testfont"><mtext>𞹙</mtext></math>=<span>1EE59</span></span> - <span><math class="testfont"><mtext>𞹛</mtext></math>=<span>1EE5B</span></span> - <span><math class="testfont"><mtext>𞹝</mtext></math>=<span>1EE5D</span></span> - <span><math class="testfont"><mtext>𞹟</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">ج</mtext></math>=<span>1EE42</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ح</mtext></math>=<span>1EE47</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ي</mtext></math>=<span>1EE49</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ل</mtext></math>=<span>1EE4B</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ن</mtext></math>=<span>1EE4D</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">س</mtext></math>=<span>1EE4E</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ع</mtext></math>=<span>1EE4F</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ص</mtext></math>=<span>1EE51</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ق</mtext></math>=<span>1EE52</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ش</mtext></math>=<span>1EE54</span></span><br/> - <span><math class="testfont"><mtext mathvariant="tailed">خ</mtext></math>=<span>1EE57</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ض</mtext></math>=<span>1EE59</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">غ</mtext></math>=<span>1EE5B</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ں</mtext></math>=<span>1EE5D</span></span> - <span><math class="testfont"><mtext mathvariant="tailed">ٯ</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">ب</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">ب</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">ب</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">ب</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')); |