Import wpt@ecc43f56d11b2485f17bf57c0db2031778d3eca9

Using wpt-import in Chromium a10a8de2eb9287bf62159e5dad22d766e912dd65.
With Chromium commits locally applied on WPT:
9e3affdd55 "Ship `referer` header length limitation."
845a980aef "KV Storage: add timeout=long and reenable disabled test"
74cc69729b "[Navigation Timing] secureConnectionStart should be non-zero"
73b57b36ea "Add sec-metadata test when updating a service worker"
58b8718f5b "KV Storage: update to match IDL"


Note to sheriffs: This CL imports external tests and adds
expectations for those tests; if this CL is large and causes
a few new failures, please fix the failures by adding new
lines to TestExpectations rather than reverting. See:
https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md

NOAUTOREVERT=true
TBR=lukebjerring

No-Export: true
Change-Id: Ia23e67f9df8f868ef976b7eaa71d483102db4a20
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1676184
Reviewed-by: WPT Autoroller <wpt-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: WPT Autoroller <wpt-autoroller@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#672064}
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index c72f9be..08ba6fc 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -3207,6 +3207,7 @@
 crbug.com/968164 external/wpt/css/css-ui/webkit-appearance-menulist-button-001.html [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 external/wpt/svg/coordinate-systems/viewBox-scaling-text-001.html [ Failure ]
 crbug.com/626703 [ Retina ] virtual/blink-cors/external/wpt/referrer-policy/no-referrer/http-rp/same-origin/http-http/script-tag/keep-origin-redirect/generic.http.html [ Timeout ]
 crbug.com/626703 [ Retina ] virtual/blink-cors/external/wpt/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/script-tag/swap-origin-redirect/insecure-protocol.http.html [ Timeout ]
 crbug.com/626703 [ Retina ] virtual/blink-cors/external/wpt/fetch/api/basic/header-value-combining.any.sharedworker.html [ Timeout ]
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
index 7dc0cc7..7141387 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_6.json
@@ -114519,6 +114519,78 @@
      {}
     ]
    ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-001.html": [
+    [
+     "mathml/presentation-markup/fractions/frac-parameters-gap-001.html",
+     [
+      [
+       "/mathml/presentation-markup/fractions/frac-parameters-gap-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-002.html": [
+    [
+     "mathml/presentation-markup/fractions/frac-parameters-gap-002.html",
+     [
+      [
+       "/mathml/presentation-markup/fractions/frac-parameters-gap-002-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-003.html": [
+    [
+     "mathml/presentation-markup/fractions/frac-parameters-gap-003.html",
+     [
+      [
+       "/mathml/presentation-markup/fractions/frac-parameters-gap-003-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-004.html": [
+    [
+     "mathml/presentation-markup/fractions/frac-parameters-gap-004.html",
+     [
+      [
+       "/mathml/presentation-markup/fractions/frac-parameters-gap-004-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-005.html": [
+    [
+     "mathml/presentation-markup/fractions/frac-parameters-gap-005.html",
+     [
+      [
+       "/mathml/presentation-markup/fractions/frac-parameters-gap-005-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-006.html": [
+    [
+     "mathml/presentation-markup/fractions/frac-parameters-gap-006.html",
+     [
+      [
+       "/mathml/presentation-markup/fractions/frac-parameters-gap-006-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "mathml/presentation-markup/fractions/frac-visibility-001.html": [
     [
      "mathml/presentation-markup/fractions/frac-visibility-001.html",
@@ -115323,6 +115395,18 @@
      {}
     ]
    ],
+   "svg/coordinate-systems/viewBox-scaling-text-001.html": [
+    [
+     "svg/coordinate-systems/viewBox-scaling-text-001.html",
+     [
+      [
+       "/svg/coordinate-systems/support/viewBox-scaling-text-001-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "svg/embedded/image-embedding-svg-viewref-with-viewbox.svg": [
     [
      "svg/embedded/image-embedding-svg-viewref-with-viewbox.svg",
@@ -151337,6 +151421,9 @@
    "fonts/math/lineheight5000-typolineheight2300.woff": [
     []
    ],
+   "fonts/math/math-text.woff": [
+    []
+   ],
    "fonts/math/mathvariant-bold-fraktur.woff": [
     []
    ],
@@ -159929,6 +160016,24 @@
    "mathml/presentation-markup/fractions/frac-numalign-denomalign-001-ref.html": [
     []
    ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-001-ref.html": [
+    []
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-002-ref.html": [
+    []
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-003-ref.html": [
+    []
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-004-ref.html": [
+    []
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-005-ref.html": [
+    []
+   ],
+   "mathml/presentation-markup/fractions/frac-parameters-gap-006-ref.html": [
+    []
+   ],
    "mathml/presentation-markup/fractions/frac-visibility-001-ref.html": [
     []
    ],
@@ -160085,6 +160190,9 @@
    "mathml/tools/limits.py": [
     []
    ],
+   "mathml/tools/math-text.py": [
+    []
+   ],
    "mathml/tools/mathvariant-transforms.py": [
     []
    ],
@@ -166889,6 +166997,9 @@
    "svg/coordinate-systems/support/simple.svg": [
     []
    ],
+   "svg/coordinate-systems/support/viewBox-scaling-text-001-ref.html": [
+    []
+   ],
    "svg/embedded/reference/green-rect-100x100.svg": [
     []
    ],
@@ -413852,6 +413963,10 @@
    "09076604c3a1989956adb083108d2878bfb32c4b",
    "support"
   ],
+  "fonts/math/math-text.woff": [
+   "afe4057f6eefc6a758abb91a8ab3af6949be930b",
+   "support"
+  ],
   "fonts/math/mathvariant-bold-fraktur.woff": [
    "20cd8e3b49e18b9bc900cf13b2ce9664c5ed4864",
    "support"
@@ -437088,6 +437203,54 @@
    "b1ee502ccdae6cf96d2f104d7daf1c2dbba390f7",
    "testharness"
   ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-001-ref.html": [
+   "69be003195a82d28031de06156629a68457bfbcf",
+   "support"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-001.html": [
+   "f577682ad92631bb721354e2c3d6fb1f59db94b3",
+   "reftest"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-002-ref.html": [
+   "9169bb999c3096a886ee804a828ade453ef7abd1",
+   "support"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-002.html": [
+   "2c0a9a1a668307b2b7e90774fd118d89628dc6c6",
+   "reftest"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-003-ref.html": [
+   "3fe86faf9f36ef4ef4d4d2993eb8685c3fb70fa7",
+   "support"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-003.html": [
+   "826eecd55c4da13fafdbe08457ecb5cda260b46b",
+   "reftest"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-004-ref.html": [
+   "10d0415304e8839ca0a4da38085df6dc69ca5aa5",
+   "support"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-004.html": [
+   "359176228d7c543d5efa7b448c777e575df184ac",
+   "reftest"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-005-ref.html": [
+   "9bfd7653d1d38a8e4b130eaf7bee00d0a39c9cc0",
+   "support"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-005.html": [
+   "60295f7ddd20c1a9b55d4c3b800c8a78f324c7fe",
+   "reftest"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-006-ref.html": [
+   "2abba28f0a34e42b0b0ced64af4499bb3b33fe0e",
+   "support"
+  ],
+  "mathml/presentation-markup/fractions/frac-parameters-gap-006.html": [
+   "7895052d4fd5b02e11e03872ab3d6de574781db2",
+   "reftest"
+  ],
   "mathml/presentation-markup/fractions/frac-visibility-001-ref.html": [
    "41a262d511197edebb913cb68eb688eddf763ff2",
    "support"
@@ -437576,6 +437739,10 @@
    "840a76ffb1a6ac199ff9c655e72262f8955012a2",
    "support"
   ],
+  "mathml/tools/math-text.py": [
+   "45b182c571999fc85892311367087fdc0608facd",
+   "support"
+  ],
   "mathml/tools/mathvariant-transforms.py": [
    "ba99b595f0aa6338ba7a752801c4a32dbbefc9ef",
    "support"
@@ -466928,6 +467095,14 @@
    "e0af766e8ff5de780818b9d0712714dd5638e882",
    "support"
   ],
+  "svg/coordinate-systems/support/viewBox-scaling-text-001-ref.html": [
+   "09321909954d4c9a73d47671e64f4f6555b59087",
+   "support"
+  ],
+  "svg/coordinate-systems/viewBox-scaling-text-001.html": [
+   "f04613d019dc5acb742558fddcf5c1e01d2b2d51",
+   "reftest"
+  ],
   "svg/embedded/image-embedding-svg-viewref-with-viewbox.svg": [
    "6340c19d2a0e7c72faec83e2fb990ed9abe487f8",
    "reftest"
@@ -473461,7 +473636,7 @@
    "support"
   ],
   "tools/wptrunner/wptrunner/environment.py": [
-   "e7a9e4b1e771bc37f458284a454f443216e28bb4",
+   "2493f1fa4407a39aad3ac3c2a724322b75b0944a",
    "support"
   ],
   "tools/wptrunner/wptrunner/executors/__init__.py": [
diff --git a/third_party/blink/web_tests/external/wpt/fonts/math/math-text.woff b/third_party/blink/web_tests/external/wpt/fonts/math/math-text.woff
new file mode 100644
index 0000000..afe4057f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/fonts/math/math-text.woff
Binary files differ
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-001-ref.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-001-ref.html
new file mode 100644
index 0000000..69be003
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-001-ref.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters</title>
+<style>
+  math, mspace {
+    font-size: 20px;
+  }
+  @font-face {
+    font-family: denominatordisplaystylegapmin5000-rulethickness1000;
+    src: url("/fonts/math/fraction-denominatordisplaystylegapmin5000-rulethickness1000.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math display="block" style="font-family: denominatordisplaystylegapmin5000-rulethickness1000;">
+      <mspace height="2em" depth="20em"/>
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace width="1em" height=".5em" depth=".5em" style="background: blue"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace width="1em" height="1em" style="background: blue"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace width="1em" depth="1em" style="background: blue"/>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-001.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-001.html
new file mode 100644
index 0000000..f577682
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-001.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters (display gap between bar and denominator)</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
+<link rel="match" href="frac-parameters-gap-001-ref.html"/>
+<meta name="assert" content="Element mfrac correctly uses the FractionDenomDisplayStyleGapMin parameter from the MATH table when denominator contains text.">
+<style>
+  math, mspace, mtext {
+    font-size: 20px;
+  }
+  mtext {
+    font-family: math-text;
+    color: blue;
+  }
+  @font-face {
+    font-family: denominatordisplaystylegapmin5000-rulethickness1000;
+    src: url("/fonts/math/fraction-denominatordisplaystylegapmin5000-rulethickness1000.woff");
+  }
+  @font-face {
+    /*
+      math-text has the following properties:
+      - typo/hhea/win metrics: 2.5em ascent and 2.5em descent.
+      - glyph A: .5em ascent and .5em descent.
+      - glyph B: 1em ascent and 0em descent.
+      - glyph C: 0em ascent and 1em descent.
+     */
+    font-family: math-text;
+    src: url("/fonts/math/math-text.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math display="block" style="font-family: denominatordisplaystylegapmin5000-rulethickness1000;">
+      <!-- This is a dummy mspace element to ensure that the font ascent/descent does not affect the size of the math element. -->
+      <mspace height="2em" depth="20em"/>
+      <!--
+           All the fraction bars must be aligned.
+           The gap between the denominators and bar must be FractionDenomDisplayStyleGapMin.
+           The gap should be calculated using the exact bounding box of the glyphs.
+           Hence glyphs A, B, C should be rendered at the same vertical position, even if they have different ascent/descent.
+        -->
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mtext>A</mtext>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mtext>B</mtext>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mtext>C</mtext>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-002-ref.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-002-ref.html
new file mode 100644
index 0000000..9169bb9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-002-ref.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters</title>
+<style>
+  math, mspace {
+    font-size: 20px;
+  }
+  @font-face {
+    font-family: denominatorgapmin4000-rulethickness1000;
+    src: url("/fonts/math/fraction-denominatorgapmin4000-rulethickness1000.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math style="font-family: denominatorgapmin4000-rulethickness1000;">
+      <mspace height="2em" depth="20em"/>
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace width="1em" height=".5em" depth=".5em" style="background: blue"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace width="1em" height="1em" style="background: blue"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace width="1em" depth="1em" style="background: blue"/>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-002.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-002.html
new file mode 100644
index 0000000..2c0a9a1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-002.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters (inline gap between bar and denominator)</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
+<link rel="match" href="frac-parameters-gap-002-ref.html"/>
+<meta name="assert" content="Element mfrac correctly uses the FractionDenominatorGapMin parameter from the MATH table when denominator contains text.">
+<style>
+  math, mspace, mtext {
+    font-size: 20px;
+  }
+  mtext {
+    font-family: math-text;
+    color: blue;
+  }
+  @font-face {
+    font-family: denominatorgapmin4000-rulethickness1000;
+    src: url("/fonts/math/fraction-denominatorgapmin4000-rulethickness1000.woff");
+  }
+  @font-face {
+    /*
+      math-text has the following properties:
+      - typo/hhea/win metrics: 2.5em ascent and 2.5em descent.
+      - glyph A: .5em ascent and .5em descent.
+      - glyph B: 1em ascent and 0em descent.
+      - glyph C: 0em ascent and 1em descent.
+     */
+    font-family: math-text;
+    src: url("/fonts/math/math-text.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math style="font-family: denominatorgapmin4000-rulethickness1000;">
+      <!-- This is a dummy mspace element to ensure that the font ascent/descent does not affect the size of the math element. -->
+      <mspace height="2em" depth="20em"/>
+      <!--
+           All the fraction bars must be aligned.
+           The gap between the denominators and bar must be FractionDenominatorGapMin.
+           The gap should be calculated using the exact bounding box of the glyphs.
+           Hence glyphs A, B, C should be rendered at the same vertical position, even if they have different ascent/descent.
+        -->
+      <mfrac>
+        <mspace width="3em"/>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mtext>A</mtext>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mtext>B</mtext>
+      </mfrac>
+      <mfrac>
+        <mspace width="3em"/>
+        <mtext>C</mtext>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-003-ref.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-003-ref.html
new file mode 100644
index 0000000..3fe86fa
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-003-ref.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters</title>
+<style>
+  math, mspace {
+    font-size: 20px;
+  }
+  @font-face {
+    font-family: numeratordisplaystylegapmin8000-rulethickness1000;
+    src: url("/fonts/math/fraction-numeratordisplaystylegapmin8000-rulethickness1000.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math display="block" style="font-family: numeratordisplaystylegapmin8000-rulethickness1000;">
+      <mspace height="20em" depth="2em"/>
+      <mfrac>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="1em" depth=".5em" height=".5em" style="background: blue"/>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="1em" height="1em" style="background: blue"/>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="1em" depth="1em" style="background: blue"/>
+        <mspace width="3em"/>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-003.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-003.html
new file mode 100644
index 0000000..826eecd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-003.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters (display gap between bar and numerator)</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
+<link rel="match" href="frac-parameters-gap-003-ref.html"/>
+<meta name="assert" content="Element mfrac correctly uses the FractionNumDisplayStyleGapMin parameter from the MATH table when numerator contains text.">
+<style>
+  math, mspace, mtext {
+    font-size: 20px;
+  }
+  mtext {
+    font-family: math-text;
+    color: blue;
+  }
+  @font-face {
+    font-family: numeratordisplaystylegapmin8000-rulethickness1000;
+    src: url("/fonts/math/fraction-numeratordisplaystylegapmin8000-rulethickness1000.woff");
+  }
+  @font-face {
+    /*
+      math-text has the following properties:
+      - typo/hhea/win metrics: 2.5em ascent and 2.5em descent.
+      - glyph A: .5em ascent and .5em descent.
+      - glyph B: 1em ascent and 0em descent.
+      - glyph C: 0em ascent and 1em descent.
+     */
+    font-family: math-text;
+    src: url("/fonts/math/math-text.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math display="block" style="font-family: numeratordisplaystylegapmin8000-rulethickness1000;">
+      <!-- This is a dummy mspace element to ensure that the font ascent/descent does not affect the size of the math element. -->
+      <mspace height="20em" depth="2em"/>
+      <!--
+           All the fraction bars must be aligned.
+           The gap between the numerators and bar must be FractionNumDisplayStyleGapMin.
+           The gap should be calculated using the exact bounding box of the glyphs.
+           Hence glyphs A, B, C should be rendered at the same vertical position, even if they have different ascent/descent.
+        -->
+      <mfrac>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mtext>A</mtext>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mtext>B</mtext>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mtext>C</mtext>
+        <mspace width="3em"/>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-004-ref.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-004-ref.html
new file mode 100644
index 0000000..10d0415
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-004-ref.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters</title>
+<style>
+  math, mspace {
+    font-size: 20px;
+  }
+  @font-face {
+    font-family: numeratorgapmin9000-rulethickness1000;
+    src: url("/fonts/math/fraction-numeratorgapmin9000-rulethickness1000.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math style="font-family: numeratorgapmin9000-rulethickness1000;">
+      <mspace height="20em" depth="2em"/>
+      <mfrac>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="1em" height=".5em" depth=".5em" style="background: blue"/>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="1em" height="1em" style="background: blue"/>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mspace width="1em" depth="1em" style="background: blue"/>
+        <mspace width="3em"/>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-004.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-004.html
new file mode 100644
index 0000000..3591762
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-004.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters (inline gap between bar and numerator)</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
+<link rel="match" href="frac-parameters-gap-004-ref.html"/>
+<meta name="assert" content="Element mfrac correctly uses the FractionNumeratorGapMin parameter from the MATH table when numerator contains text.">
+<style>
+  math, mspace, mtext {
+    font-size: 20px;
+  }
+  mtext {
+    font-family: math-text;
+    color: blue;
+  }
+  @font-face {
+    font-family: numeratorgapmin9000-rulethickness1000;
+    src: url("/fonts/math/fraction-numeratorgapmin9000-rulethickness1000.woff");
+  }
+  @font-face {
+    /*
+      math-text has the following properties:
+      - typo/hhea/win metrics: 2.5em ascent and 2.5em descent.
+      - glyph A: .5em ascent and .5em descent.
+      - glyph B: 1em ascent and 0em descent.
+      - glyph C: 0em ascent and 1em descent.
+     */
+    font-family: math-text;
+    src: url("/fonts/math/math-text.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math style="font-family: numeratorgapmin9000-rulethickness1000;">
+      <!-- This is a dummy mspace element to ensure that the font ascent/descent does not affect the size of the math element. -->
+      <mspace height="20em" depth="2em"/>
+      <!--
+           All the fraction bars must be aligned.
+           The gap between the numerators and bar must be FractionNumeratorGapMin.
+           The gap should be calculated using the exact bounding box of the glyphs.
+           Hence glyphs A, B, C should be rendered at the same vertical position, even if they have different ascent/descent.
+        -->
+      <mfrac>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mtext>A</mtext>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mtext>B</mtext>
+        <mspace width="3em"/>
+      </mfrac>
+      <mfrac>
+        <mtext>C</mtext>
+        <mspace width="3em"/>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-005-ref.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-005-ref.html
new file mode 100644
index 0000000..9bfd765
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-005-ref.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters</title>
+<style>
+  math, mspace {
+    font-size: 20px;
+  }
+  @font-face {
+    font-family: displaystylegapmin4000;
+    src: url("/fonts/math/stack-displaystylegapmin4000.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math display="block" style="font-family: displaystylegapmin4000">
+      <mspace height="10em" depth="10em"/>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1em"/>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1em"/>
+        <mspace width="1em" height=".5em" depth=".5em" style="background: blue"/>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1.5em"/>
+        <mspace width="1em" height="1em" style="background: blue"/>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth=".5em"/>
+        <mspace width="1em" depth="1em" style="background: blue"/>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-005.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-005.html
new file mode 100644
index 0000000..60295f7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-005.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Stack parameters (display gap between numerator and denominator)</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
+<link rel="match" href="frac-parameters-gap-005-ref.html"/>
+<meta name="assert" content="Element mfrac with zero linethickness correctly uses the StackDisplayStyleGapMin parameter from the MATH table when denominator contains text.">
+<style>
+  math, mspace, mtext {
+    font-size: 20px;
+  }
+  mtext {
+    font-family: math-text;
+    color: blue;
+  }
+  @font-face {
+    font-family: displaystylegapmin4000;
+    src: url("/fonts/math/stack-displaystylegapmin4000.woff");
+  }
+  @font-face {
+    /*
+      math-text has the following properties:
+      - typo/hhea/win metrics: 2.5em ascent and 2.5em descent.
+      - glyph A: .5em ascent and .5em descent.
+      - glyph B: 1em ascent and 0em descent.
+      - glyph C: 0em ascent and 1em descent.
+     */
+    font-family: math-text;
+    src: url("/fonts/math/math-text.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math display="block" style="font-family: displaystylegapmin4000">
+      <!-- This is a dummy mspace element to ensure that the font ascent/descent does not affect the size of the math element. -->
+      <mspace height="10em" depth="10em"/>
+      <!--
+           The gap between the numerators/denominators and the math axis must StackDisplayStyleGapMin / 2.
+           The gap should be calculated using the exact bounding box of the glyphs.
+           The numerator descent is .5em + the denominator ascent.
+           Hence glyphs A, B, C should be rendered at the same vertical position, even if they have different ascent/descent.
+        -->
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1em"/>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1em"/>
+        <mtext>A</mtext>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1.5em"/>
+        <mtext>B</mtext>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth=".5em"/>
+        <mtext>C</mtext>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-006-ref.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-006-ref.html
new file mode 100644
index 0000000..2abba28
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-006-ref.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Fraction parameters</title>
+<style>
+  math, mspace {
+    font-size: 20px;
+  }
+  @font-face {
+    font-family: gapmin8000;
+    src: url("/fonts/math/stack-gapmin8000.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math style="font-family: gapmin8000">
+      <mspace height="10em" depth="10em"/>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1em"/>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1em"/>
+        <mspace width="1em" height=".5em" depth=".5em" style="background: blue"/>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1.5em"/>
+        <mspace width="1em" height="1em" style="background: blue"/>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth=".5em"/>
+        <mspace width="1em" depth="1em" style="background: blue"/>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-006.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-006.html
new file mode 100644
index 0000000..7895052
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-006.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<title>Stack parameters (display gap between numerator and denominator)</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#fractions-mfrac">
+<link rel="match" href="frac-parameters-gap-006-ref.html"/>
+<meta name="assert" content="Element mfrac with zero linethickness correctly uses the StackGapMin parameter from the MATH table when denominator contains text.">
+<style>
+  math, mspace, mtext {
+    font-size: 20px;
+  }
+  mtext {
+    font-family: math-text;
+    color: blue;
+  }
+  @font-face {
+    font-family: gapmin8000;
+    src: url("/fonts/math/stack-gapmin8000.woff");
+  }
+  @font-face {
+    /*
+      math-text has the following properties:
+      - typo/hhea/win metrics: 2.5em ascent and 2.5em descent.
+      - glyph A: .5em ascent and .5em descent.
+      - glyph B: 1em ascent and 0em descent.
+      - glyph C: 0em ascent and 1em descent.
+     */
+    font-family: math-text;
+    src: url("/fonts/math/math-text.woff");
+  }
+  #reference {
+    background: green;
+  }
+  #frame {
+    position: absolute;
+    border-top: 4px solid black;
+    border-bottom: 4px solid black;
+    width: 100%;
+  }
+</style>
+<script>
+  function runTests() {
+    var div = document.getElementById("frame");
+    var refBox = document.getElementById("reference").getBoundingClientRect();
+    div.style.top = `${refBox.top-2}px`;
+    div.style.height = `${refBox.height-4}px`;
+    document.documentElement.classList.remove('reftest-wait');
+  }
+  window.addEventListener("load", function() {
+    // Delay the check to workaround WebKit's bug https://webkit.org/b/174030.
+    requestAnimationFrame(() => { document.fonts.ready.then(runTests); });
+  });
+</script>
+</head>
+<body>
+  <p>
+    This test passes if the blue squares are aligned:
+  </p>
+  <p>
+    <math style="font-family: gapmin8000">
+      <!-- This is a dummy mspace element to ensure that the font ascent/descent does not affect the size of the math element. -->
+      <mspace height="10em" depth="10em"/>
+      <!--
+           The gap between the numerators/denominators and the math axis must StackGapMin / 2.
+           The gap should be calculated using the exact bounding box of the glyphs.
+           The numerator descent is .5em + the denominator ascent.
+           Hence glyphs A, B, C should be rendered at the same vertical position, even if they have different ascent/descent.
+        -->
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1em"/>
+        <mspace id="reference" width="3em" height=".5em" depth=".5em"/>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1em"/>
+        <mtext>A</mtext>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth="1.5em"/>
+        <mtext>B</mtext>
+      </mfrac>
+      <mfrac linethickness="0px">
+        <mspace width="3em" depth=".5em"/>
+        <mtext>C</mtext>
+      </mfrac>
+    </math>
+  </p>
+  <div id="frame"></div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/tools/math-text.py b/third_party/blink/web_tests/external/wpt/mathml/tools/math-text.py
new file mode 100755
index 0000000..45b182c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/tools/math-text.py
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+
+from __future__ import print_function
+import fontforge
+
+font = fontforge.font()
+font.em = 1000
+lineHeight = 5000
+name = "math-text"
+font.fontname = name
+font.familyname = name
+font.fullname = name
+font.copyright = "Copyright (c) 2019 Igalia"
+
+glyph = font.createChar(ord(" "), "space")
+glyph.width = 1000
+glyph = font.createChar(ord("A"))
+pen = glyph.glyphPen()
+pen.moveTo(0, -500)
+pen.lineTo(0, 500)
+pen.lineTo(1000, 500)
+pen.lineTo(1000, -500)
+pen.closePath();
+
+glyph = font.createChar(ord("B"))
+pen = glyph.glyphPen()
+pen.moveTo(0, 0)
+pen.lineTo(0, 1000)
+pen.lineTo(1000, 1000)
+pen.lineTo(1000, 0)
+pen.closePath();
+
+glyph = font.createChar(ord("C"))
+pen = glyph.glyphPen()
+pen.moveTo(0, -1000)
+pen.lineTo(0, 0)
+pen.lineTo(1000, 0)
+pen.lineTo(1000, -1000)
+pen.closePath();
+
+font.os2_typoascent_add = False
+font.os2_typoascent = lineHeight / 2
+font.os2_typodescent_add = False
+font.os2_typodescent = -lineHeight / 2
+font.os2_typolinegap = 0
+font.hhea_ascent = lineHeight / 2
+font.hhea_ascent_add = False
+font.hhea_descent = -lineHeight / 2
+font.hhea_descent_add = False
+font.hhea_linegap = 0
+font.os2_winascent = lineHeight / 2
+font.os2_winascent_add = False
+font.os2_windescent = lineHeight / 2
+font.os2_windescent_add = False
+
+font.os2_use_typo_metrics = True
+
+path = "../../fonts/math/math-text.woff"
+print("Generating %s..." % path, end="")
+font.generate(path)
+if font.validate() == 0:
+    print(" done.")
+else:
+    print(" validation error!")
+    exit(1)
diff --git a/third_party/blink/web_tests/external/wpt/svg/coordinate-systems/support/viewBox-scaling-text-001-ref.html b/third_party/blink/web_tests/external/wpt/svg/coordinate-systems/support/viewBox-scaling-text-001-ref.html
new file mode 100644
index 0000000..0932190
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/coordinate-systems/support/viewBox-scaling-text-001-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<head>
+  <meta charset="utf-8">
+  <title>Reference case for text scaled via SVG viewBox</title>
+  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+  <style>
+    body { margin: 0; }
+    svg {
+      width: 100px;
+      height: 100px;
+      background: red;
+    }
+    rect {
+      fill: lime;
+    }
+  </style>
+</head>
+<body>
+  <svg>
+    <rect height="100%" width="100%"></rect>
+  </svg>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/svg/coordinate-systems/viewBox-scaling-text-001.html b/third_party/blink/web_tests/external/wpt/svg/coordinate-systems/viewBox-scaling-text-001.html
new file mode 100644
index 0000000..f04613d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/coordinate-systems/viewBox-scaling-text-001.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<head>
+  <meta charset="utf-8">
+  <title>Testcase for text scaled via SVG viewBox</title>
+  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+  <link rel="help" href="https://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute">
+  <link rel="match" href="support/viewBox-scaling-text-001-ref.html">
+  <style>
+    body { margin: 0; }
+    svg {
+      width: 100px;
+      height: 100px;
+      background: red;
+    }
+    text {
+      fill: lime;
+      font: 1px/1 Ahem;
+    }
+  </style>
+</head>
+<body>
+  <!-- We position the <text> at y=0.8px, which is the alphabetic baseline for
+       the Ahem font. This puts the bottom of the rendered square glyph at
+       y=1px, i.e. the bottom of the SVG viewport. With that, the 1px-tall Ahem
+       square 'X' character should fully fill the SVG viewport (which is then
+       scaled up from 1x1 to 100x100). -->
+  <svg viewBox="0 0 1 1">
+    <text x="0" y="0.8">X̂̂̂̂̂̂</text>
+  </svg>
+</body>