Merge inbound to mozilla-central. a=merge
authorBrindusan Cristian <cbrindusan@mozilla.com>
Mon, 13 Aug 2018 00:49:13 +0300
changeset 431163 83d0673bbca4
parent 431140 4b8065865403 (current diff)
parent 431162 385ebda7ee53 (diff)
child 431165 42d89a7c8813
child 431177 acf69d2b847d
push id34429
push usercbrindusan@mozilla.com
push date2018-08-12 21:49 +0000
treeherdermozilla-central@83d0673bbca4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone63.0a1
first release with
nightly linux32
83d0673bbca4 / 63.0a1 / 20180812220618 / files
nightly linux64
83d0673bbca4 / 63.0a1 / 20180812220618 / files
nightly mac
83d0673bbca4 / 63.0a1 / 20180812220618 / files
nightly win32
83d0673bbca4 / 63.0a1 / 20180812220618 / files
nightly win64
83d0673bbca4 / 63.0a1 / 20180812220618 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge inbound to mozilla-central. a=merge
testing/web-platform/tests/workers/WorkerGlobalScope_requestAnimationFrame.htm
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -944,18 +944,22 @@ pref("app.feedback.baseURL", "https://in
 #endif
 
 // base URL for web-based marketing pages
 pref("app.productInfo.baseURL", "https://www.mozilla.org/firefox/features/");
 
 // Name of alternate about: page for certificate errors (when undefined, defaults to about:neterror)
 pref("security.alternate_certificate_error_page", "certerror");
 
-// Indicates if new certificate error page (enabled) or not
+// Enable the new certificate error page only for Nightly
+#if defined(NIGHTLY_BUILD)
+pref("browser.security.newcerterrorpage.enabled", true);
+#else
 pref("browser.security.newcerterrorpage.enabled", false);
+#endif
 
 // Whether to start the private browsing mode at application startup
 pref("browser.privatebrowsing.autostart", false);
 
 // Whether the bookmark panel should be shown when bookmarking a page.
 pref("browser.bookmarks.editDialog.showForNewBookmarks", true);
 
 // Don't try to alter this pref, it'll be reset the next time you use the
--- a/browser/base/content/test/about/browser_aboutCertError.js
+++ b/browser/base/content/test/about/browser_aboutCertError.js
@@ -148,16 +148,25 @@ add_task(async function checkBadStsCert(
     ok(exceptionButtonHidden, "Exception button is hidden");
 
     let message = await ContentTask.spawn(browser, {frame: useFrame}, async function({frame}) {
       let doc = frame ? content.document.querySelector("iframe").contentDocument : content.document;
       let advancedButton = doc.getElementById("advancedButton");
       advancedButton.click();
       return doc.getElementById("badCertTechnicalInfo").textContent;
     });
+    if (Services.prefs.getBoolPref("browser.security.newcerterrorpage.enabled", false)) {
+      ok(message.includes("SSL_ERROR_BAD_CERT_DOMAIN"), "Didn't find SSL_ERROR_BAD_CERT_DOMAIN.");
+      ok(message.includes("The certificate is only valid for"), "Didn't find error message.");
+      ok(message.includes("a security certificate that is not valid for"), "Didn't find error message.");
+      ok(message.includes("badchain.include-subdomains.pinning.example.com"), "Didn't find domain in error message.");
+
+      BrowserTestUtils.removeTab(gBrowser.selectedTab);
+      return;
+    }
     ok(message.includes("SSL_ERROR_BAD_CERT_DOMAIN"), "Didn't find SSL_ERROR_BAD_CERT_DOMAIN.");
     ok(message.includes("The certificate is only valid for"), "Didn't find error message.");
     ok(message.includes("uses an invalid security certificate"), "Didn't find error message.");
     ok(message.includes("badchain.include-subdomains.pinning.example.com"), "Didn't find domain in error message.");
 
     BrowserTestUtils.removeTab(gBrowser.selectedTab);
   }
 });
--- a/gfx/thebes/gfxUserFontSet.h
+++ b/gfx/thebes/gfxUserFontSet.h
@@ -584,16 +584,23 @@ public:
 
     gfxFont* CreateFontInstance(const gfxFontStyle* aFontStyle) override;
 
     gfxFontEntry* GetPlatformFontEntry() const { return mPlatformFontEntry; }
 
     // is the font loading or loaded, or did it fail?
     UserFontLoadState LoadState() const { return mUserFontLoadState; }
 
+    void LoadCanceled()
+    {
+      mUserFontLoadState = STATUS_NOT_LOADED;
+      mFontDataLoadingState = NOT_LOADING;
+      mLoader = nullptr;
+    }
+
     // whether to wait before using fallback font or not
     bool WaitForUserFont() const {
         return (mUserFontLoadState == STATUS_LOAD_PENDING ||
                 mUserFontLoadState == STATUS_LOADING) &&
                mFontDataLoadingState < LOADING_SLOWLY;
     }
 
     // for userfonts, cmap is used to store the unicode range data
new file mode 100644
--- /dev/null
+++ b/layout/reftests/font-face/bug-1481905-cancel-load-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<meta charset="utf-8">
+<style>
+  @font-face {
+    font-family: test;
+    src: url(../fonts/markA.ttf);
+  }
+</style>
+<div style="font-family: test, serif">ABC</div>
+<div style="font-family: serif">ABC</div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/font-face/bug-1481905-cancel-load.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="utf-8">
+<style id="A">
+  @font-face {
+    font-family: test;
+    src: url("bug-1481905-cancel-load.sjs");
+  }
+</style>
+<style>
+  @font-face {
+    font-family: test;
+    src: url("bug-1481905-cancel-load.sjs");
+  }
+</style>
+<div style="font-family: test, serif">ABC</div>
+<div style="font-family: serif">ABC</div>
+<script>
+  document.body.offsetTop;
+  document.getElementById("A").remove();
+  document.documentElement.className = "";
+</script>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/font-face/bug-1481905-cancel-load.sjs
@@ -0,0 +1,218 @@
+// Hex dump of the markA font data:
+const markA_data = [
+  0x00,  0x01,  0x00,  0x00,  0x00,  0x0D,  0x00,  0x80,
+  0x00,  0x03,  0x00,  0x50,  0x46,  0x46,  0x54,  0x4D,
+  0x4E,  0xAE,  0xE8,  0xC9,  0x00,  0x00,  0x05,  0xDC,
+  0x00,  0x00,  0x00,  0x1C,  0x4F,  0x53,  0x2F,  0x32,
+  0x56,  0x61,  0x64,  0x0A,  0x00,  0x00,  0x01,  0x58,
+  0x00,  0x00,  0x00,  0x56,  0x63,  0x6D,  0x61,  0x70,
+  0x00,  0x0F,  0x03,  0xEF,  0x00,  0x00,  0x01,  0xC0,
+  0x00,  0x00,  0x01,  0x42,  0x63,  0x76,  0x74,  0x20,
+  0x00,  0x21,  0x02,  0x79,  0x00,  0x00,  0x03,  0x04,
+  0x00,  0x00,  0x00,  0x04,  0x67,  0x61,  0x73,  0x70,
+  0xFF,  0xFF,  0x00,  0x03,  0x00,  0x00,  0x05,  0xD4,
+  0x00,  0x00,  0x00,  0x08,  0x67,  0x6C,  0x79,  0x66,
+  0x08,  0x2E,  0x9A,  0x4F,  0x00,  0x00,  0x03,  0x14,
+  0x00,  0x00,  0x00,  0x8C,  0x68,  0x65,  0x61,  0x64,
+  0xEF,  0x28,  0xA0,  0x17,  0x00,  0x00,  0x00,  0xDC,
+  0x00,  0x00,  0x00,  0x36,  0x68,  0x68,  0x65,  0x61,
+  0x08,  0x90,  0x05,  0x7D,  0x00,  0x00,  0x01,  0x14,
+  0x00,  0x00,  0x00,  0x24,  0x68,  0x6D,  0x74,  0x78,
+  0x11,  0x94,  0x00,  0x85,  0x00,  0x00,  0x01,  0xB0,
+  0x00,  0x00,  0x00,  0x10,  0x6C,  0x6F,  0x63,  0x61,
+  0x00,  0x70,  0x00,  0x54,  0x00,  0x00,  0x03,  0x08,
+  0x00,  0x00,  0x00,  0x0A,  0x6D,  0x61,  0x78,  0x70,
+  0x00,  0x49,  0x00,  0x3D,  0x00,  0x00,  0x01,  0x38,
+  0x00,  0x00,  0x00,  0x20,  0x6E,  0x61,  0x6D,  0x65,
+  0x7A,  0x10,  0x15,  0x3A,  0x00,  0x00,  0x03,  0xA0,
+  0x00,  0x00,  0x02,  0x07,  0x70,  0x6F,  0x73,  0x74,
+  0xFF,  0xAE,  0x00,  0x35,  0x00,  0x00,  0x05,  0xA8,
+  0x00,  0x00,  0x00,  0x2A,  0x00,  0x01,  0x00,  0x00,
+  0x00,  0x01,  0x00,  0x00,  0x32,  0x13,  0xF2,  0xB9,
+  0x5F,  0x0F,  0x3C,  0xF5,  0x00,  0x0B,  0x03,  0xE8,
+  0x00,  0x00,  0x00,  0x00,  0xC5,  0x38,  0x2E,  0x6D,
+  0x00,  0x00,  0x00,  0x00,  0xC5,  0x38,  0x2E,  0x6D,
+  0x00,  0x21,  0xFF,  0x9C,  0x05,  0x78,  0x02,  0xBC,
+  0x00,  0x00,  0x00,  0x08,  0x00,  0x02,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x00,  0x00,
+  0x02,  0xBC,  0xFF,  0x9C,  0x00,  0x5A,  0x05,  0xDC,
+  0x00,  0x00,  0x00,  0x00,  0x05,  0x78,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x04,
+  0x00,  0x01,  0x00,  0x00,  0x00,  0x04,  0x00,  0x0C,
+  0x00,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x02,
+  0x00,  0x00,  0x00,  0x01,  0x00,  0x01,  0x00,  0x00,
+  0x00,  0x40,  0x00,  0x2E,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x01,  0x05,  0xDC,  0x01,  0xF4,  0x00,  0x05,
+  0x00,  0x00,  0x02,  0x8A,  0x02,  0xBC,  0x00,  0x00,
+  0x00,  0x8C,  0x02,  0x8A,  0x02,  0xBC,  0x00,  0x00,
+  0x01,  0xE0,  0x00,  0x31,  0x01,  0x02,  0x00,  0x00,
+  0x02,  0x00,  0x06,  0x09,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x50,  0x66,  0x45,  0x64,  0x00,  0x40,
+  0x00,  0x41,  0x00,  0x41,  0x03,  0x20,  0xFF,  0x38,
+  0x00,  0x5A,  0x02,  0xBC,  0x00,  0x64,  0x00,  0x00,
+  0x00,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x05,  0xDC,  0x00,  0x21,  0x00,  0x00,  0x00,  0x00,
+  0x05,  0xDC,  0x00,  0x00,  0x05,  0xDC,  0x00,  0x64,
+  0x00,  0x00,  0x00,  0x03,  0x00,  0x00,  0x00,  0x03,
+  0x00,  0x00,  0x00,  0x1C,  0x00,  0x01,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x3C,  0x00,  0x03,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x1C,  0x00,  0x04,  0x00,  0x20,
+  0x00,  0x00,  0x00,  0x04,  0x00,  0x04,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x41,  0xFF,  0xFF,  0x00,  0x00,
+  0x00,  0x41,  0xFF,  0xFF,  0xFF,  0xC2,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x06,
+  0x00,  0x00,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x01,  0x02,  0x00,  0x00,  0x00,  0x02,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x03,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x21,  0x02,  0x79,
+  0x00,  0x00,  0x00,  0x2A,  0x00,  0x2A,  0x00,  0x2A,
+  0x00,  0x46,  0x00,  0x00,  0x00,  0x02,  0x00,  0x21,
+  0x00,  0x00,  0x01,  0x2A,  0x02,  0x9A,  0x00,  0x03,
+  0x00,  0x07,  0x00,  0x2E,  0xB1,  0x01,  0x00,  0x2F,
+  0x3C,  0xB2,  0x07,  0x04,  0x00,  0xED,  0x32,  0xB1,
+  0x06,  0x05,  0xDC,  0x3C,  0xB2,  0x03,  0x02,  0x00,
+  0xED,  0x32,  0x00,  0xB1,  0x03,  0x00,  0x2F,  0x3C,
+  0xB2,  0x05,  0x04,  0x00,  0xED,  0x32,  0xB2,  0x07,
+  0x06,  0x01,  0xFC,  0x3C,  0xB2,  0x01,  0x02,  0x00,
+  0xED,  0x32,  0x33,  0x11,  0x21,  0x11,  0x27,  0x33,
+  0x11,  0x23,  0x21,  0x01,  0x09,  0xE8,  0xC7,  0xC7,
+  0x02,  0x9A,  0xFD,  0x66,  0x21,  0x02,  0x58,  0x00,
+  0x00,  0x03,  0x00,  0x64,  0xFF,  0x9C,  0x05,  0x78,
+  0x02,  0xBC,  0x00,  0x03,  0x00,  0x07,  0x00,  0x0B,
+  0x00,  0x00,  0x01,  0x35,  0x21,  0x15,  0x01,  0x35,
+  0x21,  0x15,  0x01,  0x35,  0x21,  0x15,  0x01,  0xF4,
+  0x01,  0xF4,  0xFD,  0x44,  0x03,  0x84,  0xFB,  0xB4,
+  0x05,  0x14,  0x01,  0xF4,  0xC8,  0xC8,  0xFE,  0xD4,
+  0xC8,  0xC8,  0xFE,  0xD4,  0xC8,  0xC8,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x0E,  0x00,  0xAE,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x26,
+  0x00,  0x4E,  0x00,  0x01,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x01,  0x00,  0x05,  0x00,  0x81,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x02,  0x00,  0x06,
+  0x00,  0x95,  0x00,  0x01,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x03,  0x00,  0x21,  0x00,  0xE0,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x04,  0x00,  0x05,
+  0x01,  0x0E,  0x00,  0x01,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x05,  0x00,  0x10,  0x01,  0x36,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x06,  0x00,  0x05,
+  0x01,  0x53,  0x00,  0x03,  0x00,  0x01,  0x04,  0x09,
+  0x00,  0x00,  0x00,  0x4C,  0x00,  0x00,  0x00,  0x03,
+  0x00,  0x01,  0x04,  0x09,  0x00,  0x01,  0x00,  0x0A,
+  0x00,  0x75,  0x00,  0x03,  0x00,  0x01,  0x04,  0x09,
+  0x00,  0x02,  0x00,  0x0C,  0x00,  0x87,  0x00,  0x03,
+  0x00,  0x01,  0x04,  0x09,  0x00,  0x03,  0x00,  0x42,
+  0x00,  0x9C,  0x00,  0x03,  0x00,  0x01,  0x04,  0x09,
+  0x00,  0x04,  0x00,  0x0A,  0x01,  0x02,  0x00,  0x03,
+  0x00,  0x01,  0x04,  0x09,  0x00,  0x05,  0x00,  0x20,
+  0x01,  0x14,  0x00,  0x03,  0x00,  0x01,  0x04,  0x09,
+  0x00,  0x06,  0x00,  0x0A,  0x01,  0x47,  0x00,  0x43,
+  0x00,  0x6F,  0x00,  0x70,  0x00,  0x79,  0x00,  0x72,
+  0x00,  0x69,  0x00,  0x67,  0x00,  0x68,  0x00,  0x74,
+  0x00,  0x20,  0x00,  0x28,  0x00,  0x63,  0x00,  0x29,
+  0x00,  0x20,  0x00,  0x32,  0x00,  0x30,  0x00,  0x30,
+  0x00,  0x38,  0x00,  0x20,  0x00,  0x4D,  0x00,  0x6F,
+  0x00,  0x7A,  0x00,  0x69,  0x00,  0x6C,  0x00,  0x6C,
+  0x00,  0x61,  0x00,  0x20,  0x00,  0x43,  0x00,  0x6F,
+  0x00,  0x72,  0x00,  0x70,  0x00,  0x6F,  0x00,  0x72,
+  0x00,  0x61,  0x00,  0x74,  0x00,  0x69,  0x00,  0x6F,
+  0x00,  0x6E,  0x00,  0x00,  0x43,  0x6F,  0x70,  0x79,
+  0x72,  0x69,  0x67,  0x68,  0x74,  0x20,  0x28,  0x63,
+  0x29,  0x20,  0x32,  0x30,  0x30,  0x38,  0x20,  0x4D,
+  0x6F,  0x7A,  0x69,  0x6C,  0x6C,  0x61,  0x20,  0x43,
+  0x6F,  0x72,  0x70,  0x6F,  0x72,  0x61,  0x74,  0x69,
+  0x6F,  0x6E,  0x00,  0x00,  0x4D,  0x00,  0x61,  0x00,
+  0x72,  0x00,  0x6B,  0x00,  0x41,  0x00,  0x00,  0x4D,
+  0x61,  0x72,  0x6B,  0x41,  0x00,  0x00,  0x4D,  0x00,
+  0x65,  0x00,  0x64,  0x00,  0x69,  0x00,  0x75,  0x00,
+  0x6D,  0x00,  0x00,  0x4D,  0x65,  0x64,  0x69,  0x75,
+  0x6D,  0x00,  0x00,  0x46,  0x00,  0x6F,  0x00,  0x6E,
+  0x00,  0x74,  0x00,  0x46,  0x00,  0x6F,  0x00,  0x72,
+  0x00,  0x67,  0x00,  0x65,  0x00,  0x20,  0x00,  0x32,
+  0x00,  0x2E,  0x00,  0x30,  0x00,  0x20,  0x00,  0x3A,
+  0x00,  0x20,  0x00,  0x4D,  0x00,  0x61,  0x00,  0x72,
+  0x00,  0x6B,  0x00,  0x41,  0x00,  0x20,  0x00,  0x3A,
+  0x00,  0x20,  0x00,  0x35,  0x00,  0x2D,  0x00,  0x31,
+  0x00,  0x31,  0x00,  0x2D,  0x00,  0x32,  0x00,  0x30,
+  0x00,  0x30,  0x00,  0x38,  0x00,  0x00,  0x46,  0x6F,
+  0x6E,  0x74,  0x46,  0x6F,  0x72,  0x67,  0x65,  0x20,
+  0x32,  0x2E,  0x30,  0x20,  0x3A,  0x20,  0x4D,  0x61,
+  0x72,  0x6B,  0x41,  0x20,  0x3A,  0x20,  0x35,  0x2D,
+  0x31,  0x31,  0x2D,  0x32,  0x30,  0x30,  0x38,  0x00,
+  0x00,  0x4D,  0x00,  0x61,  0x00,  0x72,  0x00,  0x6B,
+  0x00,  0x41,  0x00,  0x00,  0x4D,  0x61,  0x72,  0x6B,
+  0x41,  0x00,  0x00,  0x56,  0x00,  0x65,  0x00,  0x72,
+  0x00,  0x73,  0x00,  0x69,  0x00,  0x6F,  0x00,  0x6E,
+  0x00,  0x20,  0x00,  0x30,  0x00,  0x30,  0x00,  0x31,
+  0x00,  0x2E,  0x00,  0x30,  0x00,  0x30,  0x00,  0x30,
+  0x00,  0x20,  0x00,  0x00,  0x56,  0x65,  0x72,  0x73,
+  0x69,  0x6F,  0x6E,  0x20,  0x30,  0x30,  0x31,  0x2E,
+  0x30,  0x30,  0x30,  0x20,  0x00,  0x00,  0x4D,  0x00,
+  0x61,  0x00,  0x72,  0x00,  0x6B,  0x00,  0x41,  0x00,
+  0x00,  0x4D,  0x61,  0x72,  0x6B,  0x41,  0x00,  0x00,
+  0x00,  0x02,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0xFF,  0x83,  0x00,  0x32,  0x00,  0x00,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
+  0x00,  0x04,  0x00,  0x00,  0x00,  0x01,  0x00,  0x02,
+  0x00,  0x24,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,
+  0xFF,  0xFF,  0x00,  0x02,  0x00,  0x00,  0x00,  0x01,
+  0x00,  0x00,  0x00,  0x00,  0xC4,  0x3E,  0x8B,  0xEE,
+  0x00,  0x00,  0x00,  0x00,  0xC5,  0x38,  0x2E,  0x6D,
+  0x00,  0x00,  0x00,  0x00,  0xC5,  0x38,  0x2E,  0x6D
+];
+
+const BinaryOutputStream =
+  Components.Constructor("@mozilla.org/binaryoutputstream;1",
+                         "nsIBinaryOutputStream", "setOutputStream");
+
+var timer;
+function handleRequest(request, response) {
+  response.setStatusLine(request.httpVersion, 200, "OK");
+  response.setHeader("Content-Type", "font/opentype", false);
+  response.processAsync();
+
+  function fontWrite(data) {
+    var stream = new BinaryOutputStream(response.bodyOutputStream);
+    stream.writeByteArray(data, data.length);
+  }
+
+  const nsITimer = Components.interfaces.nsITimer;
+
+  timer = Components.classes["@mozilla.org/timer;1"].createInstance(nsITimer);
+  timer.initWithCallback(function() {
+    fontWrite(markA_data);
+    response.finish();
+  }, 100, nsITimer.TYPE_ONE_SHOT);
+}
--- a/layout/reftests/font-face/reftest.list
+++ b/layout/reftests/font-face/reftest.list
@@ -171,16 +171,18 @@ pref(gfx.downloadable_fonts.woff2.enable
 HTTP(..) == reflow-sanity-1.html reflow-sanity-1-ref.html
 HTTP(..) == reflow-sanity-1-data.html reflow-sanity-1-ref.html
 HTTP(..) == reflow-sanity-1.html reflow-sanity-1-data.html
 HTTP(..) == reflow-sanity-delay-1a.html reflow-sanity-1-ref.html
 HTTP(..) == reflow-sanity-delay-1b.html reflow-sanity-1-ref.html
 HTTP(..) == reflow-sanity-delay-1c.html reflow-sanity-1-ref.html
 HTTP(..) == reflow-sanity-delay-1-metrics.html reflow-sanity-1-ref.html
 
+HTTP(..) == bug-1481905-cancel-load.html bug-1481905-cancel-load-ref.html
+
 # font-display
 skip-if(/^Linux\x20i686/.test(http.oscpu)) HTTP(..) == font-display-1.html font-display-1-ref.html # normal font load (~500ms)
 # ^ disabled due to intermittents due to timing issues -- Bug 1238222
 fuzzy-if(OSX==1010,0-3,0-5) HTTP(..) == font-display-2.html font-display-2-ref.html # font load takes 4500ms
 
 # Testing hack for Meiryo
 random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == meiryo-en.html meiryo-ja.html # Bug 1392106
 random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == meiryo-en-bold.html meiryo-ja-bold.html # Bug 1392106
@@ -201,9 +203,10 @@ default-preferences pref(layout.css.font
 == variation-format-hint-1d.html variation-format-hint-1A-ref.html
 default-preferences pref(layout.css.font-variations.enabled,true)
 # Currently Windows, Linux and macOS all fail on treeherder because our OS versions
 # are too old to support variation fonts
 fails-if(winWidget||gtkWidget||(cocoaWidget&&OSX<1012)) == variation-format-hint-1a.html variation-format-hint-1B-ttf-ref.html
 fails-if(winWidget||gtkWidget||(cocoaWidget&&OSX<1012)) == variation-format-hint-1b.html variation-format-hint-1B-otf-ref.html
 fails-if(winWidget||gtkWidget||(cocoaWidget&&OSX<1012)) == variation-format-hint-1c.html variation-format-hint-1B-woff-ref.html
 fails-if(winWidget||gtkWidget||(cocoaWidget&&OSX<1012)) == variation-format-hint-1d.html variation-format-hint-1B-woff2-ref.html
+
 default-preferences
--- a/layout/style/nsFontFaceLoader.cpp
+++ b/layout/style/nsFontFaceLoader.cpp
@@ -320,18 +320,17 @@ nsFontFaceLoader::OnStopRequest(nsIReque
 {
   MOZ_ASSERT(NS_IsMainThread());
   return NS_OK;
 }
 
 void
 nsFontFaceLoader::Cancel()
 {
-  mUserFontEntry->mFontDataLoadingState = gfxUserFontEntry::NOT_LOADING;
-  mUserFontEntry->mLoader = nullptr;
+  mUserFontEntry->LoadCanceled();
   mFontFaceSet = nullptr;
   if (mLoadTimer) {
     mLoadTimer->Cancel();
     mLoadTimer = nullptr;
   }
   mChannel->Cancel(NS_BINDING_ABORTED);
 }
 
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -132770,16 +132770,28 @@
       [
        "/css/css-sizing/intrinsic-percent-non-replaced-005-ref.html",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "css/css-sizing/orthogonal-writing-mode-float-in-inline.html": [
+    [
+     "/css/css-sizing/orthogonal-writing-mode-float-in-inline.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-sizing/whitespace-and-break.html": [
     [
      "/css/css-sizing/whitespace-and-break.html",
      [
       [
        "/css/reference/ref-filled-green-100px-square.xht",
        "=="
       ]
@@ -185706,16 +185718,28 @@
       [
        "/svg/painting/currentColor-override-pserver-stroke-ref.svg",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "svg/painting/reftests/markers-orient-001.svg": [
+    [
+     "/svg/painting/reftests/markers-orient-001.svg",
+     [
+      [
+       "/svg/painting/reftests/markers-orient-001-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "svg/painting/reftests/paint-context-001.svg": [
     [
      "/svg/painting/reftests/paint-context-001.svg",
      [
       [
        "/svg/painting/reftests/paint-context-001-ref.svg",
        "=="
       ]
@@ -186126,16 +186150,148 @@
       [
        "/svg/styling/render/transform-ref.svg",
        "=="
       ]
      ],
      {}
     ]
    ],
+   "svg/text/reftests/text-inline-size-001.svg": [
+    [
+     "/svg/text/reftests/text-inline-size-001.svg",
+     [
+      [
+       "/svg/text/reftests/text-inline-size-001-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-002.svg": [
+    [
+     "/svg/text/reftests/text-inline-size-002.svg",
+     [
+      [
+       "/svg/text/reftests/text-inline-size-002-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-003.svg": [
+    [
+     "/svg/text/reftests/text-inline-size-003.svg",
+     [
+      [
+       "/svg/text/reftests/text-inline-size-003-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-005.svg": [
+    [
+     "/svg/text/reftests/text-inline-size-005.svg",
+     [
+      [
+       "/svg/text/reftests/text-inline-size-005-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-006.svg": [
+    [
+     "/svg/text/reftests/text-inline-size-006.svg",
+     [
+      [
+       "/svg/text/reftests/text-inline-size-006-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-007.svg": [
+    [
+     "/svg/text/reftests/text-inline-size-007.svg",
+     [
+      [
+       "/svg/text/reftests/text-inline-size-007-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-101.svg": [
+    [
+     "/svg/text/reftests/text-inline-size-101.svg",
+     [
+      [
+       "/svg/text/reftests/text-inline-size-101-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-201.svg": [
+    [
+     "/svg/text/reftests/text-inline-size-201.svg",
+     [
+      [
+       "/svg/text/reftests/text-inline-size-201-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-multiline-001.svg": [
+    [
+     "/svg/text/reftests/text-multiline-001.svg",
+     [
+      [
+       "/svg/text/reftests/text-multiline-001-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-multiline-002.svg": [
+    [
+     "/svg/text/reftests/text-multiline-002.svg",
+     [
+      [
+       "/svg/text/reftests/text-multiline-002-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-multiline-003.svg": [
+    [
+     "/svg/text/reftests/text-multiline-003.svg",
+     [
+      [
+       "/svg/text/reftests/text-multiline-003-ref.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "svg/text/reftests/textpath-shape-001.svg": [
     [
      "/svg/text/reftests/textpath-shape-001.svg",
      [
       [
        "/svg/text/reftests/textpath-side-001-ref.svg",
        "=="
       ]
@@ -289227,16 +289383,21 @@
      {}
     ]
    ],
    "interfaces/resource-timing.idl": [
     [
      {}
     ]
    ],
+   "interfaces/screen-capture.idl": [
+    [
+     {}
+    ]
+   ],
    "interfaces/screen-orientation.idl": [
     [
      {}
     ]
    ],
    "interfaces/scroll-animations.idl": [
     [
      {}
@@ -296797,16 +296958,21 @@
      {}
     ]
    ],
    "resources/webidl2/test/writer.js": [
     [
      {}
     ]
    ],
+   "screen-capture/META.yml": [
+    [
+     {}
+    ]
+   ],
    "screen-orientation/META.yml": [
     [
      {}
     ]
    ],
    "screen-orientation/resources/iframe-listen-orientation-change.html": [
     [
      {}
@@ -300417,16 +300583,21 @@
      {}
     ]
    ],
    "svg/linking/reftests/use-descendant-combinator-ref.html": [
     [
      {}
     ]
    ],
+   "svg/linking/scripted/resources/a-download-click.svg": [
+    [
+     {}
+    ]
+   ],
    "svg/linking/scripted/testScripts/dummyScript.js": [
     [
      {}
     ]
    ],
    "svg/linking/scripted/testScripts/externalScript1.js": [
     [
      {}
@@ -300457,16 +300628,21 @@
      {}
     ]
    ],
    "svg/painting/currentColor-override-pserver-stroke-ref.svg": [
     [
      {}
     ]
    ],
+   "svg/painting/reftests/markers-orient-001-ref.svg": [
+    [
+     {}
+    ]
+   ],
    "svg/painting/reftests/paint-context-001-ref.svg": [
     [
      {}
     ]
    ],
    "svg/painting/reftests/paint-context-002-ref.svg": [
     [
      {}
@@ -300617,16 +300793,71 @@
      {}
     ]
    ],
    "svg/styling/render/transform-ref.svg": [
     [
      {}
     ]
    ],
+   "svg/text/reftests/text-inline-size-001-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-002-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-003-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-005-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-006-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-007-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-101-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-inline-size-201-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-multiline-001-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-multiline-002-ref.svg": [
+    [
+     {}
+    ]
+   ],
+   "svg/text/reftests/text-multiline-003-ref.svg": [
+    [
+     {}
+    ]
+   ],
    "svg/text/reftests/textpath-shape-001-ref.svg": [
     [
      {}
     ]
    ],
    "svg/text/reftests/textpath-side-001-ref.svg": [
     [
      {}
@@ -329066,16 +329297,22 @@
     ]
    ],
    "css/css-grid/alignment/grid-content-alignment-second-pass-001.html": [
     [
      "/css/css-grid/alignment/grid-content-alignment-second-pass-001.html",
      {}
     ]
    ],
+   "css/css-grid/alignment/grid-content-alignment-second-pass-002.html": [
+    [
+     "/css/css-grid/alignment/grid-content-alignment-second-pass-002.html",
+     {}
+    ]
+   ],
    "css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html": [
     [
      "/css/css-grid/alignment/grid-fit-content-tracks-dont-stretch-001.html",
      {}
     ]
    ],
    "css/css-grid/alignment/grid-row-axis-alignment-positioned-items-001.html": [
     [
@@ -329726,16 +329963,28 @@
     ]
    ],
    "css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html": [
     [
      "/css/css-grid/grid-definition/grid-inline-template-columns-rows-resolved-values-001.html",
      {}
     ]
    ],
+   "css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html": [
+    [
+     "/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html",
+     {}
+    ]
+   ],
+   "css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html": [
+    [
+     "/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html",
+     {}
+    ]
+   ],
    "css/css-grid/grid-definition/grid-shorthand-001.html": [
     [
      "/css/css-grid/grid-definition/grid-shorthand-001.html",
      {}
     ]
    ],
    "css/css-grid/grid-definition/grid-support-flexible-lengths-001.html": [
     [
@@ -386916,16 +387165,22 @@
     ]
    ],
    "resource-timing/test_resource_timing.html": [
     [
      "/resource-timing/test_resource_timing.html",
      {}
     ]
    ],
+   "screen-capture/idlharness.window.js": [
+    [
+     "/screen-capture/idlharness.window.html",
+     {}
+    ]
+   ],
    "screen-orientation/idlharness.window.js": [
     [
      "/screen-orientation/idlharness.window.html",
      {}
     ]
    ],
    "screen-orientation/lock-bad-argument.html": [
     [
@@ -390926,16 +391181,46 @@
     ]
    ],
    "svg/idlharness.window.js": [
     [
      "/svg/idlharness.window.html",
      {}
     ]
    ],
+   "svg/linking/scripted/a-download-click.svg": [
+    [
+     "/svg/linking/scripted/a-download-click.svg",
+     {}
+    ]
+   ],
+   "svg/linking/scripted/a.rel-getter-01.svg": [
+    [
+     "/svg/linking/scripted/a.rel-getter-01.svg",
+     {}
+    ]
+   ],
+   "svg/linking/scripted/a.rel-setter-01.svg": [
+    [
+     "/svg/linking/scripted/a.rel-setter-01.svg",
+     {}
+    ]
+   ],
+   "svg/linking/scripted/a.text-getter-01.svg": [
+    [
+     "/svg/linking/scripted/a.text-getter-01.svg",
+     {}
+    ]
+   ],
+   "svg/linking/scripted/a.text-setter-01.svg": [
+    [
+     "/svg/linking/scripted/a.text-setter-01.svg",
+     {}
+    ]
+   ],
    "svg/linking/scripted/href-animate-element.html": [
     [
      "/svg/linking/scripted/href-animate-element.html",
      {}
     ]
    ],
    "svg/linking/scripted/href-mpath-element.html": [
     [
@@ -390950,16 +391235,22 @@
     ]
    ],
    "svg/linking/scripted/href-script-element.html": [
     [
      "/svg/linking/scripted/href-script-element.html",
      {}
     ]
    ],
+   "svg/linking/scripted/rellist-feature-detection.svg": [
+    [
+     "/svg/linking/scripted/rellist-feature-detection.svg",
+     {}
+    ]
+   ],
    "svg/path/error-handling/bounding.svg": [
     [
      "/svg/path/error-handling/bounding.svg",
      {}
     ]
    ],
    "svg/path/interfaces/SVGAnimatedPathData-removed.svg": [
     [
@@ -391274,16 +391565,22 @@
     ]
    ],
    "svg/types/scripted/SVGLengthList-getItem.html": [
     [
      "/svg/types/scripted/SVGLengthList-getItem.html",
      {}
     ]
    ],
+   "svg/types/scripted/event-handler-all-document-element-events.svg": [
+    [
+     "/svg/types/scripted/event-handler-all-document-element-events.svg",
+     {}
+    ]
+   ],
    "touch-events/historical.html": [
     [
      "/touch-events/historical.html",
      {}
     ]
    ],
    "touch-events/idlharness.window.js": [
     [
@@ -398490,19 +398787,19 @@
     ]
    ],
    "workers/WorkerGlobalScope_importScripts_NosniffErr.htm": [
     [
      "/workers/WorkerGlobalScope_importScripts_NosniffErr.htm",
      {}
     ]
    ],
-   "workers/WorkerGlobalScope_requestAnimationFrame.htm": [
-    [
-     "/workers/WorkerGlobalScope_requestAnimationFrame.htm",
+   "workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker.js": [
+    [
+     "/workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker.html",
      {}
     ]
    ],
    "workers/WorkerGlobalScope_setInterval.htm": [
     [
      "/workers/WorkerGlobalScope_setInterval.htm",
      {}
     ]
@@ -420597,16 +420894,64 @@
      {}
     ]
    ],
    "css/selectors/selection-image-001-noref.html": [
     [
      "/css/selectors/selection-image-001-noref.html",
      {}
     ]
+   ],
+   "svg/text/visualtests/text-inline-size-001-visual.svg": [
+    [
+     "/svg/text/visualtests/text-inline-size-001-visual.svg",
+     {}
+    ]
+   ],
+   "svg/text/visualtests/text-inline-size-002-visual.svg": [
+    [
+     "/svg/text/visualtests/text-inline-size-002-visual.svg",
+     {}
+    ]
+   ],
+   "svg/text/visualtests/text-inline-size-003-visual.svg": [
+    [
+     "/svg/text/visualtests/text-inline-size-003-visual.svg",
+     {}
+    ]
+   ],
+   "svg/text/visualtests/text-inline-size-005-visual.svg": [
+    [
+     "/svg/text/visualtests/text-inline-size-005-visual.svg",
+     {}
+    ]
+   ],
+   "svg/text/visualtests/text-inline-size-006-visual.svg": [
+    [
+     "/svg/text/visualtests/text-inline-size-006-visual.svg",
+     {}
+    ]
+   ],
+   "svg/text/visualtests/text-inline-size-007-visual.svg": [
+    [
+     "/svg/text/visualtests/text-inline-size-007-visual.svg",
+     {}
+    ]
+   ],
+   "svg/text/visualtests/text-inline-size-101-visual.svg": [
+    [
+     "/svg/text/visualtests/text-inline-size-101-visual.svg",
+     {}
+    ]
+   ],
+   "svg/text/visualtests/text-inline-size-201-visual.svg": [
+    [
+     "/svg/text/visualtests/text-inline-size-201-visual.svg",
+     {}
+    ]
    ]
   },
   "wdspec": {
    "infrastructure/webdriver/tests/test_load_file.py": [
     [
      "/infrastructure/webdriver/tests/test_load_file.py",
      {}
     ]
@@ -513844,17 +514189,17 @@
    "b9cd919bc4f8e6dbb04cf25153bcad700b00869d",
    "support"
   ],
   "css/css-backgrounds/background-attachment-local/attachment-scroll-positioning-1.html": [
    "67bccc350e00f815b8bcd46f3a85a0d8916d378f",
    "reftest"
   ],
   "css/css-backgrounds/background-attachment-local/reftest.list": [
-   "6984fafc5d9a883b1f2e284e589ff525f643e6b7",
+   "b1d23371e3e5ef66de8d2bf3ef78fa4d3ce83803",
    "support"
   ],
   "css/css-backgrounds/background-clip-001.html": [
    "9c677e547ff0311519e5ab29f1cccee93c33a9e4",
    "testharness"
   ],
   "css/css-backgrounds/background-clip-002.html": [
    "f9947df0282f17182111c09bfe538806364fd1ac",
@@ -532543,16 +532888,20 @@
   "css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html": [
    "3630eee37558bfa33c84b9c5ec467224b747edef",
    "testharness"
   ],
   "css/css-grid/alignment/grid-content-alignment-second-pass-001.html": [
    "5b4bbabbb160079796aa4eb6786ea15383f6dd75",
    "testharness"
   ],
+  "css/css-grid/alignment/grid-content-alignment-second-pass-002.html": [
+   "a6837e3debba198fc6c9fb8fff1a649e3408314a",
+   "testharness"
+  ],
   "css/css-grid/alignment/grid-content-distribution-001.html": [
    "7b53a2897b83d20ff7cd12db85f576830953b56e",
    "reftest"
   ],
   "css/css-grid/alignment/grid-content-distribution-002.html": [
    "194934bb93e5fdfdc57f573a6ef6235c19a99ed9",
    "reftest"
   ],
@@ -533303,16 +533652,24 @@
   "css/css-grid/grid-definition/grid-layout-basic.html": [
    "578f70173b015497db2e13a3c06d6ed14d23d659",
    "reftest"
   ],
   "css/css-grid/grid-definition/grid-layout-repeat-notation.html": [
    "ac0273f83aae54e0a565fee073c6943747b9b40f",
    "reftest"
   ],
+  "css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html": [
+   "cdae02a8debf3d0f87508675774cc7e48a5566e3",
+   "testharness"
+  ],
+  "css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html": [
+   "8285a91d8ba57f9a6167afc28b95e9dee0aef2b7",
+   "testharness"
+  ],
   "css/css-grid/grid-definition/grid-shorthand-001.html": [
    "476415e8dfe679340b53b8a3400191d8c8210916",
    "testharness"
   ],
   "css/css-grid/grid-definition/grid-support-flexible-lengths-001.html": [
    "7c4e1c6c41e8a4cab75f6bb5bad7d0b1346a7af1",
    "testharness"
   ],
@@ -542323,16 +542680,20 @@
   "css/css-sizing/intrinsic-percent-non-replaced-005-ref.html": [
    "38f480c0acdbf4ca9605831e9e48a9998b1bcdd3",
    "support"
   ],
   "css/css-sizing/intrinsic-percent-non-replaced-005.html": [
    "f105d942043c44efa0b9e1ec58798db8f9b64a8c",
    "reftest"
   ],
+  "css/css-sizing/orthogonal-writing-mode-float-in-inline.html": [
+   "fa95069dbf0083b0dc7095d2bb3acf20a6ccf898",
+   "reftest"
+  ],
   "css/css-sizing/whitespace-and-break.html": [
    "f3ea3764478488b949433daccddf710cd0a91006",
    "reftest"
   ],
   "css/css-speech/Integer.html": [
    "40d7bf55b4b2174ad69b0de0240d6e38beef55ef",
    "manual"
   ],
@@ -565480,17 +565841,17 @@
    "649f9485f44f800b7685d604ac31c88ce43e4d81",
    "testharness"
   ],
   "css/cssom/medialist-interfaces-004.html": [
    "cf9befb8ffb628f59508d5d74ec6ed4db9e4e09e",
    "testharness"
   ],
   "css/cssom/overflow-serialization.html": [
-   "136b8aba117eb64403700d8c4348db085cede9c8",
+   "2911c8da3e3ae47af4fd764170fd7439cda56685",
    "testharness"
   ],
   "css/cssom/preferred-stylesheet-order.html": [
    "dc990131ab39cd451b5cfced3464690c5ef1a802",
    "testharness"
   ],
   "css/cssom/preferred-stylesheet-reversed-order.html": [
    "ff3a8b09010cdb220fe5bf6661ae380a7fe2c267",
@@ -604691,16 +605052,20 @@
   "interfaces/requestidlecallback.idl": [
    "614478155fa3949723e8d5b04ad358a5327587f1",
    "support"
   ],
   "interfaces/resource-timing.idl": [
    "2668f912301c15a5893309f2c49e3c185a2f50df",
    "support"
   ],
+  "interfaces/screen-capture.idl": [
+   "ae96a3c2ba525b88560b386b4b4f1d7eef1f6b27",
+   "support"
+  ],
   "interfaces/screen-orientation.idl": [
    "742024845614ad07ddecb6062bc007d0ab9f9cd3",
    "support"
   ],
   "interfaces/scroll-animations.idl": [
    "5529cfa4665a5aad4e84ccfff61a992fc1fd2374",
    "support"
   ],
@@ -625284,17 +625649,17 @@
    "5e8f640c6659d176eaca4c71cc1798b7285540b7",
    "support"
   ],
   "resources/testharness.css.headers": [
    "e828b629858d07afd989b80894986315bac16cc7",
    "support"
   ],
   "resources/testharness.js": [
-   "fdd9820b2a367b5ee05d70a2b797bc8648f6f9be",
+   "0ea7a2a7f48424708ef661e2dbcecdb8b916c81a",
    "support"
   ],
   "resources/testharness.js.headers": [
    "5e8f640c6659d176eaca4c71cc1798b7285540b7",
    "support"
   ],
   "resources/testharnessreport.js": [
    "e5cb40fe0ef652be407d4c48b1c59391864cec7b",
@@ -626695,16 +627060,24 @@
   "resources/webidl2/test/widlproc/test/valid/xml/variadic-operations.widlprocxml": [
    "0bc9f7844137853a4df9996e33087c9db184682d",
    "support"
   ],
   "resources/webidl2/test/writer.js": [
    "e84076b4f28ce38cbb41e47681ac97843df0e427",
    "support"
   ],
+  "screen-capture/META.yml": [
+   "6e5b23cd9672274d43c8d8bebe9bed66f7e651ee",
+   "support"
+  ],
+  "screen-capture/idlharness.window.js": [
+   "076e89f275c9e5c583780e83bd96f1f79ed80fdd",
+   "testharness"
+  ],
   "screen-orientation/META.yml": [
    "dc3f290196fabe6e4594a498282fc0091134bdad",
    "support"
   ],
   "screen-orientation/idlharness.window.js": [
    "d4b80de3b2d74a29779432a5496d767fcd46fc5e",
    "testharness"
   ],
@@ -634595,32 +634968,60 @@
   "svg/linking/reftests/use-descendant-combinator-003.html": [
    "14bf5bd122f6aec8bed1887acd3c98362249b6a4",
    "reftest"
   ],
   "svg/linking/reftests/use-descendant-combinator-ref.html": [
    "dae3fc1173b9280de8959edff3d5991a8b4c7593",
    "support"
   ],
+  "svg/linking/scripted/a-download-click.svg": [
+   "406d0e6ba56681ea3026c74614fe79a83f3aa61e",
+   "testharness"
+  ],
+  "svg/linking/scripted/a.rel-getter-01.svg": [
+   "f4f1fdb4f3af9233b7121f828e47d2ccaae7a975",
+   "testharness"
+  ],
+  "svg/linking/scripted/a.rel-setter-01.svg": [
+   "55470a81b56973667cf5aae33ef4b4a78e686bab",
+   "testharness"
+  ],
+  "svg/linking/scripted/a.text-getter-01.svg": [
+   "d0b26f2042e4cfdc12ef9211b0408db6b22d91af",
+   "testharness"
+  ],
+  "svg/linking/scripted/a.text-setter-01.svg": [
+   "53ad8fce9a6979ae7c81566958b6732ebe975b87",
+   "testharness"
+  ],
   "svg/linking/scripted/href-animate-element.html": [
    "f0b99209a80193db0ffe994d18fc2c42e6485ea5",
    "testharness"
   ],
   "svg/linking/scripted/href-mpath-element.html": [
    "8fb9f0f1aed6b3f6d7b70ed4cdcd7fdd7a19175f",
    "testharness"
   ],
   "svg/linking/scripted/href-script-element-markup.html": [
    "0c6eb23cb66bc5c3e641c7e53011b030f33c5967",
    "testharness"
   ],
   "svg/linking/scripted/href-script-element.html": [
    "48f49085080de3747edbadacae7ee50ffcc65e39",
    "testharness"
   ],
+  "svg/linking/scripted/rellist-feature-detection.svg": [
+   "c600d64c38696e43fd4970d12ccbf3848fe78d17",
+   "testharness"
+  ],
+  "svg/linking/scripted/resources/a-download-click.svg": [
+   "5d18c3088ad9a62b117f9cfb0aa013e72209699f",
+   "support"
+  ],
   "svg/linking/scripted/testScripts/dummyScript.js": [
    "fbf3c34d61360c49b52b04c8bb31f1d276110751",
    "support"
   ],
   "svg/linking/scripted/testScripts/externalScript1.js": [
    "ba4028ca8013fe748a752617907bf0b92255c720",
    "support"
   ],
@@ -634655,16 +635056,24 @@
   "svg/painting/currentColor-override-pserver-stroke-ref.svg": [
    "0b7a5f8ec9f46f9c1a357596b11277e29c078f8a",
    "support"
   ],
   "svg/painting/currentColor-override-pserver-stroke.svg": [
    "bff502c22bab402ca2ef2fbd2ced5c06f1de9dcd",
    "reftest"
   ],
+  "svg/painting/reftests/markers-orient-001-ref.svg": [
+   "871003f3a2303404696d467a7cfaad729b811206",
+   "support"
+  ],
+  "svg/painting/reftests/markers-orient-001.svg": [
+   "55c2394075ee59449d7160f6a6c71110d3a02d9a",
+   "reftest"
+  ],
   "svg/painting/reftests/paint-context-001-ref.svg": [
    "99bd8c44cb78a4b0340ad6456c7e58e4ca397257",
    "support"
   ],
   "svg/painting/reftests/paint-context-001.svg": [
    "fd58d9b790a512940e2d8244148a3c62fb107898",
    "reftest"
   ],
@@ -634995,32 +635404,152 @@
   "svg/styling/required-properties.svg": [
    "c257254d747fb0231d638ac431fcae97dbbed7e7",
    "testharness"
   ],
   "svg/svg-in-svg/svg-in-svg-circular-filter-reference-crash.html": [
    "51303171f09d28e3958ab74ecdce7f9cf120bd12",
    "testharness"
   ],
+  "svg/text/reftests/text-inline-size-001-ref.svg": [
+   "6abd211584ea3b500e409c0f0fa956182fe131e6",
+   "support"
+  ],
+  "svg/text/reftests/text-inline-size-001.svg": [
+   "ae1a10d190ac0f04a2a3168ff8096aaa4fa60066",
+   "reftest"
+  ],
+  "svg/text/reftests/text-inline-size-002-ref.svg": [
+   "66f771e310d4de86ba8ed1aa982054c3247a2b59",
+   "support"
+  ],
+  "svg/text/reftests/text-inline-size-002.svg": [
+   "141909c3e57335f7bbfda0cb04aaef1f5c76c492",
+   "reftest"
+  ],
+  "svg/text/reftests/text-inline-size-003-ref.svg": [
+   "289b92a02ae5c8627cbde0d983a08cb2a096eb7c",
+   "support"
+  ],
+  "svg/text/reftests/text-inline-size-003.svg": [
+   "9fcab5ba0adb13d30a0721cd83da84648b36db9b",
+   "reftest"
+  ],
+  "svg/text/reftests/text-inline-size-005-ref.svg": [
+   "af756b69645d323f084f77287d58e96c8dbc6de6",
+   "support"
+  ],
+  "svg/text/reftests/text-inline-size-005.svg": [
+   "e6a1d75c0502611e7648abfe83deda021731ebcb",
+   "reftest"
+  ],
+  "svg/text/reftests/text-inline-size-006-ref.svg": [
+   "9c32e841a61432edaf9486caab9eb21e7c5b5922",
+   "support"
+  ],
+  "svg/text/reftests/text-inline-size-006.svg": [
+   "b84e3d5302fe5b811988fb7a7d6b5261653536fc",
+   "reftest"
+  ],
+  "svg/text/reftests/text-inline-size-007-ref.svg": [
+   "181785117fb4a434748870ff69518473925b5090",
+   "support"
+  ],
+  "svg/text/reftests/text-inline-size-007.svg": [
+   "9d18b52d2ee957c68fb2ab0b049841bd67e052ee",
+   "reftest"
+  ],
+  "svg/text/reftests/text-inline-size-101-ref.svg": [
+   "ab41dea8da5c9e7df7e7d179ed63a5f8ff2fb67f",
+   "support"
+  ],
+  "svg/text/reftests/text-inline-size-101.svg": [
+   "fa8bf5ef5cfecc3c2e5793a75477dc7db9c2ac8a",
+   "reftest"
+  ],
+  "svg/text/reftests/text-inline-size-201-ref.svg": [
+   "b1eb7c747354b5e6fe8b5bd251199f1ce8a4a91d",
+   "support"
+  ],
+  "svg/text/reftests/text-inline-size-201.svg": [
+   "5ab3213a69be9982709b46566f42668e4f623be5",
+   "reftest"
+  ],
+  "svg/text/reftests/text-multiline-001-ref.svg": [
+   "9238a88da59bb53f8c3eac1fb77d11024f850e38",
+   "support"
+  ],
+  "svg/text/reftests/text-multiline-001.svg": [
+   "1272f56b0b6cbb7cc0b7335c35e55af44cefe0d8",
+   "reftest"
+  ],
+  "svg/text/reftests/text-multiline-002-ref.svg": [
+   "5ba04b7dc225000a279fcae5aa09135d24185fbb",
+   "support"
+  ],
+  "svg/text/reftests/text-multiline-002.svg": [
+   "e1093512583fe65e8731a6e2bc4759fd42279f05",
+   "reftest"
+  ],
+  "svg/text/reftests/text-multiline-003-ref.svg": [
+   "cbfce51b88e8be12f4a29945444b819066d5f74d",
+   "support"
+  ],
+  "svg/text/reftests/text-multiline-003.svg": [
+   "e52bb770521c1b60a6b3998324882a36153ef243",
+   "reftest"
+  ],
   "svg/text/reftests/textpath-shape-001-ref.svg": [
    "10827c85810cdf9dc7e70a665c289814d35ed219",
    "support"
   ],
   "svg/text/reftests/textpath-shape-001.svg": [
    "cd4d384d9dd893bb249f280f0569971abfc4d1b2",
    "reftest"
   ],
   "svg/text/reftests/textpath-side-001-ref.svg": [
    "0e2008c328aeb06071efa6086786a273c6cafe7d",
    "support"
   ],
   "svg/text/reftests/textpath-side-001.svg": [
    "a4b6bf52bd2c6bd7492d18f32ded4b7590b302f9",
    "reftest"
   ],
+  "svg/text/visualtests/text-inline-size-001-visual.svg": [
+   "086bab33b0030bb1d40dc17f960b7e3cbb098ae6",
+   "visual"
+  ],
+  "svg/text/visualtests/text-inline-size-002-visual.svg": [
+   "7f58973ce359b79113247ca28a155216687e0d13",
+   "visual"
+  ],
+  "svg/text/visualtests/text-inline-size-003-visual.svg": [
+   "19bf0dc9d53d81c7a65a0c2a200ec5b3c1d7e771",
+   "visual"
+  ],
+  "svg/text/visualtests/text-inline-size-005-visual.svg": [
+   "dab467e1221be1da26d5194414cb54c766074a5c",
+   "visual"
+  ],
+  "svg/text/visualtests/text-inline-size-006-visual.svg": [
+   "427ff09501b75b4e58429d42ad2339e43c596d7d",
+   "visual"
+  ],
+  "svg/text/visualtests/text-inline-size-007-visual.svg": [
+   "8bb078f95b0743452caf08d2367260902dc1059e",
+   "visual"
+  ],
+  "svg/text/visualtests/text-inline-size-101-visual.svg": [
+   "e1c5c416931ad35437bb1f480ed896e18dce50ba",
+   "visual"
+  ],
+  "svg/text/visualtests/text-inline-size-201-visual.svg": [
+   "f2649eaad28fe66a6534f2e2c0f26e291c5ee38d",
+   "visual"
+  ],
   "svg/types/elements/SVGGeometryElement-rect.svg": [
    "d4b278f2836f75fd3f6cbe8460d20147116e4bfe",
    "testharness"
   ],
   "svg/types/scripted/SVGAnimatedAngle.html": [
    "5fdc9f3cffb0a3aaabe231706afc2c871ecf1ee8",
    "testharness"
   ],
@@ -635155,16 +635684,20 @@
   "svg/types/scripted/SVGLengthList-basics.html": [
    "58d0e937bedeb2615ce74039046909d8ea53e990",
    "testharness"
   ],
   "svg/types/scripted/SVGLengthList-getItem.html": [
    "c81a23394468f2e4d586d4e6ece5be713470d485",
    "testharness"
   ],
+  "svg/types/scripted/event-handler-all-document-element-events.svg": [
+   "fa813dd1dd31987d2792aaa14a5f7ea996a8054d",
+   "testharness"
+  ],
   "svg/types/scripted/resources/SVGLengthList-helper.js": [
    "3cf888b7dbaeb370ef1b34409540337dee2c8e33",
    "support"
   ],
   "testharness_runner.html": [
    "1cc80a270e2c1e8f0bcb8dc4878a75d9ce01717a",
    "support"
   ],
@@ -650927,18 +651460,18 @@
   "workers/WorkerGlobalScope_importScripts_NetworkErr.htm": [
    "36fe6e0b2d3a5b5c93f9fd2e93a6d4f2601de5fd",
    "testharness"
   ],
   "workers/WorkerGlobalScope_importScripts_NosniffErr.htm": [
    "d99cecdc6a5109a7e664035726985235ba1248c3",
    "testharness"
   ],
-  "workers/WorkerGlobalScope_requestAnimationFrame.htm": [
-   "c5efd53c210a72b7e188b74794ebfd044ca9a701",
+  "workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker.js": [
+   "e1b0b9f15a696237a135696b0f010067a77d4bea",
    "testharness"
   ],
   "workers/WorkerGlobalScope_setInterval.htm": [
    "4e147fbf60f11c43df29df42890ab4ba41782425",
    "testharness"
   ],
   "workers/WorkerGlobalScope_setTimeout.htm": [
    "89fdf3d740a891ed2354a874ea4785386e7a03c0",
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-grid/alignment/grid-content-alignment-second-pass-002.html.ini
@@ -0,0 +1,25 @@
+[grid-content-alignment-second-pass-002.html]
+  [.grid 1]
+    expected: FAIL
+
+  [.grid 3]
+    expected: FAIL
+
+  [.grid 2]
+    expected: FAIL
+
+  [.grid 5]
+    expected: FAIL
+
+  [.grid 4]
+    expected: FAIL
+
+  [.grid 7]
+    expected: FAIL
+
+  [.grid 6]
+    expected: FAIL
+
+  [.grid 8]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html.ini
@@ -0,0 +1,313 @@
+[grid-percentage-rows-indefinite-height-001.html]
+  [.grid 2]
+    expected: FAIL
+
+  [.grid 3]
+    expected: FAIL
+
+  [.grid 5]
+    expected: FAIL
+
+  [.grid 6]
+    expected: FAIL
+
+  [.grid 8]
+    expected: FAIL
+
+  [.grid 9]
+    expected: FAIL
+
+  [.grid 11]
+    expected: FAIL
+
+  [.grid 12]
+    expected: FAIL
+
+  [.grid 14]
+    expected: FAIL
+
+  [.grid 15]
+    expected: FAIL
+
+  [.grid 17]
+    expected: FAIL
+
+  [.grid 18]
+    expected: FAIL
+
+  [.grid 20]
+    expected: FAIL
+
+  [.grid 21]
+    expected: FAIL
+
+  [.grid 23]
+    expected: FAIL
+
+  [.grid 24]
+    expected: FAIL
+
+  [.grid 25]
+    expected: FAIL
+
+  [.grid 26]
+    expected: FAIL
+
+  [.grid 27]
+    expected: FAIL
+
+  [.grid 28]
+    expected: FAIL
+
+  [.grid 29]
+    expected: FAIL
+
+  [.grid 30]
+    expected: FAIL
+
+  [.grid 31]
+    expected: FAIL
+
+  [.grid 32]
+    expected: FAIL
+
+  [.grid 33]
+    expected: FAIL
+
+  [.grid 34]
+    expected: FAIL
+
+  [.grid 35]
+    expected: FAIL
+
+  [.grid 36]
+    expected: FAIL
+
+  [.grid 37]
+    expected: FAIL
+
+  [.grid 38]
+    expected: FAIL
+
+  [.grid 39]
+    expected: FAIL
+
+  [.grid 40]
+    expected: FAIL
+
+  [.grid 41]
+    expected: FAIL
+
+  [.grid 42]
+    expected: FAIL
+
+  [.grid 43]
+    expected: FAIL
+
+  [.grid 44]
+    expected: FAIL
+
+  [.grid 45]
+    expected: FAIL
+
+  [.grid 46]
+    expected: FAIL
+
+  [.grid 47]
+    expected: FAIL
+
+  [.grid 48]
+    expected: FAIL
+
+  [.grid 49]
+    expected: FAIL
+
+  [.grid 50]
+    expected: FAIL
+
+  [.grid 51]
+    expected: FAIL
+
+  [.grid 52]
+    expected: FAIL
+
+  [.grid 53]
+    expected: FAIL
+
+  [.grid 54]
+    expected: FAIL
+
+  [.grid 55]
+    expected: FAIL
+
+  [.grid 56]
+    expected: FAIL
+
+  [.grid 57]
+    expected: FAIL
+
+  [.grid 58]
+    expected: FAIL
+
+  [.grid 59]
+    expected: FAIL
+
+  [.grid 60]
+    expected: FAIL
+
+  [.grid 61]
+    expected: FAIL
+
+  [.grid 62]
+    expected: FAIL
+
+  [.grid 63]
+    expected: FAIL
+
+  [.grid 64]
+    expected: FAIL
+
+  [.grid 65]
+    expected: FAIL
+
+  [.grid 66]
+    expected: FAIL
+
+  [.grid 67]
+    expected: FAIL
+
+  [.grid 68]
+    expected: FAIL
+
+  [.grid 69]
+    expected: FAIL
+
+  [.grid 70]
+    expected: FAIL
+
+  [.grid 71]
+    expected: FAIL
+
+  [.grid 72]
+    expected: FAIL
+
+  [.grid 74]
+    expected: FAIL
+
+  [.grid 75]
+    expected: FAIL
+
+  [.grid 76]
+    expected: FAIL
+
+  [.grid 77]
+    expected: FAIL
+
+  [.grid 78]
+    expected: FAIL
+
+  [.grid 80]
+    expected: FAIL
+
+  [.grid 81]
+    expected: FAIL
+
+  [.grid 82]
+    expected: FAIL
+
+  [.grid 83]
+    expected: FAIL
+
+  [.grid 84]
+    expected: FAIL
+
+  [.grid 86]
+    expected: FAIL
+
+  [.grid 87]
+    expected: FAIL
+
+  [.grid 88]
+    expected: FAIL
+
+  [.grid 89]
+    expected: FAIL
+
+  [.grid 90]
+    expected: FAIL
+
+  [.grid 92]
+    expected: FAIL
+
+  [.grid 93]
+    expected: FAIL
+
+  [.grid 94]
+    expected: FAIL
+
+  [.grid 95]
+    expected: FAIL
+
+  [.grid 96]
+    expected: FAIL
+
+  [.grid 98]
+    expected: FAIL
+
+  [.grid 99]
+    expected: FAIL
+
+  [.grid 100]
+    expected: FAIL
+
+  [.grid 101]
+    expected: FAIL
+
+  [.grid 102]
+    expected: FAIL
+
+  [.grid 104]
+    expected: FAIL
+
+  [.grid 105]
+    expected: FAIL
+
+  [.grid 106]
+    expected: FAIL
+
+  [.grid 107]
+    expected: FAIL
+
+  [.grid 108]
+    expected: FAIL
+
+  [.grid 110]
+    expected: FAIL
+
+  [.grid 111]
+    expected: FAIL
+
+  [.grid 112]
+    expected: FAIL
+
+  [.grid 113]
+    expected: FAIL
+
+  [.grid 114]
+    expected: FAIL
+
+  [.grid 116]
+    expected: FAIL
+
+  [.grid 117]
+    expected: FAIL
+
+  [.grid 118]
+    expected: FAIL
+
+  [.grid 119]
+    expected: FAIL
+
+  [.grid 120]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html.ini
@@ -0,0 +1,13 @@
+[grid-percentage-rows-indefinite-height-002.html]
+  [.grid 1]
+    expected: FAIL
+
+  [.grid 2]
+    expected: FAIL
+
+  [.grid 3]
+    expected: FAIL
+
+  [.grid 4]
+    expected: FAIL
+
--- a/testing/web-platform/meta/fetch/http-cache/304-update.html.ini
+++ b/testing/web-platform/meta/fetch/http-cache/304-update.html.ini
@@ -1,5 +1,5 @@
 [304-update.html]
   disabled:
-    if (os == "linux") :https://bugzilla.mozilla.org/show_bug.cgi?id=1477342
-    if (os == "mac") :https://bugzilla.mozilla.org/show_bug.cgi?id=1477342
-    if (os == "win") and (version == "10.0.15603") :https://bugzilla.mozilla.org/show_bug.cgi?id=1477342
+    if os == "linux": https://bugzilla.mozilla.org/show_bug.cgi?id=1477342
+    if os == "mac": https://bugzilla.mozilla.org/show_bug.cgi?id=1477342
+    if (os == "win") and (version == "10.0.15603"): https://bugzilla.mozilla.org/show_bug.cgi?id=1477342
--- a/testing/web-platform/meta/mozilla-sync
+++ b/testing/web-platform/meta/mozilla-sync
@@ -1,2 +1,2 @@
-local: d3e0beb88df24f7f1d676f17d3feab171d9cea32
-upstream: 9d6cc1e097031d1a2eda42b61a94e660be3ed5b0
+local: 85e000b4b42461f2d8a8fdfedf2256cbea2b345d
+upstream: d309efd6d5a63376db72494c21d403624c14d7af
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/screen-capture/idlharness.window.js.ini
@@ -0,0 +1,13 @@
+[idlharness.window.html]
+  [Partial interface NavigatorUserMedia: original interface defined]
+    expected: FAIL
+
+  [Navigator interface: navigator must inherit property "getDisplayMedia(MediaStreamConstraints)" with the proper type]
+    expected: FAIL
+
+  [Navigator interface: calling getDisplayMedia(MediaStreamConstraints) on navigator with too few arguments must throw TypeError]
+    expected: FAIL
+
+  [Navigator interface: operation getDisplayMedia(MediaStreamConstraints)]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/linking/scripted/a-download-click.svg.ini
@@ -0,0 +1,4 @@
+[a-download-click.svg]
+  [Clicking on an <a> element with a download attribute must not throw an exception]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/painting/reftests/markers-orient-001.svg.ini
@@ -0,0 +1,7 @@
+[markers-orient-001.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-inline-size-001.svg.ini
@@ -0,0 +1,7 @@
+[text-inline-size-001.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-inline-size-002.svg.ini
@@ -0,0 +1,7 @@
+[text-inline-size-002.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-inline-size-003.svg.ini
@@ -0,0 +1,7 @@
+[text-inline-size-003.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-inline-size-005.svg.ini
@@ -0,0 +1,7 @@
+[text-inline-size-005.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-inline-size-006.svg.ini
@@ -0,0 +1,7 @@
+[text-inline-size-006.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-inline-size-007.svg.ini
@@ -0,0 +1,7 @@
+[text-inline-size-007.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-inline-size-101.svg.ini
@@ -0,0 +1,7 @@
+[text-inline-size-101.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-inline-size-201.svg.ini
@@ -0,0 +1,7 @@
+[text-inline-size-201.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-multiline-001.svg.ini
@@ -0,0 +1,7 @@
+[text-multiline-001.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-multiline-002.svg.ini
@@ -0,0 +1,7 @@
+[text-multiline-002.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/text/reftests/text-multiline-003.svg.ini
@@ -0,0 +1,7 @@
+[text-multiline-003.svg]
+  expected:
+    if debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    if debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS
+    if not debug and not webrender and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
+    FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/svg/types/scripted/event-handler-all-document-element-events.svg.ini
@@ -0,0 +1,19 @@
+[event-handler-all-document-element-events.svg]
+  [oncut: the content attribute must be compiled into a function as the corresponding property]
+    expected: FAIL
+
+  [oncut: the content attribute must execute when an event is dispatched]
+    expected: FAIL
+
+  [oncopy: the content attribute must be compiled into a function as the corresponding property]
+    expected: FAIL
+
+  [oncopy: the content attribute must execute when an event is dispatched]
+    expected: FAIL
+
+  [onpaste: the content attribute must be compiled into a function as the corresponding property]
+    expected: FAIL
+
+  [onpaste: the content attribute must execute when an event is dispatched]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker.js.ini
@@ -0,0 +1,4 @@
+[WorkerGlobalScope_requestAnimationFrame.tentative.worker.html]
+  [WorkerGlobalScope_requestAnimationFrame]
+    expected: FAIL
+
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-grid/alignment/grid-content-alignment-second-pass-002.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Content alignment second pass</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#algo-overview">
+<meta name="flags" content="ahem dom">
+<meta name="assert" content="This test checks that content alignment is properly applied when the size of the tracks changes in the second pass of the track sizing algorithm.">
+<link rel="stylesheet" href="../../support/grid.css">
+<link rel="stylesheet" href="../../support/alignment.css">
+
+<style>
+.grid {
+  position: relative;
+  font: 20px/1 Ahem;
+  margin: 10px;
+  display: inline-grid;
+  grid: 50% / 70%;
+}
+</style>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+
+<body onLoad="checkLayout('.grid');">
+
+<div id="log"></div>
+
+<div class="grid" data-expected-width="100" data-expected-height="40">
+  <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="70" data-expected-height="20">XXX X</div>
+</div>
+
+<div class="grid contentStretch" data-expected-width="100" data-expected-height="40">
+  <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="70" data-expected-height="20">XXX X</div>
+</div>
+
+<div class="grid contentStart" data-expected-width="100" data-expected-height="40">
+  <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="70" data-expected-height="20">XXX X</div>
+</div>
+
+<div class="grid contentCenter" data-expected-width="100" data-expected-height="40">
+  <div class="firstRowFirstColumn" data-offset-x="15" data-offset-y="10" data-expected-width="70" data-expected-height="20">XXX X</div>
+</div>
+
+<div class="grid contentEnd" data-expected-width="100" data-expected-height="40">
+  <div class="firstRowFirstColumn" data-offset-x="30" data-offset-y="20" data-expected-width="70" data-expected-height="20">XXX X</div>
+</div>
+
+<div class="grid contentSpaceBetween" data-expected-width="100" data-expected-height="60">
+  <div class="firstRowFirstColumn" data-offset-x="0" data-offset-y="0" data-expected-width="70" data-expected-height="30">XXX X</div>
+  <div class="secondRowFirstColumn" data-offset-x="0" data-offset-y="40" data-expected-width="70" data-expected-height="20">X</div>
+</div>
+
+<div class="grid contentSpaceEvenly" style="grid-template-rows: 30%;" data-expected-width="100" data-expected-height="80">
+  <div class="firstRowFirstColumn" data-offset-x="15" data-offset-y="5" data-expected-width="70" data-expected-height="24">XXX X</div>
+  <div class="secondRowFirstColumn" data-offset-x="15" data-offset-y="35" data-expected-width="70" data-expected-height="40">X<br>X</div>
+</div>
+
+<div class="grid contentSpaceAround" style="grid-template-rows: 25%;" data-expected-width="100" data-expected-height="80">
+  <div class="firstRowFirstColumn" data-offset-x="15" data-offset-y="5" data-expected-width="70" data-expected-height="20">XXX X</div>
+  <div class="secondRowFirstColumn" data-offset-x="15" data-offset-y="35" data-expected-width="70" data-expected-height="40">X<br>X</div>
+</div>
+
+</body>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-001.html
@@ -0,0 +1,572 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Percentage rows indefinite height</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#track-sizing">
+<meta name="assert" content="This test checks that percentage rows on grid containers with indefinite height are treated as 'auto' to compute the intrinsic height, but are later resolved against the intrinsic height during layout.">
+<meta name="flags" content="ahem">
+<link rel="stylesheet" href="support/grid.css">
+<style>
+.grid {
+  position: relative;
+  font: 25px/1 Ahem;
+  margin: 50px 0;
+}
+
+.border {
+  border: 10px solid;
+}
+
+.padding {
+  padding: 5px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.grid');">
+
+<div id="log"></div>
+
+<p>grid-template-rows: 60%;</p>
+
+<div class="grid" style="grid-template-rows: 60%;" data-expected-height="0">
+  <div class="firstRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: 60%;" data-expected-height="25">
+  <div class="firstRowFirstColumn" data-expected-height="15">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: 60%;" data-expected-height="50">
+  <div class="firstRowFirstColumn" data-expected-height="30">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 60%;" data-expected-height="20">
+  <div class="firstRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 60%;" data-expected-height="45">
+  <div class="firstRowFirstColumn" data-expected-height="15">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 60%;" data-expected-height="70">
+  <div class="firstRowFirstColumn" data-expected-height="30">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 60%;" data-expected-height="10">
+  <div class="firstRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 60%;" data-expected-height="35">
+  <div class="firstRowFirstColumn" data-expected-height="15">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 60%;" data-expected-height="60">
+  <div class="firstRowFirstColumn" data-expected-height="30">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 60%;" data-expected-height="30">
+  <div class="firstRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 60%;" data-expected-height="55">
+  <div class="firstRowFirstColumn" data-expected-height="15">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 60%;" data-expected-height="80">
+  <div class="firstRowFirstColumn" data-expected-height="30">X<br>X</div>
+</div>
+
+<p>grid-template-rows: 140%;</p>
+
+<div class="grid" style="grid-template-rows: 140%;" data-expected-height="0">
+  <div class="firstRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: 140%;" data-expected-height="25">
+  <div class="firstRowFirstColumn" data-expected-height="35">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: 140%;" data-expected-height="50">
+  <div class="firstRowFirstColumn" data-expected-height="70">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 140%;" data-expected-height="20">
+  <div class="firstRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 140%;" data-expected-height="45">
+  <div class="firstRowFirstColumn" data-expected-height="35">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 140%;" data-expected-height="70">
+  <div class="firstRowFirstColumn" data-expected-height="70">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 140%;" data-expected-height="10">
+  <div class="firstRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 140%;" data-expected-height="35">
+  <div class="firstRowFirstColumn" data-expected-height="35">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 140%;" data-expected-height="60">
+  <div class="firstRowFirstColumn" data-expected-height="70">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 140%;" data-expected-height="30">
+  <div class="firstRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 140%;" data-expected-height="55">
+  <div class="firstRowFirstColumn" data-expected-height="35">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 140%;" data-expected-height="80">
+  <div class="firstRowFirstColumn" data-expected-height="70">X<br>X</div>
+</div>
+
+<p>grid-template-rows: 100px 60%;</p>
+
+<div class="grid" style="grid-template-rows: 100px 60%;" data-expected-height="100">
+  <div class="secondRowFirstColumn" data-expected-height="60"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 60%;" data-expected-height="125">
+  <div class="secondRowFirstColumn" data-expected-height="75">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 60%;" data-expected-height="150">
+  <div class="secondRowFirstColumn" data-expected-height="90">X<br>X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 60%;" data-expected-height="100">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="60"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 60%;" data-expected-height="125">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="75">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 60%;" data-expected-height="150">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="90">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 60%;" data-expected-height="120">
+  <div class="secondRowFirstColumn" data-expected-height="60"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 60%;" data-expected-height="145">
+  <div class="secondRowFirstColumn" data-expected-height="75">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 60%;" data-expected-height="170">
+  <div class="secondRowFirstColumn" data-expected-height="90">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 60%;" data-expected-height="120">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="60"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 60%;" data-expected-height="145">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="75">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 60%;" data-expected-height="170">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="90">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 60%;" data-expected-height="110">
+  <div class="secondRowFirstColumn" data-expected-height="60"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 60%;" data-expected-height="135">
+  <div class="secondRowFirstColumn" data-expected-height="75">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 60%;" data-expected-height="160">
+  <div class="secondRowFirstColumn" data-expected-height="90">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 60%;" data-expected-height="110">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="60"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 60%;" data-expected-height="135">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="75">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 60%;" data-expected-height="160">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="90">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 60%;" data-expected-height="130">
+  <div class="secondRowFirstColumn" data-expected-height="60"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 60%;" data-expected-height="155">
+  <div class="secondRowFirstColumn" data-expected-height="75">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 60%;" data-expected-height="180">
+  <div class="secondRowFirstColumn" data-expected-height="90">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 60%;" data-expected-height="130">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="60"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 60%;" data-expected-height="155">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="75">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 60%;" data-expected-height="180">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="90">X<br>X</div>
+</div>
+
+<p>grid-template-rows: 100px 140%;</p>
+
+<div class="grid" style="grid-template-rows: 100px 140%;" data-expected-height="100">
+  <div class="secondRowFirstColumn" data-expected-height="140"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 140%;" data-expected-height="125">
+  <div class="secondRowFirstColumn" data-expected-height="175">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 140%;" data-expected-height="150">
+  <div class="secondRowFirstColumn" data-expected-height="210">X<br>X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 140%;" data-expected-height="100">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="140"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 140%;" data-expected-height="125">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="175">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: 100px 140%;" data-expected-height="150">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="210">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 140%;" data-expected-height="120">
+  <div class="secondRowFirstColumn" data-expected-height="140"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 140%;" data-expected-height="145">
+  <div class="secondRowFirstColumn" data-expected-height="175">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 140%;" data-expected-height="170">
+  <div class="secondRowFirstColumn" data-expected-height="210">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 140%;" data-expected-height="120">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="140"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 140%;" data-expected-height="145">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="175">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: 100px 140%;" data-expected-height="170">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="210">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 140%;" data-expected-height="110">
+  <div class="secondRowFirstColumn" data-expected-height="140"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 140%;" data-expected-height="135">
+  <div class="secondRowFirstColumn" data-expected-height="175">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 140%;" data-expected-height="160">
+  <div class="secondRowFirstColumn" data-expected-height="210">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 140%;" data-expected-height="110">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="140"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 140%;" data-expected-height="135">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="175">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: 100px 140%;" data-expected-height="160">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="210">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 140%;" data-expected-height="130">
+  <div class="secondRowFirstColumn" data-expected-height="140"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 140%;" data-expected-height="155">
+  <div class="secondRowFirstColumn" data-expected-height="175">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 140%;" data-expected-height="180">
+  <div class="secondRowFirstColumn" data-expected-height="210">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 140%;" data-expected-height="130">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="140"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 140%;" data-expected-height="155">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="175">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: 100px 140%;" data-expected-height="180">
+  <div class="firstRowFirstColumn" data-expected-height="100">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="210">X<br>X</div>
+</div>
+
+<p>grid-template-rows: auto 60%;</p>
+
+<div class="grid" style="grid-template-rows: auto 60%;" data-expected-height="0">
+  <div class="secondRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 60%;" data-expected-height="25">
+  <div class="secondRowFirstColumn" data-expected-height="15">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 60%;" data-expected-height="50">
+  <div class="secondRowFirstColumn" data-expected-height="30">X<br>X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 60%;" data-expected-height="25">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="15"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 60%;" data-expected-height="50">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="30">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 60%;" data-expected-height="75">
+  <div class="firstRowFirstColumn" data-expected-height="30">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="45">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 60%;" data-expected-height="20">
+  <div class="secondRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 60%;" data-expected-height="45">
+  <div class="secondRowFirstColumn" data-expected-height="15">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 60%;" data-expected-height="70">
+  <div class="secondRowFirstColumn" data-expected-height="30">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 60%;" data-expected-height="45">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="15"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 60%;" data-expected-height="70">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="30">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 60%;" data-expected-height="95">
+  <div class="firstRowFirstColumn" data-expected-height="30">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="45">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 60%;" data-expected-height="10">
+  <div class="secondRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 60%;" data-expected-height="35">
+  <div class="secondRowFirstColumn" data-expected-height="15">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 60%;" data-expected-height="60">
+  <div class="secondRowFirstColumn" data-expected-height="30">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 60%;" data-expected-height="35">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="15"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 60%;" data-expected-height="60">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="30">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 60%;" data-expected-height="85">
+  <div class="firstRowFirstColumn" data-expected-height="30">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="45">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 60%;" data-expected-height="30">
+  <div class="secondRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 60%;" data-expected-height="55">
+  <div class="secondRowFirstColumn" data-expected-height="15">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 60%;" data-expected-height="80">
+  <div class="secondRowFirstColumn" data-expected-height="30">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 60%;" data-expected-height="55">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="15"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 60%;" data-expected-height="80">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="30">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 60%;" data-expected-height="105">
+  <div class="firstRowFirstColumn" data-expected-height="30">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="45">X<br>X</div>
+</div>
+
+<p>grid-template-rows: auto 140%;</p>
+
+<div class="grid" style="grid-template-rows: auto 140%;" data-expected-height="0">
+  <div class="secondRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 140%;" data-expected-height="25">
+  <div class="secondRowFirstColumn" data-expected-height="35">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 140%;" data-expected-height="50">
+  <div class="secondRowFirstColumn" data-expected-height="70">X<br>X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 140%;" data-expected-height="25">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="35"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 140%;" data-expected-height="50">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="70">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 140%;" data-expected-height="75">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="105">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 140%;" data-expected-height="20">
+  <div class="secondRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 140%;" data-expected-height="45">
+  <div class="secondRowFirstColumn" data-expected-height="35">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 140%;" data-expected-height="70">
+  <div class="secondRowFirstColumn" data-expected-height="70">X<br>X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 140%;" data-expected-height="45">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="35"></div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 140%;" data-expected-height="70">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="70">X</div>
+</div>
+
+<div class="grid border" style="grid-template-rows: auto 140%;" data-expected-height="95">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="105">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 140%;" data-expected-height="10">
+  <div class="secondRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 140%;" data-expected-height="35">
+  <div class="secondRowFirstColumn" data-expected-height="35">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 140%;" data-expected-height="60">
+  <div class="secondRowFirstColumn" data-expected-height="70">X<br>X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 140%;" data-expected-height="35">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="35"></div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 140%;" data-expected-height="60">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="70">X</div>
+</div>
+
+<div class="grid padding" style="grid-template-rows: auto 140%;" data-expected-height="85">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="105">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 140%;" data-expected-height="30">
+  <div class="secondRowFirstColumn" data-expected-height="0"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 140%;" data-expected-height="55">
+  <div class="secondRowFirstColumn" data-expected-height="35">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 140%;" data-expected-height="80">
+  <div class="secondRowFirstColumn" data-expected-height="70">X<br>X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 140%;" data-expected-height="55">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="35"></div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 140%;" data-expected-height="80">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="70">X</div>
+</div>
+
+<div class="grid border padding" style="grid-template-rows: auto 140%;" data-expected-height="105">
+  <div class="firstRowFirstColumn" data-expected-height="25">X</div>
+  <div class="secondRowFirstColumn" data-expected-height="105">X<br>X</div>
+</div>
+
+</body>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-grid/grid-definition/grid-percentage-rows-indefinite-height-002.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<title>CSS Grid Layout Test: Percentage rows indefinite height 2nd pass</title>
+<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1/#track-sizing">
+<meta name="assert" content="This test checkds that when we have percentage rows in indefinite height grid containers, we need to do a second pass of the track sizing algorithm to get the expected results.">
+<meta name="flags" content="ahem">
+<style>
+.grid {
+  display: grid;
+  border: solid 5px;
+  position: relative;
+  font: 25px/1 Ahem;
+  margin: 50px 0;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('.grid');">
+
+<div id="log"></div>
+
+<div class="grid" style="grid-template-rows: auto 60% auto;" data-expected-height="35">
+  <div style="grid-row: 1; grid-column: 1; background: cyan;" data-expected-height="5" data-offset-top="0"></div>
+  <div style="grid-row: 1 / 4; grid-column: 2; background: magenta;" data-expected-height="25" data-offset-top="0">X</div>
+  <div style="grid-row: 3; grid-column: 3; background: lime;" data-expected-height="5" data-offset-top="20"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 20% auto;" data-expected-height="60">
+  <div style="grid-row: 1; grid-column: 1; background: cyan;" data-expected-height="25" data-offset-top="0">X</div>
+  <div style="grid-row: 1 / 4; grid-column: 2; background: magenta;" data-expected-height="60" data-offset-top="0">X</div>
+  <div style="grid-row: 3; grid-column: 3; background: lime;" data-expected-height="25" data-offset-top="35">X</div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 10% auto; grid-template-columns: repeat(3, 50px);" data-expected-height="110">
+  <div style="grid-row: 1; grid-column: 1; background: cyan;" data-expected-height="45"></div>
+  <div style="grid-row: 1 / 4; grid-column: 2; background: magenta;" data-expected-height="100">X X X X</div>
+  <div style="grid-row: 3; grid-column: 3; background: lime;" data-expected-height="45"></div>
+</div>
+
+<div class="grid" style="grid-template-rows: auto 10% auto; grid-template-columns: repeat(3, 50px);" data-expected-height="110">
+  <div style="grid-row: 1; grid-column: 1; background: cyan;" data-expected-height="45">X</div>
+  <div style="grid-row: 1 / 4; grid-column: 2; background: magenta;" data-expected-height="100">X X X X</div>
+  <div style="grid-row: 3; grid-column: 3; background: lime;" data-expected-height="45">X</div>
+</div>
+
+</body>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-sizing/orthogonal-writing-mode-float-in-inline.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<title>Shrink-to-fit float inside inline inside a shrink-to-fit-container</title>
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<meta name="assert" content="This tests that intrinsic size calculation realizes that the four words are going to fit on the same line in final layout">
+<link rel="help" href="https://www.w3.org/TR/css-sizing-3/#intrinsic-sizes" title="4.1. Intrinsic Sizes">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="float:left; height:100px; background:red;">
+  <span>
+    <div style="float:left; writing-mode:vertical-rl; height:100%; line-height:100px; background:green;">
+      &nbsp; &nbsp; &nbsp; &nbsp;
+    </div>
+  </span>
+</div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/interfaces/screen-capture.idl
@@ -0,0 +1,27 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the
+// "Screen Capture" spec.
+// See: https://w3c.github.io/mediacapture-screen-share/
+
+partial interface Navigator {
+    Promise<MediaStream> getDisplayMedia(optional MediaStreamConstraints constraints);
+};
+
+partial dictionary MediaTrackConstraintSet {
+             ConstrainDOMString displaySurface;
+             ConstrainBoolean logicalSurface;
+             ConstrainDOMString cursor;
+};
+
+enum DisplayCaptureSurfaceType {
+    "monitor",
+    "window",
+    "application",
+    "browser"
+};
+
+enum CursorCaptureConstraint {
+    "never",
+    "always",
+    "motion"
+};
--- a/testing/web-platform/tests/resources/testharness.js
+++ b/testing/web-platform/tests/resources/testharness.js
@@ -645,17 +645,17 @@ policies and contribution forms [3].
         });
 
         for (var i = 0; i < eventTypes.length; i++) {
             watchedNode.addEventListener(eventTypes[i], eventHandler, false);
         }
 
         /**
          * Returns a Promise that will resolve after the specified event or
-         * series of events has occured.
+         * series of events has occurred.
          *
          * @param options An optional options object. If the 'record' property
          *                on this object has the value 'all', when the Promise
          *                returned by this function is resolved,  *all* Event
          *                objects that were waited for will be returned as an
          *                array.
          *
          * For example,
@@ -1054,17 +1054,17 @@ policies and contribution forms [3].
                    {i:i, expected:expected[i], actual:actual[i]});
         }
     }
     expose(assert_array_equals, "assert_array_equals");
 
     function assert_array_approx_equals(actual, expected, epsilon, description)
     {
         /*
-         * Test if two primitive arrays are equal withing +/- epsilon
+         * Test if two primitive arrays are equal within +/- epsilon
          */
         assert(actual.length === expected.length,
                "assert_array_approx_equals", description,
                "lengths differ, expected ${expected} got ${actual}",
                {expected:expected.length, actual:actual.length});
 
         for (var i = 0; i < actual.length; i++) {
             assert(actual.hasOwnProperty(i) === expected.hasOwnProperty(i),
@@ -1082,17 +1082,17 @@ policies and contribution forms [3].
                    {i:i, expected:expected[i], actual:actual[i]});
         }
     }
     expose(assert_array_approx_equals, "assert_array_approx_equals");
 
     function assert_approx_equals(actual, expected, epsilon, description)
     {
         /*
-         * Test if two primitive numbers are equal withing +/- epsilon
+         * Test if two primitive numbers are equal within +/- epsilon
          */
         assert(typeof actual === "number",
                "assert_approx_equals", description,
                "expected a number but got a ${type_actual}",
                {type_actual:typeof actual});
 
         assert(Math.abs(actual - expected) <= epsilon,
                "assert_approx_equals", description,
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/screen-capture/META.yml
@@ -0,0 +1,5 @@
+spec: https://w3c.github.io/mediacapture-screen-share/
+suggested_reviewers:
+  - alvestrand
+  - martinthomson
+  - uysalere
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/screen-capture/idlharness.window.js
@@ -0,0 +1,16 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+// https://w3c.github.io/mediacapture-screen-share/
+
+idl_test(
+  ['screen-capture'],
+  ['mediacapture-streams', 'html'],
+  idl_array => {
+    idl_array.add_objects({
+      Navigator: ['navigator'],
+    });
+  }
+);
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/linking/scripted/a-download-click.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:h="http://www.w3.org/1999/xhtml">
+  <title>Clicking on an &lt;a> element with a download attribute must not throw an exception</title>
+  <metadata>
+    <h:link rel="help" href="https://svgwg.org/svg2-draft/linking.html#InterfaceSVGAElement"/>
+  </metadata>
+  <h:script src="/resources/testharness.js"/>
+  <h:script src="/resources/testharnessreport.js"/>
+  <script><![CDATA[
+    "use strict";
+    async_test(t => {
+        const frame = document.createElementNS("http://www.w3.org/1999/xhtml", "iframe");
+        const root = document.querySelector("svg");
+
+        frame.addEventListener("load", t.step_func(function () {
+            frame.contentWindow.addEventListener(
+                "beforeunload", t.unreached_func("Navigated instead of downloading"));
+            const string = "test";
+            const blob = new Blob([string], { type: "text/html" });
+
+            const link = frame.contentDocument.querySelector("#blob-url");
+            link.href.baseVal = URL.createObjectURL(blob);
+
+            link.click();
+
+            t.step_timeout(() => t.done(), 1000);
+        }));
+        frame.src = "resources/a-download-click.svg";
+        root.appendChild(frame);
+    }, "Clicking on an <a> element with a download attribute must not throw an exception");
+  ]]></script>
+</svg>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/linking/scripted/a.rel-getter-01.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:h="http://www.w3.org/1999/xhtml">
+  <title>SVGAElement.rel getter</title>
+  <metadata>
+    <h:link rel="help" href="https://svgwg.org/svg2-draft/linking.html#InterfaceSVGAElement"/>
+  </metadata>
+  <a id="test" href="a" rel="noreferrer"></a>
+  <h:script src="/resources/testharness.js"/>
+  <h:script src="/resources/testharnessreport.js"/>
+  <script><![CDATA[
+    test(function() {
+      var a = document.getElementById("test");
+
+      test(function() {
+        assert_equals(a.rel, "noreferrer");
+       }, "Test anchor's rel getter");
+    });
+  ]]></script>
+</svg>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/linking/scripted/a.rel-setter-01.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:h="http://www.w3.org/1999/xhtml">
+  <title>SVGAElement.rel setter</title>
+  <metadata>
+    <h:link rel="help" href="https://svgwg.org/svg2-draft/linking.html#InterfaceSVGAElement"/>
+  </metadata>
+  <a id="test" href="a"></a>
+  <h:script src="/resources/testharness.js"/>
+  <h:script src="/resources/testharnessreport.js"/>
+  <script><![CDATA[
+    test(function() {
+        var a = document.getElementById("test");
+
+        test(function() {
+            a.rel = "noreferrer"
+            assert_equals(a.rel, "noreferrer");
+        }, "Test anchor's rel setter");
+    });
+  ]]></script>
+</svg>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/linking/scripted/a.text-getter-01.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:h="http://www.w3.org/1999/xhtml">
+  <title>SVGAElement.text getting</title>
+  <metadata>
+    <h:link rel="help" href="https://svgwg.org/svg2-draft/linking.html#InterfaceSVGAElement"/>
+  </metadata>
+  <script>var b</script>
+  <g id="test">
+    <a href="a">a b c </a>
+    <a href="b">a <!--b-->b c </a>
+    <a href="c">a <b>b</b> c </a>
+    <a href="d">a <script>b</script> c </a>
+    <script><![CDATA[
+        var e = document.getElementById("test")
+                        .appendChild(document.createElementNS("http://www.w3.org/2000/svg","a"));
+        e.href.baseVal = "d";
+        e.appendChild(document.createTextNode("a "));
+        e.appendChild(document.createTextNode("b "));
+        e.appendChild(document.createTextNode("c "));
+    ]]></script>
+  </g>
+  <h:script src="/resources/testharness.js"/>
+  <h:script src="/resources/testharnessreport.js"/>
+  <script><![CDATA[
+    test(function() {
+        var list = document.getElementById("test")
+                            .getElementsByTagName("a");
+        for (var i = 0, il = list.length; i < il; ++i) {
+            test(function() {
+                assert_equals(list[i].text, list[i].textContent);
+                assert_equals(list[i].text, "a b c ");
+            }, "Test for anchor " + i);
+        }
+    });
+  ]]></script>
+</svg>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/linking/scripted/a.text-setter-01.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:h="http://www.w3.org/1999/xhtml">
+  <title>SVGAElement.text setting</title>
+  <metadata>
+    <h:link rel="help" href="https://svgwg.org/svg2-draft/linking.html#InterfaceSVGAElement"/>
+  </metadata>
+  <g id="test">
+    <a href="a">a b c</a>
+    <a href="b">a <!--b--> c</a>
+    <a href="c">a <b>b</b> c</a>
+    <script><![CDATA[
+        var d = document.getElementById("test")
+                        .appendChild(document.createElementNS("http://www.w3.org/2000/svg","a"));
+        d.href.baseVal = "d";
+        d.appendChild(document.createTextNode("a "));
+        d.appendChild(document.createTextNode("b "));
+        d.appendChild(document.createTextNode("c "));
+    ]]></script>
+  </g>
+  <h:script src="/resources/testharness.js"/>
+  <h:script src="/resources/testharnessreport.js"/>
+  <script><![CDATA[
+    test(function() {
+        var list = document.getElementById("test")
+                            .getElementsByTagName("a");
+        for (var i = 0, il = list.length; i < il; ++i) {
+            test(function() {
+                list[i].text = "x";
+                assert_equals(list[i].text, "x");
+                assert_equals(list[i].textContent, "x");
+                assert_equals(list[i].firstChild.data, "x");
+                assert_equals(list[i].childNodes.length, 1);
+
+                list[i].textContent = "y";
+                assert_equals(list[i].text, "y");
+                assert_equals(list[i].textContent, "y");
+                assert_equals(list[i].firstChild.data, "y");
+                assert_equals(list[i].childNodes.length, 1);
+            }, "Test for anchor " + i);
+        }
+    });
+  ]]></script>
+</svg>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/linking/scripted/rellist-feature-detection.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:h="http://www.w3.org/1999/xhtml">
+  <title>Test SVGAElement relList attribute</title>
+  <metadata>
+    <h:link rel="help" href="https://svgwg.org/svg2-draft/linking.html#InterfaceSVGAElement"/>
+  </metadata>
+  <h:script src="/resources/testharness.js"/>
+  <h:script src="/resources/testharnessreport.js"/>
+  <script><![CDATA[
+    let link_support_table = {};
+    // https://html.spec.whatwg.org/multipage/links.html#linkTypes
+    link_support_table['a'] =  {
+    supported : ['noreferrer', 'noopener'],
+    unsupported : ['author', 'bookmark', 'external', 'help', 'license',
+                    'nofollow', 'pingback', 'prev', 'search', 'tag',
+                    'modulepreload', 'preload', 'preconnect', 'dns-prefetch',
+                    'stylesheet', 'import', 'icon', 'alternate', 'prefetch',
+                    'prerender', 'next', 'manifest', 'apple-touch-icon',
+                    'apple-touch-icon-precomposed', 'canonical']
+    };
+
+    function test_rellist(tag_name, rel_table) {
+    let element = document.createElementNS("http://www.w3.org/2000/svg", tag_name);
+    let tag = element.tagName;
+    // Test that setting rel is also setting relList, for both
+    // valid and invalid values.
+    element.rel = 'whatever';
+    assert_true(element.relList.contains('whatever'), 'tag = ' + tag + ', setting rel must work');
+    element.rel = 'prefetch';
+    assert_true(element.relList.contains('prefetch'), 'tag = ' + tag + ', setting rel must work');
+    // Test that add() works.
+    element.relList.add('preloadwhatever');
+    assert_equals(element.rel, 'prefetch preloadwhatever', 'tag = ' + tag + ', add must work');
+    assert_true(element.relList.contains('preloadwhatever'), 'tag = ' + tag + ', add must work');
+    // Test that remove() works.
+    element.relList.remove('preloadwhatever');
+    assert_equals(element.rel, 'prefetch', 'tag = ' + tag + ', remove must work');
+    assert_false(element.relList.contains('preloadwhatever'), 'tag = ' + tag + ', remove must work');
+    // Test that toggle() works.
+    element.relList.toggle('prefetch', false);
+    assert_equals(element.rel, '', 'tag = ' + tag + ', toggle must work');
+    element.relList.toggle('prefetch', true);
+    assert_equals(element.rel, 'prefetch', 'tag = ' + tag + ', toggle must work');
+    // Test that replace() works.
+    element.relList.replace('prefetch', 'first');
+    assert_equals(element.rel, 'first', 'tag = ' + tag + ', replace must work');
+    // Test that indexed item getter works.
+    element.relList.add('second');
+    assert_equals(element.relList.length, 2, 'tag = ' + tag + ', relList length must be correct');
+    assert_equals(element.relList[0], 'first', 'tag = ' + tag + ', relList indexed item must work');
+    assert_equals(element.relList[1], 'second', 'tag = ' + tag + ', relList indexed item must work');
+    // Test that relList is  [SameObject].
+    let savedRelList = element.relList;
+    element.rel = 'something';
+    assert_equals(element.relList, savedRelList, 'tag = ' + tag + ', SameObject must work');
+
+    // Test that supports() is returning true for valid values
+    // and false for invalid ones.
+    let supported = rel_table['supported'];
+    for (let link_type in supported) {
+        assert_true(element.relList.supports(supported[link_type]), 'tag = ' + tag + ', link type = ' + supported[link_type] + ' must be supported');
+    }
+    let unsupported = rel_table['unsupported'];
+    for (let link_type in unsupported) {
+        assert_false(element.relList.supports(unsupported[link_type]), 'tag = ' + tag + ', link type = ' + unsupported[link_type] + ' must be unsupported');
+    }
+    }
+
+    test(function() {
+    test_rellist('a', link_support_table['a']);
+    }, 'Make sure that relList based feature detection is working');
+  ]]></script>
+</svg>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/linking/scripted/resources/a-download-click.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" x="10" y="10">
+    <a id="blob-url" download="foo.html">Click me</a>
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/painting/reftests/markers-orient-001-ref.svg
@@ -0,0 +1,48 @@
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Marker: 'orient'</title>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("../fonts/FreeSans.woff") format("woff");
+    }
+    text {
+      font-family: FreeSans, sans-serif;
+      text-anchor: middle;
+      fill: black;
+    }
+    #title {
+      font-size: 24px;
+    }
+    .label {
+      font-size: 18px;
+    }
+  </style>
+
+  <defs>
+    <path id="triangle" d="m 0,0 0,-2.5 10,2.5 -10,2.5 z"/>
+  </defs>
+
+  <g id="test-body-reference" style="fill:black">
+    <path d="m 120,120 120,0 120,0" style="stroke:black;stroke-width:4px"/>
+    <path d="m 120,220 120,0 120,0" style="stroke:black;stroke-width:4px"/>
+    <path d="m 120,320 120,0 120,0" style="stroke:black;stroke-width:4px"/>
+    <use xlink:href="#triangle" transform="translate(120,120) scale(4,4)"/>
+    <use xlink:href="#triangle" transform="translate(240,120) scale(4,4)"/>
+    <use xlink:href="#triangle" transform="translate(360,120) scale(4,4)"/>
+    <use xlink:href="#triangle" transform="translate(120,220) scale(4,4) rotate(45)"/>
+    <use xlink:href="#triangle" transform="translate(240,220) scale(4,4) rotate(45)"/>
+    <use xlink:href="#triangle" transform="translate(360,220) scale(4,4) rotate(45)"/>
+    <use xlink:href="#triangle" transform="translate(120,320) scale(4,4) rotate(180)"/>
+    <use xlink:href="#triangle" transform="translate(240,320) scale(4,4)"/>
+    <use xlink:href="#triangle" transform="translate(360,320) scale(4,4)"/>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/painting/reftests/markers-orient-001.svg
@@ -0,0 +1,65 @@
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Marker: 'orient'</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="http://tavmjong.free.fr"/>
+    <html:link rel="help"
+          href="https://www.w3.org/TR/SVG2/painting.html#OrientAttribute"/>
+    <html:link rel="match"  href="markers-orient-001-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("../fonts/FreeSans.woff") format("woff");
+    }
+    text {
+      font-family: FreeSans, sans-serif;
+      text-anchor: middle;
+      fill: black;
+    }
+    #title {
+      font-size: 24px;
+    }
+    .label {
+      font-size: 18px;
+    }
+  </style>
+
+  <defs>
+    <path id="triangle" d="m 0,0 0,-2.5 10,2.5 -10,2.5 z"/>
+    <marker id="OrientAuto" style="overflow:visible" markerWidth="5" markerHeight="10">
+      <use xlink:href="#triangle"/>
+    </marker>
+    <marker id="OrientFixed" style="overflow:visible" markerWidth="5" markerHeight="10" orient="45">
+      <use xlink:href="#triangle"/>
+    </marker>
+    <marker id="OrientAutoReverse" style="overflow:visible" markerWidth="5" markerHeight="10" orient="auto-start-reverse">
+      <use xlink:href="#triangle"/>
+    </marker>
+  </defs>
+
+  <g id="reference" style="fill:red">
+      <use xlink:href="#triangle" transform="translate(120,120) scale(4,4)"/>
+      <use xlink:href="#triangle" transform="translate(240,120) scale(4,4)"/>
+      <use xlink:href="#triangle" transform="translate(360,120) scale(4,4)"/>
+      <use xlink:href="#triangle" transform="translate(120,220) scale(4,4) rotate(45)"/>
+      <use xlink:href="#triangle" transform="translate(240,220) scale(4,4) rotate(45)"/>
+      <use xlink:href="#triangle" transform="translate(360,220) scale(4,4) rotate(45)"/>
+      <use xlink:href="#triangle" transform="translate(120,320) scale(4,4) rotate(180)"/>
+      <use xlink:href="#triangle" transform="translate(240,320) scale(4,4)"/>
+      <use xlink:href="#triangle" transform="translate(360,320) scale(4,4)"/>
+  </g>
+  <g id="test-body-content" font-size="16">
+    <path d="m 120,120 120,0 120,0" style="stroke:black;stroke-width:4px;marker:url(#OrientAuto)"/>
+    <path d="m 120,220 120,0 120,0" style="stroke:black;stroke-width:4px;marker:url(#OrientFixed)"/>
+    <path d="m 120,320 120,0 120,0" style="stroke:black;stroke-width:4px;marker:url(#OrientAutoReverse)"/>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-001-ref.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 001</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px;fill:black">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,60)">
+      <text style="text-anchor:middle">
+        <tspan x="240" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="240" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,120)">
+      <text style="text-anchor:end">
+        <tspan x="400" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="400" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-001.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 001</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <html:link rel="match"  href="text-inline-size-001-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:320px">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,60)">
+      <text x="240" y="114.8" style="inline-size:320px;text-anchor:middle">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,120)">
+      <text x="400" y="114.8" style="inline-size:320px;text-anchor:end">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-002-ref.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text in Shape — 002</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px">
+    <g transform="translate(0,0)">
+      <text transform="translate(250,10) rotate(90)">
+        <tspan x="90" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="90" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(80,0)">
+      <text transform="translate(250,-40) rotate(90)" style="text-anchor:middle">
+        <tspan x="240" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="240" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(160,0)">
+      <text transform="translate(250,-90) rotate(90)" style="text-anchor:end">
+        <tspan x="390" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="390" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-002.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text in Shape — 002</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <html:link rel="match"  href="text-inline-size-002-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;writing-mode:tb-rl">
+    <g transform="translate(0,0)">
+      <text x="140" y="100" style="inline-size:200px">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(80,0)">
+      <text x="140" y="200" style="inline-size:200px;text-anchor:middle">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(160,0)">
+      <text x="140" y="300" style="inline-size:200px;text-anchor:end">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-003-ref.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 003</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px;direction:rtl">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="400" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="400" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,60)">
+      <text style="text-anchor:middle">
+        <tspan x="240" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="240" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,120)">
+      <text style="text-anchor:end">
+        <tspan x="80" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="80" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-003.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 003</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <html:link rel="match"  href="text-inline-size-003-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;direction:rtl">
+    <g transform="translate(0,0)">
+      <text x="400" y="114.8" style="inline-size:320px">لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار</text>
+    </g>
+    <g transform="translate(0,60)">
+      <text x="240" y="114.8" style="inline-size:320px;text-anchor:middle">لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار</text>
+    </g>
+    <g transform="translate(0,120)">
+      <text x="80" y="114.8" style="inline-size:320px;text-anchor:end">لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-005-ref.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 005</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="149.6">adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor</tspan>
+        <tspan x="80" y="174.8">incididunt ut labore et dolore magna aliqua. Ut</tspan>
+        <tspan x="80" y="209.6">enim ad minim veniam, <tspan style="font-size:32px">quis</tspan> nostrud</tspan>
+        <tspan x="80" y="234.8">exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea</tspan>
+        <tspan x="80" y="254.8">commodo consequat.</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-005.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 005</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <html:link rel="match"  href="text-inline-size-005-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-height:1.25">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:320px" xml:space="preserve">Lorem ipsum dolor sit amet, consectetur adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <tspan style="font-size:2em">quis</tspan> nostrud exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea commodo consequat.</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-006-ref.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 006</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="134.8">adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor</tspan>
+        <tspan x="80" y="154.8">incididunt ut labore et dolore magna aliqua. Ut</tspan>
+        <tspan x="80" y="174.8">enim ad minim veniam, <tspan style="font-size:32px">quis</tspan> nostrud</tspan>
+        <tspan x="80" y="194.8">exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea</tspan>
+        <tspan x="80" y="214.8">commodo consequat.</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-006.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 006</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <html:link rel="match"  href="text-inline-size-006-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-height:1.25">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:320px">Lorem ipsum dolor sit amet, consectetur adipiscing <tspan style="font-size:32px;line-height:0">elit</tspan>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <tspan style="font-size:2em;line-height:0">quis</tspan> nostrud exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea commodo consequat.</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-007-ref.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 006</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="139.6">adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor</tspan>
+        <tspan x="80" y="159.6">incididunt ut labore et dolore magna aliqua. Ut</tspan>
+        <tspan x="80" y="184.4">enim ad minim veniam, <tspan style="font-size:32px">quis</tspan> nostrud</tspan>
+        <tspan x="80" y="204.4">exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea</tspan>
+        <tspan x="80" y="226.8">commodo consequat.</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-007.svg
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 006</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <html:link rel="match"  href="text-inline-size-007-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:320px;line-height:20px">Lorem ipsum dolor sit amet, consectetur adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <tspan style="font-size:2em">quis</tspan> nostrud exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea commodo consequat.</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-101-ref.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 101</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,60)">
+      <text style="text-anchor:middle">
+        <tspan x="240" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="240" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,120)">
+      <text style="text-anchor:end">
+        <tspan x="400" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="400" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-101.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 101</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <html:link rel="match"  href="text-inline-size-101-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:66.66667%">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,60)">
+      <text x="240" y="114.8" style="inline-size:66.66667%;text-anchor:middle">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,120)">
+      <text x="400" y="114.8" style="inline-size:66.66667%;text-anchor:end">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-201-ref.svg
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text in Shape — 201</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px">
+    <g transform="translate(0,0)">
+      <text style="writing-mode:tb-rl">
+        <tspan x="140" y="100">漢字</tspan>
+        <tspan x="140" y="132">Lorem ipsum</tspan>
+        <tspan x="140" y="227.7">漢字</tspan>
+      </text>
+    </g>
+    <g transform="translate(80,0)">
+      <text transform="translate(250,-40) rotate(90)">
+        <tspan x="140" y="110">漢字Lorem ipsum!漢字</tspan>
+      </text>
+    </g>
+    <g transform="translate(160,0)">
+      <text transform="translate(250,-40) rotate(90)">
+        <tspan x="140" y="110">漢字!لكن لا بد أن漢字</tspan>
+      </text>
+    </g>
+    <g transform="translate(240,0)">
+      <text transform="translate(250,-40) rotate(90)" style="direction:rtl;text-anchor:end">
+        <tspan x="140" y="110">漢字!لكن لا بد أن漢字</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-inline-size-201.svg
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text in Shape — 201</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <html:link rel="match"  href="text-inline-size-201-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <!-- Lorem ipsum dolor sit amet, consectetur adipisicing elit, -->
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;writing-mode:tb-rl">
+    <g transform="translate(0,0)">
+      <text x="140" y="100" style="inline-size:200px">漢字Lorem ipsum!漢字</text>
+    </g>
+    <g transform="translate(80,0)" style="text-orientation:sideways">
+      <text x="140" y="100" style="inline-size:200px">漢字Lorem ipsum!漢字</text>
+    </g>
+    <g transform="translate(160,0)" style="text-orientation:sideways">
+      <text x="140" y="100" style="inline-size:200px">漢字!لكن لا بد أن漢字</text>
+    </g>
+    <g transform="translate(240,0)" style="direction:rtl;text-orientation:sideways">
+      <text x="140" y="100" style="inline-size:200px">漢字!لكن لا بد أن漢字</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-multiline-001-ref.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Multiline — 001</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px;fill:black">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,60)">
+      <text style="text-anchor:middle">
+        <tspan x="240" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="240" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,120)">
+      <text style="text-anchor:end">
+        <tspan x="400" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="400" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-multiline-001.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Multiline — 001</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#TextLayoutPreMultiline"/>
+    <html:link rel="match"  href="text-multiline-001-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="white-space: pre-line">Lorem ipsum dolor sit amet, consectetur
+adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,60)">
+      <text x="240" y="114.8" style="white-space: pre-line;text-anchor:middle">Lorem ipsum dolor sit amet, consectetur
+adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,120)">
+      <text x="400" y="114.8" style="white-space: pre-line;text-anchor:end">Lorem ipsum dolor sit amet, consectetur
+      adipisicing elit,</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-multiline-002-ref.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Multiline — 002</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px">
+    <g transform="translate(0,0)">
+      <text transform="translate(250,10) rotate(90)">
+        <tspan x="90" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="90" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(80,0)">
+      <text transform="translate(250,-40) rotate(90)" style="text-anchor:middle">
+        <tspan x="240" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="240" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(160,0)">
+      <text transform="translate(250,-90) rotate(90)" style="text-anchor:end">
+        <tspan x="390" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="390" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-multiline-002.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Multiline — 002</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#TextLayoutPreMultiline"/>
+    <html:link rel="match"  href="text-multiline-002-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;writing-mode:tb-rl">
+    <g transform="translate(0,0)">
+      <text x="140" y="100" style="white-space: pre-line">Lorem ipsum dolor sit amet,
+consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(80,0)">
+      <text x="140" y="200" style="white-space: pre-line;text-anchor:middle">Lorem ipsum dolor sit amet,
+consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(160,0)">
+      <text x="140" y="300" style="white-space: pre-line;text-anchor:end">Lorem ipsum dolor sit amet,
+consectetur adipisicing elit,</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-multiline-003-ref.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Multiline — 003</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-reference" style="font-size:16px;direction:rtl">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="400" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="400" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,60)">
+      <text style="text-anchor:middle">
+        <tspan x="240" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="240" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,120)">
+      <text style="text-anchor:end">
+        <tspan x="80" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="80" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/reftests/text-multiline-003.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Multiline — 003</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#TextLayoutPreMultiline"/>
+    <html:link rel="match"  href="text-multiline-003-ref.svg" />
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;direction:rtl">
+    <g transform="translate(0,0)">
+      <text x="400" y="114.8" style="white-space: pre-line">لكن لا بد أن أوضح لك أن كل هذه الأفكار
+المغلوطة حول استنكار</text>
+    </g>
+    <g transform="translate(0,60)">
+      <text x="240" y="114.8" style="white-space: pre-line;text-anchor:middle">لكن لا بد أن أوضح لك أن كل هذه الأفكار
+المغلوطة حول استنكار</text>
+    </g>
+    <g transform="translate(0,120)">
+      <text x="80" y="114.8" style="white-space: pre-line;text-anchor:end">لكن لا بد أن أوضح لك أن كل هذه الأفكار
+المغلوطة حول استنكار</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/visualtests/text-inline-size-001-visual.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 001</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <defs>
+    <path id="TestPath" d="m 80,100 0,40 m 320,-40 0,40"/>
+  </defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Text 'inline-size' — 001</text>
+  <a href="https://svgwg.org/svg2-draft/text.html#InlineSize">
+    <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/text.html#InlineSize</text>
+  </a>
+
+  <g id="test-body-reference" style="font-size:16px;fill:red">
+    <g transform="translate(0,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <circle cx="80" cy="114.8" r="1,0" style="fill:lightblue"/>
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,60)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <circle cx="240" cy="114.8" r="1,0" style="fill:lightblue"/>
+      <text style="text-anchor:middle">
+        <tspan x="240" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="240" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,120)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <circle cx="400" cy="114.8" r="1,0" style="fill:lightblue"/>
+      <text style="text-anchor:end">
+        <tspan x="400" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="400" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+  </g>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;fill:green">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:320px">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,60)">
+      <text x="240" y="114.8" style="inline-size:320px;text-anchor:middle">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,120)">
+      <text x="400" y="114.8" style="inline-size:320px;text-anchor:end">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/visualtests/text-inline-size-002-visual.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text in Shape — 002</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <defs>
+    <path id="TestPath" d="m 110,100 40,0 m -40,200 40,0"/>
+  </defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Text 'inline-size' — 002</text>
+  <a href="https://svgwg.org/svg2-draft/text.html#InlineSize">
+    <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/text.html#InlineSize</text>
+  </a>
+
+  <g id="test-body-reference" style="font-size:16px;fill:red">
+    <g transform="translate(0,0)">
+      <text transform="translate(250,10) rotate(90)">
+        <tspan x="90" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="90" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(80,0)">
+      <text transform="translate(250,-40) rotate(90)" style="text-anchor:middle">
+        <tspan x="240" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="240" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(160,0)">
+      <text transform="translate(250,-90) rotate(90)" style="text-anchor:end">
+        <tspan x="390" y="114.8">Lorem ipsum dolor sit amet,</tspan>
+        <tspan x="390" y="134.8">consectetur adipisicing elit,</tspan>
+      </text>
+    </g>
+  </g>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;writing-mode:tb-rl;fill:green">
+    <g transform="translate(0,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text x="140" y="100" style="inline-size:200px">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(80,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text x="140" y="200" style="inline-size:200px;text-anchor:middle">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(160,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text x="140" y="300" style="inline-size:200px;text-anchor:end">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/visualtests/text-inline-size-003-visual.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 003</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <defs>
+    <path id="TestPath" d="m 80,100 0,40 m 320,-40 0,40"/>
+  </defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Text 'inline-size' — 003</text>
+  <a href="https://svgwg.org/svg2-draft/text.html#InlineSize">
+    <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/text.html#InlineSize</text>
+  </a>
+
+  <g id="test-body-reference" style="font-size:16px;direction:rtl;fill:red">
+    <g transform="translate(0,0)">
+      <text>
+        <tspan x="400" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="400" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,60)">
+      <text style="text-anchor:middle">
+        <tspan x="240" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="240" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,120)">
+      <text style="text-anchor:end">
+        <tspan x="80" y="114.8">لكن لا بد أن أوضح لك أن كل هذه الأفكار</tspan>
+        <tspan x="80" y="134.8">المغلوطة حول استنكار</tspan>
+      </text>
+    </g>
+  </g>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;direction:rtl;fill:green">
+    <g transform="translate(0,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text x="400" y="114.8" style="inline-size:320px">لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار</text>
+    </g>
+    <g transform="translate(0,60)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text x="240" y="114.8" style="inline-size:320px;text-anchor:middle">لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار</text>
+    </g>
+    <g transform="translate(0,120)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text x="80" y="114.8" style="inline-size:320px;text-anchor:end">لكن لا بد أن أوضح لك أن كل هذه الأفكار المغلوطة حول استنكار</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/visualtests/text-inline-size-005-visual.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 005</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <defs>
+    <path id="TestPath" d="m 80,100 0,160 m 320,-160 0,160"/>
+  </defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Text 'inline-size' — 005</text>
+  <a href="https://svgwg.org/svg2-draft/text.html#InlineSize">
+    <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/text.html#InlineSize</text>
+  </a>
+
+  <g id="test-body-reference" style="font-size:16px;fill:#ffeeee">
+    <g transform="translate(0,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="149.6">adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor</tspan>
+        <tspan x="80" y="174.8">incididunt ut labore et dolore magna aliqua. Ut</tspan>
+        <tspan x="80" y="209.6">enim ad minim veniam, <tspan style="font-size:32px">quis</tspan> nostrud</tspan>
+        <tspan x="80" y="234.8">exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea</tspan>
+        <tspan x="80" y="254.8">commodo consequat.</tspan>
+      </text>
+    </g>
+  </g>
+
+  <g id="test-body-content" style="font-size:16px;line-height:1.25;fill:green">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:320px" xml:space="preserve">Lorem ipsum dolor sit amet, consectetur adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <tspan style="font-size:2em">quis</tspan> nostrud exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea commodo consequat.</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/visualtests/text-inline-size-006-visual.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 006</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <defs>
+    <path id="TestPath" d="m 80,100 0,160 m 320,-160 0,160"/>
+  </defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Text 'inline-size' — 006</text>
+  <a href="https://svgwg.org/svg2-draft/text.html#InlineSize">
+    <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/text.html#InlineSize</text>
+  </a>
+
+  <g id="test-body-reference" style="font-size:16px;fill:red">
+    <g transform="translate(0,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="134.8">adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor</tspan>
+        <tspan x="80" y="154.8">incididunt ut labore et dolore magna aliqua. Ut</tspan>
+        <tspan x="80" y="174.8">enim ad minim veniam, <tspan style="font-size:32px">quis</tspan> nostrud</tspan>
+        <tspan x="80" y="194.8">exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea</tspan>
+        <tspan x="80" y="214.8">commodo consequat.</tspan>
+      </text>
+    </g>
+  </g>
+
+  <g id="test-body-content" style="font-size:16px;line-height:1.25;fill:green">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:320px">Lorem ipsum dolor sit amet, consectetur adipiscing <tspan style="font-size:32px;line-height:0">elit</tspan>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <tspan style="font-size:2em;line-height:0">quis</tspan> nostrud exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea commodo consequat.</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/visualtests/text-inline-size-007-visual.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 006</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <defs>
+    <path id="TestPath" d="m 80,100 0,160 m 320,-160 0,160"/>
+  </defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Text 'inline-size' — 007</text>
+  <a href="https://svgwg.org/svg2-draft/text.html#InlineSize">
+    <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/text.html#InlineSize</text>
+  </a>
+
+  <g id="test-body-reference" style="font-size:16px;fill:red">
+    <g transform="translate(0,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="139.6">adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor</tspan>
+        <tspan x="80" y="159.6">incididunt ut labore et dolore magna aliqua. Ut</tspan>
+        <tspan x="80" y="184.4">enim ad minim veniam, <tspan style="font-size:32px">quis</tspan> nostrud</tspan>
+        <tspan x="80" y="204.4">exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea</tspan>
+        <tspan x="80" y="226.8">commodo consequat.</tspan>
+      </text>
+    </g>
+  </g>
+
+  <g id="test-body-content" style="font-size:16px;fill:green">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:320px;line-height:20px">Lorem ipsum dolor sit amet, consectetur adipiscing <tspan style="font-size:32px">elit</tspan>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, <tspan style="font-size:2em">quis</tspan> nostrud exercitation ullamco laboris <tspan style="font-size:8px">nisi</tspan> ut aliquip ex ea commodo consequat.</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/visualtests/text-inline-size-101-visual.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text: Inline Size — 101</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <defs>
+    <path id="TestPath" d="m 80,100 0,40 m 320,-40 0,40"/>
+  </defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Text 'inline-size' — 101</text>
+  <a href="https://svgwg.org/svg2-draft/text.html#InlineSize">
+    <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/text.html#InlineSize</text>
+  </a>
+
+  <g id="test-body-reference" style="font-size:16px;fill:red">
+    <g transform="translate(0,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text>
+        <tspan x="80" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="80" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,60)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text style="text-anchor:middle">
+        <tspan x="240" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="240" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+    <g transform="translate(0,120)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text style="text-anchor:end">
+        <tspan x="400" y="114.8">Lorem ipsum dolor sit amet, consectetur</tspan>
+        <tspan x="400" y="134.8">adipisicing elit,</tspan>
+      </text>
+    </g>
+  </g>
+
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;fill:green">
+    <g transform="translate(0,0)">
+      <text x="80" y="114.8" style="inline-size:66.66667%">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,60)">
+      <text x="240" y="114.8" style="inline-size:66.66667%;text-anchor:middle">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+    <g transform="translate(0,120)">
+      <text x="400" y="114.8" style="inline-size:66.66667%;text-anchor:end">Lorem ipsum dolor sit amet, consectetur adipisicing elit,</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/text/visualtests/text-inline-size-201-visual.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="svg-root"
+  width="100%" height="100%" viewBox="0 0 480 360"
+  xmlns="http://www.w3.org/2000/svg"
+  xmlns:xlink="http://www.w3.org/1999/xlink"
+  xmlns:html="http://www.w3.org/1999/xhtml">
+  <g id="testmeta">
+    <title>Text in Shape — 201</title>
+    <html:link rel="author"
+          title="Tavmjong Bah"
+          href="mailto:tavmjong@free.fr"/>
+    <html:link rel="reviewer"
+          title="NAME_OF_REVIEWER"
+          href="mailto:EMAIL OR http://CONTACT_PAGE" />
+          <!-- YYYY-MM-DD -->
+    <html:link rel="help"
+          href="https://svgwg.org/svg2-draft/text.html#InlineSize"/>
+    <metadata class="flags">TOKENS</metadata>
+    <desc class="assert">TEST ASSERTION</desc>
+  </g>
+
+  <style id="test-font" type="text/css">
+    /* Standard Font (if needed). */
+    @font-face {
+      font-family: FreeSans;
+      src: url("fonts/FreeSans.woff") format("woff"),
+           local("FreeSans");
+    }
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <style id="test-style" type="text/css">
+    /* Style that is being tested (if needed). */
+    text { font-family: FreeSans, sans-serif }
+  </style>
+
+  <defs>
+    <path id="TestPath" d="m 110,100 40,0 m -40,200 40,0"/>
+  </defs>
+
+  <text id="title" x="240" y="50" style="fill:black; font-size:24px; text-anchor:middle;">Text 'inline-size' — 201</text>
+  <a href="https://svgwg.org/svg2-draft/text.html#InlineSize">
+    <text id="source" x="240" y="70" style="fill:black; font-size:12px; text-anchor:middle;">https://svgwg.org/svg2-draft/text.html#InlineSize</text>
+  </a>
+
+  <g id="test-body-reference" style="font-size:16px;fill:red">
+    <g transform="translate(0,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text style="writing-mode:tb-rl">
+        <tspan x="140" y="100">漢字</tspan>
+        <tspan x="140" y="132">Lorem ipsum</tspan>
+        <tspan x="140" y="227.7">漢字</tspan>
+      </text>
+    </g>
+    <g transform="translate(80,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text transform="translate(250,-40) rotate(90)">
+        <tspan x="140" y="110">漢字Lorem ipsum!漢字</tspan>
+      </text>
+    </g>
+    <g transform="translate(160,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text transform="translate(250,-40) rotate(90)">
+        <tspan x="140" y="110">漢字!لكن لا بد أن漢字</tspan>
+      </text>
+    </g>
+    <g transform="translate(240,0)">
+      <use xlink:href="#TestPath" style="fill:none;stroke:lightblue"/>
+      <text transform="translate(250,-40) rotate(90)" style="direction:rtl;text-anchor:end">
+        <tspan x="140" y="110">漢字!لكن لا بد أن漢字</tspan>
+      </text>
+    </g>
+  </g>
+
+  <!-- Lorem ipsum dolor sit amet, consectetur adipisicing elit, -->
+  <g id="test-body-content" style="font-size:16px;line-spacing:1.25;writing-mode:tb-rl;fill:green">
+    <g transform="translate(0,0)">
+      <text x="140" y="100" style="inline-size:200px">漢字Lorem ipsum!漢字</text>
+    </g>
+    <g transform="translate(80,0)" style="text-orientation:sideways">
+      <text x="140" y="100" style="inline-size:200px">漢字Lorem ipsum!漢字</text>
+    </g>
+    <g transform="translate(160,0)" style="text-orientation:sideways">
+      <text x="140" y="100" style="inline-size:200px">漢字!لكن لا بد أن漢字</text>
+    </g>
+    <g transform="translate(240,0)" style="direction:rtl;text-orientation:sideways">
+      <text x="140" y="100" style="inline-size:200px">漢字!لكن لا بد أن漢字</text>
+    </g>
+  </g>
+
+</svg>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/svg/types/scripted/event-handler-all-document-element-events.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:h="http://www.w3.org/1999/xhtml">
+    <title>DocumentAndElementEventHandlers</title>
+    <metadata>
+        <h:link rel="help" href="https://svgwg.org/svg2-draft/types.html#InterfaceSVGElement"/>
+    </metadata>
+    <h:script src="/resources/testharness.js"/>
+    <h:script src="/resources/testharnessreport.js"/>
+    <script><![CDATA[
+        "use strict";
+        setup({ explicit_done: true });
+
+        const names = ["oncut","oncopy","onpaste"];
+
+        for (const name of names) {
+            const withoutOn = name.substring(2);
+
+            test(() => {
+                assert_true(SVGElement.prototype.hasOwnProperty(name),
+                    `${SVGElement.prototype.constructor.name} has an own property named "${name}"`);
+                assert_false(name in Element.prototype, `Element.prototype must not contain a "${name}" property`);
+            }, `${name}: DocumentAndElementEventHandlers must be on SVGElement not Element`);
+
+            test(() => {
+                const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "g");
+
+                assert_equals(svgElement[name], null,
+                    `The default value of the property is null for a ${svgElement.constructor.name} instance`);
+            }, `${name}: the default value must be null`);
+
+            test(() => {
+                const el = document.createElementNS("http://www.w3.org/2000/svg", "g");
+                el.setAttribute(name, `window.${name}Happened = true;`);
+                const compiledHandler = el[name];
+
+                assert_equals(typeof compiledHandler, "function", `The ${name} property must be a function`);
+                compiledHandler();
+                assert_true(window[name + "Happened"], "Calling the handler must run the code");
+            }, `${name}: the content attribute must be compiled into a function as the corresponding property`);
+
+            test(() => {
+                const el = document.createElementNS("http://www.w3.org/2000/svg", "g");
+                el.setAttribute(name, `window.${name}Happened2 = true;`);
+
+                el.dispatchEvent(new Event(withoutOn));
+
+                assert_true(window[name + "Happened2"], "Dispatching an event must run the code");
+            }, `${name}: the content attribute must execute when an event is dispatched`);
+        }
+
+        done();
+  ]]></script>
+</svg>
+
deleted file mode 100644
--- a/testing/web-platform/tests/workers/WorkerGlobalScope_requestAnimationFrame.htm
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<title> WorkerGlobalScope API: requestAnimationFrame()</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id=log></div>
-<script id="worker" type="text/worker">
-const res = [];
-requestAnimationFrame((dt) => {
-  res.push(dt);
-  requestAnimationFrame((dt) => {
-    res.push(dt);
-    requestAnimationFrame((dt) => {
-      res.push(dt);
-      postMessage(res);
-    });
-  });
-});
-</script>
-<script>
-async_test(function(t) {
-  var blob = new Blob([document.getElementById('worker').textContent]);
-  var worker = new Worker(URL.createObjectURL(blob));
-  worker.addEventListener("error", t.unreached_func("No error should be reported"));
-  worker.addEventListener("message", t.step_func((ev) => {
-    const ret = ev.data;
-    assert_equals(ret.length, 3);
-    assert_true(ret[0] < ret[1]);
-    assert_true(ret[1] < ret[2]);
-    t.done();
-  }));
-});
-</script>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/workers/WorkerGlobalScope_requestAnimationFrame.tentative.worker.js
@@ -0,0 +1,19 @@
+importScripts("/resources/testharness.js");
+
+async_test(t => {
+  const res = [];
+  requestAnimationFrame(t.step_func(dt => {
+    res.push(dt);
+    requestAnimationFrame(t.step_func(dt => {
+      res.push(dt);
+      requestAnimationFrame(t.step_func_done(dt => {
+        res.push(dt);
+        assert_equals(res.length, 3);
+        assert_less_than(res[0], res[1]);
+        assert_less_than(res[1], res[2]);
+      }));
+    }));
+  }));
+});
+
+done();
--- a/xpcom/string/nsTString.h
+++ b/xpcom/string/nsTString.h
@@ -33,18 +33,16 @@ public:
   // bindgen w/ clang 3.9 at least chokes on a typedef, but using is okay.
   using typename nsTSubstring<T>::substring_type;
 #else
   // On the other hand msvc chokes on the using statement. It seems others
   // don't care either way so we lump them in here.
   typedef typename nsTSubstring<T>::substring_type substring_type;
 #endif
 
-  typedef typename substring_type::literalstring_type literalstring_type;
-
   typedef typename substring_type::fallible_t fallible_t;
 
   typedef typename substring_type::char_type char_type;
   typedef typename substring_type::char_traits char_traits;
   typedef typename substring_type::incompatible_char_type incompatible_char_type;
 
   typedef typename substring_type::substring_tuple_type substring_tuple_type;
 
@@ -118,25 +116,16 @@ public:
 
   explicit
   nsTString(substring_type&& aReadable)
     : substring_type(ClassFlags::NULL_TERMINATED)
   {
     this->Assign(std::move(aReadable));
   }
 
-  // NOTE(nika): gcc 4.9 workaround. Remove when support is dropped.
-  explicit
-  nsTString(const literalstring_type& aReadable)
-    : substring_type(ClassFlags::NULL_TERMINATED)
-  {
-    this->Assign(aReadable);
-  }
-
-
   // |operator=| does not inherit, so we must define our own
   self_type& operator=(char_type aChar)
   {
     this->Assign(aChar);
     return *this;
   }
   self_type& operator=(const char_type* aData)
   {
@@ -166,22 +155,16 @@ public:
     this->Assign(aStr);
     return *this;
   }
   self_type& operator=(substring_type&& aStr)
   {
     this->Assign(std::move(aStr));
     return *this;
   }
-  // NOTE(nika): gcc 4.9 workaround. Remove when support is dropped.
-  self_type& operator=(const literalstring_type& aStr)
-  {
-    this->Assign(aStr);
-    return *this;
-  }
   self_type& operator=(const substring_tuple_type& aTuple)
   {
     this->Assign(aTuple);
     return *this;
   }
 
   /**
    * returns the null-terminated string
@@ -565,17 +548,16 @@ public:
 
   typedef nsTString<T> base_string_type;
   typedef typename base_string_type::string_type string_type;
   typedef typename base_string_type::char_type char_type;
   typedef typename base_string_type::char_traits char_traits;
   typedef typename base_string_type::substring_type substring_type;
   typedef typename base_string_type::size_type size_type;
   typedef typename base_string_type::substring_tuple_type substring_tuple_type;
-  typedef typename base_string_type::literalstring_type literalstring_type;
 
   // These are only for internal use within the string classes:
   typedef typename base_string_type::DataFlags DataFlags;
   typedef typename base_string_type::ClassFlags ClassFlags;
 
 public:
 
   /**
@@ -635,24 +617,16 @@ public:
 
   explicit
   nsTAutoStringN(substring_type&& aStr)
     : self_type()
   {
     this->Assign(std::move(aStr));
   }
 
-  // NOTE(nika): gcc 4.9 workaround. Remove when support is dropped.
-  explicit
-  nsTAutoStringN(const literalstring_type& aStr)
-    : self_type()
-  {
-    this->Assign(aStr);
-  }
-
   MOZ_IMPLICIT nsTAutoStringN(const substring_tuple_type& aTuple)
     : self_type()
   {
     this->Assign(aTuple);
   }
 
   // |operator=| does not inherit, so we must define our own
   self_type& operator=(char_type aChar)
@@ -688,22 +662,16 @@ public:
     this->Assign(aStr);
     return *this;
   }
   self_type& operator=(substring_type&& aStr)
   {
     this->Assign(std::move(aStr));
     return *this;
   }
-  // NOTE(nika): gcc 4.9 workaround. Remove when support is dropped.
-  self_type& operator=(const literalstring_type& aStr)
-  {
-    this->Assign(aStr);
-    return *this;
-  }
   self_type& operator=(const substring_tuple_type& aTuple)
   {
     this->Assign(aTuple);
     return *this;
   }
 
   static const size_t kStorageSize = N;
 
--- a/xpcom/string/nsTStringRepr.h
+++ b/xpcom/string/nsTStringRepr.h
@@ -10,17 +10,16 @@
 #include <type_traits> // std::enable_if
 
 #include "mozilla/Char16.h"
 #include "mozilla/fallible.h"
 #include "nsStringFlags.h"
 #include "nsCharTraits.h"
 
 template <typename T> class nsTSubstringTuple;
-template <typename T> class nsTLiteralString;
 
 // The base for string comparators
 template <typename T> class nsTStringComparator
 {
 public:
   typedef T char_type;
 
   nsTStringComparator() {}
@@ -102,17 +101,16 @@ public:
   typedef nsCharTraits<char_type> char_traits;
   typedef typename char_traits::incompatible_char_type incompatible_char_type;
 
   typedef nsTStringRepr<T> self_type;
   typedef self_type base_string_type;
 
   typedef nsTSubstring<T> substring_type;
   typedef nsTSubstringTuple<T> substring_tuple_type;
-  typedef nsTLiteralString<T> literalstring_type;
 
   typedef nsReadingIterator<char_type> const_iterator;
   typedef nsWritingIterator<char_type> iterator;
 
   typedef nsTStringComparator<char_type> comparator_type;
 
   typedef char_type* char_iterator;
   typedef const char_type* const_char_iterator;
--- a/xpcom/string/nsTSubstring.cpp
+++ b/xpcom/string/nsTSubstring.cpp
@@ -527,24 +527,16 @@ nsTSubstring<T>::Assign(self_type&& aStr
   // We don't truncate the source string if the allocation failed.
   if (!Assign(aStr, aFallible)) {
     return false;
   }
   aStr.Truncate();
   return true;
 }
 
-// NOTE(nika): gcc 4.9 workaround. Remove when support is dropped.
-template <typename T>
-void
-nsTSubstring<T>::Assign(const literalstring_type& aStr)
-{
-  Assign(aStr.AsString());
-}
-
 template <typename T>
 void
 nsTSubstring<T>::Assign(const substring_tuple_type& aTuple)
 {
   if (!Assign(aTuple, mozilla::fallible)) {
     AllocFailed(aTuple.Length());
   }
 }
--- a/xpcom/string/nsTSubstring.h
+++ b/xpcom/string/nsTSubstring.h
@@ -41,17 +41,16 @@ class nsTSubstring : public mozilla::det
 {
 public:
   typedef nsTSubstring<T> self_type;
 
   typedef nsTString<T> string_type;
 
   typedef typename mozilla::detail::nsTStringRepr<T> base_string_type;
   typedef typename base_string_type::substring_type substring_type;
-  typedef typename base_string_type::literalstring_type literalstring_type;
 
   typedef typename base_string_type::fallible_t fallible_t;
 
   typedef typename base_string_type::char_type char_type;
   typedef typename base_string_type::char_traits char_traits;
   typedef typename base_string_type::incompatible_char_type incompatible_char_type;
 
   typedef typename base_string_type::substring_tuple_type substring_tuple_type;
@@ -183,23 +182,16 @@ public:
                                        size_type aLength, const fallible_t&);
 
   void NS_FASTCALL Assign(const self_type&);
   MOZ_MUST_USE bool NS_FASTCALL Assign(const self_type&, const fallible_t&);
 
   void NS_FASTCALL Assign(self_type&&);
   MOZ_MUST_USE bool NS_FASTCALL Assign(self_type&&, const fallible_t&);
 
-  // XXX(nika): GCC 4.9 doesn't correctly resolve calls to Assign a
-  // nsLiteralCString into a nsTSubstring, due to a frontend bug. This explcit
-  // Assign overload (and the corresponding constructor and operator= overloads)
-  // are used to avoid this bug. Once we stop supporting GCC 4.9 we can remove
-  // them.
-  void NS_FASTCALL Assign(const literalstring_type&);
-
   void NS_FASTCALL Assign(const substring_tuple_type&);
   MOZ_MUST_USE bool NS_FASTCALL Assign(const substring_tuple_type&,
                                        const fallible_t&);
 
 #if defined(MOZ_USE_CHAR16_WRAPPER)
   template <typename Q = T, typename EnableIfChar16 = mozilla::Char16OnlyT<Q>>
   void Assign(char16ptr_t aData)
   {
@@ -279,22 +271,16 @@ public:
     Assign(aStr);
     return *this;
   }
   self_type& operator=(self_type&& aStr)
   {
     Assign(std::move(aStr));
     return *this;
   }
-  // NOTE(nika): gcc 4.9 workaround. Remove when support is dropped.
-  self_type& operator=(const literalstring_type& aStr)
-  {
-    Assign(aStr);
-    return *this;
-  }
   self_type& operator=(const substring_tuple_type& aTuple)
   {
     Assign(aTuple);
     return *this;
   }
 
   // Adopt a heap-allocated char sequence for this string; is Voided if aData
   // is null. Useful for e.g. converting an strdup'd C string into an