Merge autoland to mozilla-central a=merge
authorNorisz Fay <nfay@mozilla.com>
Mon, 23 May 2022 12:51:45 +0300
changeset 618527 a24b55b4c5246cc6ae45445f2b45e0c1104f6564
parent 618526 e47062a4a8b0601019536eb8821e2fa1cf6815a2 (current diff)
parent 618509 f7644db2929607165f0da1fee99a5b8fd5108ea6 (diff)
child 618528 29620639de7a259a583824f2577993d08270bf8e
push id163311
push usernfay@mozilla.com
push dateMon, 23 May 2022 09:57:02 +0000
treeherderautoland@29620639de7a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone102.0a1
first release with
nightly linux32
a24b55b4c524 / 102.0a1 / 20220523095244 / files
nightly linux64
a24b55b4c524 / 102.0a1 / 20220523095244 / files
nightly mac
a24b55b4c524 / 102.0a1 / 20220523095244 / files
nightly win32
a24b55b4c524 / 102.0a1 / 20220523095244 / files
nightly win64
a24b55b4c524 / 102.0a1 / 20220523095244 / 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 autoland to mozilla-central a=merge
--- a/layout/painting/nsCSSRendering.cpp
+++ b/layout/painting/nsCSSRendering.cpp
@@ -2623,17 +2623,17 @@ nsCSSRendering::BuildWebRenderDisplayIte
 
   ImgDrawResult result = ImgDrawResult::SUCCESS;
   nsBackgroundLayerState state =
       PrepareImageLayer(&aParams.presCtx, aParams.frame, aParams.paintFlags,
                         paintBorderArea, clipState.mBGClipArea, layer, nullptr);
   result &= state.mImageRenderer.PrepareResult();
 
   if (!state.mFillArea.IsEmpty()) {
-    return state.mImageRenderer.BuildWebRenderDisplayItemsForLayer(
+    result &= state.mImageRenderer.BuildWebRenderDisplayItemsForLayer(
         &aParams.presCtx, aBuilder, aResources, aSc, aManager, aItem,
         state.mDestArea, state.mFillArea,
         state.mAnchor + paintBorderArea.TopLeft(),
         clipState.mDirtyRectInAppUnits, state.mRepeatSize, aParams.opacity);
   }
 
   return result;
 }
--- a/layout/painting/nsImageRenderer.cpp
+++ b/layout/painting/nsImageRenderer.cpp
@@ -435,17 +435,17 @@ void nsImageRenderer::SetPreferredSize(c
       aIntrinsicSize.mHasWidth ? aIntrinsicSize.mWidth : aDefaultSize.width;
   mSize.height =
       aIntrinsicSize.mHasHeight ? aIntrinsicSize.mHeight : aDefaultSize.height;
 }
 
 // Convert from nsImageRenderer flags to the flags we want to use for drawing in
 // the imgIContainer namespace.
 static uint32_t ConvertImageRendererToDrawFlags(uint32_t aImageRendererFlags) {
-  uint32_t drawFlags = imgIContainer::FLAG_NONE;
+  uint32_t drawFlags = imgIContainer::FLAG_ASYNC_NOTIFY;
   if (aImageRendererFlags & nsImageRenderer::FLAG_SYNC_DECODE_IMAGES) {
     drawFlags |= imgIContainer::FLAG_SYNC_DECODE;
   }
   if (aImageRendererFlags & (nsImageRenderer::FLAG_PAINTING_TO_WINDOW |
                              nsImageRenderer::FLAG_HIGH_QUALITY_SCALING)) {
     drawFlags |= imgIContainer::FLAG_HIGH_QUALITY_SCALING;
   }
   return drawFlags;
@@ -603,24 +603,17 @@ ImgDrawResult nsImageRenderer::BuildWebR
     }
     case StyleImage::Tag::Rect:
     case StyleImage::Tag::Url: {
       ExtendMode extendMode = mExtendMode;
       if (aDest.Contains(aFill)) {
         extendMode = ExtendMode::CLAMP;
       }
 
-      uint32_t containerFlags = imgIContainer::FLAG_ASYNC_NOTIFY;
-      if (mFlags & (nsImageRenderer::FLAG_PAINTING_TO_WINDOW |
-                    nsImageRenderer::FLAG_HIGH_QUALITY_SCALING)) {
-        containerFlags |= imgIContainer::FLAG_HIGH_QUALITY_SCALING;
-      }
-      if (mFlags & nsImageRenderer::FLAG_SYNC_DECODE_IMAGES) {
-        containerFlags |= imgIContainer::FLAG_SYNC_DECODE;
-      }
+      uint32_t containerFlags = ConvertImageRendererToDrawFlags(mFlags);
       if (extendMode == ExtendMode::CLAMP &&
           StaticPrefs::image_svg_blob_image() &&
           mImageContainer->GetType() == imgIContainer::TYPE_VECTOR) {
         containerFlags |= imgIContainer::FLAG_RECORD_BLOB;
       }
 
       CSSIntSize destCSSSize{
           nsPresContext::AppUnitsToIntCSSPixels(aDest.width),
--- a/layout/printing/nsPrintData.cpp
+++ b/layout/printing/nsPrintData.cpp
@@ -19,24 +19,17 @@
 extern mozilla::LazyLogModule gPrintingLog;
 
 #define PR_PL(_p1) MOZ_LOG(gPrintingLog, mozilla::LogLevel::Debug, _p1);
 
 //---------------------------------------------------
 //-- nsPrintData Class Impl
 //---------------------------------------------------
 nsPrintData::nsPrintData(ePrintDataType aType)
-    : mType(aType),
-      mPrintDocList(0),
-      mOnStartSent(false),
-      mIsAborted(false),
-      mPreparingForPrint(false),
-      mShrinkToFit(false),
-      mNumPrintablePages(0),
-      mShrinkRatio(1.0) {}
+    : mType(aType), mOnStartSent(false), mIsAborted(false) {}
 
 nsPrintData::~nsPrintData() {
   // Only Send an OnEndPrinting if we have started printing
   if (mOnStartSent && mType != eIsPrintPreview) {
     OnEndPrinting();
   }
 
   if (mPrintDC) {
--- a/layout/printing/nsPrintData.h
+++ b/layout/printing/nsPrintData.h
@@ -9,29 +9,21 @@
 
 #include "mozilla/Attributes.h"
 #include "mozilla/UniquePtr.h"
 
 // Interfaces
 #include "nsDeviceContext.h"
 #include "nsIPrintSettings.h"
 #include "nsISupportsImpl.h"
-#include "nsTArray.h"
 #include "nsCOMArray.h"
 
 class nsPrintObject;
 class nsIWebProgressListener;
 
-//------------------------------------------------------------------------
-// nsPrintData Class
-//
-// mPreparingForPrint - indicates that we have started Printing but
-//   have not gone to the timer to start printing the pages. It gets turned
-//   off right before we go to the timer.
-//------------------------------------------------------------------------
 class nsPrintData {
  public:
   typedef enum { eIsPrinting, eIsPrintPreview } ePrintDataType;
 
   explicit nsPrintData(ePrintDataType aType);
 
   NS_INLINE_DECL_REFCOUNTING(nsPrintData)
 
@@ -41,38 +33,20 @@ class nsPrintData {
   void DoOnProgressChange(int32_t aProgress, int32_t aMaxProgress,
                           bool aDoStartStop, int32_t aFlag);
 
   void DoOnStatusChange(nsresult aStatus);
 
   ePrintDataType mType;  // the type of data this is (Printing or Print Preview)
   RefPtr<nsDeviceContext> mPrintDC;
 
-  mozilla::UniquePtr<nsPrintObject> mPrintObject;
-
   nsCOMArray<nsIWebProgressListener> mPrintProgressListeners;
 
-  // If there is a focused iframe, mSelectionRoot is set to its nsPrintObject.
-  // Otherwise, if there is a selection, it is set to the root nsPrintObject.
-  // Otherwise, it is unset.
-  nsPrintObject* mSelectionRoot = nullptr;
-
-  // Array of non-owning pointers to all the nsPrintObjects owned by this
-  // nsPrintData. This includes this->mPrintObject, as well as all of its
-  // mKids (and their mKids, etc.)
-  nsTArray<nsPrintObject*> mPrintDocList;
-
   bool mOnStartSent;
-  bool mIsAborted;          // tells us the document is being aborted
-  bool mPreparingForPrint;  // see comments above
-  bool mShrinkToFit;
-  int32_t mNumPrintablePages;
-  float mShrinkRatio;
-
-  nsCOMPtr<nsIPrintSettings> mPrintSettings;
+  bool mIsAborted;  // tells us the document is being aborted
 
  private:
   nsPrintData() = delete;
   nsPrintData& operator=(const nsPrintData& aOther) = delete;
 
   ~nsPrintData();  // non-virtual
 };
 
--- a/layout/printing/nsPrintJob.cpp
+++ b/layout/printing/nsPrintJob.cpp
@@ -129,67 +129,62 @@ static void DumpPrintObjectsListStart(co
                                       const nsTArray<nsPrintObject*>& aDocList);
 static void DumpPrintObjectsTree(nsPrintObject* aPO, int aLevel = 0,
                                  FILE* aFD = nullptr);
 static void DumpPrintObjectsTreeLayout(const UniquePtr<nsPrintObject>& aPO,
                                        nsDeviceContext* aDC, int aLevel = 0,
                                        FILE* aFD = nullptr);
 
 #  define DUMP_DOC_LIST(_title) \
-    DumpPrintObjectsListStart((_title), mPrt->mPrintDocList);
-#  define DUMP_DOC_TREE DumpPrintObjectsTree(mPrt->mPrintObject.get());
+    DumpPrintObjectsListStart((_title), mPrintDocList);
+#  define DUMP_DOC_TREE DumpPrintObjectsTree(mPrintObject.get());
 #  define DUMP_DOC_TREELAYOUT \
-    DumpPrintObjectsTreeLayout(mPrt->mPrintObject, mPrt->mPrintDC);
+    DumpPrintObjectsTreeLayout(mPrintObject, mPrt->mPrintDC);
 #else
 #  define DUMP_DOC_LIST(_title)
 #  define DUMP_DOC_TREE
 #  define DUMP_DOC_TREELAYOUT
 #endif
 
 // -------------------------------------------------------
 // Helpers
 // -------------------------------------------------------
 
 /**
  * Build a tree of nsPrintObjects under aPO. It also appends a (depth first)
- * flat list of all the nsPrintObjects created to aPrintData->mPrintDocList. If
+ * flat list of all the nsPrintObjects created to mPrintDocList. If
  * one of the nsPrintObject's document is the focused document, then the print
- * object is set as aPrintData->mSelectionRoot.
+ * object is set as mSelectionRoot.
  * @param aParentPO The parent nsPrintObject to populate, must not be null.
- * @param aFocusedDoc Document from the window that had focus when print was
- *                    initiated.
- * @param aPrintData nsPrintData for the current print, must not be null.
  */
-static void BuildNestedPrintObjects(const UniquePtr<nsPrintObject>& aParentPO,
-                                    RefPtr<nsPrintData>& aPrintData) {
+void nsPrintJob::BuildNestedPrintObjects(
+    const UniquePtr<nsPrintObject>& aParentPO) {
   MOZ_ASSERT(aParentPO);
-  MOZ_ASSERT(aPrintData);
 
   // If aParentPO is for an iframe and its original document was the document
   // that had focus then always set as the selection root.
   if (aParentPO->mFrameType == eIFrame &&
       aParentPO->mDocument->GetProperty(nsGkAtoms::printisfocuseddoc)) {
-    aPrintData->mSelectionRoot = aParentPO.get();
-  } else if (!aPrintData->mSelectionRoot && aParentPO->HasSelection()) {
+    mSelectionRoot = aParentPO.get();
+  } else if (!mSelectionRoot && aParentPO->HasSelection()) {
     // If there is no focused iframe but there is a selection in one or more
     // frames then we want to set the root nsPrintObject as the focus root so
     // that later EnablePrintingSelectionOnly can search for and enable all
     // nsPrintObjects containing selections.
-    aPrintData->mSelectionRoot = aPrintData->mPrintObject.get();
+    mSelectionRoot = mPrintObject.get();
   }
 
   for (auto& bc : aParentPO->mDocShell->GetBrowsingContext()->Children()) {
     nsCOMPtr<nsIDocShell> docShell = bc->GetDocShell();
     if (!docShell) {
       if (auto* cc = dom::ContentChild::GetSingleton()) {
         nsCOMPtr<nsIPrintSettingsService> printSettingsService =
             do_GetService(sPrintSettingsServiceContractID);
         embedding::PrintData printData;
-        printSettingsService->SerializeToPrintData(aPrintData->mPrintSettings,
-                                                   &printData);
+        printSettingsService->SerializeToPrintData(mPrintSettings, &printData);
         Unused << cc->SendUpdateRemotePrintSettings(bc, printData);
       }
       continue;
     }
 
     RefPtr<Document> doc = docShell->GetDocument();
     MOZ_DIAGNOSTIC_ASSERT(doc);
     // We might find non-static documents here if the fission remoteness change
@@ -201,18 +196,18 @@ static void BuildNestedPrintObjects(cons
     }
 
     auto childPO = MakeUnique<nsPrintObject>();
     nsresult rv = childPO->InitAsNestedObject(docShell, doc, aParentPO.get());
     if (NS_FAILED(rv)) {
       MOZ_ASSERT_UNREACHABLE("Init failed?");
     }
 
-    aPrintData->mPrintDocList.AppendElement(childPO.get());
-    BuildNestedPrintObjects(childPO, aPrintData);
+    mPrintDocList.AppendElement(childPO.get());
+    BuildNestedPrintObjects(childPO);
     aParentPO->mKids.AppendElement(std::move(childPO));
   }
 }
 
 static nsresult GetDefaultPrintSettings(nsIPrintSettings** aSettings) {
   *aSettings = nullptr;
 
   nsresult rv = NS_ERROR_FAILURE;
@@ -230,34 +225,35 @@ NS_IMPL_ISUPPORTS(nsPrintJob, nsIWebProg
 //-------------------------------------------------------
 nsPrintJob::nsPrintJob() = default;
 
 nsPrintJob::~nsPrintJob() {
   Destroy();  // for insurance
   DisconnectPagePrintTimer();
 }
 
-bool nsPrintJob::CheckBeforeDestroy() const {
-  return mPrt && mPrt->mPreparingForPrint;
-}
+bool nsPrintJob::CheckBeforeDestroy() const { return mPreparingForPrint; }
 
 //-------------------------------------------------------
 void nsPrintJob::Destroy() {
   if (mIsDestroying) {
     return;
   }
   mIsDestroying = true;
 
-  mPrt = nullptr;
+  DestroyPrintingData();
 
   mDocViewerPrint = nullptr;
 }
 
 //-------------------------------------------------------
-void nsPrintJob::DestroyPrintingData() { mPrt = nullptr; }
+void nsPrintJob::DestroyPrintingData() {
+  mPrintObject = nullptr;
+  mPrt = nullptr;
+}
 
 //---------------------------------------------------------------------------------
 //-- Section: Methods needed by the DocViewer
 //---------------------------------------------------------------------------------
 
 //--------------------------------------------------------
 nsresult nsPrintJob::Initialize(nsIDocumentViewerPrint* aDocViewerPrint,
                                 nsIDocShell* aDocShell, Document* aOriginalDoc,
@@ -293,17 +289,17 @@ nsresult nsPrintJob::Initialize(nsIDocum
 
 //-----------------------------------------------------------------
 std::tuple<nsPageSequenceFrame*, int32_t>
 nsPrintJob::GetSeqFrameAndCountSheets() const {
   if (NS_WARN_IF(!mPrt)) {
     return {nullptr, 0};
   }
 
-  const nsPrintObject* po = mPrt->mPrintObject.get();
+  const nsPrintObject* po = mPrintObject.get();
   if (NS_WARN_IF(!po)) {
     return {nullptr, 0};
   }
 
   // This is sometimes incorrectly called before the pres shell has been created
   // (bug 1141756). MOZ_DIAGNOSTIC_ASSERT so we'll still see the crash in
   // Nightly/Aurora in case the other patch fixes this.
   if (!po->mPresShell) {
@@ -360,17 +356,17 @@ nsresult nsPrintJob::CommonPrint(bool aI
       mIsCreatingPrintPreview = false;
       SetIsPrintPreview(false);
     } else {
       SetIsPrinting(false);
     }
     if (rv != NS_ERROR_ABORT && rv != NS_ERROR_OUT_OF_MEMORY) {
       FirePrintingErrorEvent(rv);
     }
-    mPrt = nullptr;
+    DestroyPrintingData();
   }
 
   return rv;
 }
 
 nsresult nsPrintJob::DoCommonPrint(bool aIsPrintPreview,
                                    nsIPrintSettings* aPrintSettings,
                                    nsIWebProgressListener* aWebProgressListener,
@@ -402,72 +398,70 @@ nsresult nsPrintJob::DoCommonPrint(bool 
     printData->mPrintProgressListeners.AppendElement(mRemotePrintJob);
   }
 
   // Get the docshell for this documentviewer
   nsCOMPtr<nsIDocShell> docShell(do_QueryReferent(mDocShell, &rv));
   NS_ENSURE_SUCCESS(rv, rv);
 
   // if they don't pass in a PrintSettings, then get the Global PS
-  printData->mPrintSettings = aPrintSettings;
-  if (!printData->mPrintSettings) {
-    MOZ_TRY(GetDefaultPrintSettings(getter_AddRefs(printData->mPrintSettings)));
+  mPrintSettings = aPrintSettings;
+  if (!mPrintSettings) {
+    MOZ_TRY(GetDefaultPrintSettings(getter_AddRefs(mPrintSettings)));
   }
 
   {
     nsAutoScriptBlocker scriptBlocker;
-    printData->mPrintObject = MakeUnique<nsPrintObject>();
-    rv = printData->mPrintObject->InitAsRootObject(docShell, aDoc,
-                                                   mIsCreatingPrintPreview);
+    mPrintObject = MakeUnique<nsPrintObject>();
+    rv =
+        mPrintObject->InitAsRootObject(docShell, aDoc, mIsCreatingPrintPreview);
     NS_ENSURE_SUCCESS(rv, rv);
 
-    printData->mPrintDocList.AppendElement(printData->mPrintObject.get());
+    mPrintDocList.AppendElement(mPrintObject.get());
 
-    printData->mPrintObject->mFrameType = eDoc;
+    mPrintObject->mFrameType = eDoc;
 
-    BuildNestedPrintObjects(printData->mPrintObject, printData);
+    BuildNestedPrintObjects(mPrintObject);
   }
 
   // The nsAutoScriptBlocker above will now have been destroyed, which may
   // cause our print/print-preview operation to finish. In this case, we
   // should immediately return an error code so that the root caller knows
   // it shouldn't continue to do anything with this instance.
   if (mIsDestroying) {
     return NS_ERROR_FAILURE;
   }
 
   // XXX This isn't really correct...
-  if (!printData->mPrintObject->mDocument ||
-      !printData->mPrintObject->mDocument->GetRootElement())
+  if (!mPrintObject->mDocument || !mPrintObject->mDocument->GetRootElement())
     return NS_ERROR_GFX_PRINTER_STARTDOC;
 
-  printData->mPrintSettings->GetShrinkToFit(&printData->mShrinkToFit);
+  mPrintSettings->GetShrinkToFit(&mShrinkToFit);
 
   bool printingViaParent =
       XRE_IsContentProcess() && StaticPrefs::print_print_via_parent();
   nsCOMPtr<nsIDeviceContextSpec> devspec;
   if (printingViaParent) {
     devspec = new nsDeviceContextSpecProxy(mRemotePrintJob);
   } else {
     devspec = do_CreateInstance("@mozilla.org/gfx/devicecontextspec;1", &rv);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   bool printSilently = false;
-  printData->mPrintSettings->GetPrintSilent(&printSilently);
+  mPrintSettings->GetPrintSilent(&printSilently);
   if (StaticPrefs::print_always_print_silent()) {
     printSilently = true;
   }
 
   if (mIsDoingPrinting && printSilently) {
     Telemetry::ScalarAdd(Telemetry::ScalarID::PRINTING_SILENT_PRINT, 1);
   }
 
-  MOZ_TRY(devspec->Init(nullptr, printData->mPrintSettings,
-                        mIsCreatingPrintPreview));
+  MOZ_TRY(devspec->Init(nullptr, mPrintSettings, mIsCreatingPrintPreview));
 
   printData->mPrintDC = new nsDeviceContext();
   MOZ_TRY(printData->mPrintDC->InitForPrinting(devspec));
 
   MOZ_TRY(EnablePOsForPrinting());
 
   if (!mIsCreatingPrintPreview) {
     printData->OnStartPrinting();
@@ -702,20 +696,17 @@ nsresult nsPrintJob::ReconstructAndReflo
     gDumpLOFileNameCnt = 0;
   }
 #endif
 
   // In this loop, it's conceivable that one of our helpers might clear mPrt,
   // while we're using it & its members!  So we capture it in an owning local
   // reference & use that instead of using mPrt directly.
   RefPtr<nsPrintData> printData = mPrt;
-  for (uint32_t i = 0; i < printData->mPrintDocList.Length(); ++i) {
-    nsPrintObject* po = printData->mPrintDocList.ElementAt(i);
-    NS_ASSERTION(po, "nsPrintObject can't be null!");
-
+  for (nsPrintObject* po : mPrintDocList) {
     if (!po->PrintingIsEnabled() || po->mInvisible) {
       continue;
     }
 
     // When the print object has been marked as "print the document" (i.e,
     // po->PrintingIsEnabled() is true), mPresContext and mPresShell should be
     // non-nullptr (i.e., should've been created for the print) since they
     // are necessary to print the document.
@@ -744,17 +735,17 @@ nsresult nsPrintJob::ReconstructAndReflo
     // let's stop doing this printing.
     if (NS_WARN_IF(mPrt != printData)) {
       return NS_ERROR_FAILURE;
     }
 
     // For all views except the first one, setup the root view.
     // ??? Can there be multiple po for the top-level-document?
     bool documentIsTopLevel = true;
-    if (i != 0) {
+    if (po->mParent) {
       nsSize adjSize;
       bool doReturn;
       nsresult rv = SetRootView(po, doReturn, documentIsTopLevel, adjSize);
 
       MOZ_ASSERT(!documentIsTopLevel, "How could this happen?");
 
       if (NS_FAILED(rv) || doReturn) {
         return rv;
@@ -780,47 +771,46 @@ nsresult nsPrintJob::ReconstructAndReflo
 }
 
 //-------------------------------------------------------
 nsresult nsPrintJob::SetupToPrintContent() {
   // This method may be called while DoCommonPrint() initializes the instance
   // when its script blocker goes out of scope.  In such case, this cannot do
   // its job as expected because some objects in mPrt have not been initialized
   // yet but they are necessary.
-  // Note: it shouldn't be possible for mPrt->mPrintObject to be null; we check
+  // Note: it shouldn't be possible for mPrintObject to be null; we check
   // it for good measure (after we check its owner) before we start
   // dereferencing it below.
-  if (NS_WARN_IF(!mPrt) || NS_WARN_IF(!mPrt->mPrintObject)) {
+  if (NS_WARN_IF(!mPrt) || NS_WARN_IF(!mPrintObject)) {
     return NS_ERROR_FAILURE;
   }
 
-  // If this is creating print preview, mPrt->mPrintObject->mPresContext and
-  // mPrt->mPrintObject->mPresShell need to be non-nullptr because this cannot
+  // If this is creating print preview, mPrintObject->mPresContext and
+  // mPrintObject->mPresShell need to be non-nullptr because this cannot
   // initialize page sequence frame without them at end of this method since
   // page sequence frame has already been destroyed or not been created yet.
-  if (mIsCreatingPrintPreview &&
-      (NS_WARN_IF(!mPrt->mPrintObject->mPresContext) ||
-       NS_WARN_IF(!mPrt->mPrintObject->mPresShell))) {
+  if (mIsCreatingPrintPreview && (NS_WARN_IF(!mPrintObject->mPresContext) ||
+                                  NS_WARN_IF(!mPrintObject->mPresShell))) {
     return NS_ERROR_FAILURE;
   }
 
   // If this is printing some documents (not print-previewing the documents),
-  // mPrt->mPrintObject->mPresContext and mPrt->mPrintObject->mPresShell can be
-  // nullptr only when mPrt->mPrintObject->PrintingIsEnabled() is false.  E.g.,
+  // mPrintObject->mPresContext and mPrintObject->mPresShell can be
+  // nullptr only when mPrintObject->PrintingIsEnabled() is false.  E.g.,
   // if the document has a <frameset> element and it's printing only content in
   // a <frame> element or all <frame> elements separately.
   MOZ_ASSERT(
-      (!mIsCreatingPrintPreview && !mPrt->mPrintObject->PrintingIsEnabled()) ||
-          (mPrt->mPrintObject->mPresContext && mPrt->mPrintObject->mPresShell),
+      (!mIsCreatingPrintPreview && !mPrintObject->PrintingIsEnabled()) ||
+          (mPrintObject->mPresContext && mPrintObject->mPresShell),
       "mPresContext and mPresShell shouldn't be nullptr when printing the "
       "document or creating print-preview");
 
   bool didReconstruction = false;
 
-  // This method works with mPrt->mPrintObject.  So, we need to guarantee that
+  // This method works with mPrintObject.  So, we need to guarantee that
   // it won't be deleted in this method.  We achieve this by holding a strong
   // local reference to mPrt, which in turn keeps mPrintObject alive.
   RefPtr<nsPrintData> printData = mPrt;
 
   // If some new content got loaded since the initial reflow rebuild
   // everything.
   if (mDidLoadDataForPrinting) {
     nsresult rv = ReconstructAndReflow();
@@ -832,40 +822,39 @@ nsresult nsPrintJob::SetupToPrintContent
     if (NS_WARN_IF(mPrt != printData)) {
       return NS_ERROR_FAILURE;
     }
     didReconstruction = true;
   }
 
   // Here is where we figure out if extra reflow for shrinking the content
   // is required.
-  if (printData->mShrinkToFit) {
-    printData->mShrinkRatio = printData->mPrintObject->mShrinkRatio;
+  if (mShrinkToFit) {
+    mShrinkToFitFactor = mPrintObject->mShrinkRatio;
 
-    if (printData->mShrinkRatio < 0.998f) {
+    if (mShrinkToFitFactor < 0.998f) {
       nsresult rv = ReconstructAndReflow();
       if (NS_WARN_IF(NS_FAILED(rv))) {
         return rv;
       }
       // If the printing was canceled or restarted with different data,
       // let's stop doing this printing.
       if (NS_WARN_IF(mPrt != printData)) {
         return NS_ERROR_FAILURE;
       }
       didReconstruction = true;
     }
 
     if (MOZ_LOG_TEST(gPrintingLog, LogLevel::Debug)) {
-      float calcRatio = printData->mPrintObject->mShrinkRatio;
+      float calcRatio = mPrintObject->mShrinkRatio;
       PR_PL(
           ("*******************************************************************"
            "*******\n"));
       PR_PL(("STF Ratio is: %8.5f Effective Ratio: %8.5f Diff: %8.5f\n",
-             printData->mShrinkRatio, calcRatio,
-             printData->mShrinkRatio - calcRatio));
+             mShrinkToFitFactor, calcRatio, mShrinkToFitFactor - calcRatio));
       PR_PL(
           ("*******************************************************************"
            "*******\n"));
     }
   }
 
   // If the frames got reconstructed and reflowed the number of pages might
   // has changed.
@@ -878,73 +867,72 @@ nsresult nsPrintJob::SetupToPrintContent
     }
   }
 
   DUMP_DOC_LIST(("\nAfter Reflow------------------------------------------"));
   PR_PL(("\n"));
   PR_PL(("-------------------------------------------------------\n"));
   PR_PL(("\n"));
 
-  CalcNumPrintablePages(printData->mNumPrintablePages);
+  CalcNumPrintablePages(mNumPrintablePages);
 
-  PR_PL(("--- Printing %d pages\n", printData->mNumPrintablePages));
+  PR_PL(("--- Printing %d pages\n", mNumPrintablePages));
   DUMP_DOC_TREELAYOUT;
 
   // Print listener setup...
   printData->OnStartPrinting();
 
   // If the printing was canceled or restarted with different data,
   // let's stop doing this printing.
   if (NS_WARN_IF(mPrt != printData)) {
     return NS_ERROR_FAILURE;
   }
 
   nsAutoString fileNameStr;
   // check to see if we are printing to a file
-  if (printData->mPrintSettings->GetOutputDestination() ==
+  if (mPrintSettings->GetOutputDestination() ==
       nsIPrintSettings::kOutputDestinationFile) {
     // On some platforms the BeginDocument needs to know the name of the file.
-    printData->mPrintSettings->GetToFileName(fileNameStr);
+    mPrintSettings->GetToFileName(fileNameStr);
   }
 
   nsAutoString docTitleStr;
   nsAutoString docURLStr;
-  GetDisplayTitleAndURL(
-      *printData->mPrintObject->mDocument, printData->mPrintSettings,
-      DocTitleDefault::eDocURLElseFallback, docTitleStr, docURLStr);
+  GetDisplayTitleAndURL(*mPrintObject->mDocument, mPrintSettings,
+                        DocTitleDefault::eDocURLElseFallback, docTitleStr,
+                        docURLStr);
 
   int32_t startPage = 1;
-  int32_t endPage = printData->mNumPrintablePages;
+  int32_t endPage = mNumPrintablePages;
 
   nsTArray<int32_t> ranges;
-  printData->mPrintSettings->GetPageRanges(ranges);
+  mPrintSettings->GetPageRanges(ranges);
   for (size_t i = 0; i < ranges.Length(); i += 2) {
     startPage = std::max(1, std::min(startPage, ranges[i]));
-    endPage = std::min(printData->mNumPrintablePages,
-                       std::max(endPage, ranges[i + 1]));
+    endPage = std::min(mNumPrintablePages, std::max(endPage, ranges[i + 1]));
   }
 
   nsresult rv = NS_OK;
   // BeginDocument may pass back a FAILURE code
   // i.e. On Windows, if you are printing to a file and hit "Cancel"
   //      to the "File Name" dialog, this comes back as an error
   // Don't start printing when regression test are executed
   if (mIsDoingPrinting) {
     rv = printData->mPrintDC->BeginDocument(docTitleStr, fileNameStr, startPage,
                                             endPage);
   }
 
   if (mIsCreatingPrintPreview) {
     // Copy docTitleStr and docURLStr to the pageSequenceFrame, to be displayed
     // in the header
     nsPageSequenceFrame* seqFrame =
-        printData->mPrintObject->mPresShell->GetPageSequenceFrame();
+        mPrintObject->mPresShell->GetPageSequenceFrame();
     if (seqFrame) {
-      seqFrame->StartPrint(printData->mPrintObject->mPresContext,
-                           printData->mPrintSettings, docTitleStr, docURLStr);
+      seqFrame->StartPrint(mPrintObject->mPresContext, mPrintSettings,
+                           docTitleStr, docURLStr);
     }
   }
 
   PR_PL(("****************** Begin Document ************************\n"));
 
   if (NS_FAILED(rv)) {
     NS_WARNING_ASSERTION(rv == NS_ERROR_ABORT,
                          "Failed to begin document for printing");
@@ -952,17 +940,17 @@ nsresult nsPrintJob::SetupToPrintContent
   }
 
   // This will print the docshell document
   // when it completes asynchronously in the DonePrintingSheets method
   // it will check to see if there are more docshells to be printed and
   // then PrintDocContent will be called again.
 
   if (mIsDoingPrinting) {
-    PrintDocContent(printData->mPrintObject, rv);  // ignore return value
+    PrintDocContent(mPrintObject, rv);  // ignore return value
   }
 
   return rv;
 }
 
 //-------------------------------------------------------
 // Recursively reflow each sub-doc and then calc
 // all the frame locations of the sub-docs
@@ -999,50 +987,49 @@ void nsPrintJob::FirePrintPreviewUpdateE
     nsCOMPtr<nsIContentViewer> cv = do_QueryInterface(mDocViewerPrint);
     (new AsyncEventDispatcher(cv->GetDocument(), u"printPreviewUpdate"_ns,
                               CanBubble::eYes, ChromeOnlyDispatch::eYes))
         ->RunDOMEventWhenSafe();
   }
 }
 
 nsresult nsPrintJob::InitPrintDocConstruction(bool aHandleError) {
-  // Guarantee that mPrt->mPrintObject won't be deleted.  It's owned by mPrt.
-  // So, we should grab it with local variable.
+  // Guarantee that mPrintObject won't be deleted.
   RefPtr<nsPrintData> printData = mPrt;
 
   if (NS_WARN_IF(!printData)) {
     return NS_ERROR_FAILURE;
   }
 
   // Attach progressListener to catch network requests.
   mDidLoadDataForPrinting = false;
 
   {
     AutoRestore<bool> restore{mDoingInitialReflow};
     mDoingInitialReflow = true;
 
     nsCOMPtr<nsIWebProgress> webProgress =
-        do_QueryInterface(printData->mPrintObject->mDocShell);
+        do_QueryInterface(mPrintObject->mDocShell);
     webProgress->AddProgressListener(static_cast<nsIWebProgressListener*>(this),
                                      nsIWebProgress::NOTIFY_STATE_REQUEST);
 
-    MOZ_TRY(ReflowDocList(printData->mPrintObject));
+    MOZ_TRY(ReflowDocList(mPrintObject));
 
     FirePrintPreviewUpdateEvent();
   }
 
   MaybeResumePrintAfterResourcesLoaded(aHandleError);
   return NS_OK;
 }
 
 bool nsPrintJob::ShouldResumePrint() const {
   if (mDoingInitialReflow) {
     return false;
   }
-  Document* doc = mPrt->mPrintObject->mDocument;
+  Document* doc = mPrintObject->mDocument;
   MOZ_ASSERT(doc);
   NS_ENSURE_TRUE(doc, true);
   nsCOMPtr<nsILoadGroup> lg = doc->GetDocumentLoadGroup();
   NS_ENSURE_TRUE(lg, true);
   bool pending = false;
   nsresult rv = lg->IsPending(&pending);
   NS_ENSURE_SUCCESS(rv, true);
   return !pending;
@@ -1051,27 +1038,27 @@ bool nsPrintJob::ShouldResumePrint() con
 nsresult nsPrintJob::MaybeResumePrintAfterResourcesLoaded(
     bool aCleanupOnError) {
   if (!ShouldResumePrint()) {
     mDidLoadDataForPrinting = true;
     return NS_OK;
   }
   // If Destroy() has already been called, mPtr is nullptr.  Then, the instance
   // needs to do nothing anymore in this method.
-  // Note: it shouldn't be possible for mPrt->mPrintObject to be null; we
+  // Note: it shouldn't be possible for mPrintObject to be null; we
   // just check it for good measure, as we check its owner.
-  // Note: it shouldn't be possible for mPrt->mPrintObject->mDocShell to be
+  // Note: it shouldn't be possible for mPrintObject->mDocShell to be
   // null; we just check it for good measure, as we check its owner.
-  if (!mPrt || NS_WARN_IF(!mPrt->mPrintObject) ||
-      NS_WARN_IF(!mPrt->mPrintObject->mDocShell)) {
+  if (!mPrt || NS_WARN_IF(!mPrintObject) ||
+      NS_WARN_IF(!mPrintObject->mDocShell)) {
     return NS_ERROR_FAILURE;
   }
 
   nsCOMPtr<nsIWebProgress> webProgress =
-      do_QueryInterface(mPrt->mPrintObject->mDocShell);
+      do_QueryInterface(mPrintObject->mDocShell);
 
   webProgress->RemoveProgressListener(
       static_cast<nsIWebProgressListener*>(this));
 
   nsresult rv;
   if (mIsDoingPrinting) {
     rv = DocumentReadyForPrinting();
   } else {
@@ -1137,27 +1124,27 @@ nsPrintJob::OnContentBlockingEvent(nsIWe
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 //-------------------------------------------------------
 
 void nsPrintJob::UpdateZoomRatio(nsPrintObject* aPO) {
   if (!aPO->mParent) {
-    if (mPrt->mShrinkToFit) {
-      aPO->mZoomRatio = mPrt->mShrinkRatio;
+    if (mShrinkToFit) {
+      aPO->mZoomRatio = mShrinkToFitFactor;
       // If we're actually going to scale (the factor is less than 1), we
       // reduce the scale factor slightly to avoid the possibility of floating
       // point rounding error causing slight clipping of the longest lines.
       if (aPO->mZoomRatio != 1.0f) {
         aPO->mZoomRatio -= 0.005f;
       }
     } else {
       double scaling;
-      mPrt->mPrintSettings->GetScaling(&scaling);
+      mPrintSettings->GetScaling(&scaling);
       aPO->mZoomRatio = float(scaling);
     }
   }
 }
 
 nsresult nsPrintJob::UpdateSelectionAndShrinkPrintObject(
     nsPrintObject* aPO, bool aDocumentIsTopLevel) {
   PresShell* displayPresShell = aPO->mDocShell->GetPresShell();
@@ -1184,17 +1171,17 @@ nsresult nsPrintJob::UpdateSelectionAndS
     }
   }
 
   // If we are trying to shrink the contents to fit on the page
   // we must first locate the "pageContent" frame
   // Then we walk the frame tree and look for the "xmost" frame
   // this is the frame where the right-hand side of the frame extends
   // the furthest
-  if (mPrt->mShrinkToFit && aDocumentIsTopLevel) {
+  if (mShrinkToFit && aDocumentIsTopLevel) {
     nsPageSequenceFrame* pageSeqFrame = aPO->mPresShell->GetPageSequenceFrame();
     NS_ENSURE_STATE(pageSeqFrame);
     aPO->mShrinkRatio = pageSeqFrame->GetSTFPercent();
     // Limit the shrink-to-fit scaling for some text-ish type of documents.
     nsAutoString contentType;
     aPO->mPresShell->GetDocument()->GetContentType(contentType);
     if (contentType.EqualsLiteral("application/xhtml+xml") ||
         StringBeginsWith(contentType, u"text/"_ns)) {
@@ -1304,34 +1291,34 @@ nsresult nsPrintJob::ReflowPrintObject(c
   nsPresContext::nsPresContextType type =
       mIsCreatingPrintPreview ? nsPresContext::eContext_PrintPreview
                               : nsPresContext::eContext_Print;
   const bool shouldBeRoot =
       (!aPO->mParent || !aPO->mParent->PrintingIsEnabled()) &&
       !GetParentViewForRoot();
   aPO->mPresContext = shouldBeRoot ? new nsRootPresContext(aPO->mDocument, type)
                                    : new nsPresContext(aPO->mDocument, type);
-  aPO->mPresContext->SetPrintSettings(printData->mPrintSettings);
+  aPO->mPresContext->SetPrintSettings(mPrintSettings);
 
   // init it with the DC
   MOZ_TRY(aPO->mPresContext->Init(printData->mPrintDC));
 
   aPO->mViewManager = new nsViewManager();
 
   MOZ_TRY(aPO->mViewManager->Init(printData->mPrintDC));
 
   aPO->mPresShell =
       aPO->mDocument->CreatePresShell(aPO->mPresContext, aPO->mViewManager);
   if (!aPO->mPresShell) {
     return NS_ERROR_FAILURE;
   }
 
   // If we're printing selection then remove the nonselected nodes from our
   // cloned document.
-  if (printData->mPrintSettings->GetPrintSelectionOnly()) {
+  if (mPrintSettings->GetPrintSelectionOnly()) {
     // If we fail to remove the nodes then we should fail to print, because if
     // the user was trying to print a small selection from a large document,
     // sending the whole document to a real printer would be very frustrating.
     MOZ_TRY(DeleteNonSelectedNodes(*aPO->mDocument));
   }
 
   bool doReturn = false;
   bool documentIsTopLevel = false;
@@ -1351,17 +1338,17 @@ nsresult nsPrintJob::ReflowPrintObject(c
 
   // Here, we inform nsPresContext of the page size. Note that 'adjSize' is
   // *usually* the page size, but we need to check. Strictly speaking, adjSize
   // is the *device output size*, which is really the dimensions of a "sheet"
   // rather than a "page" (an important distinction in an N-pages-per-sheet
   // scenario). For some pages-per-sheet values, the pages are orthogonal to
   // the sheet; we adjust for that here by swapping the width with the height.
   nsSize pageSize = adjSize;
-  if (printData->mPrintSettings->HasOrthogonalSheetsAndPages()) {
+  if (mPrintSettings->HasOrthogonalSheetsAndPages()) {
     std::swap(pageSize.width, pageSize.height);
   }
 
   // If the document has a specified CSS page-size, we rotate the page to
   // reflect this. Changing the orientation is reflected by the result of
   // FinishPrintPreview, so that the frontend can reflect this.
   // The new document has not yet been reflowed, so we have to query the
   // original document for any CSS page-size.
@@ -1450,21 +1437,18 @@ nsresult nsPrintJob::ReflowPrintObject(c
 
   return NS_OK;
 }
 
 //-------------------------------------------------------
 // Figure out how many documents and how many total pages we are printing
 void nsPrintJob::CalcNumPrintablePages(int32_t& aNumPages) {
   aNumPages = 0;
-  // Count the number of printable documents
-  // and printable pages
-  for (uint32_t i = 0; i < mPrt->mPrintDocList.Length(); i++) {
-    nsPrintObject* po = mPrt->mPrintDocList.ElementAt(i);
-    NS_ASSERTION(po, "nsPrintObject can't be null!");
+  // Count the number of printable documents and printable pages
+  for (nsPrintObject* po : mPrintDocList) {
     // Note: The po->mPresContext null-check below is necessary, because it's
     // possible po->mPresContext might never have been set.  (e.g., if
     // PrintingIsEnabled() returns false, ReflowPrintObject bails before setting
     // mPresContext)
     if (po->mPresContext && po->mPresContext->IsRootPaginatedDocument()) {
       nsPageSequenceFrame* seqFrame = po->mPresShell->GetPageSequenceFrame();
       if (seqFrame) {
         aNumPages += seqFrame->PrincipalChildList().GetLength();
@@ -1670,48 +1654,48 @@ nsresult nsPrintJob::DoPrint(const Uniqu
   }
 
   {
     // Ask the page sequence frame to print all the pages
     nsPageSequenceFrame* seqFrame = poPresShell->GetPageSequenceFrame();
     MOZ_ASSERT(seqFrame, "no page sequence frame");
 
     // We are done preparing for printing, so we can turn this off
-    printData->mPreparingForPrint = false;
+    mPreparingForPrint = false;
 
 #ifdef EXTENDED_DEBUG_PRINTING
     nsIFrame* rootFrame = poPresShell->GetRootFrame();
     if (aPO->PrintingIsEnabled()) {
       nsAutoCString docStr;
       nsAutoCString urlStr;
       GetDocTitleAndURL(aPO, docStr, urlStr);
       DumpLayoutData(docStr.get(), urlStr.get(), poPresContext,
                      printData->mPrintDC, rootFrame, aPO->mDocShell, nullptr);
     }
 #endif
 
-    if (!printData->mPrintSettings) {
+    if (!mPrintSettings) {
       // not sure what to do here!
       SetIsPrinting(false);
       return NS_ERROR_FAILURE;
     }
 
     nsAutoString docTitleStr;
     nsAutoString docURLStr;
-    GetDisplayTitleAndURL(*aPO->mDocument, mPrt->mPrintSettings,
+    GetDisplayTitleAndURL(*aPO->mDocument, mPrintSettings,
                           DocTitleDefault::eFallback, docTitleStr, docURLStr);
 
     if (!seqFrame) {
       SetIsPrinting(false);
       return NS_ERROR_FAILURE;
     }
 
     // For telemetry, get paper size being used; convert the dimensions to
     // points and ensure they reflect portrait orientation.
-    nsIPrintSettings* settings = printData->mPrintSettings;
+    nsIPrintSettings* settings = mPrintSettings;
     double paperWidth, paperHeight;
     settings->GetPaperWidth(&paperWidth);
     settings->GetPaperHeight(&paperHeight);
     int16_t sizeUnit;
     settings->GetPaperSizeUnit(&sizeUnit);
     switch (sizeUnit) {
       case nsIPrintSettings::kPaperSizeInches:
         paperWidth *= 72.0;
@@ -1868,18 +1852,18 @@ void nsPrintJob::PageDone(nsresult aResu
 
 //-----------------------------------------------------------------
 //-- Section: Misc Support Methods
 //-----------------------------------------------------------------
 
 //---------------------------------------------------------------------
 void nsPrintJob::SetIsPrinting(bool aIsPrinting) {
   mIsDoingPrinting = aIsPrinting;
-  if (mPrt && aIsPrinting) {
-    mPrt->mPreparingForPrint = true;
+  if (aIsPrinting) {
+    mPreparingForPrint = true;
   }
 }
 
 //---------------------------------------------------------------------
 void nsPrintJob::SetIsPrintPreview(bool aIsPrintPreview) {
   mCreatedForPrintPreview = aIsPrintPreview;
 
   if (mDocViewerPrint) {
@@ -1896,24 +1880,24 @@ bool nsPrintJob::DonePrintingSheets(nsPr
   // If there is a pageSeqFrame, make sure there are no more printCanvas active
   // that might call |Notify| on the pagePrintTimer after things are cleaned up
   // and printing was marked as being done.
   if (mPageSeqFrame.IsAlive()) {
     nsPageSequenceFrame* pageSeqFrame = do_QueryFrame(mPageSeqFrame.GetFrame());
     pageSeqFrame->ResetPrintCanvasList();
   }
 
-  // Guarantee that mPrt and mPrt->mPrintObject won't be deleted during a
+  // Guarantee that mPrt and mPrintObject won't be deleted during a
   // call of PrintDocContent() and FirePrintCompletionEvent().
   RefPtr<nsPrintData> printData = mPrt;
 
   if (aPO && !printData->mIsAborted) {
     aPO->mHasBeenPrinted = true;
     nsresult rv;
-    bool didPrint = PrintDocContent(printData->mPrintObject, rv);
+    bool didPrint = PrintDocContent(mPrintObject, rv);
     if (NS_SUCCEEDED(rv) && didPrint) {
       PR_PL(
           ("****** In DV::DonePrintingSheets PO: %p (%s) didPrint:%s (Not Done "
            "Printing)\n",
            aPO, gFrameTypesStr[aPO->mFrameType], PRT_YESNO(didPrint)));
       return false;
     }
   }
@@ -1937,40 +1921,40 @@ bool nsPrintJob::DonePrintingSheets(nsPr
 //-------------------------------------------------------
 nsresult nsPrintJob::EnablePOsForPrinting() {
   // Guarantee that mPrt and the objects it owns won't be deleted.
   RefPtr<nsPrintData> printData = mPrt;
 
   // NOTE: All POs have been "turned off" for printing
   // this is where we decided which POs get printed.
 
-  if (!printData || !printData->mPrintSettings) {
+  if (!printData || !mPrintSettings) {
     return NS_ERROR_FAILURE;
   }
 
   PR_PL(("\n"));
   PR_PL(("********* nsPrintJob::EnablePOsForPrinting *********\n"));
 
-  if (!printData->mPrintSettings->GetPrintSelectionOnly()) {
-    printData->mPrintObject->EnablePrinting(true);
+  if (!mPrintSettings->GetPrintSelectionOnly()) {
+    mPrintObject->EnablePrinting(true);
     return NS_OK;
   }
 
   // This means we are either printing a selected iframe or
   // we are printing the current selection.
-  NS_ENSURE_STATE(!mDisallowSelectionPrint && printData->mSelectionRoot);
+  NS_ENSURE_STATE(!mDisallowSelectionPrint && mSelectionRoot);
 
   // If mSelectionRoot is a selected iframe without a selection, then just
   // enable normally from that point.
-  if (printData->mSelectionRoot->mFrameType == eIFrame &&
-      !printData->mSelectionRoot->HasSelection()) {
-    printData->mSelectionRoot->EnablePrinting(true);
+  if (mSelectionRoot->mFrameType == eIFrame &&
+      !mSelectionRoot->HasSelection()) {
+    mSelectionRoot->EnablePrinting(true);
   } else {
     // Otherwise, only enable nsPrintObjects that have a selection.
-    printData->mSelectionRoot->EnablePrintingSelectionOnly();
+    mSelectionRoot->EnablePrintingSelectionOnly();
   }
   return NS_OK;
 }
 
 //-----------------------------------------------------------------
 //-- Done: Misc Support Methods
 //-----------------------------------------------------------------
 
@@ -2010,29 +1994,27 @@ nsresult nsPrintJob::FinishPrintPreview(
      * what went wrong...
      */
     printData->OnEndPrinting();
 
     return rv;
   }
 
   if (mPrintPreviewCallback) {
-    const bool hasSelection =
-        !mDisallowSelectionPrint && printData->mSelectionRoot;
+    const bool hasSelection = !mDisallowSelectionPrint && mSelectionRoot;
     // Determine if there is a specified page size, and if we should set the
     // paper orientation to match it.
     const Maybe<bool> maybeLandscape =
-        printData->mPrintObject->mPresShell->StyleSet()
-            ->GetDefaultPageOrientation()
-            .map([](StylePageOrientation o) -> bool {
+        mPrintObject->mPresShell->StyleSet()->GetDefaultPageOrientation().map(
+            [](StylePageOrientation o) -> bool {
               return o == StylePageOrientation::Landscape;
             });
     mPrintPreviewCallback(PrintPreviewResultInfo(
         GetPrintPreviewNumSheets(), GetRawNumPages(), GetIsEmpty(),
-        hasSelection, hasSelection && printData->mPrintObject->HasSelection(),
+        hasSelection, hasSelection && mPrintObject->HasSelection(),
         maybeLandscape));
     mPrintPreviewCallback = nullptr;
   }
 
   // At this point we are done preparing everything
   // before it is to be created
 
   printData->OnEndPrinting();
@@ -2046,17 +2028,17 @@ nsresult nsPrintJob::FinishPrintPreview(
 //-- Done: Finishing up or Cleaning up
 //-----------------------------------------------------------------
 
 /*=============== Timer Related Code ======================*/
 nsresult nsPrintJob::StartPagePrintTimer(const UniquePtr<nsPrintObject>& aPO) {
   if (!mPagePrintTimer) {
     // Get the delay time in between the printing of each page
     // this gives the user more time to press cancel
-    int32_t printPageDelay = mPrt->mPrintSettings->GetPrintPageDelay();
+    int32_t printPageDelay = mPrintSettings->GetPrintPageDelay();
 
     nsCOMPtr<nsIContentViewer> cv = do_QueryInterface(mDocViewerPrint);
     NS_ENSURE_TRUE(cv, NS_ERROR_FAILURE);
     nsCOMPtr<Document> doc = cv->GetDocument();
     NS_ENSURE_TRUE(doc, NS_ERROR_FAILURE);
 
     mPagePrintTimer =
         new nsPagePrintTimer(this, mDocViewerPrint, doc, printPageDelay);
--- a/layout/printing/nsPrintJob.h
+++ b/layout/printing/nsPrintJob.h
@@ -10,16 +10,17 @@
 #include "mozilla/layout/RemotePrintJobChild.h"
 #include "mozilla/UniquePtr.h"
 
 #include "nsCOMPtr.h"
 
 #include "nsHashKeys.h"
 #include "nsIFrame.h"  // For WeakFrame
 #include "nsSize.h"
+#include "nsTArray.h"
 #include "nsTHashtable.h"
 #include "nsWeakReference.h"
 
 // Interfaces
 #include "nsIWebProgress.h"
 #include "nsIWebProgressListener.h"
 
 // Classes
@@ -157,16 +158,19 @@ class nsPrintJob final : public nsIWebPr
   nsPrintJob& operator=(const nsPrintJob& aOther) = delete;
 
   ~nsPrintJob();
 
   MOZ_CAN_RUN_SCRIPT nsresult DocumentReadyForPrinting();
   MOZ_CAN_RUN_SCRIPT nsresult SetupToPrintContent();
   nsresult EnablePOsForPrinting();
 
+  void BuildNestedPrintObjects(
+      const mozilla::UniquePtr<nsPrintObject>& aParentPO);
+
   bool PrintDocContent(const mozilla::UniquePtr<nsPrintObject>& aPO,
                        nsresult& aStatus);
   nsresult DoPrint(const mozilla::UniquePtr<nsPrintObject>& aPO);
 
   nsresult ReflowDocList(const mozilla::UniquePtr<nsPrintObject>& aPO);
 
   MOZ_CAN_RUN_SCRIPT_BOUNDARY
   nsresult ReflowPrintObject(const mozilla::UniquePtr<nsPrintObject>& aPO);
@@ -226,16 +230,18 @@ class nsPrintJob final : public nsIWebPr
   MOZ_CAN_RUN_SCRIPT nsresult ReconstructAndReflow();
   MOZ_CAN_RUN_SCRIPT_BOUNDARY nsresult UpdateSelectionAndShrinkPrintObject(
       nsPrintObject* aPO, bool aDocumentIsTopLevel);
   MOZ_CAN_RUN_SCRIPT nsresult InitPrintDocConstruction(bool aHandleError);
   void FirePrintPreviewUpdateEvent();
 
   void PageDone(nsresult aResult);
 
+  nsCOMPtr<nsIPrintSettings> mPrintSettings;
+
   // The docViewer that owns us, and its docShell.
   nsCOMPtr<nsIDocumentViewerPrint> mDocViewerPrint;
   nsWeakPtr mDocShell;
 
   WeakFrame mPageSeqFrame;
 
   // We are the primary owner of our nsPrintData member vars.  These vars
   // are refcounted so that functions (e.g. nsPrintData methods) can create
@@ -244,27 +250,52 @@ class nsPrintJob final : public nsIWebPr
   // member-data.
   RefPtr<nsPrintData> mPrt;
 
   RefPtr<nsPagePrintTimer> mPagePrintTimer;
 
   // Only set if this nsPrintJob was created for a real print.
   RefPtr<RemotePrintJobChild> mRemotePrintJob;
 
+  // The root print object.
+  mozilla::UniquePtr<nsPrintObject> mPrintObject;
+
+  // If there is a focused iframe, mSelectionRoot is set to its nsPrintObject.
+  // Otherwise, if there is a selection, it is set to the root nsPrintObject.
+  // Otherwise, it is unset.
+  nsPrintObject* mSelectionRoot = nullptr;
+
+  // Array of non-owning pointers to all the nsPrintObjects owned by this
+  // nsPrintJob. This includes mPrintObject, as well as all of its mKids (and
+  // their mKids, etc.)
+  nsTArray<nsPrintObject*> mPrintDocList;
+
   // If the code that initiates a print preview passes a PrintPreviewResolver
   // (a std::function) to be notified of the final sheet/page counts (once
   // we've sufficiently laid out the document to know what those are), that
   // callback is stored here.
   PrintPreviewResolver mPrintPreviewCallback;
 
+  // The scale factor that would need to be applied to all pages to make the
+  // widest page fit without overflowing/clipping.
+  float mShrinkToFitFactor = 1.0f;
+
   float mScreenDPI = 115.0f;
 
+  int32_t mNumPrintablePages = 0;
+
+  // If true, indicates that we have started Printing but have not gone to the
+  // timer to start printing the pages. It gets turned off right before we go
+  // to the timer.
+  bool mPreparingForPrint = false;
+
   bool mCreatedForPrintPreview = false;
   bool mIsCreatingPrintPreview = false;
   bool mIsDoingPrinting = false;
   bool mDidLoadDataForPrinting = false;
+  bool mShrinkToFit = false;
   bool mDoingInitialReflow = false;
   bool mIsDestroying = false;
   bool mDisallowSelectionPrint = false;
   bool mIsForModalWindow = false;
 };
 
 #endif  // nsPrintJob_h
--- a/testing/web-platform/meta/IndexedDB/structured-clone.any.js.ini
+++ b/testing/web-platform/meta/IndexedDB/structured-clone.any.js.ini
@@ -65,75 +65,80 @@
     expected: FAIL
 
   [ReferenceError: ReferenceError: ghi]
     expected: FAIL
 
 
 [structured-clone.any.html?101-last]
   expected:
+    if (os == "linux") and swgl and not fission: [TIMEOUT, OK]
     if (os == "android") and debug and not swgl: [TIMEOUT, OK]
-    if (os == "linux") and swgl and not fission: [TIMEOUT, OK]
     if (os == "win") and not debug: [TIMEOUT, OK]
     TIMEOUT
   [Not serializable: Window: [object Window\]]
     expected:
       if (os == "linux") and swgl and not fission: [NOTRUN, PASS]
       if (os == "android") and debug and not swgl: [NOTRUN, PASS]
       if (os == "win") and not debug: [NOTRUN, PASS]
       NOTRUN
 
   [Not serializable: symbol: Symbol(desc)]
     expected:
+      if (os == "linux") and swgl and not fission: [NOTRUN, FAIL]
       if (os == "android") and debug and not swgl: [NOTRUN, FAIL]
-      if (os == "linux") and swgl and not fission: [NOTRUN, FAIL]
       if (os == "win") and not debug: [NOTRUN, FAIL]
       NOTRUN
 
   [FileList: [object FileList\]]
     expected:
       if win10_2004 and ccov: [TIMEOUT, NOTRUN, FAIL]
+      if (os == "linux") and swgl and not fission: [NOTRUN, FAIL]
       if (os == "android") and debug and not swgl: [NOTRUN, FAIL]
-      if (os == "linux") and swgl and not fission: [NOTRUN, FAIL]
       if (os == "win") and not debug: [NOTRUN, FAIL]
       NOTRUN
 
   [Not serializable: function: function() {}]
     expected:
+      if (os == "linux") and swgl and not fission: [NOTRUN, PASS]
       if (os == "android") and debug and not swgl: [NOTRUN, PASS]
-      if (os == "linux") and swgl and not fission: [NOTRUN, PASS]
       if (os == "win") and not debug: [NOTRUN, PASS]
       NOTRUN
 
   [File: [object File\]]
     expected:
       if (os == "win") and ccov: [NOTRUN, PASS, TIMEOUT]
+      if (os == "linux") and debug and not fission and not swgl: [TIMEOUT, NOTRUN]
       if (os == "linux") and debug and not fission and swgl: [NOTRUN, PASS, TIMEOUT]
+      if (os == "win") and not debug and (processor == "x86_64"): [TIMEOUT, PASS, NOTRUN]
+      if (os == "win") and not debug and (processor == "x86"): [NOTRUN, PASS, TIMEOUT]
       if (os == "android") and debug and not swgl: [NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and not debug and fission: NOTRUN
       if (os == "mac") and debug: NOTRUN
-      if os == "win": [NOTRUN, PASS, TIMEOUT]
+      if (os == "win") and debug: [NOTRUN, PASS, TIMEOUT]
       [NOTRUN, TIMEOUT]
 
   [Not serializable: Event: [object Event\]]
     expected:
       if (os == "linux") and swgl and not fission: [NOTRUN, PASS]
       if (os == "android") and debug and not swgl: [NOTRUN, PASS]
       if (os == "win") and not debug: [NOTRUN, PASS]
       NOTRUN
 
   [Not serializable: MessageChannel: [object MessageChannel\]]
     expected:
+      if (os == "linux") and swgl and not fission: [NOTRUN, PASS]
       if (os == "android") and debug and not swgl: [NOTRUN, PASS]
-      if (os == "linux") and swgl and not fission: [NOTRUN, PASS]
       if (os == "win") and not debug: [NOTRUN, PASS]
       NOTRUN
 
   [Blob: [object Blob\]]
     expected:
+      if (os == "linux") and debug and not fission and not swgl: [PASS, TIMEOUT]
+      if (os == "win") and not debug and (processor == "x86_64"): [PASS, TIMEOUT]
       if (os == "linux") and not debug and fission: TIMEOUT
       if (os == "mac") and debug: TIMEOUT
       [TIMEOUT, PASS]
 
   [TypeError: TypeError]
     expected: FAIL
 
   [TypeError: TypeError: ghi]
@@ -144,57 +149,57 @@
 
   [URIError: URIError: ghi]
     expected: FAIL
 
 
 [structured-clone.any.worker.html?101-last]
   expected:
     if debug and (os == "linux") and not fission and not swgl: [TIMEOUT, OK]
+    if not debug and (os == "win") and (processor == "x86_64"): [TIMEOUT, OK]
+    if not debug and (os == "linux") and not fission: [TIMEOUT, OK]
     if debug and (os == "android") and not swgl: [TIMEOUT, OK]
     if debug and (os == "win") and (processor == "x86_64"): [TIMEOUT, OK]
-    if not debug and (os == "linux") and not fission: [TIMEOUT, OK]
-    if not debug and (os == "win") and (processor == "x86_64"): [TIMEOUT, OK]
     if debug and (os == "mac"): [TIMEOUT, OK]
     TIMEOUT
   [Not serializable: function: function() {}]
     expected:
       if debug and (os == "linux") and not fission and not swgl: [NOTRUN, PASS]
       if debug and (os == "android") and not swgl: [NOTRUN, PASS]
       if debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
       if not debug and (os == "linux") and not fission: [NOTRUN, PASS]
       if not debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
       if debug and (os == "mac"): [NOTRUN, PASS]
       NOTRUN
 
   [Not serializable: MessageChannel: [object MessageChannel\]]
     expected:
       if debug and (os == "linux") and not fission and not swgl: [NOTRUN, PASS]
-      if not debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
-      if not debug and (os == "linux") and not fission: [NOTRUN, PASS]
       if debug and (os == "android") and not swgl: [NOTRUN, PASS]
       if debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
+      if not debug and (os == "linux") and not fission: [NOTRUN, PASS]
+      if not debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
       if debug and (os == "mac"): [NOTRUN, PASS]
       NOTRUN
 
   [Not serializable: symbol: Symbol(desc)]
     expected:
       if debug and (os == "linux") and not fission and not swgl: [NOTRUN, FAIL]
+      if not debug and (os == "win") and (processor == "x86_64"): [NOTRUN, FAIL]
+      if not debug and (os == "linux") and not fission: [NOTRUN, FAIL]
       if debug and (os == "win") and (processor == "x86_64"): [NOTRUN, FAIL]
       if debug and (os == "android") and not swgl: [NOTRUN, FAIL]
-      if not debug and (os == "linux") and not fission: [NOTRUN, FAIL]
-      if not debug and (os == "win") and (processor == "x86_64"): [NOTRUN, FAIL]
       if debug and (os == "mac"): [NOTRUN, FAIL]
       NOTRUN
 
   [File: [object File\]]
     expected:
-      if (os == "linux") and debug and not fission and not swgl: [TIMEOUT, PASS, NOTRUN]
+      if (os == "linux") and debug and not fission and not swgl: [NOTRUN, PASS, TIMEOUT]
+      if (os == "linux") and not debug and not fission: [NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and not debug and fission: NOTRUN
-      if (os == "linux") and not debug and not fission: [NOTRUN, PASS, TIMEOUT]
       if (os == "android") and debug and not swgl: [NOTRUN, PASS, TIMEOUT]
       if (os == "win") and (processor == "x86") and not debug: NOTRUN
       if (os == "mac") and debug: [NOTRUN, PASS, TIMEOUT]
       if (os == "win") and (processor == "x86_64"): [NOTRUN, PASS, TIMEOUT]
       [NOTRUN, TIMEOUT]
 
   [Not serializable: Event: [object Event\]]
     expected:
@@ -204,28 +209,27 @@
       if not debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
       if not debug and (os == "linux") and not fission: [NOTRUN, PASS]
       if debug and (os == "mac"): [NOTRUN, PASS]
       NOTRUN
 
   [Not serializable: DedicatedWorkerGlobalScope: [object DedicatedWorkerGlobalScope\]]
     expected:
       if debug and (os == "linux") and not fission and not swgl: [NOTRUN, PASS]
+      if debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
+      if debug and (os == "android") and not swgl: [NOTRUN, PASS]
       if not debug and (os == "linux") and not fission: [NOTRUN, PASS]
       if not debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
-      if debug and (os == "android") and not swgl: [NOTRUN, PASS]
-      if debug and (os == "win") and (processor == "x86_64"): [NOTRUN, PASS]
       if debug and (os == "mac"): [NOTRUN, PASS]
       NOTRUN
 
   [Blob: [object Blob\]]
     expected:
-      if (os == "linux") and debug and not fission and not swgl: [PASS, TIMEOUT]
+      if (os == "win") and not debug and (processor == "x86"): TIMEOUT
       if (os == "linux") and not debug and fission: TIMEOUT
-      if (os == "win") and not debug and (processor == "x86"): TIMEOUT
       [TIMEOUT, PASS]
 
   [TypeError: TypeError]
     expected: FAIL
 
   [TypeError: TypeError: ghi]
     expected: FAIL
 
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/clipboard-apis/async-navigator-clipboard-read-resource-load.https.html.ini
@@ -0,0 +1,4 @@
+[async-navigator-clipboard-read-resource-load.https.html]
+  [Async Clipboard.read() should not trigger resource loading]
+    expected:
+      if os == "win": FAIL
--- a/testing/web-platform/meta/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-audio-import-data.https.html.ini
+++ b/testing/web-platform/meta/content-security-policy/gen/top.http-rp/script-src-wildcard/worklet-audio-import-data.https.html.ini
@@ -1,6 +1,5 @@
 [worklet-audio-import-data.https.html]
   [Content Security Policy: Expects blocked for worklet-audio-import-data to cross-https origin and keep-origin redirection from https context.: securitypolicyviolation]
     expected:
-      if (os == "android") and not swgl and not debug: [PASS, FAIL]
-      if (os == "android") and not swgl and debug: [PASS, FAIL]
-      if (os == "android") and swgl: [FAIL, PASS]
+      if (os == "android") and not debug: [PASS, FAIL]
+      if (os == "android") and debug: [PASS, FAIL]
--- a/testing/web-platform/meta/content-security-policy/gen/top.meta/script-src-self/worklet-audio-import-data.https.html.ini
+++ b/testing/web-platform/meta/content-security-policy/gen/top.meta/script-src-self/worklet-audio-import-data.https.html.ini
@@ -1,10 +1,10 @@
 [worklet-audio-import-data.https.html]
   [Content Security Policy: Expects blocked for worklet-audio-import-data to cross-https origin and keep-origin redirection from https context.: securitypolicyviolation]
     expected:
-      if (os == "android") and debug and not swgl: [PASS, FAIL]
-      if (os == "android") and debug and swgl: [PASS, FAIL]
-      if (os == "android") and not debug: [PASS, FAIL]
+      if (os == "android") and not swgl and debug: [PASS, FAIL]
+      if (os == "android") and not swgl and not debug: [PASS, FAIL]
+      if (os == "android") and swgl: [FAIL, PASS]
 
   [Content Security Policy: Expects blocked for worklet-audio-import-data to cross-https origin and no-redirect redirection from https context.: securitypolicyviolation]
     expected:
       if swgl and (os == "android"): [PASS, FAIL]
--- a/testing/web-platform/meta/content-security-policy/gen/top.meta/script-src-wildcard/worklet-audio-import-data.https.html.ini
+++ b/testing/web-platform/meta/content-security-policy/gen/top.meta/script-src-wildcard/worklet-audio-import-data.https.html.ini
@@ -1,6 +1,5 @@
 [worklet-audio-import-data.https.html]
   [Content Security Policy: Expects blocked for worklet-audio-import-data to cross-https origin and keep-origin redirection from https context.: securitypolicyviolation]
     expected:
-      if (os == "android") and not swgl and not debug: [PASS, FAIL]
-      if (os == "android") and not swgl and debug: [PASS, FAIL]
-      if (os == "android") and swgl: [FAIL, PASS]
+      if (os == "android") and debug: [PASS, FAIL]
+      if (os == "android") and not debug: [PASS, FAIL]
--- a/testing/web-platform/meta/content-security-policy/inheritance/history-iframe.sub.html.ini
+++ b/testing/web-platform/meta/content-security-policy/inheritance/history-iframe.sub.html.ini
@@ -1,41 +1,37 @@
 [history-iframe.sub.html]
   expected:
+    if os == "win": OK
     if os == "android": OK
-    if os == "win": OK
     [OK, TIMEOUT]
   [History navigation in iframe: "about:blank" document is navigated back from history same-origin.]
     expected:
-      if (os == "linux") and not fission and not swgl and not debug: [PASS, FAIL, TIMEOUT]
-      if (os == "linux") and not fission and not swgl and debug: [FAIL, PASS, TIMEOUT]
-      if (os == "linux") and not fission and swgl: [PASS, FAIL, TIMEOUT]
       if (os == "win") and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and fission: [PASS, FAIL, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
+      if os == "linux": [PASS, FAIL, TIMEOUT]
 
   [History navigation in iframe: "about:blank" document is navigated back from history cross-origin.]
     expected:
-      if (os == "linux") and fission and not swgl and not debug and (processor == "x86_64"): [PASS, FAIL, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and not swgl and not debug and (processor == "x86"): [PASS, FAIL, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and not swgl and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and swgl: [PASS, FAIL, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, FAIL, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, FAIL, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
       if (os == "linux") and not fission: [PASS, TIMEOUT, NOTRUN]
       if os == "mac": [PASS, TIMEOUT, NOTRUN]
 
   [History navigation in iframe: blob URL document is navigated back from history same-origin.]
     expected:
       if os == "win": PASS
       if os == "android": PASS
       [PASS, NOTRUN]
 
   [History navigation in iframe: blob URL document is navigated back from history cross-origin.]
     expected:
+      if os == "android": PASS
       if os == "win": PASS
-      if os == "android": PASS
       [PASS, NOTRUN]
 
   [History navigation in iframe: data URL document is navigated back from history same-origin.]
     expected:
       if os == "android": PASS
       if os == "win": PASS
       [PASS, NOTRUN]
 
@@ -48,11 +44,11 @@
   [History navigation in iframe: srcdoc iframe is navigated back from history same-origin.]
     expected:
       if os == "win": PASS
       if os == "android": PASS
       [PASS, NOTRUN]
 
   [History navigation in iframe: srcdoc iframe is navigated back from history cross-origin.]
     expected:
+      if os == "android": PASS
       if os == "win": PASS
-      if os == "android": PASS
       [PASS, NOTRUN]
--- a/testing/web-platform/meta/content-security-policy/inheritance/history.sub.html.ini
+++ b/testing/web-platform/meta/content-security-policy/inheritance/history.sub.html.ini
@@ -1,16 +1,16 @@
 [history.sub.html]
   expected:
     if (os == "mac") and not debug: [OK, TIMEOUT]
-    if (os == "mac") and debug: [OK, TIMEOUT]
+    if (os == "mac") and debug: [TIMEOUT, OK]
   [History navigation: "about:blank" document is navigated back from history same-origin.]
     expected:
-      if (os == "mac") and debug: [FAIL, TIMEOUT]
       if (os == "mac") and not debug: [FAIL, TIMEOUT]
+      if (os == "mac") and debug: [TIMEOUT, FAIL]
       if (os == "android") and not debug: [FAIL, TIMEOUT]
       FAIL
 
   [History navigation: "about:blank" document is navigated back from history cross-origin.]
     expected:
+      if (os == "mac") and debug: [TIMEOUT, FAIL]
       if (os == "mac") and not debug: [FAIL, TIMEOUT]
-      if (os == "mac") and debug: [FAIL, TIMEOUT]
       FAIL
--- a/testing/web-platform/meta/content-security-policy/inheritance/iframe-all-local-schemes-inherit-self.sub.html.ini
+++ b/testing/web-platform/meta/content-security-policy/inheritance/iframe-all-local-schemes-inherit-self.sub.html.ini
@@ -1,16 +1,12 @@
 [iframe-all-local-schemes-inherit-self.sub.html]
   expected:
-    if (os == "linux") and debug and not fission and not swgl: [TIMEOUT, OK]
-    if (os == "linux") and not debug and (processor == "x86_64") and not fission: [TIMEOUT, OK]
-    if (os == "linux") and not debug and (processor == "x86_64") and fission: [TIMEOUT, OK]
-    if (os == "win") and not debug and (processor == "x86"): [TIMEOUT, OK]
-    if (os == "win") and not debug and (processor == "x86_64"): [TIMEOUT, OK]
+    if (os == "linux") and not fission and debug: [TIMEOUT, OK]
+    if (os == "win") and (processor == "x86_64") and not debug: [TIMEOUT, OK]
+    if (os == "win") and (processor == "x86"): [TIMEOUT, OK]
     [OK, TIMEOUT]
   [<iframe>'s about:blank inherits policy.]
     expected:
-      if (os == "linux") and debug and not fission and not swgl: [TIMEOUT, PASS]
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [TIMEOUT, PASS]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [TIMEOUT, PASS]
-      if (os == "win") and not debug and (processor == "x86"): [TIMEOUT, PASS]
-      if (os == "win") and not debug and (processor == "x86_64"): [TIMEOUT, PASS]
+      if (os == "win") and (processor == "x86_64") and not debug: [TIMEOUT, PASS]
+      if (os == "linux") and not fission and debug: [TIMEOUT, PASS]
+      if (os == "win") and (processor == "x86"): [TIMEOUT, PASS]
       [PASS, TIMEOUT]
--- a/testing/web-platform/meta/content-security-policy/navigate-to/href-location-blocked.sub.html.ini
+++ b/testing/web-platform/meta/content-security-policy/navigate-to/href-location-blocked.sub.html.ini
@@ -1,6 +1,5 @@
 [href-location-blocked.sub.html]
   [Violation report status OK.]
     expected:
-      if (os == "android") and debug and swgl: [PASS, FAIL]
-      if (os == "android") and debug and not swgl: [PASS, FAIL]
+      if (os == "android") and debug: [PASS, FAIL]
       if (os == "android") and not debug: [PASS, FAIL]
--- a/testing/web-platform/meta/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html.ini
+++ b/testing/web-platform/meta/css/CSS2/positioning/relpos-percentage-top-in-scrollable.html.ini
@@ -1,5 +1,5 @@
 [relpos-percentage-top-in-scrollable.html]
   [Top percentage resolved correctly for overflow contribution]
     expected:
-      if (os == "android") and not debug: [PASS, FAIL]
+      if (os == "android") and not debug: [FAIL, PASS]
       if (os == "android") and debug: [FAIL, PASS]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-contain/container-queries/container-units-gradient-invalidation.html.ini
@@ -0,0 +1,2 @@
+[container-units-gradient-invalidation.html]
+  expected: FAIL
--- a/testing/web-platform/meta/css/css-fonts/downloadable-font-in-iframe-print.html.ini
+++ b/testing/web-platform/meta/css/css-fonts/downloadable-font-in-iframe-print.html.ini
@@ -1,3 +1,3 @@
 [downloadable-font-in-iframe-print.html]
   expected:
-    if (os == "mac") and not debug: [FAIL, PASS]
+    if (os == "mac") and not debug: [PASS, FAIL]
--- a/testing/web-platform/meta/css/css-overflow/webkit-line-clamp-008.html.ini
+++ b/testing/web-platform/meta/css/css-overflow/webkit-line-clamp-008.html.ini
@@ -1,4 +1,4 @@
 [webkit-line-clamp-008.html]
   expected:
-    if (os == "android") and debug: [PASS, FAIL]
-    if (os == "android") and not debug: [PASS, FAIL]
+    if (os == "android") and not swgl: [PASS, FAIL]
+    if (os == "android") and swgl: [PASS, FAIL]
--- a/testing/web-platform/meta/css/css-scroll-anchoring/fragment-scrolling-anchors.html.ini
+++ b/testing/web-platform/meta/css/css-scroll-anchoring/fragment-scrolling-anchors.html.ini
@@ -1,6 +1,6 @@
 [fragment-scrolling-anchors.html]
   [Verify scroll anchoring interaction with fragment scrolls]
     expected:
-      if (os == "mac") and debug: [FAIL, PASS]
       if (os == "mac") and not debug: [PASS, FAIL]
+      if (os == "mac") and debug: [PASS, FAIL]
       FAIL
--- a/testing/web-platform/meta/css/css-scroll-snap/input/keyboard.html.ini
+++ b/testing/web-platform/meta/css/css-scroll-snap/input/keyboard.html.ini
@@ -1,38 +1,44 @@
 [keyboard.html]
   expected:
-    if (os == "win") and debug and (processor == "x86_64") and not swgl: [TIMEOUT, OK, PASS]
     if (os == "linux") and not fission and not debug: [TIMEOUT, OK, PASS]
+    if (os == "win") and debug and not swgl: [TIMEOUT, OK, PASS]
     [TIMEOUT, PASS]
   [If there is no valid snap offset on the arrow key's direction other than the current offset, and the scroll-snap-type is proximity, go to the original intended offset]
     expected:
-      if not swgl and (os == "win") and debug and (processor == "x86_64"): [TIMEOUT, FAIL, NOTRUN]
-      if swgl and (os == "linux") and not fission: [TIMEOUT, FAIL, NOTRUN]
-      if swgl and (os == "android"): [NOTRUN, TIMEOUT, FAIL]
+      if (os == "linux") and (processor == "x86_64") and not fission and not debug: [NOTRUN, TIMEOUT, FAIL]
+      if (os == "android") and debug and not swgl: [TIMEOUT, NOTRUN, FAIL]
+      if (os == "linux") and (processor == "x86"): [TIMEOUT, FAIL, NOTRUN]
+      if (os == "mac") and not debug: [TIMEOUT, NOTRUN, FAIL]
       [NOTRUN, FAIL, TIMEOUT]
 
   [Snaps to top-right after pressing ArrowRight]
     expected:
       if os == "mac": [PASS, FAIL, NOTRUN]
 
   [Snaps to bottom-left after pressing ArrowDown]
     expected:
-      if (os == "linux") and not swgl and (processor == "x86_64") and not debug and not fission: [PASS, FAIL]
-      if (os == "linux") and not swgl and (processor == "x86_64") and not debug and fission: [PASS, FAIL]
-      if (os == "linux") and not swgl and (processor == "x86_64") and debug: [PASS, FAIL]
+      if (os == "linux") and not swgl and fission and (processor == "x86_64") and not debug: [PASS, FAIL]
+      if (os == "linux") and not swgl and fission and (processor == "x86_64") and debug: [PASS, FAIL]
+      if (os == "linux") and not swgl and not fission and debug: [PASS, FAIL]
+      if (os == "linux") and not swgl and not fission and not debug: [PASS, FAIL]
+      if (os == "linux") and not swgl and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "android") and not swgl: FAIL
 
   [If the original intended offset is valid as making a snap area cover the snapport, but there's a defined snap offset in between, use the defined snap offset.]
     expected:
-      if not swgl and (os == "win") and debug and (processor == "x86_64"): [PASS, TIMEOUT]
-      if swgl and (os == "linux") and not fission: [PASS, TIMEOUT]
+      if (os == "android") and debug and not swgl: [PASS, TIMEOUT]
+      if (os == "mac") and not debug: [PASS, TIMEOUT]
+      if (os == "linux") and (processor == "x86"): [PASS, TIMEOUT]
       [TIMEOUT, PASS]
 
   [If there is no valid snap offset on the arrow key's direction other than the current offset, and the scroll-snap-type is mandatory, stay at the current offset.]
     expected:
-      if not swgl and (os == "win") and debug and (processor == "x86_64"): [PASS, NOTRUN]
-      if swgl and (os == "linux") and not fission: [PASS, NOTRUN]
+      if (os == "android") and debug and not swgl: [PASS, NOTRUN]
+      if (os == "mac") and not debug: [PASS, NOTRUN]
+      if (os == "linux") and (processor == "x86"): [PASS, NOTRUN]
       [NOTRUN, PASS]
 
   [Snaps to top-left after pressing ArrowUp]
     expected:
-      if (os == "linux") and not debug and (processor == "x86_64"): [PASS, FAIL]
+      if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "linux") and not debug and fission: [PASS, FAIL]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-text-decor/text-decoration-thickness-length-rounding-down.tentative.html.ini
@@ -0,0 +1,3 @@
+[text-decoration-thickness-length-rounding-down.tentative.html]
+  expected:
+    if os == "mac": FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-text-decor/text-decoration-thickness-length-rounding-up.tentative.html.ini
@@ -0,0 +1,3 @@
+[text-decoration-thickness-length-rounding-up.tentative.html]
+  expected:
+    if os == "mac": FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/css-transforms/crashtests/preserve3d-svg-foreign-object-hit-test.svg.ini
@@ -0,0 +1,3 @@
+[preserve3d-svg-foreign-object-hit-test.svg]
+  expected:
+    if (os == "linux") and debug and not fission and not swgl: [PASS, TIMEOUT]
--- a/testing/web-platform/meta/css/cssom-view/CaretPosition-001.html.ini
+++ b/testing/web-platform/meta/css/cssom-view/CaretPosition-001.html.ini
@@ -1,6 +1,6 @@
 [CaretPosition-001.html]
   [Element at (400, 900)]
     expected:
       if (os == "mac") and not debug: [PASS, FAIL]
-      if (os == "mac") and debug: [FAIL, PASS]
+      if (os == "mac") and debug: [PASS, FAIL]
       FAIL
--- a/testing/web-platform/meta/css/cssom-view/background-change-during-smooth-scroll.html.ini
+++ b/testing/web-platform/meta/css/cssom-view/background-change-during-smooth-scroll.html.ini
@@ -1,12 +1,10 @@
 [background-change-during-smooth-scroll.html]
   expected:
-    if (os == "linux") and debug and fission and swgl: [OK, TIMEOUT]
-    if (os == "linux") and debug and fission and not swgl: [OK, TIMEOUT]
+    if (os == "linux") and debug and fission: [OK, TIMEOUT]
+    if (os == "linux") and not debug: [OK, TIMEOUT]
     if (os == "mac") and not debug: [OK, TIMEOUT]
-    if (os == "linux") and not debug: [OK, TIMEOUT]
   [background change during smooth scroll]
     expected:
-      if (os == "linux") and debug and fission and not swgl: [PASS, NOTRUN]
-      if (os == "linux") and debug and fission and swgl: [PASS, NOTRUN]
+      if (os == "linux") and debug and fission: [PASS, NOTRUN]
+      if (os == "linux") and not debug: [PASS, NOTRUN]
       if (os == "mac") and not debug: [PASS, NOTRUN]
-      if (os == "linux") and not debug: [PASS, NOTRUN]
--- a/testing/web-platform/meta/css/cssom-view/scroll-behavior-main-frame-root.html.ini
+++ b/testing/web-platform/meta/css/cssom-view/scroll-behavior-main-frame-root.html.ini
@@ -1,12 +1,12 @@
 [scroll-behavior-main-frame-root.html]
   [Main frame with auto scroll-behavior ; scroll() with smooth behavior]
     expected:
-      if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
+      if (os == "win") and swgl: [FAIL, PASS]
       if (os == "mac") and debug: [FAIL, PASS]
       [PASS, FAIL]
 
   [Main frame with auto scroll-behavior ; scrollBy() with smooth behavior]
     expected:
       if swgl and not fission: [PASS, FAIL]
 
   [Main frame with auto scroll-behavior ; scrollTo() with smooth behavior]
--- a/testing/web-platform/meta/css/cssom-view/scroll-behavior-main-frame-window.html.ini
+++ b/testing/web-platform/meta/css/cssom-view/scroll-behavior-main-frame-window.html.ini
@@ -4,33 +4,31 @@
       if fission: https://bugzilla.mozilla.org/show_bug.cgi?id=1712639
     expected:
       if not fission and swgl and (os == "android"): PASS
       if not fission and not swgl: PASS
       [PASS, FAIL]
 
   [Main frame with auto scroll-behavior ; scroll() with smooth behavior]
     expected:
-      if fission and (os == "win") and debug and (processor == "x86"): [FAIL, PASS]
-      if fission and (os == "mac") and debug: [FAIL, PASS]
       if not fission: PASS
       [PASS, FAIL]
 
   [Main frame with smooth scroll-behavior ; scrollBy() with default behavior]
     expected:
       if (os == "win") and debug and not swgl: [PASS, FAIL]
 
   [Main frame with auto scroll-behavior ; scrollBy() with smooth behavior]
     expected:
       if (os == "win") and debug and not swgl: [PASS, FAIL]
 
   [Aborting an ongoing smooth scrolling on the main frame with another smooth scrolling]
     expected:
-      if (processor == "x86_64") and (os == "win") and not debug: [PASS, FAIL]
-      if processor == "x86": [PASS, FAIL]
+      if (os == "win") and debug and (processor == "x86"): [PASS, FAIL]
+      if (os == "win") and not debug: [PASS, FAIL]
 
   [Main frame with smooth scroll-behavior ; scrollTo() with default behavior]
     bug:
       if fission and (os == "win") and debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1712639
     expected:
       if debug and fission: [PASS, FAIL]
 
   [Main frame with auto scroll-behavior ; scrollTo() with smooth behavior]
--- a/testing/web-platform/meta/css/mediaqueries/dynamic-range.html.ini
+++ b/testing/web-platform/meta/css/mediaqueries/dynamic-range.html.ini
@@ -1,12 +1,24 @@
 [dynamic-range.html]
-  [Should not be parseable in a CSS stylesheet: '(dynamic-range)']
+  [Should be unknown: '(dynamic-range)']
+    expected: FAIL
+
+  [Should be unknown: '(dynamic-range: 0)']
+    expected: FAIL
+
+  [Should be unknown: '(dynamic-range: 10px)']
     expected: FAIL
 
-  [Should not be parseable in a CSS stylesheet: '(video-dynamic-range)']
+  [Should be unknown: '(dynamic-range: invalid)']
+    expected: FAIL
+
+  [Should be unknown: '(video-dynamic-range)']
     expected: FAIL
 
-  [Should not be parseable in JS: '(dynamic-range)']
+  [Should be unknown: '(video-dynamic-range: 0)']
     expected: FAIL
 
-  [Should not be parseable in JS: '(video-dynamic-range)']
+  [Should be unknown: '(video-dynamic-range: 10px)']
     expected: FAIL
+
+  [Should be unknown: '(video-dynamic-range: invalid)']
+    expected: FAIL
--- a/testing/web-platform/meta/css/mediaqueries/forced-colors.html.ini
+++ b/testing/web-platform/meta/css/mediaqueries/forced-colors.html.ini
@@ -1,2 +1,19 @@
 [forced-colors.html]
   prefs: [layout.css.forced-colors.enabled:true]
+  [Should be unknown: '(forced-colors: 0)']
+    expected: FAIL
+
+  [Should be unknown: '(forced-colors: no-preference)']
+    expected: FAIL
+
+  [Should be unknown: '(forced-colors: 10px)']
+    expected: FAIL
+
+  [Should be unknown: '(forced-colors: active 0)']
+    expected: FAIL
+
+  [Should be unknown: '(forced-colors: none active)']
+    expected: FAIL
+
+  [Should be unknown: '(forced-colors: active/none)']
+    expected: FAIL
--- a/testing/web-platform/meta/css/mediaqueries/navigation-controls.tentative.html.ini
+++ b/testing/web-platform/meta/css/mediaqueries/navigation-controls.tentative.html.ini
@@ -1,22 +1,18 @@
 [navigation-controls.tentative.html]
-  [Should be parseable in JS: '(navigation-controls)']
-    expected: FAIL
-
-  [Should be parseable in a CSS stylesheet: '(navigation-controls: back-button)']
-    expected: FAIL
-
   [Check that none evaluates to false in the boolean context]
     expected: FAIL
 
-  [Should be parseable in a CSS stylesheet: '(navigation-controls: none)']
+  [Should be known: '(navigation-controls)']
     expected: FAIL
 
-  [Should be parseable in JS: '(navigation-controls: none)']
+  [Should be known: '(navigation-controls: none)']
     expected: FAIL
 
-  [Should be parseable in a CSS stylesheet: '(navigation-controls)']
+  [Should be known: '(navigation-controls: back-button)']
     expected: FAIL
 
-  [Should be parseable in JS: '(navigation-controls: back-button)']
+  [Should be unknown: '(navigation-controls: none back-button)']
     expected: FAIL
 
+  [Should be unknown: '(navigation-controls: back-button/none)']
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/mediaqueries/prefers-color-scheme.html.ini
@@ -0,0 +1,21 @@
+[prefers-color-scheme.html]
+  [Should be unknown: '(prefers-color-scheme: 0)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-color-scheme: none)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-color-scheme: 10px)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-color-scheme: dark 0)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-color-scheme: dark light)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-color-scheme: light/dark)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-color-scheme: no-preference)']
+    expected: FAIL
--- a/testing/web-platform/meta/css/mediaqueries/prefers-contrast.html.ini
+++ b/testing/web-platform/meta/css/mediaqueries/prefers-contrast.html.ini
@@ -1,2 +1,31 @@
 [prefers-contrast.html]
   prefs: [layout.css.prefers-contrast.enabled:true]
+  [Should be unknown: '(prefers-contrast: increase)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-contrast: none)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-contrast: forced high)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-contrast: forced low)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-contrast > increase)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-increased-contrast)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-decreased-contrast)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-contrast: high)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-contrast: low)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-contrast: forced)']
+    expected: FAIL
--- a/testing/web-platform/meta/css/mediaqueries/prefers-reduced-data.html.ini
+++ b/testing/web-platform/meta/css/mediaqueries/prefers-reduced-data.html.ini
@@ -1,22 +1,30 @@
 [prefers-reduced-data.html]
   [Check that no-preference evaluates to false in the boolean context]
     expected: FAIL
 
-  [Should be parseable in JS: '(prefers-reduced-data: no-preference)']
+  [Should be known: '(prefers-reduced-data)']
     expected: FAIL
 
-  [Should be parseable in a CSS stylesheet: '(prefers-reduced-data: reduce)']
+  [Should be known: '(prefers-reduced-data: no-preference)']
     expected: FAIL
 
-  [Should be parseable in a CSS stylesheet: '(prefers-reduced-data)']
+  [Should be known: '(prefers-reduced-data: reduce)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-reduced-data: 0)']
     expected: FAIL
 
-  [Should be parseable in JS: '(prefers-reduced-data: reduce)']
+  [Should be unknown: '(prefers-reduced-data: none)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-reduced-data: 10px)']
     expected: FAIL
 
-  [Should be parseable in JS: '(prefers-reduced-data)']
+  [Should be unknown: '(prefers-reduced-data: no-preference reduce)']
     expected: FAIL
 
-  [Should be parseable in a CSS stylesheet: '(prefers-reduced-data: no-preference)']
+  [Should be unknown: '(prefers-reduced-data: reduced)']
     expected: FAIL
 
+  [Should be unknown: '(prefers-reduced-data: no-preference/reduce)']
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/mediaqueries/prefers-reduced-motion.html.ini
@@ -0,0 +1,18 @@
+[prefers-reduced-motion.html]
+  [Should be unknown: '(prefers-reduced-motion: 0)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-reduced-motion: none)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-reduced-motion: 10px)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-reduced-motion: no-preference reduce)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-reduced-motion: reduced)']
+    expected: FAIL
+
+  [Should be unknown: '(prefers-reduced-motion: no-preference/reduce)']
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/mediaqueries/test_media_queries.html.ini
@@ -0,0 +1,1053 @@
+[test_media_queries.html]
+  [expression_should_be_unknown: min-device-width <= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= device-height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: resolution: 0dpi]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width <= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height < -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height : -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: width > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= device-width < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= height >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height < -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width > -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-color-index: 1/1]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-grid]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-aspect-ratio: 1 / invalid]
+    expected: FAIL
+
+  [expression_should_be_unknown: height : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height = -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width > -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height < = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-resolution: 0dppx]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: resolution: -3dpi]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-aspect-ratio: -1/1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-height <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < device-width > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height = -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-scan:interlace]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-aspect-ratio: 1/-1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height <= -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width = -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= height < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height > -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= device-height < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width = -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > device-height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-resolution: 0dpi]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > device-height <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = height < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= device-height >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-aspect-ratio]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height <= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height > -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width : -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width > -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height >= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < device-height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height < = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= width > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height > -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= device-width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-grid:0]
+    expected: FAIL
+
+  [expression_should_be_unknown: width > = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < height >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width > -1px]
+    expected: FAIL
+
+  [ratio that reduces to 59/40: expression_should_be_unknown: max-orientation]
+    expected: FAIL
+
+  [expression_should_be_unknown: height <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : width >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-width = 100000px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height = -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-scan]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height > = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: grid: 2]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height = -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height = -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > device-width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width = -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width < = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width > -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-height < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height > -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-resolution: -3dpi]
+    expected: FAIL
+
+  [expression_should_be_unknown: width < -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-resolution: 0x]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height = -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-aspect-ratio: invalid]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-width < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height >= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < device-height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = width < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-aspect-ratio: -1/1]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-grid: 1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= device-height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width >= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width >= -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height > -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : height >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: scan: 1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-width <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = width <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-aspect-ratio: -1/-1]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width < -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-resolution: 0x]
+    expected: FAIL
+
+  [ratio that reduces to 59/40: expression_should_be_unknown: min-orientation]
+    expected: FAIL
+
+  [expression_should_be_unknown: resolution: 0x]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width <= -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > device-height < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height = -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: width >= -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width <= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < device-height > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-width <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-height = 100000px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height > -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : height < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height <= -1px]
+    expected: FAIL
+
+  [ratio that reduces to 59/40: expression_should_be_unknown: max-orientation: landscape]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > height < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width >= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: height >= -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height < -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-scan: progressive]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height <= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-monochrome: -1]
+    expected: FAIL
+
+  [expression_should_be_unknown: width <= -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-height > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width > -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-monochrome]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = width > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-monochrome]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = width = 100000px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width <= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= width >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width > -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < device-width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height <= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-height >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width >= -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height <= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: update: some-random-invalid-thing]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= device-width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height < -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height <= -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= device-height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-aspect-ratio: -1/-1]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width = -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= width < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > device-width < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height >= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-aspect-ratio: 1/-1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height >= -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width = -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : width > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-resolution: 0dpi]
+    expected: FAIL
+
+  [expression_should_be_unknown: height = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < device-width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width < -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= height <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height < -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-aspect-ratio: 1 invalid]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height > -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: height >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-resolution: -3dpi]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < width > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height >= -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-aspect-ratio: 1 / invalid]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= device-width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height > = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: grid: -1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width <= -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= device-width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width <= -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height : -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width < -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-monochrome: 1.0]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width : -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-color]
+    expected: FAIL
+
+  [expression_should_be_unknown: color: 1.0]
+    expected: FAIL
+
+  [ratio that reduces to 59/40: expression_should_be_unknown: max-orientation: portrait]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-width < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width > = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height : -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height < -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width < -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-aspect-ratio]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width >= -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = height <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width < = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= height > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < height > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-color-index: -1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > device-height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: overflow-block: some-random-invalid-thing]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > device-width <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= device-height > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: color: -1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-width > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width < -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-resolution: 0dppx]
+    expected: FAIL
+
+  [expression_should_be_unknown: width : -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height < -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-width > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-height >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= device-width >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width = -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= width <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: color: 1/1]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > width <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > height <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-aspect-ratio]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-monochrome: 1/1]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-height > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height >= -0]
+    expected: FAIL
+
+  [ratio that reduces to 59/40: expression_should_be_unknown: min-orientation: portrait]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-color]
+    expected: FAIL
+
+  [expression_should_be_unknown: overflow-inline: some-random-invalid-thing]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > device-width : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-aspect-ratio: invalid]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < device-width >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-height > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width > -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: height <= -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : height <= 0px]
+    expected: FAIL
+
+  [ratio that reduces to 59/40: expression_should_be_unknown: min-orientation: landscape]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width = -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-height >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-width = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : width < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-height < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-device-width >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width = -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = height > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width < -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= device-width > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = height >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-width >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: height > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width <= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height >= -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= device-height <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px <= device-height : 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-aspect-ratio: 1 invalid]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px >= device-width <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = device-height = 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : height > 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px > width < 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: width < -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-color-index: 1.0]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = height = 100000px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width >= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height > -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height > -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: resolution: 0dppx]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width >= -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : width <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width = -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < device-height >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px < width >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-aspect-ratio]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-width >= -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-device-width < -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-width > -100000em]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px = width >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-width : -1px]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-width >= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height <= -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: max-height = -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: device-height : -0.00001mm]
+    expected: FAIL
+
+  [expression_should_be_unknown: 0px : device-height <= 0px]
+    expected: FAIL
+
+  [expression_should_be_unknown: min-height < -0]
+    expected: FAIL
+
+  [expression_should_be_unknown: width : -0.00001mm]
+    expected: FAIL
--- a/testing/web-platform/meta/css/selectors/focus-visible-009.html.ini
+++ b/testing/web-platform/meta/css/selectors/focus-visible-009.html.ini
@@ -1,6 +1,6 @@
 [focus-visible-009.html]
   [Autofocus should match :focus-visible]
     expected:
-      if (os == "android") and not debug: [PASS, FAIL]
-      if (os == "mac") and not debug: [PASS, FAIL]
-      if (os == "win") and not debug: [PASS, FAIL]
+      if not debug and (os == "mac"): [PASS, FAIL]
+      if not debug and (os == "win"): [PASS, FAIL]
+      if not debug and (os == "android"): [PASS, FAIL]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/selectors/invalidation/child-indexed-pseudo-classes-in-has.html.ini
@@ -0,0 +1,81 @@
+[child-indexed-pseudo-classes-in-has.html]
+  [Prepend #div1.green: #only_child]
+    expected: FAIL
+
+  [Prepend #div1.green: #first_child]
+    expected: FAIL
+
+  [Prepend #div1.green: #last_child]
+    expected: FAIL
+
+  [Prepend #div1.green: #nth_child_3n_1]
+    expected: FAIL
+
+  [Prepend #div2.yellow: #first_child]
+    expected: FAIL
+
+  [Prepend #div2.yellow: #last_child]
+    expected: FAIL
+
+  [Prepend #div2.yellow: #nth_child_3n_1]
+    expected: FAIL
+
+  [Prepend #div2.yellow: #nth_child_3n_2]
+    expected: FAIL
+
+  [Prepend #div3.orange: #first_child]
+    expected: FAIL
+
+  [Prepend #div3.orange: #last_child]
+    expected: FAIL
+
+  [Prepend #div3.orange: #nth_child_3n_1]
+    expected: FAIL
+
+  [Prepend #div3.orange: #nth_child_3n_2]
+    expected: FAIL
+
+  [Prepend #div3.orange: #nth_child_3n]
+    expected: FAIL
+
+  [Prepend #div4: #last_child]
+    expected: FAIL
+
+  [Prepend #div4: #nth_child_3n_1]
+    expected: FAIL
+
+  [Prepend #div4: #nth_child_3n_2]
+    expected: FAIL
+
+  [Prepend #div4: #nth_child_3n]
+    expected: FAIL
+
+  [Prepend #div5: #last_child]
+    expected: FAIL
+
+  [Prepend #div5: #nth_child_3n_1]
+    expected: FAIL
+
+  [Prepend #div5: #nth_child_3n_2]
+    expected: FAIL
+
+  [Prepend #div5: #nth_child_3n]
+    expected: FAIL
+
+  [Remove #div1: #last_child]
+    expected: FAIL
+
+  [Remove #div1: #nth_child_3n_1]
+    expected: FAIL
+
+  [Remove #div1: #nth_child_3n]
+    expected: FAIL
+
+  [Remove #div2: #last_child]
+    expected: FAIL
+
+  [Remove #div2: #nth_child_3n]
+    expected: FAIL
+
+  [Remove #div4: #only_child]
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/selectors/invalidation/empty-pseudo-in-has.html.ini
@@ -0,0 +1,6 @@
+[empty-pseudo-in-has.html]
+  [Insert div#child to #subject]
+    expected: FAIL
+
+  [Insert div to div.#child]
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/css/selectors/invalidation/typed-child-indexed-pseudo-classes-in-has.html.ini
@@ -0,0 +1,144 @@
+[typed-child-indexed-pseudo-classes-in-has.html]
+  [Prepend #div1.green: #only_of_type]
+    expected: FAIL
+
+  [Prepend #div1.green: #first_of_type]
+    expected: FAIL
+
+  [Prepend #div1.green: #last_of_type]
+    expected: FAIL
+
+  [Prepend #div1.green: #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend span (2): #only_of_type]
+    expected: FAIL
+
+  [Prepend span (2): #first_of_type]
+    expected: FAIL
+
+  [Prepend span (2): #last_of_type]
+    expected: FAIL
+
+  [Prepend span (2): #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend #div2.yellow: #first_of_type]
+    expected: FAIL
+
+  [Prepend #div2.yellow: #last_of_type]
+    expected: FAIL
+
+  [Prepend #div2.yellow: #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend #div2.yellow: #nth_of_type_3n_2]
+    expected: FAIL
+
+  [Prepend span (3): #first_of_type]
+    expected: FAIL
+
+  [Prepend span (3): #last_of_type]
+    expected: FAIL
+
+  [Prepend span (3): #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend span (3): #nth_of_type_3n_2]
+    expected: FAIL
+
+  [Prepend #div3.orange: #first_of_type]
+    expected: FAIL
+
+  [Prepend #div3.orange: #last_of_type]
+    expected: FAIL
+
+  [Prepend #div3.orange: #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend #div3.orange: #nth_of_type_3n_2]
+    expected: FAIL
+
+  [Prepend #div3.orange: #nth_of_type_3n]
+    expected: FAIL
+
+  [Prepend span (4): #first_of_type]
+    expected: FAIL
+
+  [Prepend span (4): #last_of_type]
+    expected: FAIL
+
+  [Prepend span (4): #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend span (4): #nth_of_type_3n_2]
+    expected: FAIL
+
+  [Prepend span (4): #nth_of_type_3n]
+    expected: FAIL
+
+  [Prepend #div4: #last_of_type]
+    expected: FAIL
+
+  [Prepend #div4: #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend #div4: #nth_of_type_3n_2]
+    expected: FAIL
+
+  [Prepend #div4: #nth_of_type_3n]
+    expected: FAIL
+
+  [Prepend span (5): #last_of_type]
+    expected: FAIL
+
+  [Prepend span (5): #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend span (5): #nth_of_type_3n_2]
+    expected: FAIL
+
+  [Prepend span (5): #nth_of_type_3n]
+    expected: FAIL
+
+  [Prepend #div5: #last_of_type]
+    expected: FAIL
+
+  [Prepend #div5: #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend #div5: #nth_of_type_3n_2]
+    expected: FAIL
+
+  [Prepend #div5: #nth_of_type_3n]
+    expected: FAIL
+
+  [Prepend span (6): #last_of_type]
+    expected: FAIL
+
+  [Prepend span (6): #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Prepend span (6): #nth_of_type_3n_2]
+    expected: FAIL
+
+  [Prepend span (6): #nth_of_type_3n]
+    expected: FAIL
+
+  [Remove #div1: #last_of_type]
+    expected: FAIL
+
+  [Remove #div1: #nth_of_type_3n_1]
+    expected: FAIL
+
+  [Remove #div1: #nth_of_type_3n]
+    expected: FAIL
+
+  [Remove #div2: #last_of_type]
+    expected: FAIL
+
+  [Remove #div2: #nth_of_type_3n]
+    expected: FAIL
+
+  [Remove #div4: #only_of_type]
+    expected: FAIL
--- a/testing/web-platform/meta/custom-elements/reactions/HTMLMediaElement.html.ini
+++ b/testing/web-platform/meta/custom-elements/reactions/HTMLMediaElement.html.ini
@@ -1,3 +1,4 @@
 [HTMLMediaElement.html]
   expected:
     if (os == "linux") and not fission and not debug: [OK, CRASH]
+    if (os == "mac") and not debug: [OK, TIMEOUT]
--- a/testing/web-platform/meta/dom/events/scrolling/scrollend-event-for-user-scroll.html.ini
+++ b/testing/web-platform/meta/dom/events/scrolling/scrollend-event-for-user-scroll.html.ini
@@ -7,29 +7,29 @@
     TIMEOUT
   [Tests that the target_div gets scrollend event when send DOWN key to target.]
     expected:
       if os == "android": FAIL
       NOTRUN
 
   [Tests that the target_div gets scrollend event when click scrollbar on target.]
     expected:
+      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [FAIL, NOTRUN, TIMEOUT]
       if (os == "linux") and not debug and (processor == "x86_64") and fission: [FAIL, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [FAIL, NOTRUN, TIMEOUT]
       if (os == "linux") and not debug and (processor == "x86"): [NOTRUN, FAIL, TIMEOUT]
       if (os == "linux") and debug: [FAIL, TIMEOUT, NOTRUN]
       if os == "win": [NOTRUN, FAIL, TIMEOUT]
       if os == "mac": [NOTRUN, FAIL]
       [FAIL, NOTRUN]
 
   [Tests that the target_div gets scrollend event when drag the thumb of target.]
     expected:
       if (os == "linux") and (processor == "x86"): [NOTRUN, TIMEOUT]
+      if os == "win": [NOTRUN, TIMEOUT]
       if os == "android": [FAIL, TIMEOUT, NOTRUN]
-      if os == "win": [NOTRUN, TIMEOUT]
       if os == "mac": [NOTRUN, FAIL, TIMEOUT]
       [TIMEOUT, NOTRUN]
 
   [Tests that the target_div gets scrollend event when dragging scroll on target.]
     expected:
       if (os == "linux") and (processor == "x86"): [TIMEOUT, FAIL]
       if os == "mac": [TIMEOUT, FAIL]
       if os == "win": [TIMEOUT, FAIL]
--- a/testing/web-platform/meta/event-timing/interactionid-press-key-no-effect.html.ini
+++ b/testing/web-platform/meta/event-timing/interactionid-press-key-no-effect.html.ini
@@ -1,18 +1,22 @@
 [interactionid-press-key-no-effect.html]
   expected:
+    if (os == "win") and debug and (processor == "x86_64") and not swgl: [TIMEOUT, OK]
     if (os == "linux") and not debug and (processor == "x86_64") and not fission: [TIMEOUT, OK]
     if (os == "linux") and not debug and (processor == "x86_64") and fission: [TIMEOUT, OK]
     if (os == "win") and debug and (processor == "x86"): [TIMEOUT, OK]
-    if (os == "mac") and debug: [TIMEOUT, OK]
+    if (os == "linux") and not debug and (processor == "x86"): [TIMEOUT, OK]
+    if (os == "win") and not debug: OK
     if (os == "linux") and debug: TIMEOUT
-    if (os == "win") and not debug: OK
+    if (os == "mac") and debug: [TIMEOUT, OK]
     [OK, TIMEOUT]
   [Event Timing: compare event timing interactionId for key press with no effect.]
     expected:
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [TIMEOUT, FAIL]
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [TIMEOUT, FAIL]
       if (os == "linux") and not debug and (processor == "x86_64") and fission: [TIMEOUT, FAIL]
+      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [TIMEOUT, FAIL]
       if (os == "win") and debug and (processor == "x86"): [TIMEOUT, FAIL]
+      if (os == "linux") and not debug and (processor == "x86"): [TIMEOUT, FAIL]
+      if (os == "win") and not debug: FAIL
+      if (os == "linux") and debug: TIMEOUT
       if (os == "mac") and debug: [TIMEOUT, FAIL]
-      if (os == "linux") and debug: TIMEOUT
-      if (os == "win") and not debug: FAIL
       [FAIL, TIMEOUT]
--- a/testing/web-platform/meta/event-timing/medium-duration-threshold.html.ini
+++ b/testing/web-platform/meta/event-timing/medium-duration-threshold.html.ini
@@ -1,7 +1,8 @@
 [medium-duration-threshold.html]
   [PerformanceObserver observes events according to its durationThreshold]
     expected:
-      if (os == "linux") and fission and not swgl and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "linux") and fission and swgl: [PASS, FAIL]
+      if (os == "linux") and debug and fission and swgl: [PASS, FAIL]
+      if (os == "linux") and not debug and fission: [PASS, FAIL]
+      if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "linux") and debug and not fission: [PASS, FAIL]
       if (os == "mac") and debug: [PASS, FAIL]
-      if (os == "linux") and not fission: [PASS, FAIL]
--- a/testing/web-platform/meta/feature-policy/feature-policy-frame-policy-timing.https.sub.html.ini
+++ b/testing/web-platform/meta/feature-policy/feature-policy-frame-policy-timing.https.sub.html.ini
@@ -1,7 +1,9 @@
 [feature-policy-frame-policy-timing.https.sub.html]
+  expected:
+    if (os == "linux") and fission and not debug and (processor == "x86"): [OK, ERROR]
+    if (os == "linux") and fission and not debug and (processor == "x86_64"): [OK, ERROR]
   [allow attr timing test diff origin]
     expected: FAIL
 
   [allow attr timing test same origin]
     expected: FAIL
-
--- a/testing/web-platform/meta/fetch/api/response/response-cancel-stream.any.js.ini
+++ b/testing/web-platform/meta/fetch/api/response/response-cancel-stream.any.js.ini
@@ -1,37 +1,37 @@
 [response-cancel-stream.any.sharedworker.html]
   expected:
-    if os == "mac": [OK, ERROR, TIMEOUT]
+    if (os == "mac") and not debug: [TIMEOUT, OK, ERROR]
+    if (os == "mac") and debug: [OK, ERROR, TIMEOUT]
   [Cancelling a closed Response stream]
     expected:
-      if os == "mac": [PASS, FAIL, TIMEOUT]
+      if (os == "mac") and debug: [PASS, FAIL, TIMEOUT]
+      if (os == "mac") and not debug: [TIMEOUT, PASS, FAIL]
 
 
 [response-cancel-stream.any.html]
   expected:
-    if (os == "mac") and not debug: [OK, ERROR, TIMEOUT]
-    if (os == "mac") and debug: [OK, ERROR, TIMEOUT]
     if os == "win": [OK, ERROR]
+    if os == "mac": [OK, ERROR, TIMEOUT]
   [Cancelling a closed Response stream]
     expected:
+      if (os == "mac") and not debug: [PASS, FAIL, TIMEOUT]
       if (os == "mac") and debug: [PASS, FAIL, TIMEOUT]
-      if (os == "mac") and not debug: [PASS, FAIL, TIMEOUT]
 
 
 [response-cancel-stream.any.serviceworker.html]
   expected:
     if os == "mac": [OK, TIMEOUT]
   [Cancelling a closed Response stream]
     expected:
+      if (os == "mac") and not debug: [PASS, FAIL, TIMEOUT]
       if (os == "mac") and debug: [PASS, FAIL, TIMEOUT]
-      if (os == "mac") and not debug: [PASS, FAIL, TIMEOUT]
 
 
 [response-cancel-stream.any.worker.html]
   expected:
-    if (os == "mac") and debug: [OK, ERROR, TIMEOUT]
-    if (os == "mac") and not debug: [OK, ERROR, TIMEOUT]
     if (os == "win") and not debug: [OK, ERROR]
+    if os == "mac": [OK, ERROR, TIMEOUT]
   [Cancelling a closed Response stream]
     expected:
       if (os == "mac") and not debug: [PASS, FAIL, TIMEOUT]
-      if (os == "mac") and debug: [PASS, FAIL, TIMEOUT]
+      if (os == "mac") and debug: [FAIL, PASS, TIMEOUT]
--- a/testing/web-platform/meta/fetch/http-cache/304-update.any.js.ini
+++ b/testing/web-platform/meta/fetch/http-cache/304-update.any.js.ini
@@ -20,10 +20,10 @@
   [Content-* header]
     expected:
       if processor == "x86": [PASS, TIMEOUT]
 
 
 [304-update.any.sharedworker.html]
   [HTTP cache updates stored headers from a Last-Modified 304]
     expected:
-      if (processor == "x86") and (os == "win") and not debug: PASS
+      if (os == "win") and not debug and (processor == "x86"): PASS
       [PASS, FAIL]
--- a/testing/web-platform/meta/fetch/metadata/generated/audioworklet.https.sub.html.ini
+++ b/testing/web-platform/meta/fetch/metadata/generated/audioworklet.https.sub.html.ini
@@ -1,26 +1,25 @@
 [audioworklet.https.sub.html]
   expected:
-    if (os == "linux") and (processor == "x86_64") and debug and not fission and not swgl: [ERROR, OK, TIMEOUT]
-    if (os == "linux") and (processor == "x86_64") and debug and not fission and swgl: [ERROR, OK, TIMEOUT]
+    if (os == "linux") and (processor == "x86_64") and not debug and fission: [TIMEOUT, ERROR]
+    if (os == "linux") and (processor == "x86_64") and not debug and not fission: [TIMEOUT, ERROR]
     if (os == "linux") and (processor == "x86_64") and debug and fission: [TIMEOUT, ERROR]
-    if (os == "linux") and (processor == "x86_64") and not debug: [TIMEOUT, ERROR]
+    if (os == "linux") and (processor == "x86_64") and debug and not fission: [ERROR, OK, TIMEOUT]
     if (os == "linux") and (processor == "x86"): [ERROR, TIMEOUT]
   [sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
     expected:
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [PASS, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86"): [PASS, TIMEOUT]
-      if (os == "linux") and debug: [PASS, TIMEOUT]
+      if (os == "linux") and not fission and not debug: [PASS, TIMEOUT]
+      if (os == "linux") and not fission and debug: [PASS, TIMEOUT]
+      if (os == "linux") and fission: [PASS, TIMEOUT]
 
   [sec-fetch-site - Cross-Site -> Same Origin]
     expected:
+      if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, NOTRUN]
-      if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86"): [NOTRUN, PASS]
 
   [sec-fetch-site - Cross-Site -> Same-Site]
     expected:
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, NOTRUN]
@@ -30,20 +29,20 @@
     expected:
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86"): [NOTRUN, PASS]
 
   [sec-fetch-site - Same-Origin -> Same Origin]
     expected:
-      if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, NOTRUN]
-      if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and (processor == "x86_64") and debug: [PASS, NOTRUN]
-      if (os == "linux") and (processor == "x86"): [NOTRUN, PASS]
+      if (os == "linux") and not debug and fission and (processor == "x86"): [NOTRUN, PASS]
+      if (os == "linux") and not debug and fission and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not debug and not fission: [PASS, NOTRUN]
+      if (os == "linux") and debug: [PASS, NOTRUN]
 
   [sec-fetch-site - Same-Origin -> Same-Site]
     expected:
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86"): [NOTRUN, PASS]
 
@@ -51,49 +50,47 @@
     expected:
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, NOTRUN]
       if (os == "linux") and (processor == "x86"): [NOTRUN, PASS]
 
   [sec-fetch-site - Same-Site -> Same Origin]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [TIMEOUT, PASS, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [NOTRUN, TIMEOUT]
+      if (os == "linux") and not fission and debug: [PASS, NOTRUN]
       if (os == "linux") and not fission and not debug: [PASS, NOTRUN]
-      if (os == "linux") and not fission and debug: [PASS, NOTRUN]
-      if (os == "linux") and fission and (processor == "x86"): [NOTRUN, TIMEOUT]
+      if (os == "linux") and fission and debug: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-site - Same-Site -> Same-Site]
     expected:
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [NOTRUN, TIMEOUT]
       if (os == "linux") and not debug and fission and (processor == "x86"): NOTRUN
-      if (os == "linux") and debug and not fission and swgl: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and debug and not fission and not swgl: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and debug and not fission: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and debug and fission: [TIMEOUT, NOTRUN]
       if (os == "linux") and not debug and not fission: [TIMEOUT, NOTRUN]
-      if (os == "linux") and debug and fission: [TIMEOUT, NOTRUN]
 
   [sec-fetch-site - Same-Site -> Cross-Site]
     expected:
-      if (os == "linux") and debug and not fission and not swgl: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and debug and not fission and swgl: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and debug and not fission: [PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and debug and fission: NOTRUN
       if (os == "linux") and not debug: NOTRUN
 
   [sec-fetch-mode]
     expected:
-      if (os == "linux") and debug and not fission and not swgl: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and debug and not fission and swgl: [NOTRUN, PASS]
+      if (os == "linux") and debug and not fission and not swgl: [NOTRUN, PASS, TIMEOUT]
+      if (os == "linux") and debug and not fission and swgl: [PASS, NOTRUN]
       if (os == "linux") and debug and fission: NOTRUN
       if (os == "linux") and not debug: NOTRUN
 
   [sec-fetch-dest]
     expected:
       if (os == "linux") and debug and not fission: [NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and debug and fission: NOTRUN
       if (os == "linux") and not debug: NOTRUN
 
   [sec-fetch-user]
     expected:
+      if (os == "linux") and debug and not fission and not swgl: [NOTRUN, PASS]
       if (os == "linux") and debug and not fission and swgl: [NOTRUN, PASS, TIMEOUT]
-      if (os == "linux") and debug and not fission and not swgl: [NOTRUN, PASS]
       if (os == "linux") and debug and fission: NOTRUN
       if (os == "linux") and not debug: NOTRUN
--- a/testing/web-platform/meta/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html.ini
+++ b/testing/web-platform/meta/fetch/metadata/generated/fetch-via-serviceworker.https.sub.html.ini
@@ -1,60 +1,58 @@
 [fetch-via-serviceworker.https.sub.html]
   expected:
-    if (os == "linux") and fission and not debug and (processor == "x86_64"): [OK, TIMEOUT]
-    if (os == "linux") and fission and not debug and (processor == "x86"): [TIMEOUT, OK]
-    if (os == "linux") and fission and debug: [OK, TIMEOUT]
+    if (os == "linux") and fission and (processor == "x86_64") and not debug: [OK, TIMEOUT]
+    if (os == "linux") and fission and (processor == "x86_64") and debug: [OK, TIMEOUT]
+    if (os == "linux") and fission and (processor == "x86"): [TIMEOUT, OK]
   [sec-fetch-mode - init: mode=no-cors - respondWith]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission: [TIMEOUT, PASS, NOTRUN]
 
   [sec-fetch-mode - init: mode=no-cors - fallback]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and fission and debug: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-mode - init: mode=same-origin - respondWith]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, NOTRUN]
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [NOTRUN, PASS, TIMEOUT]
+      if (os == "linux") and fission and debug: [PASS, NOTRUN]
 
   [sec-fetch-mode - init: mode=same-origin - fallback]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, NOTRUN]
-      if (os == "linux") and fission and (processor == "x86"): [NOTRUN, PASS, TIMEOUT]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [NOTRUN, PASS, TIMEOUT]
+      if (os == "linux") and fission and debug: [PASS, NOTRUN]
 
   [sec-fetch-dest - no init - respondWith]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, NOTRUN]
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86"): [NOTRUN, PASS]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [NOTRUN, PASS]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and fission and debug: [PASS, NOTRUN]
 
   [sec-fetch-dest - no init - fallback]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86"): [NOTRUN, PASS, TIMEOUT]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [NOTRUN, PASS, TIMEOUT]
+      if (os == "linux") and fission and debug: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-user - no init - respondWith]
     expected:
       if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and fission and not debug and (processor == "x86"): [NOTRUN, PASS]
       if (os == "linux") and fission and debug: [PASS, NOTRUN]
 
   [sec-fetch-user - no init - fallback]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and (processor == "x86"): [NOTRUN, PASS]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [NOTRUN, PASS]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and fission and debug: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-mode - init: mode=cors - fallback]
     expected: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-site - Same-Site -> Same-Site, init: mode=no-cors - respondWith]
     expected: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-site - Same-Site -> Same-Site, init: mode=no-cors - fallback]
--- a/testing/web-platform/meta/fetch/metadata/generated/form-submission.https.sub.html.ini
+++ b/testing/web-platform/meta/fetch/metadata/generated/form-submission.https.sub.html.ini
@@ -1,49 +1,51 @@
 [form-submission.https.sub.html]
   expected:
-    if (os == "linux"): [OK, TIMEOUT]
-
+    if (os == "linux") and not debug and fission and (processor == "x86"): [OK, TIMEOUT]
+    if (os == "linux") and not debug and fission and (processor == "x86_64"): [OK, TIMEOUT]
+    if (os == "linux") and not debug and not fission: [OK, TIMEOUT]
+    if (os == "linux") and debug: [OK, TIMEOUT]
   [sec-fetch-user - GET with user activation]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [NOTRUN, PASS, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86"): [PASS, TIMEOUT]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, TIMEOUT]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-user - POST]
     expected:
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, NOTRUN]
       if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, NOTRUN]
       if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, TIMEOUT, NOTRUN]
       if (os == "linux") and fission and debug: [FAIL, NOTRUN]
-      if (os == "linux") and not debug and not fission and (processor == "x86_64"): [FAIL, PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not fission and not debug: [FAIL, PASS, TIMEOUT, NOTRUN]
       FAIL
 
   [sec-fetch-user - POST with user activation]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
       if (os == "linux") and fission and debug: [PASS, NOTRUN]
-      if (os == "linux") and not debug and not fission and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not fission and not debug: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-user - GET]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and debug: [PASS, TIMEOUT]
-      if (os == "linux") and not debug and not fission and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not debug and (processor == "x86_64") and fission: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and debug and fission: [PASS, TIMEOUT]
 
   [sec-fetch-dest - GET]
     expected:
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and not fission and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-dest - POST]
     expected:
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and not fission and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not debug and (processor == "x86_64") and fission: [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-mode - GET]
     expected:
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
 
   [sec-fetch-mode - POST]
     expected:
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
--- a/testing/web-platform/meta/fetch/metadata/window-open.https.sub.html.ini
+++ b/testing/web-platform/meta/fetch/metadata/window-open.https.sub.html.ini
@@ -1,19 +1,14 @@
 [window-open.https.sub.html]
   expected:
+    if (os == "win") and not swgl and not debug and (processor == "x86_64"): [ERROR, OK]
     if (os == "win") and not swgl and not debug and (processor == "x86"): [ERROR, OK]
-    if (os == "win") and not swgl and not debug and (processor == "x86_64"): [ERROR, OK]
-    if (os == "win") and not swgl and debug: [ERROR, OK]
-    if (os == "mac") and debug: [ERROR, OK]
-    if (os == "mac") and not debug: [ERROR, OK]
-    if (os == "linux") and (processor == "x86"): [ERROR, OK]
+    if (os == "win") and not swgl and debug and (processor == "x86"): [ERROR, OK]
     [OK, ERROR]
   [Cross-site window, forced, reloaded]
-    expected:
-      if swgl and (os == "linux") and not fission: [FAIL, PASS]
-      [PASS, FAIL]
+    expected: [PASS, FAIL]
 
   [Same-site window, forced, reloaded]
     expected:
       if (os == "win") and debug and (processor == "x86_64"): PASS
-      if (os == "android") and swgl: [FAIL, PASS]
+      if (os == "android") and not debug: [FAIL, PASS]
       [PASS, FAIL]
--- a/testing/web-platform/meta/focus/focus-already-focused-iframe-different-site.html.ini
+++ b/testing/web-platform/meta/focus/focus-already-focused-iframe-different-site.html.ini
@@ -1,7 +1,7 @@
 [focus-already-focused-iframe-different-site.html]
   expected:
+    if (os == "win") and not debug and (processor == "x86"): [TIMEOUT, OK]
     if (os == "win") and not debug and (processor == "x86_64"): [TIMEOUT, OK]
-    if (os == "win") and not debug and (processor == "x86"): [OK, TIMEOUT]
     if (os == "linux") and not fission: [OK, TIMEOUT]
     if (os == "win") and debug: [OK, TIMEOUT]
     if os == "mac": [OK, TIMEOUT]
--- a/testing/web-platform/meta/focus/iframe-activeelement-after-focusing-out-iframes.html.ini
+++ b/testing/web-platform/meta/focus/iframe-activeelement-after-focusing-out-iframes.html.ini
@@ -1,7 +1,6 @@
 [iframe-activeelement-after-focusing-out-iframes.html]
   [Check iframe activeElement after focusing out different site iframe]
     expected:
-      if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
       if (os == "win") and debug: PASS
       if os == "android": PASS
       [PASS, FAIL]
--- a/testing/web-platform/meta/forced-colors-mode/forced-colors-mode-43.html.ini
+++ b/testing/web-platform/meta/forced-colors-mode/forced-colors-mode-43.html.ini
@@ -1,4 +1,5 @@
 [forced-colors-mode-43.html]
   expected:
+    if (os == "win") and not debug and (processor == "x86"): [FAIL, PASS]
     if os == "android": PASS
     [PASS, FAIL]
--- a/testing/web-platform/meta/html/browsers/browsing-the-web/back-forward-cache/eligibility/broadcast-channel.html.ini
+++ b/testing/web-platform/meta/html/browsers/browsing-the-web/back-forward-cache/eligibility/broadcast-channel.html.ini
@@ -1,18 +1,22 @@
 [broadcast-channel.html]
   expected:
     if (os == "win") and not debug and ccov: OK
     if (os == "linux") and (processor == "x86_64") and not debug and not fission: [OK, TIMEOUT]
     if (os == "linux") and (processor == "x86_64") and not debug and fission: [OK, TIMEOUT]
     if (os == "linux") and (processor == "x86_64") and debug: [OK, TIMEOUT]
+    if (os == "linux") and (processor == "x86"): [TIMEOUT, OK]
     if (os == "mac") and not debug: TIMEOUT
     if (os == "win") and not debug: TIMEOUT
-    if (os == "linux") and (processor == "x86"): [TIMEOUT, OK]
   [Eligibility (BroadcastChannel closed in the pagehide event)]
     expected:
       if (os == "win") and not debug and ccov: PASS
+      if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, TIMEOUT]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, TIMEOUT]
-      if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, TIMEOUT]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, TIMEOUT]
-      if (os == "mac") and not debug: TIMEOUT
       if (os == "win") and not debug: TIMEOUT
       if (os == "linux") and (processor == "x86"): [TIMEOUT, PASS]
+      if (os == "mac") and not debug: [TIMEOUT, NOTRUN]
+
+  [Eligibility (BroadcastChannel)]
+    expected:
+      if (os == "mac") and not debug: [PASS, TIMEOUT]
--- a/testing/web-platform/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini
+++ b/testing/web-platform/meta/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini
@@ -1,11 +1,12 @@
 [load-pageshow-events-window-open.html]
   [load event does not fire on window.open('about:blank')]
     expected:
-      if (os == "linux") and debug and not fission and swgl: [FAIL, PASS]
-      if (os == "linux") and debug and not fission and not swgl: [PASS, FAIL]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, FAIL]
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [PASS, FAIL]
-      if (os == "linux") and debug and fission: [FAIL, PASS]
-      if (os == "linux") and not debug and (processor == "x86"): [FAIL, PASS]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, FAIL]
+      if (os == "linux") and fission and debug and swgl: [FAIL, PASS]
+      if (os == "linux") and fission and debug and not swgl: [FAIL, PASS]
+      if (os == "linux") and not fission and not swgl and debug: [PASS, FAIL]
+      if (os == "linux") and not fission and not swgl and not debug: [PASS, FAIL]
+      if (os == "linux") and not fission and swgl: [PASS, FAIL]
       if (os == "win") and swgl: [FAIL, PASS]
       FAIL
--- a/testing/web-platform/meta/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html.ini
+++ b/testing/web-platform/meta/html/browsers/browsing-the-web/overlapping-navigations-and-traversals/tentative/cross-document-nav-same-document-traversal.html.ini
@@ -1,7 +1,7 @@
 [cross-document-nav-same-document-traversal.html]
   [cross-document navigations are stopped by same-document back()]
     expected:
-      if (os == "linux") and fission and debug and not swgl: [PASS, FAIL]
+      if (os == "linux") and not swgl and not debug and (processor == "x86_64") and not fission: [PASS, FAIL]
       if (os == "mac") and not debug: FAIL
       if (os == "win") and not debug: FAIL
       [FAIL, PASS]
--- a/testing/web-platform/meta/html/browsers/history/the-history-interface/005.html.ini
+++ b/testing/web-platform/meta/html/browsers/history/the-history-interface/005.html.ini
@@ -1,20 +1,17 @@
 [005.html]
   [<body onpopstate="..."> should register a listener for the popstate event]
     bug:
       if fission and (os == "linux"): https://bugzilla.mozilla.org/show_bug.cgi?id=1668853
       if fission and (os == "win") and debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1668853
     expected:
-      if fission and (os == "linux") and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if fission and (os == "linux") and not debug and (processor == "x86"): [PASS, FAIL]
-      if fission and (os == "win") and debug and (processor == "x86"): [PASS, FAIL]
-      if fission and (os == "win") and debug and (processor == "x86_64"): [PASS, FAIL]
-      if fission and (os == "linux") and debug: [PASS, FAIL]
-      if fission and (os == "mac") and debug: [PASS, FAIL]
+      if fission and not debug and (os == "linux") and (processor == "x86_64"): [PASS, FAIL]
+      if fission and not debug and (os == "linux") and (processor == "x86"): [PASS, FAIL]
+      if fission and debug: [PASS, FAIL]
 
   [window.onpopstate should register a listener for the popstate event]
     bug:
       if fission and debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1692852
     expected:
+      if fission and (os == "win") and debug: [PASS, FAIL]
       if fission and (os == "mac") and debug: [PASS, FAIL]
-      if fission and (os == "win") and debug: [PASS, FAIL]
       if fission and (os == "linux"): [PASS, FAIL]
--- a/testing/web-platform/meta/html/browsers/history/the-history-interface/traverse-during-unload.html.ini
+++ b/testing/web-platform/meta/html/browsers/history/the-history-interface/traverse-during-unload.html.ini
@@ -1,9 +1,8 @@
 [traverse-during-unload.html]
   [Traversing the history during unload]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "linux") and fission and debug: [PASS, FAIL]
-      if (os == "win") and fission: PASS
+      if (os == "linux") and fission and (processor == "x86_64"): [PASS, FAIL]
+      if (os == "linux") and fission and (processor == "x86"): [FAIL, PASS]
       if os == "mac": PASS
+      if os == "win": PASS
       FAIL
--- a/testing/web-platform/meta/html/browsers/the-window-object/named-access-on-the-window-object/navigated-named-objects.window.js.ini
+++ b/testing/web-platform/meta/html/browsers/the-window-object/named-access-on-the-window-object/navigated-named-objects.window.js.ini
@@ -1,16 +1,13 @@
 [navigated-named-objects.window.html]
   [Window's associated Document object is used for finding named objects (<object> with browsing ccontext via srcdoc <iframe)>]
     expected: [FAIL, PASS]
 
   [Window's associated Document object is used for finding named objects (<object> with browsing ccontext via same-origin <iframe)>]
     expected:
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [FAIL, PASS]
-      if (os == "linux") and not debug and not fission: [FAIL, PASS]
-      if (os == "linux") and debug: [FAIL, PASS]
+      if os == "linux": [FAIL, PASS]
       FAIL
 
   [Window's associated Document object is used for finding named objects (<object> with browsing ccontext via cross-site <iframe)>]
     expected:
       if not fission: [FAIL, PASS]
       [PASS, FAIL]
--- a/testing/web-platform/meta/html/browsers/the-window-object/open-close/open-features-tokenization-noreferrer.html.ini
+++ b/testing/web-platform/meta/html/browsers/the-window-object/open-close/open-features-tokenization-noreferrer.html.ini
@@ -1,5 +1,5 @@
 [open-features-tokenization-noreferrer.html]
   expected:
-    if (os == "android") and not swgl and debug: [OK, TIMEOUT, CRASH]
-    if (os == "android") and not swgl and not debug: [CRASH, TIMEOUT, OK]
-    if (os == "android") and swgl: [OK, TIMEOUT, CRASH]
+    if (os == "android") and debug and swgl: [OK, TIMEOUT, CRASH]
+    if (os == "android") and debug and not swgl: [OK, TIMEOUT, CRASH]
+    if (os == "android") and not debug: [CRASH, OK, TIMEOUT]
--- a/testing/web-platform/meta/html/browsers/the-window-object/open-close/open-features-tokenization-screenx-screeny.html.ini
+++ b/testing/web-platform/meta/html/browsers/the-window-object/open-close/open-features-tokenization-screenx-screeny.html.ini
@@ -1,13 +1,13 @@
 [open-features-tokenization-screenx-screeny.html]
   expected:
-    if (os == "android") and debug and not swgl: [OK, TIMEOUT, CRASH]
-    if (os == "android") and debug and swgl: [TIMEOUT, OK, CRASH]
-    if (os == "android") and not debug: [OK, TIMEOUT, CRASH]
+    if (os == "android") and not swgl and debug: [OK, TIMEOUT, CRASH]
+    if (os == "android") and not swgl and not debug: [OK, TIMEOUT, CRASH]
+    if (os == "android") and swgl: [TIMEOUT, OK, CRASH]
   ["screenx=141" should set left position of opened window]
     expected:
       if os == "android": FAIL
 
   [" screenx = 141" should set left position of opened window]
     expected:
       if os == "android": FAIL
 
--- a/testing/web-platform/meta/html/browsers/the-window-object/window-open-popup-behavior.html.ini
+++ b/testing/web-platform/meta/html/browsers/the-window-object/window-open-popup-behavior.html.ini
@@ -1,127 +1,121 @@
 [window-open-popup-behavior.html]
   expected:
+    if (os == "linux") and not debug and (processor == "x86_64") and fission: [TIMEOUT, OK]
     if (os == "linux") and not debug and (processor == "x86_64") and not fission: [OK, TIMEOUT]
-    if (os == "linux") and not debug and (processor == "x86_64") and fission: [TIMEOUT, OK]
     if (os == "linux") and not debug and (processor == "x86"): [OK, TIMEOUT]
     if (os == "linux") and debug: [OK, TIMEOUT]
   [location=yes,toolbar=yes,status=yes (expect popup)]
     expected:
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission and not debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission: [PASS, TIMEOUT, NOTRUN]
 
   [location=yes,toolbar=yes,status=yes,noopener (expect tab)]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and fission: [FAIL, PASS, TIMEOUT, NOTRUN]
+      if os == "android": PASS
+      FAIL
+
+  [location=yes,toolbar=yes,status=yes,noreferrer (expect tab)]
+    expected:
+      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission: [FAIL, PASS, TIMEOUT, NOTRUN]
+      if os == "android": PASS
+      FAIL
+
+  [location=yes,toolbar=yes,status=yes,popup (expect popup)]
+    expected:
+      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission: [PASS, TIMEOUT, NOTRUN]
+
+  [location=yes,toolbar=yes,status=yes,noopener,noreferrer,popup (expect tab)]
+    expected:
+      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and fission: [FAIL, PASS, TIMEOUT, NOTRUN]
+      if os == "android": PASS
+      FAIL
+
+  [location=yes,toolbar=yes,menubar=yes (expect popup)]
+    expected:
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and fission and debug: [PASS, TIMEOUT, NOTRUN]
+
+  [location=yes,toolbar=yes,menubar=yes,noopener (expect tab)]
+    expected:
       if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and fission and debug: [FAIL, PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
       if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
       if os == "android": PASS
       FAIL
 
-  [location=yes,toolbar=yes,status=yes,noreferrer (expect tab)]
-    expected:
-      if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and debug: [FAIL, PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
-      if os == "android": PASS
-      FAIL
-
-  [location=yes,toolbar=yes,status=yes,popup (expect popup)]
-    expected:
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and debug: [PASS, TIMEOUT, NOTRUN]
-
-  [location=yes,toolbar=yes,status=yes,noopener,noreferrer,popup (expect tab)]
+  [location=yes,toolbar=yes,menubar=yes,noreferrer (expect tab)]
     expected:
       if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and fission and debug: [FAIL, PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
       if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
       if os == "android": PASS
       FAIL
 
-  [location=yes,toolbar=yes,menubar=yes (expect popup)]
-    expected:
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and debug: [PASS, TIMEOUT, NOTRUN]
-
-  [location=yes,toolbar=yes,menubar=yes,noopener (expect tab)]
-    expected:
-      if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, NOTRUN, PASS, TIMEOUT]
-      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and debug: [FAIL, PASS, TIMEOUT, NOTRUN]
-      if os == "android": PASS
-      FAIL
-
-  [location=yes,toolbar=yes,menubar=yes,noreferrer (expect tab)]
-    expected:
-      if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, NOTRUN, PASS, TIMEOUT]
-      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and fission and debug: [FAIL, PASS, TIMEOUT, NOTRUN]
-      if os == "android": PASS
-      FAIL
-
   [location=yes,toolbar=yes,menubar=yes,popup (expect popup)]
     expected:
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission and debug: [PASS, TIMEOUT, NOTRUN]
 
   [location=yes,toolbar=yes,menubar=yes,noopener,noreferrer,popup (expect tab)]
     expected:
       if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, TIMEOUT, NOTRUN, PASS]
       if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and fission and debug: [FAIL, PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
       if os == "android": PASS
       FAIL
 
   [location=yes,toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes (expect tab)]
     expected:
+      if (os == "linux") and not debug and (processor == "x86_64") and fission: [NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [NOTRUN, PASS, TIMEOUT]
       if (os == "linux") and not debug and (processor == "x86"): [PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and debug: [PASS, TIMEOUT, NOTRUN]
 
   [location=yes,toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes,noopener (expect tab)]
     expected:
+      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN]
       if (os == "linux") and not debug and (processor == "x86_64") and fission: [NOTRUN, PASS]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN]
       if (os == "linux") and not debug and (processor == "x86"): [PASS, NOTRUN]
       if (os == "linux") and debug: [PASS, NOTRUN]
 
   [location=yes,toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes,noreferrer (expect tab)]
     expected:
+      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN]
       if (os == "linux") and not debug and (processor == "x86_64") and fission: [NOTRUN, PASS]
-      if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN]
       if (os == "linux") and not debug and (processor == "x86"): [PASS, NOTRUN]
       if (os == "linux") and debug: [PASS, NOTRUN]
 
   [location=yes,toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes,popup (expect popup)]
     expected:
+      if (os == "linux") and not debug and (processor == "x86_64") and fission: [NOTRUN, PASS]
       if (os == "linux") and not debug and (processor == "x86_64") and not fission: [PASS, NOTRUN]
-      if (os == "linux") and not debug and (processor == "x86_64") and fission: [NOTRUN, PASS]
       if (os == "linux") and not debug and (processor == "x86"): [PASS, NOTRUN]
       if (os == "linux") and debug: [PASS, NOTRUN]
 
   [location=yes,toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes,noopener,noreferrer,popup (expect tab)]
     expected:
       if (os == "linux") and fission and not debug and (processor == "x86_64"): [NOTRUN, FAIL, PASS]
       if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS, NOTRUN]
       if (os == "linux") and not fission and not debug: [PASS, NOTRUN, FAIL, TIMEOUT]
@@ -144,17 +138,17 @@
   [resizable=yes,scrollbars=yes,status=yes,noreferrer (expect tab)]
     expected:
       if not fission: PASS
       FAIL
 
   [location=yes,menubar=yes,scrollbars=yes,noreferrer (expect tab)]
     expected:
       if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not fission and not debug: [PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and fission: [FAIL, TIMEOUT, NOTRUN]
       if os == "android": PASS
       FAIL
 
   [toolbar=yes,resizable=yes,status=yes,noopener (expect tab)]
     expected:
       if not fission: PASS
       FAIL
@@ -171,49 +165,45 @@
       FAIL
 
   [location=yes,scrollbars=yes,status=yes,popup (expect popup)]
     expected:
       if (os == "linux") and not fission: [PASS, TIMEOUT, NOTRUN]
 
   [location=yes,menubar=yes,scrollbars=yes (expect popup)]
     expected:
-      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
-      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission: [PASS, TIMEOUT, NOTRUN]
 
   [location=yes,scrollbars=yes,status=yes,noopener,noreferrer,popup (expect tab)]
     expected:
-      if (os == "linux") and not fission and not debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "linux") and not fission: [PASS, TIMEOUT, NOTRUN]
       if os == "android": PASS
       FAIL
 
   [toolbar=yes,resizable=yes,status=yes,noreferrer (expect tab)]
     expected:
       if not fission: PASS
       FAIL
 
   [,noopener,noreferrer,popup (expect tab)]
     expected:
       if not fission: PASS
       FAIL
 
   [location=yes,menubar=yes,scrollbars=yes,popup (expect popup)]
     expected:
+      if (os == "linux") and not fission and not debug: [PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
       if (os == "linux") and fission: [PASS, TIMEOUT, NOTRUN]
 
   [location=yes,menubar=yes,scrollbars=yes,noopener,noreferrer,popup (expect tab)]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86"): [FAIL, PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [FAIL, PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and fission and debug: [FAIL, PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and not fission and debug: [PASS, FAIL, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, FAIL, TIMEOUT]
+      if (os == "linux") and not fission and not debug: [PASS, FAIL, TIMEOUT, NOTRUN]
+      if (os == "linux") and fission: [FAIL, PASS, TIMEOUT, NOTRUN]
       if os == "android": PASS
       FAIL
 
   [toolbar=yes,menubar=yes,resizable=yes,noreferrer (expect tab)]
     expected:
       if not fission: PASS
       FAIL
 
@@ -235,18 +225,18 @@
 
   [menubar=yes,resizable=yes,scrollbars=yes,noopener (expect tab)]
     expected:
       if not fission: PASS
       FAIL
 
   [location=yes,menubar=yes,scrollbars=yes,noopener (expect tab)]
     expected:
+      if (os == "linux") and not fission and not debug: [PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
       if (os == "linux") and fission: [FAIL, TIMEOUT]
       if os == "android": PASS
       FAIL
 
   [menubar=yes,resizable=yes,scrollbars=yes,noreferrer (expect tab)]
     expected:
       if not fission: PASS
       FAIL
--- a/testing/web-platform/meta/html/browsers/windows/iframe-cross-origin-scaled-print.sub.html.ini
+++ b/testing/web-platform/meta/html/browsers/windows/iframe-cross-origin-scaled-print.sub.html.ini
@@ -1,4 +1,5 @@
 [iframe-cross-origin-scaled-print.sub.html]
   expected:
-    if (os == "linux") and fission and not swgl: [PASS, FAIL]
-    if (os == "linux") and fission and swgl: [FAIL, PASS]
+    if (os == "linux") and fission and not swgl and debug: [PASS, FAIL]
+    if (os == "linux") and fission and not swgl and not debug: [PASS, ERROR, FAIL]
+    if (os == "linux") and fission and swgl: [PASS, FAIL]
--- a/testing/web-platform/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html.ini
+++ b/testing/web-platform/meta/html/canvas/element/drawing-text-to-the-canvas/2d.text.draw.fontface.notinpage.html.ini
@@ -1,6 +1,7 @@
 [2d.text.draw.fontface.notinpage.html]
   [@font-face fonts should work even if they are not used in the page]
     expected:
+      if (os == "linux") and not fission and debug and swgl: [FAIL, PASS]
       if (os == "linux") and not fission and debug and not swgl: [FAIL, PASS]
       if os == "android": [FAIL, PASS]
       [PASS, FAIL]
--- a/testing/web-platform/meta/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html.ini
+++ b/testing/web-platform/meta/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html.ini
@@ -1,10 +1,9 @@
 [2d.drawImage.animated.poster.html]
   disabled:
     if (os == "mac") and (os_version == "10.15"): https://bugzilla.mozilla.org/show_bug.cgi?id=1753364
     if win10_2004 and debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1753364
   expected:
-    if (os == "linux") and not debug and fission and (processor == "x86_64"): [ERROR, OK]
-    if (os == "linux") and debug and fission and swgl: [ERROR, OK]
+    if (os == "linux") and swgl and fission: [ERROR, OK]
+    if (os == "win") and (processor == "x86_64"): OK
     if (os == "android") and not swgl: OK
-    if (os == "win") and (processor == "x86_64"): OK
     [OK, ERROR]
--- a/testing/web-platform/meta/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html.ini
+++ b/testing/web-platform/meta/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.basic.html.ini
@@ -1,8 +1,9 @@
 [2d.pattern.paint.repeat.basic.html]
   disabled:
     if (os == "mac") and (os_version == "10.15"): https://bugzilla.mozilla.org/show_bug.cgi?id=1753270
     if win10_2004: https://bugzilla.mozilla.org/show_bug.cgi?id=1753270
   expected:
-    if not fission and not debug and (os == "android"): OK
-    if fission and (processor == "x86_64") and swgl: [ERROR, OK]
+    if (os == "linux") and fission and (processor == "x86_64") and not swgl and not debug: [ERROR, OK]
+    if (os == "linux") and fission and (processor == "x86_64") and swgl: [ERROR, OK]
+    if (os == "android") and not debug: OK
     [OK, ERROR]
--- a/testing/web-platform/meta/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html.ini
+++ b/testing/web-platform/meta/html/canvas/offscreen/fill-and-stroke-styles/2d.pattern.paint.repeat.outside.html.ini
@@ -1,7 +1,8 @@
 [2d.pattern.paint.repeat.outside.html]
   disabled:
     if (os == "mac") and (os_version == "10.15"): https://bugzilla.mozilla.org/show_bug.cgi?id=1753270
     if win10_2004: https://bugzilla.mozilla.org/show_bug.cgi?id=1753270
   expected:
+    if (os == "linux") and not swgl and not fission and debug: [ERROR, OK]
     if (os == "android") and not debug: OK
     [OK, ERROR]
--- a/testing/web-platform/meta/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.ini
+++ b/testing/web-platform/meta/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.ini
@@ -1,79 +1,78 @@
 [iframe-popup-same-origin-allow-popups-to-same-origin.https.html]
   prefs: [network.cookie.cookieBehavior:4]
   expected:
-    if (os == "linux") and fission and not swgl and debug: [OK, TIMEOUT]
-    if (os == "win") and debug and not swgl and (processor == "x86_64"): [OK, TIMEOUT]
+    if (os == "linux") and debug and fission and not swgl: [OK, TIMEOUT]
+    if (os == "win") and debug and (processor == "x86_64") and not swgl: [OK, TIMEOUT]
     if (os == "android") and debug and not swgl: [OK, TIMEOUT]
-    if (os == "mac"): [OK, TIMEOUT]
-
+    if os == "mac": [OK, TIMEOUT]
   [same-origin-allow-popups with CROSS_ORIGIN iframe opening popup via anchor a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with SAME_SITE iframe opening popup via form_GET a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with SAME_SITE iframe opening popup via form_POST a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with CROSS_ORIGIN iframe opening popup via form_POST a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with SAME_SITE iframe opening popup via window_open a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with CROSS_ORIGIN iframe opening popup via form_GET a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with SAME_ORIGIN iframe opening popup via anchor a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with SAME_ORIGIN iframe opening popup via form_POST a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with SAME_ORIGIN iframe opening popup via form_GET a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with CROSS_ORIGIN iframe opening popup via window_open a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with SAME_SITE iframe opening popup via anchor a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
 
   [same-origin-allow-popups with SAME_ORIGIN iframe opening popup via window_open a CROSS_ORIGIN with COOP: "same-origin"]
     expected:
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and not swgl and (processor == "x86_64"): [PASS, TIMEOUT]
-      if (os == "mac"): [PASS, TIMEOUT]
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
+      if os == "mac": [PASS, TIMEOUT]
--- a/testing/web-platform/meta/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.ini
+++ b/testing/web-platform/meta/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.ini
@@ -1,79 +1,79 @@
 [iframe-popup-same-origin-to-unsafe-none.https.html]
   prefs: [network.cookie.cookieBehavior:4]
   expected:
     if (os == "win") and debug and (processor == "x86_64") and not swgl: [OK, TIMEOUT]
     if (os == "linux") and fission and not swgl: [OK, TIMEOUT]
-    if (os == "android") and swgl: [TIMEOUT, OK]
     if (os == "android") and not swgl: [OK, TIMEOUT, CRASH]
+    if (os == "android") and swgl: [OK, TIMEOUT]
     if os == "mac": [OK, TIMEOUT]
   [same-origin with SAME_SITE iframe opening popup via window_open a CROSS_ORIGIN with COOP: ""]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with SAME_SITE iframe opening popup via anchor a CROSS_ORIGIN with COOP: ""]
     expected:
+      if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
-      if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with CROSS_ORIGIN iframe opening popup via window_open a CROSS_ORIGIN with COOP: ""]
     expected:
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with SAME_SITE iframe opening popup via form_POST a CROSS_ORIGIN with COOP: ""]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with SAME_ORIGIN iframe opening popup via window_open a CROSS_ORIGIN with COOP: ""]
     expected:
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with SAME_ORIGIN iframe opening popup via form_GET a CROSS_ORIGIN with COOP: ""]
     expected:
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with CROSS_ORIGIN iframe opening popup via anchor a CROSS_ORIGIN with COOP: ""]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with SAME_ORIGIN iframe opening popup via anchor a CROSS_ORIGIN with COOP: ""]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with CROSS_ORIGIN iframe opening popup via form_GET a CROSS_ORIGIN with COOP: ""]
     expected:
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with SAME_SITE iframe opening popup via form_GET a CROSS_ORIGIN with COOP: ""]
     expected:
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with SAME_ORIGIN iframe opening popup via form_POST a CROSS_ORIGIN with COOP: ""]
     expected:
+      if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
-      if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin with CROSS_ORIGIN iframe opening popup via form_POST a CROSS_ORIGIN with COOP: ""]
     expected:
+      if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
-      if (os == "linux") and debug and fission and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
--- a/testing/web-platform/meta/html/cross-origin-opener-policy/popup-coop-by-sw.https.html.ini
+++ b/testing/web-platform/meta/html/cross-origin-opener-policy/popup-coop-by-sw.https.html.ini
@@ -1,13 +1,12 @@
 [popup-coop-by-sw.https.html?1-4]
   expected:
-    if debug and (os == "linux") and not fission and not swgl: [TIMEOUT, CRASH]
-    if debug and (os == "linux") and not fission and swgl: [TIMEOUT, CRASH]
     if debug and (os == "linux") and fission: [CRASH, TIMEOUT]
+    if debug and (os == "linux") and not fission: [TIMEOUT, CRASH]
     if debug and (os == "win"): [TIMEOUT, CRASH]
     TIMEOUT
   [opener:basic, openee:basic, sw:basic]
     expected: TIMEOUT
 
   [opener:basic, openee:basic, sw:coi]
     expected: NOTRUN
 
@@ -15,18 +14,17 @@
     expected: NOTRUN
 
   [opener:basic, openee:coi, sw:coi]
     expected: NOTRUN
 
 
 [popup-coop-by-sw.https.html?5-last]
   expected:
-    if (os == "linux") and debug and not fission and not swgl: [TIMEOUT, CRASH]
-    if (os == "linux") and debug and not fission and swgl: [CRASH, TIMEOUT]
+    if (os == "linux") and debug and not fission: [CRASH, TIMEOUT]
     if (os == "linux") and debug and fission: [CRASH, TIMEOUT]
     if (os == "win") and debug: [TIMEOUT, CRASH]
     TIMEOUT
   [opener:coi, openee:basic, sw:basic]
     expected: TIMEOUT
 
   [opener:coi, openee:basic, sw:coi]
     expected: NOTRUN
--- a/testing/web-platform/meta/html/cross-origin-opener-policy/popup-redirect-cache.https.html.ini
+++ b/testing/web-platform/meta/html/cross-origin-opener-policy/popup-redirect-cache.https.html.ini
@@ -43,56 +43,55 @@
     expected:
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
 
 [popup-redirect-cache.https.html?4-5]
   prefs: [network.cookie.cookieBehavior:4]
   expected:
+    if (os == "android") and debug and not swgl: [OK, TIMEOUT, CRASH]
+    if (os == "android") and debug and swgl: [OK, TIMEOUT, CRASH]
+    if (os == "linux") and fission: [OK, TIMEOUT]
     if (os == "android") and not debug: [OK, TIMEOUT, CRASH]
-    if (os == "android") and debug: [OK, TIMEOUT, CRASH]
-    if (os == "linux") and fission: [OK, TIMEOUT]
   [same-origin document opening popup redirect from https://not-web-platform.test:8443 to https://web-platform.test:8443 with redirectCache true and destCache true]
     expected:
       if (os == "linux") and fission: [PASS, TIMEOUT]
 
   [same-origin document opening popup redirect from https://not-web-platform.test:8443 to https://web-platform.test:8443 with redirectCache false and destCache true]
     expected:
       if (os == "linux") and fission: [PASS, TIMEOUT]
 
 
 [popup-redirect-cache.https.html?2-3]
   prefs: [network.cookie.cookieBehavior:4]
   expected:
     if (os == "win") and debug and (processor == "x86_64") and swgl: OK
+    if (os == "win") and debug and (processor == "x86"): OK
     if (os == "linux") and fission and (processor == "x86"): OK
-    if (os == "win") and debug and (processor == "x86"): OK
-    if (os == "linux") and not fission: OK
     if (os == "win") and not debug: OK
     if (os == "android") and not debug: [OK, TIMEOUT, CRASH]
+    if (os == "linux") and not fission: OK
     [OK, TIMEOUT]
   [same-origin document opening popup redirect from https://web-platform.test:8443 to https://not-web-platform.test:8443 with redirectCache true and destCache true]
     expected:
       if fission and (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if fission and (os == "linux") and (processor == "x86_64"): [PASS, TIMEOUT]
       if fission and (os == "mac"): [PASS, TIMEOUT]
 
   [same-origin document opening popup redirect from https://not-web-platform.test:8443 to https://web-platform.test:8443 with redirectCache true and destCache false]
     expected:
       if (os == "linux") and fission and (processor == "x86_64"): [PASS, TIMEOUT]
 
 
 [popup-redirect-cache.https.html?6-7]
   prefs: [network.cookie.cookieBehavior:4]
   expected:
     if (os == "win") and debug and (processor == "x86_64") and not swgl: [OK, TIMEOUT]
-    if (os == "android") and debug and swgl: [OK, TIMEOUT, CRASH]
-    if (os == "android") and debug and not swgl: [OK, TIMEOUT, CRASH]
-    if (os == "android") and not debug: [OK, TIMEOUT, CRASH]
+    if os == "android": [OK, TIMEOUT, CRASH]
     if os == "mac": [OK, TIMEOUT]
   [same-origin document opening popup redirect from https://www1.web-platform.test:8443 to https://not-web-platform.test:8443 with redirectCache false and destCache true]
     expected:
       if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if os == "mac": [PASS, TIMEOUT]
 
   [same-origin document opening popup redirect from https://www1.web-platform.test:8443 to https://not-web-platform.test:8443 with redirectCache true and destCache false]
     expected:
@@ -113,10 +112,10 @@
     expected:
       if fission and (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
       if fission and (os == "mac"): [PASS, TIMEOUT]
       if fission and (os == "linux"): [PASS, TIMEOUT]
 
   [same-origin document opening popup redirect from https://web-platform.test:8443 to https://not-web-platform.test:8443 with redirectCache false and destCache true]
     expected:
       if fission and (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, TIMEOUT]
+      if fission and (os == "linux"): [PASS, TIMEOUT]
       if fission and (os == "mac"): [PASS, TIMEOUT]
-      if fission and (os == "linux"): [PASS, TIMEOUT]
--- a/testing/web-platform/meta/html/cross-origin-opener-policy/popup-with-structured-header.https.html.ini
+++ b/testing/web-platform/meta/html/cross-origin-opener-policy/popup-with-structured-header.https.html.ini
@@ -1,3 +1,5 @@
 [popup-with-structured-header.https.html]
   expected:
-    if os == "android": [OK, ERROR, TIMEOUT]
+    if (os == "android") and debug and not swgl: [OK, TIMEOUT, ERROR]
+    if (os == "android") and debug and swgl: [OK, ERROR, TIMEOUT]
+    if (os == "android") and not debug: [OK, ERROR, TIMEOUT]
--- a/testing/web-platform/meta/html/cross-origin-opener-policy/resource-popup.https.html.ini
+++ b/testing/web-platform/meta/html/cross-origin-opener-policy/resource-popup.https.html.ini
@@ -1,21 +1,18 @@
 [resource-popup.https.html]
   expected: [OK, TIMEOUT]
   [/common/dummy.xml - parent COOP: ""; child COOP: "same-origin"]
     expected:
-      if (os == "android") and debug and swgl: [FAIL, PASS, TIMEOUT]
-      if (os == "android") and debug and not swgl: [FAIL, PASS, TIMEOUT]
+      if (os == "linux") and debug and fission and not swgl: [FAIL, PASS, TIMEOUT]
       if (os == "android") and not debug: [FAIL, PASS, TIMEOUT]
       [PASS, FAIL, TIMEOUT]
 
   [/images/red.png - parent COOP: ""; child COOP: "same-origin"]
-    expected:
-      if (os == "android") and debug and not swgl: [FAIL, PASS, TIMEOUT]
-      [PASS, FAIL, TIMEOUT]
+    expected: [PASS, FAIL, TIMEOUT]
 
   [/media/2x2-green.mp4 - parent COOP: ""; child COOP: "same-origin"]
     expected: [PASS, TIMEOUT]
 
   [/common/text-plain.txt - parent COOP: ""; child COOP: "same-origin"]
     expected: [PASS, FAIL, TIMEOUT]
 
   [/common/text-plain.txt - parent COOP: "same-origin"; child COOP: "same-origin"]
--- a/testing/web-platform/meta/html/dom/render-blocking/script-inserted-preload-link.tentative.html.ini
+++ b/testing/web-platform/meta/html/dom/render-blocking/script-inserted-preload-link.tentative.html.ini
@@ -1,11 +1,6 @@
 [script-inserted-preload-link.tentative.html]
   [Rendering is blocked before render-blocking resources are loaded]
-    expected:
-      if debug and (os == "linux") and not fission and not swgl: [FAIL, PASS]
-      if debug and (os == "win") and (processor == "x86_64") and not swgl: [FAIL, PASS]
-      [PASS, FAIL]
+    expected: [PASS, FAIL]
 
   [Render-blocking web font is applied]
-    expected:
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [FAIL, PASS]
-      [PASS, FAIL]
+    expected: [PASS, FAIL]
--- a/testing/web-platform/meta/html/dom/render-blocking/stylesheet-header-inserted-preload-link.tentative.html.ini
+++ b/testing/web-platform/meta/html/dom/render-blocking/stylesheet-header-inserted-preload-link.tentative.html.ini
@@ -2,21 +2,20 @@
   expected:
     if not fission and (os == "linux") and debug and swgl: [OK, TIMEOUT]
     if not fission and (os == "linux") and debug and not swgl: OK
     if not fission and (os == "linux") and not debug: [TIMEOUT, OK]
     if not fission and (os == "android"): OK
     TIMEOUT
   [Rendering is blocked before render-blocking resources are loaded]
     expected:
-      if (os == "linux") and not fission and debug and not swgl: [FAIL, PASS]
-      if (os == "linux") and not fission and debug and swgl: [PASS, FAIL]
+      if (os == "linux") and not fission and debug: [PASS, FAIL]
       if (os == "linux") and not fission and not debug: [FAIL, PASS]
       if os == "android": PASS
       FAIL
 
   [Render-blocking web font specified by the stylesheet is applied]
     expected:
+      if (os == "linux") and not fission and debug and swgl: [PASS, TIMEOUT]
       if (os == "linux") and not fission and debug and not swgl: [PASS, FAIL]
-      if (os == "linux") and not fission and debug and swgl: [PASS, TIMEOUT]
       if (os == "linux") and not fission and not debug: [TIMEOUT, PASS]
       if os == "android": PASS
       TIMEOUT
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html.ini
@@ -39,35 +39,39 @@
 
 [utf-16be.html?include=svg]
 
 [utf-16be.html?include=submit]
 
 [utf-16be.html?include=xhr]
 
 [utf-16be.html?include=workers]
-  expected: [OK, TIMEOUT]
+  expected:
+    if (os == "win") and (processor == "x86") and debug: [TIMEOUT, OK]
+    [OK, TIMEOUT]
   [SharedWorker() in a shared worker]
     expected: FAIL
 
   [importScripts() in a shared worker]
     expected:
       if os == "mac": [FAIL, TIMEOUT]
       FAIL
 
   [SharedWorker constructor]
-    expected: [PASS, TIMEOUT]
+    expected:
+      if (os == "win") and (processor == "x86") and debug: [TIMEOUT, PASS]
+      [PASS, TIMEOUT]
 
   [SharedWorker() in a dedicated worker]
     expected: FAIL
 
   [Worker() in a shared worker]
     expected:
+      if os == "mac": [PASS, TIMEOUT]
       if os == "win": [PASS, TIMEOUT]
-      if os == "mac": [PASS, TIMEOUT]
 
 
 [utf-16be.html?include=nested-browsing]
 
 [utf-16be.html?include=eventsource]
 
 [utf-16be.html?include=base-href]
 
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html.ini
@@ -38,29 +38,29 @@
 [utf-16le.html?include=xml]
 
 [utf-16le.html?include=base-href]
 
 [utf-16le.html?include=css]
 
 [utf-16le.html?include=workers]
   expected:
-    if fission and (os == "linux") and debug and not swgl: [TIMEOUT, OK]
+    if (os == "linux") and not fission and not swgl and debug: [TIMEOUT, OK]
     [OK, TIMEOUT]
   [SharedWorker() in a shared worker]
     expected: FAIL
 
   [importScripts() in a shared worker]
     expected:
       if os == "mac": [FAIL, TIMEOUT]
       FAIL
 
   [SharedWorker constructor]
     expected:
-      if fission and (os == "linux") and debug and not swgl: [TIMEOUT, PASS]
+      if (os == "linux") and not fission and not swgl and debug: [TIMEOUT, PASS]
       [PASS, TIMEOUT]
 
   [SharedWorker() in a dedicated worker]
     expected: FAIL
 
   [Worker() in a shared worker]
     expected:
       if os == "linux": [PASS, TIMEOUT]
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html.ini
@@ -28,33 +28,29 @@
 
 [utf-8.html?include=xmldocument]
   [XMLDocument#load()]
     expected: FAIL
 
 
 [utf-8.html?include=workers]
   expected:
-    if debug and (os == "linux") and fission and swgl: [TIMEOUT, OK]
-    if debug and (os == "win") and swgl: [TIMEOUT, OK]
-    if debug and (os == "mac"): [TIMEOUT, OK]
+    if (processor == "x86_64") and not fission and swgl and (os == "linux"): [TIMEOUT, OK]
     [OK, TIMEOUT]
   [SharedWorker() in a shared worker]
     expected: FAIL
 
   [importScripts() in a shared worker]
     expected:
       if (os == "linux") and fission: FAIL
       [FAIL, TIMEOUT]
 
   [SharedWorker constructor]
     expected:
-      if debug and (os == "linux") and fission and swgl: [TIMEOUT, PASS]
-      if debug and (os == "win") and swgl: [TIMEOUT, PASS]
-      if debug and (os == "mac"): [TIMEOUT, PASS]
+      if (processor == "x86_64") and not fission and swgl and (os == "linux"): [TIMEOUT, PASS]
       [PASS, TIMEOUT]
 
   [SharedWorker() in a dedicated worker]
     expected: FAIL
 
 
 [utf-8.html?include=websocket]
 
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html.ini
@@ -282,34 +282,32 @@
 
 [windows-1251.html?include=xhr]
   [XMLHttpRequest#open()]
     expected: FAIL
 
 
 [windows-1251.html?include=workers]
   expected:
-    if (os == "linux") and (processor == "x86_64") and not swgl and not fission and not debug: [TIMEOUT, OK]
-    if (os == "linux") and (processor == "x86_64") and not swgl and fission and debug: [TIMEOUT, OK]
-    if (os == "win") and not debug and (processor == "x86_64"): [TIMEOUT, OK]
+    if (os == "linux") and (processor == "x86_64") and debug and not fission and not swgl: [TIMEOUT, OK]
+    if (os == "linux") and (processor == "x86_64") and not debug and fission: [TIMEOUT, OK]
     if (os == "linux") and (processor == "x86"): [TIMEOUT, OK]
     [OK, TIMEOUT]
   [SharedWorker() in a shared worker]
     expected: FAIL
 
   [importScripts() in a shared worker]
     expected:
       if os == "win": [FAIL, TIMEOUT]
       FAIL
 
   [SharedWorker constructor]
     expected:
-      if (os == "linux") and (processor == "x86_64") and not swgl and not fission and not debug: [TIMEOUT, PASS]
-      if (os == "linux") and (processor == "x86_64") and not swgl and fission and debug: [TIMEOUT, PASS]
-      if (os == "win") and not debug and (processor == "x86_64"): [TIMEOUT, PASS]
+      if (os == "linux") and (processor == "x86_64") and debug and not fission and not swgl: [TIMEOUT, PASS]
+      if (os == "linux") and (processor == "x86_64") and not debug and fission: [TIMEOUT, PASS]
       if (os == "linux") and (processor == "x86"): [TIMEOUT, PASS]
       [PASS, TIMEOUT]
 
   [SharedWorker() in a dedicated worker]
     expected: FAIL
 
   [Worker() in a shared worker]
     expected:
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html.ini
@@ -109,36 +109,28 @@
 
   [EventSource#url]
     expected: FAIL
 
 
 [windows-1252.html?include=css]
 
 [windows-1252.html?include=workers]
-  expected:
-    if (os == "linux") and fission and (processor == "x86_64") and not swgl and not debug: [TIMEOUT, OK]
-    if (os == "linux") and not fission and debug and not swgl: [TIMEOUT, OK]
-    if (os == "linux") and fission and (processor == "x86_64") and swgl: [TIMEOUT, OK]
-    [OK, TIMEOUT]
+  expected: [OK, TIMEOUT]
   [SharedWorker() in a shared worker]
     expected: FAIL
 
   [importScripts() in a shared worker]
     expected:
       if os == "mac": FAIL
       if os == "android": FAIL
       [FAIL, TIMEOUT]
 
   [SharedWorker constructor]
-    expected:
-      if (os == "linux") and fission and (processor == "x86_64") and not swgl and not debug: [TIMEOUT, PASS]
-      if (os == "linux") and not fission and debug and not swgl: [TIMEOUT, PASS]
-      if (os == "linux") and fission and (processor == "x86_64") and swgl: [TIMEOUT, PASS]
-      [PASS, TIMEOUT]
+    expected: [PASS, TIMEOUT]
 
   [SharedWorker() in a dedicated worker]
     expected: FAIL
 
   [Worker() in a shared worker]
     expected:
       if os == "win": [PASS, TIMEOUT]
 
--- a/testing/web-platform/meta/html/interaction/focus/document-level-focus-apis/document-has-system-focus.html.ini
+++ b/testing/web-platform/meta/html/interaction/focus/document-level-focus-apis/document-has-system-focus.html.ini
@@ -1,18 +1,16 @@
 [document-has-system-focus.html]
   expected:
-    if (os == "win") and (processor == "x86_64") and debug and swgl: [OK, TIMEOUT]
+    if (os == "linux") and fission and (processor == "x86_64") and swgl: [OK, TIMEOUT]
     if (os == "linux") and fission and (processor == "x86"): [OK, TIMEOUT]
-    if (os == "win") and (processor == "x86_64") and not debug: [OK, TIMEOUT]
-    if (os == "win") and (processor == "x86") and not debug: [OK, TIMEOUT]
     if (os == "linux") and not fission: [OK, TIMEOUT]
+    if (os == "win") and not debug: [OK, TIMEOUT]
     if os == "android": OK
     [TIMEOUT, OK]
   [Top-level document receives blur/focus events and loses system focus during opening/closing of a popup]
     expected:
-      if (os == "win") and (processor == "x86_64") and debug and swgl: [PASS, TIMEOUT]
+      if (os == "linux") and fission and (processor == "x86_64") and swgl: [PASS, TIMEOUT]
       if (os == "linux") and fission and (processor == "x86"): [PASS, TIMEOUT]
-      if (os == "win") and (processor == "x86") and not debug: [PASS, TIMEOUT]
-      if (os == "win") and (processor == "x86_64") and not debug: [PASS, TIMEOUT]
+      if (os == "win") and not debug: [PASS, TIMEOUT]
       if (os == "linux") and not fission: [PASS, TIMEOUT]
       if os == "android": PASS
       [TIMEOUT, PASS]
--- a/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/document-with-fragment-empty.html.ini
+++ b/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/document-with-fragment-empty.html.ini
@@ -1,7 +1,6 @@
 [document-with-fragment-empty.html]
   [Autofocus elements in iframed documents with empty fragments should work.]
     expected:
-      if (os == "win") and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "win") and not debug and (processor == "x86"): [PASS, FAIL]
-      if (os == "win") and debug and (processor == "x86_64"): [PASS, FAIL]
+      if (os == "win") and (processor == "x86") and not debug: [PASS, FAIL]
       if (os == "mac") and not debug: [PASS, FAIL]
+      if (os == "win") and (processor == "x86_64"): [PASS, FAIL]
--- a/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/first-when-later-but-before.html.ini
+++ b/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/first-when-later-but-before.html.ini
@@ -1,5 +1,3 @@
 [first-when-later-but-before.html]
   [The temporally first autofocus in the document wins, even if an element is inserted later that is previous in the document tree.]
-    expected:
-      if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
-      [PASS, FAIL]
+    expected: [PASS, FAIL]
--- a/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/focusable-area-in-top-document.html.ini
+++ b/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/focusable-area-in-top-document.html.ini
@@ -1,6 +1,6 @@
 [focusable-area-in-top-document.html]
   [If topDocument's focused area is not topDocument, autofocus is not processed.]
     expected:
-      if (os == "win") and (processor == "x86_64") and debug and not swgl: [FAIL, PASS]
-      if (os == "android") and debug and not swgl: [FAIL, PASS]
+      if (os == "linux") and swgl and fission: [FAIL, PASS]
+      if (os == "android") and not debug: [FAIL, PASS]
       [PASS, FAIL]
--- a/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html.ini
+++ b/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html.ini
@@ -1,5 +1,3 @@
 [no-autofocus-on-changing-input-type.html]
   [Changing input type should not refocus on the element.]
-    expected:
-      if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
-      [PASS, FAIL]
+    expected: [PASS, FAIL]
--- a/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/queue-non-focusable.html.ini
+++ b/testing/web-platform/meta/html/interaction/focus/the-autofocus-attribute/queue-non-focusable.html.ini
@@ -1,9 +1,10 @@
 [queue-non-focusable.html]
   [If the first autofocus element is not focusable, but becomes focusable before a frame, it should be focused.]
     expected:
       if debug and (os == "win") and (processor == "x86_64") and swgl: PASS
       if debug and (os == "win") and (processor == "x86"): PASS
-      if debug and (os == "linux"): PASS
+      if not debug and (os == "mac"): [FAIL, PASS]
+      if debug and (os == "android"): PASS
       if debug and (os == "mac"): PASS
-      if debug and (os == "android"): PASS
+      if debug and (os == "linux"): PASS
       [PASS, FAIL]
--- a/testing/web-platform/meta/html/rendering/widgets/appearance/appearance-transition-001.html.ini
+++ b/testing/web-platform/meta/html/rendering/widgets/appearance/appearance-transition-001.html.ini
@@ -1,7 +1,7 @@
 [appearance-transition-001.html]
   expected:
-    if (os == "linux") and debug and swgl and fission: [PASS, ERROR]
-    if (os == "linux") and debug and swgl and not fission: [ERROR, PASS]
     if (os == "win") and not swgl and debug and (processor == "x86_64"): [PASS, ERROR, TIMEOUT]
-    if (os == "linux") and debug and not swgl: [PASS, ERROR]
+    if (os == "linux") and debug and not fission and swgl: [PASS, ERROR]
+    if (os == "linux") and debug and not fission and not swgl: [PASS, ERROR]
+    if (os == "linux") and debug and fission: [PASS, ERROR]
     if (os == "win") and swgl: [PASS, TIMEOUT]
--- a/testing/web-platform/meta/html/semantics/forms/input-change-event-properties.html.ini
+++ b/testing/web-platform/meta/html/semantics/forms/input-change-event-properties.html.ini
@@ -1,12 +1,12 @@
 [input-change-event-properties.html]
   expected:
     if os == "android": [OK, ERROR]
   [<select> pressing down arrow]
     expected:
+      if (os == "android") and not debug: [PASS, FAIL]
       if (os == "android") and debug: [PASS, FAIL]
-      if (os == "android") and not debug: [PASS, FAIL]
       if os == "mac": FAIL
 
   [<textarea></textarea> typing]
     expected:
       if os == "android": [PASS, FAIL]
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-classic.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-classic.html.ini
@@ -1,11 +1,11 @@
 [after-prepare-createHTMLDocument-fetch-error-external-classic.html]
   [<script> error: Move fetch-error external classic script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
-      if (os == "mac") and not debug: PASS
       if (os == "win") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
+      if (os == "mac") and not debug: PASS
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-module.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-module.html.ini
@@ -1,11 +1,11 @@
 [after-prepare-createHTMLDocument-fetch-error-external-module.html]
   [<script> error: Move fetch-error external module script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "mac") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
-      if (os == "mac") and not debug: PASS
       if (os == "win") and not debug: PASS
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-classic.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-classic.html.ini
@@ -1,22 +1,22 @@
 [after-prepare-createHTMLDocument-parse-error-external-classic.html]
   [<script> load: Move parse-error external classic script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
       if (os == "win") and not debug: PASS
+      if (os == "linux") and debug: [FAIL, PASS]
       if (os == "mac") and not debug: PASS
-      if (os == "linux") and debug: [FAIL, PASS]
       FAIL
 
   [window error: Move parse-error external classic script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "mac") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
-      if (os == "mac") and not debug: PASS
       if (os == "win") and not debug: PASS
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-module.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-module.html.ini
@@ -1,22 +1,22 @@
 [after-prepare-createHTMLDocument-parse-error-external-module.html]
   [window error: Move parse-error external module script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
+      if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "linux") and debug: [FAIL, PASS]
+      if (os == "win") and not debug: PASS
+      if (os == "mac") and not debug: PASS
+      FAIL
+
+  [<script> load: Move parse-error external module script to createHTMLDocument after-prepare]
+    expected:
+      if (os == "win") and ccov: FAIL
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
       if (os == "linux") and debug: [FAIL, PASS]
+      if (os == "win") and not debug: PASS
       if (os == "mac") and not debug: PASS
-      if (os == "win") and not debug: PASS
       FAIL
-
-  [<script> load: Move parse-error external module script to createHTMLDocument after-prepare]
-    expected:
-      if (os == "win") and ccov: FAIL
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and not debug and not fission: [PASS, FAIL]
-      if (os == "linux") and debug: [FAIL, PASS]
-      if (os == "mac") and not debug: PASS
-      if (os == "win") and not debug: PASS
-      FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-classic.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-classic.html.ini
@@ -1,22 +1,22 @@
 [after-prepare-createHTMLDocument-success-external-classic.html]
   [Eval: Move success external classic script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
       if (os == "mac") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
       if (os == "win") and not debug: PASS
       FAIL
 
   [<script> load: Move success external classic script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "win") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
       if (os == "mac") and not debug: PASS
-      if (os == "win") and not debug: PASS
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-module.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-module.html.ini
@@ -1,22 +1,22 @@
 [after-prepare-createHTMLDocument-success-external-module.html]
   [<script> load: Move success external module script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
-      if (os == "win") and not debug: PASS
+      if (os == "mac") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
-      if (os == "mac") and not debug: PASS
+      if (os == "win") and not debug: PASS
       FAIL
 
   [Eval: Move success external module script to createHTMLDocument after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "linux") and debug: [FAIL, PASS]
       if (os == "mac") and not debug: PASS
       if (os == "win") and not debug: PASS
-      if (os == "linux") and debug: [FAIL, PASS]
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-classic.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-classic.html.ini
@@ -1,32 +1,32 @@
 [after-prepare-iframe-parse-error-external-classic.html]
   [<script> load: Move parse-error external classic script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
-      if (os == "mac") and not debug: PASS
+      if (os == "linux") and debug: [FAIL, PASS]
       if (os == "win") and not debug: PASS
-      if (os == "linux") and debug: [FAIL, PASS]
+      if (os == "mac") and not debug: PASS
       FAIL
 
   [window error: Move parse-error external classic script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
-      if (os == "mac") and not debug: PASS
       if (os == "win") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
+      if (os == "mac") and not debug: PASS
       FAIL
 
   [<script> error: Move parse-error external classic script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: PASS
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, FAIL]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, FAIL]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, FAIL]
+      if (os == "linux") and (processor == "x86"): [FAIL, PASS]
       if (os == "mac") and not debug: FAIL
-      if (os == "linux") and (processor == "x86"): [FAIL, PASS]
       if (os == "win") and not debug: FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-module.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-module.html.ini
@@ -1,32 +1,32 @@
 [after-prepare-iframe-parse-error-external-module.html]
   [<script> error: Move parse-error external module script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: PASS
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, FAIL]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, FAIL]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, FAIL]
-      if (os == "win") and not debug: FAIL
       if (os == "linux") and (processor == "x86"): [FAIL, PASS]
       if (os == "mac") and not debug: FAIL
+      if (os == "win") and not debug: FAIL
 
   [window error: Move parse-error external module script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
       if (os == "linux") and debug: [FAIL, PASS]
+      if (os == "mac") and not debug: PASS
       if (os == "win") and not debug: PASS
-      if (os == "mac") and not debug: PASS
       FAIL
 
   [<script> load: Move parse-error external module script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "linux") and debug: [FAIL, PASS]
       if (os == "mac") and not debug: PASS
       if (os == "win") and not debug: PASS
-      if (os == "linux") and debug: [FAIL, PASS]
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-inline-classic.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-inline-classic.html.ini
@@ -1,11 +1,11 @@
 [after-prepare-iframe-parse-error-inline-classic.html]
   [window error: Move parse-error inline classic script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "mac") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
       if (os == "win") and not debug: PASS
-      if (os == "mac") and not debug: PASS
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-classic.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-classic.html.ini
@@ -1,35 +1,35 @@
 [after-prepare-iframe-success-external-classic.html]
   [<script> error: Move success external classic script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: PASS
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, FAIL]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, FAIL]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, FAIL]
+      if (os == "linux") and (processor == "x86"): [FAIL, PASS]
       if (os == "win") and not debug: FAIL
-      if (os == "linux") and (processor == "x86"): [FAIL, PASS]
       if (os == "mac") and not debug: [FAIL, PASS]
       if (os == "mac") and debug: [PASS, FAIL]
 
   [<script> load: Move success external classic script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "mac") and debug: [FAIL, PASS]
       if (os == "mac") and not debug: [PASS, FAIL]
-      if (os == "mac") and debug: [FAIL, PASS]
       if (os == "linux") and debug: [FAIL, PASS]
       if (os == "win") and not debug: PASS
       FAIL
 
   [Eval: Move success external classic script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
       if (os == "win") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
       if (os == "mac") and debug: [FAIL, PASS]
       if (os == "mac") and not debug: [PASS, FAIL]
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-module.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-module.html.ini
@@ -1,32 +1,32 @@
 [after-prepare-iframe-success-external-module.html]
   [<script> load: Move success external module script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
-      if (os == "mac") and not debug: PASS
+      if (os == "win") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
-      if (os == "win") and not debug: PASS
+      if (os == "mac") and not debug: PASS
       FAIL
 
   [Eval: Move success external module script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
-      if (os == "mac") and not debug: PASS
       if (os == "linux") and debug: [FAIL, PASS]
       if (os == "win") and not debug: PASS
+      if (os == "mac") and not debug: PASS
       FAIL
 
   [<script> error: Move success external module script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: PASS
+      if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, FAIL]
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, FAIL]
-      if (os == "linux") and (processor == "x86_64") and not debug and fission: [PASS, FAIL]
       if (os == "linux") and (processor == "x86_64") and debug: [PASS, FAIL]
+      if (os == "mac") and not debug: FAIL
       if (os == "linux") and (processor == "x86"): [FAIL, PASS]
-      if (os == "mac") and not debug: FAIL
       if (os == "win") and not debug: FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-inline-classic.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-inline-classic.html.ini
@@ -1,11 +1,11 @@
 [after-prepare-iframe-success-inline-classic.html]
   [Eval: Move success inline classic script to iframe after-prepare]
     expected:
       if (os == "win") and ccov: FAIL
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, FAIL]
       if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "mac") and not debug: PASS
+      if (os == "linux") and debug: [FAIL, PASS]
       if (os == "win") and not debug: PASS
-      if (os == "linux") and debug: [FAIL, PASS]
-      if (os == "mac") and not debug: PASS
       FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-fetch-error-external-classic.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-fetch-error-external-classic.html.ini
@@ -1,6 +1,6 @@
 [before-prepare-iframe-fetch-error-external-classic.html]
   [<script> error: Move fetch-error external classic script to iframe before-prepare]
     expected:
+      if os == "win": PASS
       if os == "android": PASS
-      if os == "win": PASS
       [PASS, FAIL]
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-1.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-1.html.ini
@@ -1,9 +1,9 @@
 [delay-load-event-1.html]
   expected:
     if (os == "linux") and not debug and fission and (processor == "x86"): [OK, ERROR]
-    if (os == "win") and debug and (processor == "x86"): ERROR
     if (os == "linux") and not debug and not fission: [OK, ERROR]
+    if (os == "mac") and debug: [OK, ERROR]
+    if (os == "mac") and not debug: OK
     if (os == "win") and not debug: OK
-    if (os == "mac") and not debug: OK
     if os == "android": ERROR
     [ERROR, OK]
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-2.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-2.html.ini
@@ -1,2 +1,5 @@
 [delay-load-event-2.html]
-  expected: [OK, ERROR]
+  expected:
+    if (os == "android") and debug and swgl: [ERROR, OK]
+    if (os == "android") and not debug: [ERROR, OK]
+    [OK, ERROR]
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/in-order.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/in-order.html.ini
@@ -1,9 +1,9 @@
 [in-order.html]
   expected:
+    if (os == "linux") and not debug and fission and (processor == "x86_64"): [ERROR, OK]
     if (os == "linux") and not debug and fission and (processor == "x86"): [OK, ERROR]
-    if (os == "linux") and not debug and fission and (processor == "x86_64"): [ERROR, OK]
     if (os == "linux") and not debug and not fission: [OK, ERROR]
+    if (os == "linux") and debug: [ERROR, OK]
+    if (os == "win") and not debug: OK
     if (os == "mac") and not debug: OK
-    if (os == "win") and not debug: OK
-    if (os == "linux") and debug: [ERROR, OK]
     ERROR
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/parser-blocking.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/parser-blocking.html.ini
@@ -1,10 +1,9 @@
 [parser-blocking.html]
   expected:
     if (os == "linux") and not debug and fission and (processor == "x86"): [OK, ERROR]
-    if (os == "linux") and not debug and fission and (processor == "x86_64"): [ERROR, OK]
+    if (os == "win") and debug and (processor == "x86_64") and swgl: ERROR
     if (os == "linux") and not debug and not fission: [OK, ERROR]
-    if (os == "linux") and debug: [ERROR, OK]
-    if (os == "mac") and debug: [ERROR, OK]
+    if (os == "win") and not debug: OK
     if (os == "mac") and not debug: OK
-    if (os == "win") and not debug: OK
-    ERROR
+    if os == "android": ERROR
+    [ERROR, OK]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js-svg.svg.ini
@@ -0,0 +1,480 @@
+[script-type-and-language-js-svg.svg]
+  [Script should run with type="application/ecmascript "]
+    expected: FAIL
+
+  [Script should run with type="application/javascript "]
+    expected: FAIL
+
+  [Script should run with type="application/x-ecmascript "]
+    expected: FAIL
+
+  [Script should run with type="application/x-javascript "]
+    expected: FAIL
+
+  [Script should run with type=" application/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type=" application/javascript"]
+    expected: FAIL
+
+  [Script should run with type=" application/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type=" application/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="application/ecmascript\\t"]
+    expected: FAIL
+
+  [Script should run with type="application/javascript\\t"]
+    expected: FAIL
+
+  [Script should run with type="application/x-ecmascript\\t"]
+    expected: FAIL
+
+  [Script should run with type="application/x-javascript\\t"]
+    expected: FAIL
+
+  [Script should run with type="\\tapplication/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\tapplication/javascript"]
+    expected: FAIL
+
+  [Script should run with type="\\tapplication/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\tapplication/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="application/ecmascript\\n"]
+    expected: FAIL
+
+  [Script should run with type="application/javascript\\n"]
+    expected: FAIL
+
+  [Script should run with type="application/x-ecmascript\\n"]
+    expected: FAIL
+
+  [Script should run with type="application/x-javascript\\n"]
+    expected: FAIL
+
+  [Script should run with type="\\napplication/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\napplication/javascript"]
+    expected: FAIL
+
+  [Script should run with type="\\napplication/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\napplication/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="application/ecmascript\\r"]
+    expected: FAIL
+
+  [Script should run with type="application/javascript\\r"]
+    expected: FAIL
+
+  [Script should run with type="application/x-ecmascript\\r"]
+    expected: FAIL
+
+  [Script should run with type="application/x-javascript\\r"]
+    expected: FAIL
+
+  [Script should run with type="\\rapplication/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\rapplication/javascript"]
+    expected: FAIL
+
+  [Script should run with type="\\rapplication/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\rapplication/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="application/ecmascript\\f"]
+    expected: FAIL
+
+  [Script should run with type="application/javascript\\f"]
+    expected: FAIL
+
+  [Script should run with type="application/x-ecmascript\\f"]
+    expected: FAIL
+
+  [Script should run with type="application/x-javascript\\f"]
+    expected: FAIL
+
+  [Script should run with type="\\fapplication/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\fapplication/javascript"]
+    expected: FAIL
+
+  [Script should run with type="\\fapplication/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\fapplication/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="text/ecmascript "]
+    expected: FAIL
+
+  [Script should run with type="text/javascript "]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.0 "]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.1 "]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.2 "]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.3 "]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.4 "]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.5 "]
+    expected: FAIL
+
+  [Script should run with type="text/jscript "]
+    expected: FAIL
+
+  [Script should run with type="text/livescript "]
+    expected: FAIL
+
+  [Script should run with type="text/x-ecmascript "]
+    expected: FAIL
+
+  [Script should run with type="text/x-javascript "]
+    expected: FAIL
+
+  [Script should run with type=" text/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type=" text/javascript"]
+    expected: FAIL
+
+  [Script should run with type=" text/javascript1.0"]
+    expected: FAIL
+
+  [Script should run with type=" text/javascript1.1"]
+    expected: FAIL
+
+  [Script should run with type=" text/javascript1.2"]
+    expected: FAIL
+
+  [Script should run with type=" text/javascript1.3"]
+    expected: FAIL
+
+  [Script should run with type=" text/javascript1.4"]
+    expected: FAIL
+
+  [Script should run with type=" text/javascript1.5"]
+    expected: FAIL
+
+  [Script should run with type=" text/jscript"]
+    expected: FAIL
+
+  [Script should run with type=" text/livescript"]
+    expected: FAIL
+
+  [Script should run with type=" text/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type=" text/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="text/ecmascript\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.0\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.1\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.2\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.3\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.4\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.5\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/jscript\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/livescript\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/x-ecmascript\\t"]
+    expected: FAIL
+
+  [Script should run with type="text/x-javascript\\t"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/javascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/javascript1.0"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/javascript1.1"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/javascript1.2"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/javascript1.3"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/javascript1.4"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/javascript1.5"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/jscript"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/livescript"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ttext/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="text/ecmascript\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.0\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.1\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.2\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.3\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.4\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.5\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/jscript\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/livescript\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/x-ecmascript\\n"]
+    expected: FAIL
+
+  [Script should run with type="text/x-javascript\\n"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/javascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/javascript1.0"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/javascript1.1"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/javascript1.2"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/javascript1.3"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/javascript1.4"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/javascript1.5"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/jscript"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/livescript"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ntext/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="text/ecmascript\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.0\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.1\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.2\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.3\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.4\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.5\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/jscript\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/livescript\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/x-ecmascript\\r"]
+    expected: FAIL
+
+  [Script should run with type="text/x-javascript\\r"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/javascript"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/javascript1.0"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/javascript1.1"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/javascript1.2"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/javascript1.3"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/javascript1.4"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/javascript1.5"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/jscript"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/livescript"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\rtext/x-javascript"]
+    expected: FAIL
+
+  [Script should run with type="text/ecmascript\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.0\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.1\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.2\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.3\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.4\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/javascript1.5\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/jscript\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/livescript\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/x-ecmascript\\f"]
+    expected: FAIL
+
+  [Script should run with type="text/x-javascript\\f"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/javascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/javascript1.0"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/javascript1.1"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/javascript1.2"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/javascript1.3"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/javascript1.4"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/javascript1.5"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/jscript"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/livescript"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/x-ecmascript"]
+    expected: FAIL
+
+  [Script should run with type="\\ftext/x-javascript"]
+    expected: FAIL
copy from testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html.ini
copy to testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js-xhtml.xhtml.ini
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/script-type-and-language-js-xhtml.xhtml.ini
@@ -1,9 +1,9 @@
-[script-type-and-language-js.html]
+[script-type-and-language-js-xhtml.xhtml]
   [Script shouldn't run with type=" "]
     expected: FAIL
 
   [Script should run with language="ecmascript"]
     expected: FAIL
 
   [Script should run with language="jscript"]
     expected: FAIL
@@ -20,9 +20,8 @@
   [Script should run with language="JSCRIPT"]
     expected: FAIL
 
   [Script should run with language="X-ECMASCRIPT"]
     expected: FAIL
 
   [Script should run with language="X-JAVASCRIPT"]
     expected: FAIL
-
--- a/testing/web-platform/meta/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html.ini
+++ b/testing/web-platform/meta/html/syntax/speculative-parsing/generated/page-load/img-srcset.tentative.html.ini
@@ -1,6 +1,6 @@
 [img-srcset.tentative.html]
   [Speculative parsing, page load: img-srcset]
     expected:
-      if (os == "win") and not swgl and not debug and (processor == "x86_64"): [FAIL, PASS]
+      if (os == "win") and (processor == "x86") and not debug: [FAIL, PASS]
       if (os == "android") and debug: PASS
       [PASS, FAIL]
--- a/testing/web-platform/meta/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html.ini
+++ b/testing/web-platform/meta/html/syntax/speculative-parsing/generated/page-load/picture-source-br-img.tentative.html.ini
@@ -1,5 +1,8 @@
 [picture-source-br-img.tentative.html]
   [Speculative parsing, page load: picture-source-br-img]
     expected:
+      if (os == "win") and debug and (processor == "x86"): [FAIL, PASS]
+      if (os == "win") and not debug and (processor == "x86"): [FAIL, PASS]
+      if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
       if (os == "android") and debug: PASS
       [PASS, FAIL]
--- a/testing/web-platform/meta/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url.window.js.ini
+++ b/testing/web-platform/meta/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/url.window.js.ini
@@ -1,4 +1,6 @@
 [url.window.html]
   [document.open() does not change document's URL (active but not fully active document)]
     expected:
-      if (os == "linux"): [PASS, FAIL]
+      if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "linux") and not debug and fission: [PASS, FAIL]
+      if (os == "linux") and debug: [PASS, FAIL]
--- a/testing/web-platform/meta/media-capabilities/__dir__.ini
+++ b/testing/web-platform/meta/media-capabilities/__dir__.ini
@@ -1,2 +1,3 @@
 prefs: [media.media-capabilities.enabled:true, media.media-capabilities.screen.enabled:true]
 leak-threshold: [default:51200]
+lsan-allowed: [Alloc, MakeNotNull, MakeRefPtr, MakeSafeRefPtr, MakeUnique, NewPage, Realloc, Then, mozilla::MozPromise, nsThread::nsThread]
--- a/testing/web-platform/meta/mediacapture-streams/MediaDevices-enumerateDevices-per-origin-ids.sub.https.html.ini
+++ b/testing/web-platform/meta/mediacapture-streams/MediaDevices-enumerateDevices-per-origin-ids.sub.https.html.ini
@@ -12,15 +12,15 @@
   [enumerateDevices has stable deviceIds across same-origin iframe]
     expected:
       if not debug and (os == "win") and (processor == "x86_64"): PASS
       if debug: PASS
       [PASS, TIMEOUT]
 
   [enumerateDevices rotates deviceId across different-origin iframe]
     expected:
-      if (os == "linux") and not fission and not debug: [PASS, TIMEOUT, NOTRUN]
+      if (os == "win") and not debug and (processor == "x86_64"): PASS
       if (os == "linux") and not fission and debug: [PASS, TIMEOUT, NOTRUN]
-      if (os == "win") and not debug and (processor == "x86_64"): PASS
+      if (os == "linux") and not fission and not debug: [PASS, NOTRUN, TIMEOUT]
+      if (os == "mac") and debug: PASS
       if (os == "android") and debug: PASS
       if (os == "win") and debug: PASS
-      if (os == "mac") and debug: PASS
       [PASS, NOTRUN]
--- a/testing/web-platform/meta/merchant-validation/complete-method.tentative.https.html.ini
+++ b/testing/web-platform/meta/merchant-validation/complete-method.tentative.https.html.ini
@@ -1,4 +1,5 @@
 [complete-method.tentative.https.html]
+  expected:
+    if (os == "android") and debug and not swgl: [OK, ERROR]
   [If event's isTrusted attribute is false, then then throw an InvalidStateError DOMException.]
     expected: FAIL
-
--- a/testing/web-platform/meta/mozilla-sync
+++ b/testing/web-platform/meta/mozilla-sync
@@ -1,1 +1,1 @@
-upstream: 4092a1d93a80e594b7cab7ad689556b0867365c0
+upstream: dd05a4454ef3e76677d1191823b34420f3ea9355
--- a/testing/web-platform/meta/navigation-api/navigation-methods/navigate-replace-same-document.html.ini
+++ b/testing/web-platform/meta/navigation-api/navigation-methods/navigate-replace-same-document.html.ini
@@ -1,8 +1,9 @@
 [navigate-replace-same-document.html]
   expected:
+    if (os == "linux") and not swgl and (processor == "x86_64") and not fission and debug: [OK, ERROR]
+    if (os == "linux") and not swgl and (processor == "x86_64") and not fission and not debug: [OK, ERROR]
     if (os == "win") and debug and (processor == "x86_64") and not swgl: [OK, ERROR]
-    if (os == "linux") and not fission and debug and swgl: [OK, ERROR]
-    if (os == "linux") and not fission and not debug: [OK, ERROR]
-    if (os == "android") and not swgl and debug: [OK, ERROR]
-    if (os == "android") and not swgl and not debug: [OK, ERROR]
+    if (os == "android") and debug and not swgl: [OK, ERROR]
+    if (os == "linux") and not swgl and (processor == "x86"): [OK, ERROR]
+    if (os == "linux") and swgl: [OK, ERROR]
     [ERROR, OK]
--- a/testing/web-platform/meta/navigation-api/ordering-and-transition/navigate-cross-document-double.html.ini
+++ b/testing/web-platform/meta/navigation-api/ordering-and-transition/navigate-cross-document-double.html.ini
@@ -1,22 +1,16 @@
 [navigate-cross-document-double.html]
   expected:
-    if (os == "win") and debug and (processor == "x86_64") and not swgl: [TIMEOUT, OK]
-    if (os == "win") and debug and (processor == "x86_64") and swgl: [TIMEOUT, OK]
-    if (os == "linux") and fission and not debug and (processor == "x86"): [TIMEOUT, OK]
-    if (os == "win") and debug and (processor == "x86"): [TIMEOUT, OK]
-    if (os == "android") and debug and swgl: [TIMEOUT, OK]
-    if (os == "linux") and not fission and swgl: [TIMEOUT, OK]
-    if (os == "win") and not debug: [TIMEOUT, OK]
-    if (os == "mac") and debug: [TIMEOUT, OK]
+    if fission and (processor == "x86_64") and not swgl and (os == "linux") and debug: [TIMEOUT, OK]
+    if fission and (processor == "x86_64") and not swgl and (os == "mac") and not debug: [TIMEOUT, OK]
+    if fission and (processor == "x86_64") and not swgl and (os == "win"): [TIMEOUT, OK]
+    if not fission and (os == "linux") and not swgl: [TIMEOUT, OK]
+    if fission and (processor == "x86") and (os == "win"): [TIMEOUT, OK]
     [OK, TIMEOUT]
   [event and promise ordering when navigate() is called to a cross-document destination, interrupting another navigate() to a cross-document destination]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86"): [TIMEOUT, FAIL]
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [TIMEOUT, FAIL]
-      if (os == "win") and debug and (processor == "x86_64") and swgl: [TIMEOUT, FAIL]
-      if (os == "android") and debug and swgl: [TIMEOUT, FAIL]
-      if (os == "linux") and not fission and swgl: [TIMEOUT, FAIL]
-      if (os == "win") and debug and (processor == "x86"): [TIMEOUT, FAIL]
-      if (os == "win") and not debug: [TIMEOUT, FAIL]
-      if (os == "mac") and debug: [TIMEOUT, FAIL]
+      if fission and (processor == "x86_64") and not swgl and (os == "linux") and debug: [TIMEOUT, FAIL]
+      if fission and (processor == "x86_64") and not swgl and (os == "mac") and not debug: [TIMEOUT, FAIL]
+      if fission and (processor == "x86_64") and not swgl and (os == "win"): [TIMEOUT, FAIL]
+      if not fission and (os == "linux") and not swgl: [TIMEOUT, FAIL]
+      if fission and (processor == "x86") and (os == "win"): [TIMEOUT, FAIL]
       [FAIL, TIMEOUT]
--- a/testing/web-platform/meta/navigation-timing/secure_connection_start_non_zero.https.html.ini
+++ b/testing/web-platform/meta/navigation-timing/secure_connection_start_non_zero.https.html.ini
@@ -1,10 +1,11 @@
 [secure_connection_start_non_zero.https.html]
   expected:
     if (os == "android") and debug: [OK, ERROR]
   [Test that secureConnectionStart is not zero]
     expected:
       if (os == "win") and ccov: [FAIL, PASS]
+      if (os == "android") and debug and not swgl: [FAIL, PASS]
+      if (os == "android") and debug and swgl: [FAIL, PASS]
       if (os == "mac") and debug: PASS
-      if (os == "android") and swgl: [FAIL, PASS]
       if os == "win": PASS
       [PASS, FAIL]
--- a/testing/web-platform/meta/performance-timeline/multiple-buffered-flag-observers.any.js.ini
+++ b/testing/web-platform/meta/performance-timeline/multiple-buffered-flag-observers.any.js.ini
@@ -1,16 +1,16 @@
 [multiple-buffered-flag-observers.any.worker.html]
   expected:
-    if (os == "android") and debug: [OK, TIMEOUT]
-  [Multiple PerformanceObservers with buffered flag see all entries]
-    expected:
-      if (os == "android") and debug: [PASS, TIMEOUT]
-
-
-[multiple-buffered-flag-observers.any.html]
-  expected:
     if (os == "android") and debug and not swgl: [OK, TIMEOUT]
     if (os == "android") and debug and swgl: [OK, TIMEOUT]
   [Multiple PerformanceObservers with buffered flag see all entries]
     expected:
       if (os == "android") and debug and swgl: [PASS, TIMEOUT]
       if (os == "android") and debug and not swgl: [PASS, TIMEOUT]
+
+
+[multiple-buffered-flag-observers.any.html]
+  expected:
+    if (os == "android") and debug: [OK, TIMEOUT]
+  [Multiple PerformanceObservers with buffered flag see all entries]
+    expected:
+      if (os == "android") and debug: [PASS, TIMEOUT]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/permissions-policy/bluetooth-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html.ini
@@ -0,0 +1,3 @@
+[bluetooth-allowed-by-permissions-policy-attribute-redirect-on-load.https.sub.html]
+  [bluetooth-allowed-by-permissions-policy-attribute-redirect-on-load]
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/permissions-policy/bluetooth-allowed-by-permissions-policy-attribute.https.sub.html.ini
@@ -0,0 +1,3 @@
+[bluetooth-allowed-by-permissions-policy-attribute.https.sub.html]
+  [bluetooth-allowed-by-permissions-policy-attribute]
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/permissions-policy/bluetooth-allowed-by-permissions-policy.https.sub.html.ini
@@ -0,0 +1,3 @@
+[bluetooth-allowed-by-permissions-policy.https.sub.html]
+  [bluetooth-allowed-by-permissions-policy]
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/permissions-policy/bluetooth-default-permissions-policy.https.sub.html.ini
@@ -0,0 +1,3 @@
+[bluetooth-default-permissions-policy.https.sub.html]
+  [bluetooth-default-permissions-policy]
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/permissions-policy/bluetooth-disabled-by-permissions-policy.https.sub.html.ini
@@ -0,0 +1,3 @@
+[bluetooth-disabled-by-permissions-policy.https.sub.html]
+  [bluetooth-disabled-by-permissions-policy]
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/permissions-policy/reporting/bluetooth-report-only.https.html.ini
@@ -0,0 +1,3 @@
+[bluetooth-report-only.https.html]
+  [bluetooth-report-only]
+    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/permissions-policy/reporting/bluetooth-reporting.https.html.ini
@@ -0,0 +1,3 @@
+[bluetooth-reporting.https.html]
+  [bluetooth-reporting]
+    expected: FAIL
--- a/testing/web-platform/meta/pointerevents/pointerlock/pointerevent_getCoalescedEvents_when_pointerlocked.html.ini
+++ b/testing/web-platform/meta/pointerevents/pointerlock/pointerevent_getCoalescedEvents_when_pointerlocked.html.ini
@@ -1,8 +1,7 @@
 [pointerevent_getCoalescedEvents_when_pointerlocked.html]
   [mouse pointermove getCoalescedEvents when lock test]
     expected:
-      if (os == "win") and (processor == "x86") and not debug: [FAIL, PASS]
-      if (os == "win") and (processor == "x86") and debug: [FAIL, PASS]
-      if (os == "win") and (processor == "x86_64"): [FAIL, PASS]
+      if (os == "linux") and debug and not fission and not swgl: [FAIL, PASS]
+      if os == "win": [FAIL, PASS]
       if os == "mac": [FAIL, PASS]
       [PASS, FAIL]
--- a/testing/web-platform/meta/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html.ini
+++ b/testing/web-platform/meta/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock.html.ini
@@ -1,10 +1,7 @@
 [pointerevent_movementxy_with_pointerlock.html]
   expected:
+    if os == "mac": [OK, ERROR, TIMEOUT]
     if os == "android": OK
-    if os == "mac": [OK, ERROR, TIMEOUT]
     [OK, ERROR]
   [mouse pointerevent movementX/Y with pointerlock test]
-    expected:
-      if swgl and (os == "linux") and not fission: [FAIL, PASS, TIMEOUT]
-      if not swgl and (processor == "x86") and (os == "linux"): [FAIL, PASS, TIMEOUT]
-      [PASS, FAIL, TIMEOUT]
+    expected: [PASS, FAIL, TIMEOUT]
--- a/testing/web-platform/meta/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html.ini
+++ b/testing/web-platform/meta/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html.ini
@@ -1,13 +1,12 @@
 [pointerevent_pointermove_in_pointerlock.html]
   expected:
-    if (os == "win") and not fission: [OK, ERROR]
+    if os == "mac": [OK, ERROR, TIMEOUT]
     if os == "linux": [OK, ERROR]
-    if os == "mac": [OK, ERROR, TIMEOUT]
   [pointermove event received inner frame]
     expected:
       if (os == "linux") and not fission and debug and swgl: [PASS, FAIL]
       if (os == "linux") and not fission and debug and not swgl: [PASS, FAIL]
       if (os == "linux") and not fission and not debug: [PASS, FAIL]
 
   [pointermove event received]
     expected:
--- a/testing/web-platform/meta/pointerlock/movementX_Y_basic.html.ini
+++ b/testing/web-platform/meta/pointerlock/movementX_Y_basic.html.ini
@@ -1,3 +1,5 @@
 [movementX_Y_basic.html]
   [Test that movementX/Y = eNow.screenX/Y-ePrevious.screenX/Y.]
-    expected: [PASS, FAIL]
+    expected:
+      if (os == "linux") and (processor == "x86"): [FAIL, PASS]
+      [PASS, FAIL]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/always/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/always/a-tag.http.html.ini
@@ -1,5 +1,3 @@
 [a-tag.http.html]
   expected:
-    if (os == "android") and debug and swgl: [CRASH, OK]
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and not debug: [OK, CRASH]
+    if os == "android": [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/always/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/always/iframe-tag.http.html.ini
@@ -1,5 +1,4 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: [CRASH, OK]
-    if (os == "android") and debug and swgl: [CRASH, OK]
     if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android") and debug: [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/default/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/default/a-tag.http.html.ini
@@ -1,12 +1,11 @@
 [a-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and debug and swgl: [CRASH, OK]
+    if (os == "android") and debug and swgl: [OK, CRASH]
     if (os == "android") and not debug: [OK, CRASH]
   [Referrer Policy: Expects origin for a-tag to same-https origin and no-redirect redirection from http context.]
     expected: FAIL
 
   [Referrer Policy: Expects origin for a-tag to cross-https origin and no-redirect redirection from http context.]
     expected: FAIL
 
   [Referrer Policy: Expects origin for a-tag to cross-http origin and no-redirect redirection from http context.]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/default/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/default/iframe-tag.http.html.ini
@@ -1,13 +1,11 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and swgl: [CRASH, OK]
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and not debug: [OK, CRASH]
+    if os == "android": [OK, CRASH]
   [Referrer Policy: Expects origin for iframe-tag to same-https origin and swap-origin redirection from http context.]
     expected: FAIL
 
   [Referrer Policy: Expects origin for iframe-tag to same-https origin and no-redirect redirection from http context.]
     expected: FAIL
 
   [Referrer Policy: Expects origin for iframe-tag to cross-http origin and keep-origin redirection from http context.]
     expected: FAIL
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/never/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/never/a-tag.http.html.ini
@@ -1,5 +1,5 @@
 [a-tag.http.html]
   expected:
-    if (os == "android") and debug and swgl: [CRASH, OK]
-    if (os == "android") and debug and not swgl: [CRASH, OK]
+    if (os == "android") and debug and not swgl: [OK, CRASH]
+    if (os == "android") and debug and swgl: [OK, CRASH]
     if (os == "android") and not debug: [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/never/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/never/iframe-tag.http.html.ini
@@ -1,5 +1,3 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and debug and swgl: [CRASH, OK]
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/no-referrer-when-downgrade/iframe-tag.http.html.ini
@@ -1,5 +1,5 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: [CRASH, OK]
+    if (os == "android") and debug and not swgl: [OK, CRASH]
     if (os == "android") and debug and swgl: [OK, CRASH]
     if (os == "android") and not debug: [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/no-referrer/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/no-referrer/a-tag.http.html.ini
@@ -1,5 +1,3 @@
 [a-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and debug and swgl: [OK, CRASH]
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/no-referrer/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/no-referrer/iframe-tag.http.html.ini
@@ -1,5 +1,3 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and swgl: [OK, CRASH]
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and not debug: [OK, CRASH]
+    if os == "android": [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/a-tag.http.html.ini
@@ -1,5 +1,5 @@
 [a-tag.http.html]
   expected:
     if (os == "android") and debug and swgl: [OK, CRASH]
-    if (os == "android") and debug and not swgl: [CRASH, OK]
+    if (os == "android") and debug and not swgl: [OK, CRASH]
     if (os == "android") and not debug: [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin-when-cross-origin/iframe-tag.http.html.ini
@@ -1,5 +1,3 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and debug and swgl: [OK, CRASH]
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin-when-crossorigin/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin-when-crossorigin/a-tag.http.html.ini
@@ -1,4 +1,3 @@
 [a-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin-when-crossorigin/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin-when-crossorigin/iframe-tag.http.html.ini
@@ -1,4 +1,4 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and not swgl and debug: [CRASH, OK]
-    if (os == "android") and not swgl and not debug: [OK, CRASH]
+    if (os == "android") and debug and not swgl: [OK, CRASH]
+    if (os == "android") and not debug: [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin/a-tag.http.html.ini
@@ -1,5 +1,3 @@
 [a-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and debug and swgl: [OK, CRASH]
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/origin/iframe-tag.http.html.ini
@@ -1,5 +1,3 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and debug and swgl: [OK, CRASH]
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/same-origin/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/same-origin/iframe-tag.http.html.ini
@@ -1,4 +1,3 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/a-tag.http.html.ini
@@ -1,4 +1,3 @@
 [a-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/strict-origin-when-cross-origin/iframe-tag.http.html.ini
@@ -1,4 +1,4 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and not swgl and not debug: [OK, CRASH]
-    if (os == "android") and not swgl and debug: [CRASH, OK]
+    if (os == "android") and debug and not swgl: [OK, CRASH]
+    if (os == "android") and not debug: [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/strict-origin/a-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/strict-origin/a-tag.http.html.ini
@@ -1,4 +1,3 @@
 [a-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/strict-origin/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/strict-origin/iframe-tag.http.html.ini
@@ -1,4 +1,3 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and debug and not swgl: OK
-    if (os == "android") and not debug: [OK, CRASH]
+    if (os == "android"): [OK, CRASH]
--- a/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/unsafe-url/iframe-tag.http.html.ini
+++ b/testing/web-platform/meta/referrer-policy/gen/srcdoc.meta/unsafe-url/iframe-tag.http.html.ini
@@ -1,4 +1,4 @@
 [iframe-tag.http.html]
   expected:
-    if (os == "android") and not swgl and debug: [CRASH, OK]
-    if (os == "android") and not swgl and not debug: [OK, CRASH]
+    if (os == "android") and debug and not swgl: [OK, CRASH]
+    if (os == "android") and not debug: [OK, CRASH]
--- a/testing/web-platform/meta/resize-observer/change-layout-in-error.html.ini
+++ b/testing/web-platform/meta/resize-observer/change-layout-in-error.html.ini
@@ -1,10 +1,10 @@
 [change-layout-in-error.html]
   [Changing layout in window error handler should not result in lifecyle loop when resize observer loop limit is reached.]
     expected:
-      if (os == "linux") and not debug and fission and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "android") and not swgl and debug: [FAIL, PASS]
-      if (os == "android") and swgl: [FAIL, PASS]
-      if (os == "mac") and debug: [FAIL, PASS]
-      if (os == "win") and swgl: [FAIL, PASS]
-      if (os == "linux") and debug: [FAIL, PASS]
-      [PASS, FAIL]
+      if (os == "linux") and (processor == "x86_64") and not debug and not fission: [PASS, FAIL]
+      if (os == "win") and (processor == "x86_64") and debug and not swgl: [PASS, FAIL]
+      if (os == "android") and not swgl and not debug: [PASS, FAIL]
+      if (os == "linux") and (processor == "x86"): [PASS, FAIL]
+      if (os == "mac") and not debug: [PASS, FAIL]
+      if (os == "win") and (processor == "x86"): [PASS, FAIL]
+      [FAIL, PASS]
--- a/testing/web-platform/meta/resource-timing/nested-context-navigations-embed.html.ini
+++ b/testing/web-platform/meta/resource-timing/nested-context-navigations-embed.html.ini
@@ -1,25 +1,22 @@
 [nested-context-navigations-embed.html]
   [Test that cross-site embed navigations are not observable by the parent, even after history navigations by the parent]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, FAIL]
-      if (os == "win") and debug and (processor == "x86_64") and swgl: FAIL
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [FAIL, PASS]
-      if (os == "linux") and fission and debug: [FAIL, PASS]
-      if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "win") and not debug and (processor == "x86"): FAIL
-      if (os == "win") and debug and (processor == "x86"): [FAIL, PASS]
-      if os == "mac": FAIL
+      if (os == "linux") and fission and not swgl and (processor == "x86_64") and debug: [PASS, FAIL]
+      if (os == "linux") and fission and not swgl and (processor == "x86_64") and not debug: [PASS, FAIL]
+      if (os == "linux") and fission and not swgl and (processor == "x86"): [FAIL, PASS]
+      if (os == "linux") and fission and swgl: [PASS, FAIL]
+      if (os == "mac") and debug: [FAIL, PASS]
+      if (os == "mac") and not debug: FAIL
+      if (os == "win") and not swgl: [FAIL, PASS]
+      if (os == "win") and swgl: FAIL
 
   [Test that cross-site embed navigations are not observable by the parent]
     expected:
-      if (os == "linux") and fission and not swgl and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "linux") and fission and not swgl and not debug and (processor == "x86"): [FAIL, PASS]
-      if (os == "linux") and fission and not swgl and debug: [PASS, FAIL]
+      if (os == "win") and not swgl and not debug and (processor == "x86_64"): [FAIL, PASS]
       if (os == "win") and not swgl and not debug and (processor == "x86"): [FAIL, PASS]
-      if (os == "win") and not swgl and not debug and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "linux") and fission and swgl: [FAIL, PASS]
+      if (os == "linux") and fission and (processor == "x86_64") and debug: [PASS, FAIL]
+      if (os == "linux") and fission and (processor == "x86_64") and not debug: [PASS, FAIL]
       if (os == "win") and not swgl and debug: [FAIL, PASS]
-      if (os == "win") and swgl: [PASS, FAIL]
-      if (os == "mac") and not debug: FAIL
-      if (os == "mac") and debug: [FAIL, PASS]
+      if (os == "linux") and fission and (processor == "x86"): [FAIL, PASS]
+      if (os == "win") and swgl: [FAIL, PASS]
+      if os == "mac": [FAIL, PASS]
--- a/testing/web-platform/meta/resource-timing/nested-context-navigations-iframe.html.ini
+++ b/testing/web-platform/meta/resource-timing/nested-context-navigations-iframe.html.ini
@@ -3,30 +3,29 @@
   [Test that iframe navigations are not observable by the parent, even after history navigations by the parent]
     disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1572932
 
   [Test that crossorigin iframe navigations are not observable by the parent, even after history navigations by the parent]
     disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1572932
 
   [Test that cross-site iframe navigations are not observable by the parent, even after history navigations by the parent]
     expected:
-      if (os == "win") and (processor == "x86_64") and not swgl and not debug: [FAIL, PASS]
-      if (os == "win") and (processor == "x86_64") and not swgl and debug: [FAIL, PASS]
-      if (os == "linux") and fission and debug and swgl: [FAIL, PASS]
-      if (os == "linux") and fission and debug and not swgl: [FAIL, PASS]
-      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "win") and (processor == "x86_64") and swgl: [PASS, FAIL]
-      if (os == "win") and (processor == "x86") and debug: [FAIL, PASS]
-      if (os == "win") and (processor == "x86") and not debug: [FAIL, PASS]
+      if (os == "win") and debug and (processor == "x86_64") and swgl: [FAIL, PASS]
+      if (os == "win") and debug and (processor == "x86_64") and not swgl: [PASS, FAIL]
+      if (os == "win") and debug and (processor == "x86"): [FAIL, PASS]
+      if (os == "linux") and fission and swgl: [PASS, FAIL]
+      if (os == "linux") and fission and not swgl: [PASS, FAIL]
+      if (os == "mac") and not debug: [PASS, FAIL]
       if (os == "mac") and debug: [FAIL, PASS]
+      if (os == "win") and not debug: [FAIL, PASS]
       FAIL
 
   [Test that cross-site iframe navigations are not observable by the parent]
     expected:
-      if (os == "linux") and fission and (processor == "x86_64") and debug and swgl: [PASS, FAIL]
-      if (os == "linux") and fission and (processor == "x86_64") and debug and not swgl: [FAIL, PASS]
-      if (os == "linux") and fission and (processor == "x86_64") and not debug: [PASS, FAIL]
-      if (os == "linux") and fission and (processor == "x86"): [PASS, FAIL]
+      if (os == "linux") and fission and not swgl and (processor == "x86_64") and debug: [PASS, FAIL]
+      if (os == "linux") and fission and not swgl and (processor == "x86_64") and not debug: [PASS, FAIL]
+      if (os == "linux") and fission and not swgl and (processor == "x86"): [FAIL, PASS]
+      if (os == "win") and not debug and (processor == "x86"): [FAIL, PASS]
       if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "win") and not debug and (processor == "x86"): FAIL
+      if (os == "linux") and fission and swgl: [FAIL, PASS]
       if (os == "win") and debug: [FAIL, PASS]
-      if os == "mac": [FAIL, PASS]
+      if (os == "mac") and debug: [FAIL, PASS]
+      if (os == "mac") and not debug: [FAIL, PASS]
--- a/testing/web-platform/meta/resource-timing/nested-context-navigations-object.html.ini
+++ b/testing/web-platform/meta/resource-timing/nested-context-navigations-object.html.ini
@@ -1,23 +1,10 @@
 [nested-context-navigations-object.html]
   [Test that cross-site object navigations are not observable by the parent, even after history navigations by the parent]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, FAIL]
-      if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "win") and not debug and (processor == "x86"): [FAIL, PASS]
-      if (os == "linux") and fission and debug: [PASS, FAIL]
-      if (os == "mac") and debug: [FAIL, PASS]
-      if (os == "mac") and not debug: [FAIL, PASS]
-      if (os == "win") and debug: [FAIL, PASS]
+      if os == "android": PASS
+      [FAIL, PASS]
 
   [Test that cross-site object navigations are not observable by the parent]
     expected:
-      if (os == "linux") and fission and not debug and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and fission and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "linux") and fission and debug and swgl: [PASS, FAIL]
-      if (os == "linux") and fission and debug and not swgl: [PASS, FAIL]
-      if (os == "win") and (processor == "x86"): [FAIL, PASS]
-      if (os == "win") and debug and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "win") and ccov: [FAIL, PASS]
-      if (os == "mac"): [FAIL, PASS]
-      if (os == "win") and not debug: [FAIL, PASS]
+      if os == "android": PASS
+      [FAIL, PASS]
--- a/testing/web-platform/meta/resource-timing/object-not-found-adds-entry.html.ini
+++ b/testing/web-platform/meta/resource-timing/object-not-found-adds-entry.html.ini
@@ -1,21 +1,19 @@
 [object-not-found-adds-entry.html]
   [Verify that a 200 null-typed object emits an entry.]
     expected:
-      if (os == "linux") and not fission and debug and swgl: [PASS, FAIL]
-      if (os == "linux") and not fission and debug and not swgl: [PASS, FAIL]
-      if (os == "linux") and not fission and not debug: [FAIL, PASS]
-      if (os == "linux") and fission and (processor == "x86"): [PASS, FAIL]
-      if (os == "linux") and fission and (processor == "x86_64"): [PASS, FAIL]
+      if (os == "linux") and debug and not fission and not swgl: [PASS, FAIL]
+      if (os == "linux") and debug and not fission and swgl: [PASS, FAIL]
+      if (os == "linux") and debug and fission: [PASS, FAIL]
+      if (os == "linux") and not debug: [PASS, FAIL]
 
   [Verify that a 404 null-typed object emits an entry.]
     expected:
-      if (os == "linux") and (processor == "x86_64") and not fission and not swgl and not debug: [PASS, FAIL]
-      if (os == "linux") and (processor == "x86_64") and not fission and not swgl and debug: [PASS, FAIL]
-      if (os == "linux") and (processor == "x86_64") and not fission and swgl: [FAIL, PASS]
-      if (os == "linux") and (processor == "x86_64") and fission and not debug: [PASS, FAIL]
-      if (os == "linux") and (processor == "x86_64") and fission and debug: [PASS, FAIL]
-      if (os == "linux") and (processor == "x86"): [PASS, FAIL]
+      if (os == "linux") and debug and not swgl and not fission: [PASS, FAIL]
+      if (os == "linux") and debug and not swgl and fission: [FAIL, PASS]
+      if (os == "linux") and not debug and fission: [PASS, FAIL]
+      if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      if (os == "linux") and debug and swgl: [PASS, FAIL]
 
   [Verify that a 404 img-typed object emits an entry.]
     expected:
       if os == "linux": [PASS, FAIL]
--- a/testing/web-platform/meta/resource-timing/object-not-found-after-TAO-cross-origin-redirect.html.ini
+++ b/testing/web-platform/meta/resource-timing/object-not-found-after-TAO-cross-origin-redirect.html.ini
@@ -1,8 +1,4 @@
 [object-not-found-after-TAO-cross-origin-redirect.html]
-  expected:
-    if not fission and swgl and (os == "android"): [ERROR, OK]
-    [OK, ERROR]
+  expected: [OK, ERROR]
   [There should be one entry.]
-    expected:
-      if not fission and swgl and (os == "android"): [FAIL, PASS]
-      [PASS, FAIL]
+    expected: [PASS, FAIL]
--- a/testing/web-platform/meta/resource-timing/resource-reload-TAO.html.ini
+++ b/testing/web-platform/meta/resource-timing/resource-reload-TAO.html.ini
@@ -1,4 +1,6 @@
 [resource-reload-TAO.html]
   expected:
+    if not fission and debug and swgl and (os == "linux"): [OK, ERROR]
+    if not fission and debug and swgl and (os == "android"): [ERROR, OK]
     if not fission and not debug and (os == "linux"): [OK, ERROR]
-    if not fission and debug: [OK, ERROR]
+    if not fission and debug and not swgl: [OK, ERROR]
--- a/testing/web-platform/meta/scheduler/post-task-abort-reason.any.js.ini
+++ b/testing/web-platform/meta/scheduler/post-task-abort-reason.any.js.ini
@@ -1,9 +1,10 @@
 [post-task-abort-reason.any.sharedworker.html]
 
 [post-task-abort-reason.any.worker.html]
 
 [post-task-abort-reason.any.html]
 
 [post-task-abort-reason.any.serviceworker.html]
   expected:
+    if (os == "android") and debug and not swgl: [OK, ERROR]
     if (os == "android") and not debug: [OK, ERROR]
--- a/testing/web-platform/meta/screen-capture/getdisplaymedia.https.html.ini
+++ b/testing/web-platform/meta/screen-capture/getdisplaymedia.https.html.ini
@@ -1,16 +1,21 @@
 [getdisplaymedia.https.html]
   disabled:
     if (os == "android") and e10s: bug 1550895 (frequently fails on geckoview)
   expected:
     if (os == "linux") and not fission and not debug: [OK, CRASH]
-    if (os == "win") and debug: [OK, CRASH]
+    if (os == "win") and debug and swgl: [OK, TIMEOUT, CRASH]
+    if (os == "win") and debug and not swgl: [OK, CRASH]
   [getDisplayMedia() with getSettings]
     expected:
       if os == "win": [FAIL, NOTRUN]
       FAIL
 
   [applyConstraints(width or height) must downscale precisely]
     expected:
       if (os == "linux") and debug and fission: [PASS, FAIL]
       if (os == "mac") and debug: [PASS, FAIL]
       if os == "win": [PASS, FAIL]
+
+  [getDisplayMedia() must adhere to frameRate if set]
+    expected:
+      if (os == "mac") and not debug: [PASS, FAIL]
--- a/testing/web-platform/meta/scroll-to-text-fragment/find-range-from-text-directive.html.ini
+++ b/testing/web-platform/meta/scroll-to-text-fragment/find-range-from-text-directive.html.ini
@@ -1,11 +1,11 @@
 [find-range-from-text-directive.html]
   expected:
-    if os == "win": [TIMEOUT, OK]
+    if os == "win": [OK, TIMEOUT]
     if os == "mac": [OK, TIMEOUT]
     TIMEOUT
   [inverted range search.]
     expected: [PASS, TIMEOUT, NOTRUN]
 
   [Suffix comes before |end|.]
     expected:
       if os == "mac": [PASS, TIMEOUT, NOTRUN]
@@ -30,51 +30,55 @@
   [non-existent range match.]
     expected: [PASS, TIMEOUT, NOTRUN]
 
   [Multiple overlapping one letter prefixes.]
     expected: FAIL
 
   [Content appears between match and suffix.]
     expected:
+      if os == "mac": [PASS, NOTRUN]
       if os == "win": [PASS, NOTRUN]
-      if os == "mac": [PASS, NOTRUN]
       [NOTRUN, PASS]
 
   [overlapping exact matches with suffix.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Match with no suffix.]
     expected:
+      if os == "android": [TIMEOUT, FAIL, NOTRUN]
       if os == "linux": [NOTRUN, FAIL, TIMEOUT]
-      if os == "android": [TIMEOUT, NOTRUN, FAIL]
       [FAIL, TIMEOUT, NOTRUN]
 
   [Match text after prefix.]
     expected: FAIL
 
   [Search invisible content between |end| and suffix.]
     expected:
+      if os == "mac": [FAIL, TIMEOUT, NOTRUN]
       if os == "win": [FAIL, TIMEOUT, NOTRUN]
-      if os == "mac": [FAIL, TIMEOUT, NOTRUN]
       [NOTRUN, FAIL, TIMEOUT]
 
   [Range with preceeding suffix.]
     expected:
-      if os == "linux": [TIMEOUT, PASS, NOTRUN]
+      if os == "linux": [NOTRUN, PASS, TIMEOUT]
       [PASS, TIMEOUT, NOTRUN]
 
   [no suffix forces |end| to be end bounded.]
     expected: [PASS, TIMEOUT, NOTRUN]
 
   [|end| must be start bounded even if full range is word bounded.]
-    expected: [PASS, TIMEOUT, NOTRUN]
+    expected:
+      if os == "linux": [TIMEOUT, PASS, NOTRUN]
+      [PASS, TIMEOUT, NOTRUN]
 
   [non-existent |end|.]
-    expected: [PASS, TIMEOUT, NOTRUN]
+    expected:
+      if os == "linux": [NOTRUN, PASS, TIMEOUT]
+      [PASS, TIMEOUT, NOTRUN]
 
   [suffix means |start| need not end on word boundary.]
     expected: FAIL
 
   [Search invisible content between prefix and match.]
     expected: FAIL
 
   [overlapping one letter exact matches with suffix.]
@@ -101,38 +105,38 @@
   [Non-existent suffix.]
     expected:
       if os == "mac": [PASS, TIMEOUT, NOTRUN]
       if os == "win": [PASS, TIMEOUT, NOTRUN]
       [NOTRUN, PASS, TIMEOUT]
 
   [Suffix need not be start bounded.]
     expected:
+      if os == "win": [FAIL, NOTRUN]
       if os == "mac": [FAIL, NOTRUN]
-      if os == "win": [FAIL, NOTRUN]
       NOTRUN
 
   [|end| must be start bounded.]
     expected: [PASS, TIMEOUT, NOTRUN]
 
   [suffix means |end| need not be end bounded.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [|start| must start on a word boundary.]
     expected: [PASS, TIMEOUT, NOTRUN]
 
   [Non-matching suffix search continues to prefix match.]
     expected:
+      if os == "mac": [FAIL, TIMEOUT, NOTRUN]
       if os == "win": [FAIL, TIMEOUT, NOTRUN]
-      if os == "mac": [FAIL, TIMEOUT, NOTRUN]
       NOTRUN
 
   [Range end matches correct suffix.]
     expected:
       if os == "mac": [FAIL, TIMEOUT, NOTRUN]
-      if os == "win": [TIMEOUT, FAIL, NOTRUN]
+      if os == "win": [FAIL, TIMEOUT, NOTRUN]
       NOTRUN
 
   [Non-matching suffix in first potential match.]
     expected:
+      if os == "mac": [FAIL, TIMEOUT, NOTRUN]
       if os == "win": [FAIL, TIMEOUT, NOTRUN]
-      if os == "mac": [FAIL, TIMEOUT, NOTRUN]
       NOTRUN
--- a/testing/web-platform/meta/scroll-to-text-fragment/force-load-at-top.html.ini
+++ b/testing/web-platform/meta/scroll-to-text-fragment/force-load-at-top.html.ini
@@ -12,19 +12,20 @@
       if os == "mac": [PASS, TIMEOUT, NOTRUN]
       NOTRUN
 
   [no-force-load-at-top must not block scroll on load from text fragment.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [no-force-load-at-top must not block scroll on load from text fragment with element fallback.]
     expected:
-      if os == "linux": [TIMEOUT, FAIL, NOTRUN]
-      [FAIL, TIMEOUT, NOTRUN]
+      if os == "win": [FAIL, TIMEOUT, NOTRUN]
+      if os == "mac": [FAIL, TIMEOUT, NOTRUN]
+      [TIMEOUT, FAIL, NOTRUN]
 
   [no-force-load-at-top must not block scroll on load from element fragment.]
     expected:
-      if os == "linux": [NOTRUN, TIMEOUT]
-      if os == "android": [TIMEOUT, NOTRUN]
-      [PASS, TIMEOUT, NOTRUN]
+      if os == "win": [PASS, TIMEOUT, NOTRUN]
+      if os == "mac": [PASS, TIMEOUT, NOTRUN]
+      [NOTRUN, TIMEOUT]
 
   [force-load-at-top must block scroll on load from history scroll restoration.]
     expected: [FAIL, TIMEOUT]
--- a/testing/web-platform/meta/scroll-to-text-fragment/non-html-documents.html.ini
+++ b/testing/web-platform/meta/scroll-to-text-fragment/non-html-documents.html.ini
@@ -1,17 +1,17 @@
 [non-html-documents.html]
   expected:
     if os == "android": OK
     TIMEOUT
   [Text directive blocked in non-html.json]
     expected:
-      if os == "mac": [TIMEOUT, NOTRUN]
+      if os == "win": TIMEOUT
       if os == "linux": [TIMEOUT, NOTRUN]
-      if os == "win": TIMEOUT
+      if os == "mac": [TIMEOUT, NOTRUN]
 
   [Text directive blocked in non-html.txt]
     expected:
       if os == "android": PASS
       NOTRUN
 
   [Text directive blocked in non-html.xml]
     expected:
--- a/testing/web-platform/meta/scroll-to-text-fragment/scroll-to-text-fragment.html.ini
+++ b/testing/web-platform/meta/scroll-to-text-fragment/scroll-to-text-fragment.html.ini
@@ -128,32 +128,35 @@
 
   [Test navigation with fragment: Multiple match text directive disambiguated by suffix should match the suffixed text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Exact text with suffix should match text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text directive should match when context terms are separated by node boundaries.]
-    expected: [FAIL, TIMEOUT, NOTRUN]
+    expected:
+      if os == "linux": [TIMEOUT, FAIL, NOTRUN]
+      [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Non-matching text directive with nonexistent element fragment should not match and not scroll.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Non-whole-word exact text with spaces should not match.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text range with prefix and suffix should match text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text directive should not scroll to hidden text.]
     expected:
-      if os == "android": [TIMEOUT, NOTRUN, FAIL]
+      if os == "mac": [FAIL, TIMEOUT, NOTRUN]
+      if os == "win": [FAIL, TIMEOUT, NOTRUN]
       if os == "linux": [NOTRUN, FAIL, TIMEOUT]
-      [FAIL, TIMEOUT, NOTRUN]
+      [TIMEOUT, NOTRUN, FAIL]
 
   [Test navigation with fragment: Multiple match text directive disambiguated by prefix should match the prefixed text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text range with no context should match text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text range with prefix and nonmatching suffix should not match.]
@@ -162,17 +165,18 @@
   [Test navigation with fragment: Multiple non-whole-word exact texts should not match.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Multiple text directives and a non-text directive should match text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text directive should match text within shadow DOM.]
     expected:
-      if os == "linux": [TIMEOUT, FAIL, NOTRUN]
+      if os == "linux": [NOTRUN, FAIL, TIMEOUT]
+      if os == "android": [FAIL, NOTRUN, TIMEOUT]
       [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text range with non-matching startText should not match.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text directive with invalid syntax (context terms without "-") should not parse as a text directive.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
@@ -224,17 +228,17 @@
   [Test navigation with fragment: Fragment directive with percent encoded non-ASCII unicode character should match text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Exact text with no context should match text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Text directive should horizontally scroll into view.]
     expected:
+      if os == "win": [FAIL, TIMEOUT, NOTRUN]
       if os == "mac": [FAIL, TIMEOUT, NOTRUN]
-      if os == "win": [FAIL, TIMEOUT, NOTRUN]
       [NOTRUN, FAIL, TIMEOUT]
 
   [Test navigation with fragment: Text directive followed by non-text directive should match text.]
     expected: [FAIL, TIMEOUT, NOTRUN]
 
   [Test navigation with fragment: Exact text with prefix and suffix and query equals prefix..]
     expected: [FAIL, TIMEOUT, NOTRUN]
--- a/testing/web-platform/meta/secure-payment-confirmation/enrollment.https.html.ini
+++ b/testing/web-platform/meta/secure-payment-confirmation/enrollment.https.html.ini
@@ -1,52 +1,49 @@
 [enrollment.https.html]
   expected:
     if os == "android": OK
     TIMEOUT
   [Payment credential is created successfully.]
     expected:
-      if (os == "linux") and (processor == "x86_64") and not debug and fission: [FAIL, TIMEOUT]
-      if (os == "linux") and (processor == "x86_64") and not debug and not fission: [FAIL, TIMEOUT]
-      if (os == "linux") and (processor == "x86_64") and debug: [FAIL, TIMEOUT]
-      if (os == "mac") and debug: [FAIL, TIMEOUT]
-      if (os == "mac") and not debug: [TIMEOUT, FAIL]
       if (os == "linux") and (processor == "x86"): [TIMEOUT, FAIL]
-      FAIL
+      if os == "win": FAIL
+      if os == "android": FAIL
+      [FAIL, TIMEOUT]
 
   [Payment credential requires userVerification to be "required", not "preferred".]
     expected:
       if (os == "linux") and ccov: TIMEOUT
+      if (os == "linux") and (processor == "x86_64") and not debug and fission: [FAIL, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [FAIL, NOTRUN]
-      if (os == "linux") and (processor == "x86_64") and not debug and fission: [FAIL, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and debug: [FAIL, NOTRUN]
       if (os == "linux") and (processor == "x86"): [NOTRUN, FAIL]
       if (os == "mac") and debug: [FAIL, TIMEOUT, NOTRUN]
-      if (os == "mac") and not debug: [NOTRUN, TIMEOUT]
+      if (os == "mac") and not debug: [TIMEOUT, NOTRUN]
       FAIL
 
   [Payment credential requires userVerification to be "required", not "discouraged".]
     expected:
       if (os == "linux") and (processor == "x86_64") and not debug and not fission: [TIMEOUT, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and not debug and fission: [TIMEOUT, NOTRUN]
       if (os == "linux") and (processor == "x86_64") and debug: [TIMEOUT, NOTRUN]
       if (os == "linux") and (processor == "x86"): [NOTRUN, TIMEOUT]
+      if (os == "mac") and not debug: NOTRUN
       if (os == "mac") and debug: TIMEOUT
-      if (os == "mac") and not debug: NOTRUN
       FAIL
 
   [Payment credential requires residentKey to be "required", not "preferred".]
     expected:
+      if os == "android": FAIL
       if os == "win": FAIL
-      if os == "android": FAIL
       NOTRUN
 
   [Payment credential requires residentKey to be "required", not "discouraged".]
     expected:
+      if os == "android": FAIL
       if os == "win": FAIL
-      if os == "android": FAIL
       NOTRUN
 
   [Payment credential requires authenticatorAttachment to be "platform", not "cross-platform".]
     expected:
       if os == "win": TIMEOUT
       if os == "android": FAIL
       NOTRUN
--- a/testing/web-platform/meta/service-workers/service-worker/navigation-redirect.https.html.ini
+++ b/testing/web-platform/meta/service-workers/service-worker/navigation-redirect.https.html.ini
@@ -1,33 +1,34 @@
 [navigation-redirect.https.html]
   [SW-fallbacked redirect to same-origin same-scope with different hash fragments.]
     expected:
-      if debug and swgl and (os == "win") and fission: PASS
-      if debug and swgl and (os == "linux"): PASS
-      if debug and not swgl: PASS
+      if debug and (os == "android") and not swgl: PASS
+      if debug and (os == "win"): PASS
+      if debug and (os == "linux"): PASS
+      if debug and (os == "mac"): PASS
       [PASS, FAIL]
 
   [SW-fallbacked redirect to same-origin same-scope.]
     expected:
-      if not debug and (os == "linux"): [PASS, FAIL]
       if not debug and (os == "win"): [PASS, FAIL]
       if not debug and (os == "mac"): [PASS, FAIL]
+      if not debug and (os == "linux"): [PASS, FAIL]
 
   [SW-fallbacked redirect to same-origin same-scope with a hash fragment.]
     expected:
       if (os == "win") and not debug and (processor == "x86_64"): [PASS, FAIL]
       if (os == "linux") and not debug: [PASS, FAIL]
       if os == "mac": [PASS, FAIL]
 
   [SW-fallbacked redirect to other-origin and back to same-origin.]
     expected:
-      if (os == "win") and debug and not fission: [PASS, FAIL]
+      if (os == "win") and not debug and (processor == "x86"): [PASS, FAIL]
+      if (os == "win") and not debug and (processor == "x86_64"): [PASS, FAIL]
       if (os == "mac") and not debug: [PASS, FAIL]
-      if (os == "win") and not debug: [PASS, FAIL]
 
 
 [navigation-redirect.https.html?client]
   disabled:
     if os == "mac": true
     if os == "linux": https://bugzilla.mozilla.org/show_bug.cgi?id=1522439
     if debug and (os == "win"): https://bugzilla.mozilla.org/show_bug.cgi?id=1522439
   [Redirect to same-origin out-scope with opaque redirect response.]
--- a/testing/web-platform/meta/service-workers/service-worker/registration-schedule-job.https.html.ini
+++ b/testing/web-platform/meta/service-workers/service-worker/registration-schedule-job.https.html.ini
@@ -1,10 +1,10 @@
 [registration-schedule-job.https.html]
   [different type]
     expected: FAIL
 
   [different updateViaCache]
     expected:
-      if debug and swgl and (os == "win"): [PASS, FAIL]
-      if not debug and (os == "android"): [PASS, FAIL]
-      if not debug and (os == "mac"): [PASS, FAIL]
+      if (os == "android") and not swgl and debug: [PASS, FAIL]
+      if (os == "mac") and debug: [PASS, FAIL]
+      if (os == "mac") and not debug: [PASS, FAIL]
       [FAIL, PASS]
--- a/testing/web-platform/meta/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html.ini
+++ b/testing/web-platform/meta/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html.ini
@@ -1,4 +1,4 @@
 [sandboxed-iframe-fetch-event.https.html]
   expected:
+    if (os == "android") and debug: [OK, TIMEOUT]
     if (os == "android") and not debug: [OK, TIMEOUT]
-    if (os == "android") and debug: [OK, TIMEOUT]
--- a/testing/web-platform/meta/service-workers/service-worker/update-no-cache-request-headers.https.html.ini
+++ b/testing/web-platform/meta/service-workers/service-worker/update-no-cache-request-headers.https.html.ini
@@ -1,3 +1,6 @@
 [update-no-cache-request-headers.https.html]
   [headers in no-cache mode]
-    expected: [PASS, FAIL]
+    expected:
+      if fission and not swgl and (processor == "x86") and (os == "linux"): [FAIL, PASS]
+      if fission and swgl and (os == "win"): [FAIL, PASS]
+      [PASS, FAIL]
--- a/testing/web-platform/meta/service-workers/service-worker/update-not-allowed.https.html.ini
+++ b/testing/web-platform/meta/service-workers/service-worker/update-not-allowed.https.html.ini
@@ -2,28 +2,30 @@
   disabled:
     if os == "android": bug 1550895 (frequently fails on geckoview)
   expected:
     if os == "mac": ERROR
     if os == "win": ERROR
     [ERROR, TIMEOUT]
   [ServiceWorkerRegistration.update() from installing service worker throws.]
     expected:
+      if (os == "linux") and not debug and not fission: [PASS, NOTRUN, TIMEOUT]
+      if (os == "linux") and not debug and fission: [PASS, TIMEOUT, NOTRUN]
       if (os == "linux") and debug and fission: [PASS, TIMEOUT]
       if (os == "linux") and debug and not fission: [PASS, TIMEOUT, NOTRUN]
-      if (os == "linux") and not debug: [PASS, TIMEOUT, NOTRUN]
 
   [ServiceWorkerRegistration.update() from active service worker succeeds while installing service worker.]
     expected:
-      if (os == "win") and not debug and (processor == "x86"): [PASS, TIMEOUT, FAIL]
       if (os == "win") and not debug and (processor == "x86_64"): [PASS, FAIL]
-      if (os == "win") and debug: PASS
+      if (os == "win") and not debug and (processor == "x86"): [PASS, FAIL, TIMEOUT]
+      if (os == "linux") and not fission and not debug: [PASS, NOTRUN]
+      if (os == "linux") and not fission and debug: [PASS, NOTRUN]
       if (os == "mac") and not debug: [PASS, TIMEOUT]
       if (os == "mac") and debug: PASS
-      if (os == "linux") and not fission: [PASS, NOTRUN]
+      if (os == "win") and debug: PASS
       [PASS, FAIL, TIMEOUT, NOTRUN]
 
   [ServiceWorkerRegistration.update() from client succeeds while installing service worker.]
     expected:
       if not debug and (os == "linux") and fission and (processor == "x86_64"): [PASS, TIMEOUT]
       if not debug and (os == "linux") and fission and (processor == "x86"): [PASS, FAIL, TIMEOUT]
-      if not debug and (os == "linux") and not fission: [PASS, FAIL]
+      if not debug and (os == "linux") and not fission: [PASS, TIMEOUT, FAIL]
       if not debug and (os == "win"): [PASS, FAIL]
--- a/testing/web-platform/meta/service-workers/service-worker/waiting.https.html.ini
+++ b/testing/web-platform/meta/service-workers/service-worker/waiting.https.html.ini
@@ -2,22 +2,22 @@
   bug:
     if fission and (os == "linux"): https://bugzilla.mozilla.org/show_bug.cgi?id=1712654
   expected:
     if (os == "win") and not debug and (processor == "x86"): [OK, TIMEOUT]
     if (os == "linux") and fission: [OK, TIMEOUT]
   [waiting is set after installation]
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1709970
     expected:
-      if (os == "linux") and fission and (processor == "x86"): [FAIL, PASS, TIMEOUT]
-      if (os == "linux") and fission and (processor == "x86_64"): [FAIL, PASS, TIMEOUT]
-      if (os == "win") and not debug and (processor == "x86"): [FAIL, TIMEOUT, PASS]
+      if (os == "win") and not debug and (processor == "x86"): [FAIL, PASS, TIMEOUT]
       if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
+      if (os == "linux") and not fission and not debug: [FAIL, PASS]
+      if (os == "linux") and not fission and debug: [FAIL, PASS]
       if (os == "mac") and not debug: [FAIL, PASS]
-      if (os == "linux") and not fission: [FAIL, PASS]
+      if (os == "linux") and fission: [FAIL, PASS, TIMEOUT]
       FAIL
 
   [The ServiceWorker objects returned from waiting attribute getter that represent the same service worker are the same objects]
     bug:
       if fission and (os == "linux"): https://bugzilla.mozilla.org/show_bug.cgi?id=1712654
     expected:
       if (os == "win") and not debug and (processor == "x86"): [PASS, NOTRUN]
       if (os == "linux") and fission: [PASS, NOTRUN]
--- a/testing/web-platform/meta/svg/animations/correct-events-for-short-animations-with-syncbases.html.ini
+++ b/testing/web-platform/meta/svg/animations/correct-events-for-short-animations-with-syncbases.html.ini
@@ -1,5 +1,3 @@
 [correct-events-for-short-animations-with-syncbases.html]
   [Correct events for short animations with syncbases]
-    expected:
-      if not fission and not swgl and (os == "linux") and debug: [FAIL, PASS]
-      [PASS, FAIL]
+    expected: [PASS, FAIL]
--- a/testing/web-platform/meta/svg/animations/end-of-time-001-crash.html.ini
+++ b/testing/web-platform/meta/svg/animations/end-of-time-001-crash.html.ini
@@ -1,4 +1,6 @@
 [end-of-time-001-crash.html]
   disabled:
-    if os == "linux" and not debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1770058
-  expected: [TIMEOUT, CRASH]
+    if (os == "linux") and not debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1770058
+  expected:
+    if (os == "android") and not debug: [CRASH, TIMEOUT]
+    [TIMEOUT, CRASH]
--- a/testing/web-platform/meta/svg/animations/end-of-time-002-crash.html.ini
+++ b/testing/web-platform/meta/svg/animations/end-of-time-002-crash.html.ini
@@ -1,4 +1,6 @@
 [end-of-time-002-crash.html]
   disabled:
-    if os == "linux" and not debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1770058
-  expected: [TIMEOUT, CRASH]
+    if (os == "linux") and not debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1770058
+  expected:
+    if (os == "android") and not debug: [CRASH, TIMEOUT]
+    [TIMEOUT, CRASH]
--- a/testing/web-platform/meta/svg/animations/scripted/onhover-syncbases.html.ini
+++ b/testing/web-platform/meta/svg/animations/scripted/onhover-syncbases.html.ini
@@ -1,7 +1,7 @@
 [onhover-syncbases.html]
   expected: [OK, ERROR]
   [Check if onhover events reset correctly when triggered multiple times]
     expected:
-      if debug and (os == "android") and not swgl: [FAIL, PASS]
-      if not debug and (os == "win"): [FAIL, PASS]
+      if (os == "win") and not debug and (processor == "x86"): [FAIL, PASS]
+      if (os == "android") and debug and not swgl: [FAIL, PASS]
       [PASS, FAIL]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/trusted-types/trusted-types-event-handlers.tentative.html.ini
@@ -0,0 +1,309 @@
+[trusted-types-event-handlers.tentative.html]
+  [Event handler onclick should be blocked.]
+    expected: FAIL
+
+  [Event handler onchange should be blocked.]
+    expected: FAIL
+
+  [Event handler onfocus should be blocked.]
+    expected: FAIL
+
+  [Event handler oNclick should be blocked.]
+    expected: FAIL
+
+  [Event handler OnClIcK should be blocked.]
+    expected: FAIL
+
+  [Event handler div.oncopy should be blocked.]
+    expected: FAIL
+
+  [Event handler div.oncut should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpaste should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onabort should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onblur should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onfocus should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onauxclick should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onbeforeinput should be blocked.]
+    expected: FAIL
+
+  [Event handler div.oncanplay should be blocked.]
+    expected: FAIL
+
+  [Event handler div.oncanplaythrough should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onchange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onclick should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onclose should be blocked.]
+    expected: FAIL
+
+  [Event handler div.oncontextmenu should be blocked.]
+    expected: FAIL
+
+  [Event handler div.oncuechange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondblclick should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondrag should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondragend should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondragenter should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondragleave should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondragover should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondragstart should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondrop should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ondurationchange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onemptied should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onended should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onformdata should be blocked.]
+    expected: FAIL
+
+  [Event handler div.oninput should be blocked.]
+    expected: FAIL
+
+  [Event handler div.oninvalid should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onkeydown should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onkeypress should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onkeyup should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onload should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onloadeddata should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onloadedmetadata should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onloadend should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onloadstart should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmousedown should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmouseenter should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmouseleave should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmousemove should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmouseout should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmouseover should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmouseup should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onwheel should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpause should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onplay should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onplaying should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onprogress should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onratechange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onreset should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onresize should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onscroll should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onsecuritypolicyviolation should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onseeked should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onseeking should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onselect should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onslotchange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onstalled should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onsubmit should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onsuspend should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontimeupdate should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onvolumechange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onwaiting should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onselectstart should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onselectionchange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontoggle should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpointercancel should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpointerdown should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpointerup should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpointermove should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpointerout should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpointerover should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpointerenter should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onpointerleave should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ongotpointercapture should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onlostpointercapture should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmozfullscreenchange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onmozfullscreenerror should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onanimationcancel should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onanimationend should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onanimationiteration should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onanimationstart should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontransitioncancel should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontransitionend should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontransitionrun should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontransitionstart should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onwebkitanimationend should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onwebkitanimationiteration should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onwebkitanimationstart should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onwebkittransitionend should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onerror should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontouchstart should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontouchend should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontouchmove should be blocked.]
+    expected: FAIL
+
+  [Event handler div.ontouchcancel should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onfullscreenchange should be blocked.]
+    expected: FAIL
+
+  [Event handler div.onfullscreenerror should be blocked.]
+    expected: FAIL
--- a/testing/web-platform/meta/ua-client-hints/useragentdata.https.any.js.ini
+++ b/testing/web-platform/meta/ua-client-hints/useragentdata.https.any.js.ini
@@ -1,8 +1,14 @@
 [useragentdata.https.any.worker.html]
   [tests for navigator.userAgentData]
     expected: FAIL
 
+  [test NavigatorUAData.toJSON() output]
+    expected: FAIL
+
 
 [useragentdata.https.any.html]
   [tests for navigator.userAgentData]
     expected: FAIL
+
+  [test NavigatorUAData.toJSON() output]
+    expected: FAIL
--- a/testing/web-platform/meta/uievents/order-of-events/mouse-events/mousemove-between.html.ini
+++ b/testing/web-platform/meta/uievents/order-of-events/mouse-events/mousemove-between.html.ini
@@ -1,8 +1,8 @@
 [mousemove-between.html]
   expected:
     if os == "mac": ERROR
   [Mousemove events between elements should fire in the correct order.]
     expected:
-      if (os == "linux") and (processor == "x86_64") and swgl and fission: [FAIL, PASS]
-      if (os == "linux") and (processor == "x86"): [FAIL, PASS]
+      if (os == "linux") and swgl and fission: [FAIL, PASS]
+      if (os == "android") and not debug: [FAIL, PASS]
       [PASS, FAIL]
--- a/testing/web-platform/meta/visual-viewport/resize-event-order.html.ini
+++ b/testing/web-platform/meta/visual-viewport/resize-event-order.html.ini
@@ -1,27 +1,29 @@
 [resize-event-order.html]
   expected:
-    if (os == "win") and not debug and (processor == "x86"): [TIMEOUT, OK]
+    if (os == "win") and not debug and (processor == "x86_64"): [TIMEOUT, OK]
     if (os == "android") and debug and swgl: [TIMEOUT, OK]
+    if (os == "android") and debug and not swgl: [TIMEOUT, OK]
     if (os == "win") and debug: OK
     if (os == "android") and not debug: [TIMEOUT, OK]
     if os == "mac": OK
     [OK, TIMEOUT]
   [Popup: DOMWindow resize fired before VisualViewport.]
     expected:
-      if (os == "android") and debug and not swgl: [PASS, TIMEOUT, FAIL]
       if (os == "android") and debug and swgl: [TIMEOUT, PASS, FAIL]
-      if (os == "win") and not debug and (processor == "x86"): [TIMEOUT, PASS, FAIL]
+      if (os == "android") and debug and not swgl: [TIMEOUT, PASS, FAIL]
+      if (os == "win") and not debug and (processor == "x86"): [PASS, FAIL, TIMEOUT]
+      if (os == "win") and not debug and (processor == "x86_64"): [TIMEOUT, PASS, FAIL]
       if (os == "android") and not debug: [TIMEOUT, FAIL]
       if (os == "win") and debug: FAIL
       if os == "mac": FAIL
       [FAIL, PASS, TIMEOUT]
 
   [iframe: DOMWindow resize fired before VisualViewport.]
     expected:
-      if (os == "android") and debug and not swgl: [FAIL, NOTRUN, PASS]
+      if (os == "win") and not debug and (processor == "x86_64"): [NOTRUN, FAIL]
       if (os == "android") and debug and swgl: [NOTRUN, PASS, FAIL]
-      if (os == "win") and not debug and (processor == "x86"): [NOTRUN, FAIL]
+      if (os == "android") and debug and not swgl: [NOTRUN, PASS, FAIL]
+      if (os == "win") and debug: FAIL
       if (os == "android") and not debug: [NOTRUN, FAIL]
-      if (os == "win") and debug: FAIL
       if os == "mac": FAIL
       [FAIL, NOTRUN]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/webaudio/the-audio-api/the-audionode-interface/audionode-iframe.window.js.ini
@@ -0,0 +1,3 @@
+[audionode-iframe.window.html]
+  [Call a constructor from iframe page and then destroy the iframe]
+    expected: FAIL
--- a/testing/web-platform/meta/webaudio/the-audio-api/the-oscillatornode-interface/osc-basic-waveform.html.ini
+++ b/testing/web-platform/meta/webaudio/the-audio-api/the-oscillatornode-interface/osc-basic-waveform.html.ini
@@ -38,16 +38,16 @@
     expected: FAIL
 
   [X Sine: SNR (db) is not greater than or equal to 118.91. Got 112.67669857220825.]
     expected: FAIL
 
   [X Sine: SNR (db) is not greater than or equal to 130.95. Got 112.67669857220825.]
     expected: FAIL
 
+  [X Custom: 100 Hz does not equal [1,1.0141456127166748,1.0280853509902954,1.0418163537979126,1.0553359985351562,1.0686413049697876,1.081729769706726,1.094598650932312,1.1072453260421753,1.1196671724319458,1.1318618059158325,1.1438266038894653,1.1555593013763428,1.1670573949813843,1.1783186197280884,1.189340591430664...\] with an element-wise tolerance of {"absoluteThreshold":0.0000018478,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[132\]\t6.4742147922515869e-1\t6.4741957187652588e-1\t1.9073486328125000e-6\t2.9460781163660346e-6\t1.8477999999999999e-6\n\t[133\]\t6.2944263219833374e-1\t6.2944072484970093e-1\t1.9073486328125000e-6\t3.0302275615673585e-6\t1.8477999999999999e-6\n\t[135\]\t5.9310543537139893e-1\t5.9310334920883179e-1\t2.0861625671386719e-6\t3.5173677065245060e-6\t1.8477999999999999e-6\n\t[136\]\t5.7475423812866211e-1\t5.7475227117538452e-1\t1.9669532775878906e-6\t3.4222627316729277e-6\t1.8477999999999999e-6\n\t[137\]\t5.5628657341003418e-1\t5.5628448724746704e-1\t2.0861625671386719e-6\t3.7501721061127269e-6\t1.8477999999999999e-6\n\t...and 97 more errors.\n\tMax AbsError of 4.5299530029296875e-6 at index of 197.\n\t[197\]\t-6.1586797237396240e-1\t-6.1587250232696533e-1\t4.5299530029296875e-6\t7.3553421947141031e-6\t1.8477999999999999e-6\n\tMax RelError of 4.6918106549645650e-4 at index of 165.\n\t[165\]\t7.5594326481223106e-3\t7.5558875687420368e-3\t3.5450793802738190e-6\t4.6918106549645650e-4\t1.8477999999999999e-6\n]
+    expected: FAIL
+
   [X Custom: SNR (db) is not greater than or equal to 122.43. Got 112.76579764697749.]
     expected: FAIL
 
   [X Custom: SNR (db) is not greater than or equal to 138.76. Got 132.76794522938812.]
     expected: FAIL
-
-  [X Custom: 100 Hz does not equal [1,1.0141456127166748,1.0280853509902954,1.0418163537979126,1.0553359985351562,1.0686413049697876,1.081729769706726,1.094598650932312,1.1072453260421753,1.1196671724319458,1.1318618059158325,1.1438266038894653,1.1555593013763428,1.1670573949813843,1.1783186197280884,1.189340591430664...\] with an element-wise tolerance of {"absoluteThreshold":0.0000018478,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[132\]\t6.4742147922515869e-1\t6.4741957187652588e-1\t1.9073486328125000e-6\t2.9460781163660346e-6\t1.8477999999999999e-6\n\t[133\]\t6.2944263219833374e-1\t6.2944072484970093e-1\t1.9073486328125000e-6\t3.0302275615673585e-6\t1.8477999999999999e-6\n\t[135\]\t5.9310543537139893e-1\t5.9310334920883179e-1\t2.0861625671386719e-6\t3.5173677065245060e-6\t1.8477999999999999e-6\n\t[136\]\t5.7475423812866211e-1\t5.7475227117538452e-1\t1.9669532775878906e-6\t3.4222627316729277e-6\t1.8477999999999999e-6\n\t[137\]\t5.5628657341003418e-1\t5.5628448724746704e-1\t2.0861625671386719e-6\t3.7501721061127269e-6\t1.8477999999999999e-6\n\t...and 97 more errors.\n\tMax AbsError of 4.5299530029296875e-6 at index of 197.\n\t[197\]\t-6.1586797237396240e-1\t-6.1587250232696533e-1\t4.5299530029296875e-6\t7.3553421947141031e-6\t1.8477999999999999e-6\n\tMax RelError of 4.6918106549645650e-4 at index of 165.\n\t[165\]\t7.5594326481223106e-3\t7.5558875687420368e-3\t3.5450793802738190e-6\t4.6918106549645650e-4\t1.8477999999999999e-6\n]
-    expected: FAIL
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/webdriver/tests/bidi/__dir__.ini
@@ -0,0 +1,1 @@
+lsan-allowed: [Alloc, Realloc, XPCNativeInterface::NewInstance, XPCNativeSet::NewInstance, XPCWrappedNative::GetNewOrUsed, XPCWrappedNativeProto::GetNewOrUsed, mozilla::extensions::AtomSet::Get, mozilla::extensions::MatchPattern::Constructor, mozilla::extensions::MatchPattern::Init, nsDynamicAtom::Create]
--- a/testing/web-platform/meta/webdriver/tests/perform_actions/pointer_origin.py.ini
+++ b/testing/web-platform/meta/webdriver/tests/perform_actions/pointer_origin.py.ini
@@ -1,6 +1,6 @@
 [pointer_origin.py]
   [test_viewport_inside]
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1762211
     expected:
+      if (os == "android") and debug: [PASS, FAIL]
       if (os == "android") and not debug: [PASS, FAIL]
-      if (os == "android") and debug: [PASS, FAIL]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/webdriver/tests/status/__dir__.ini
@@ -0,0 +1,1 @@
+lsan-allowed: [Alloc, Realloc, XPCNativeInterface::NewInstance, XPCNativeSet::NewInstance, XPCWrappedNative::GetNewOrUsed, XPCWrappedNativeProto::GetNewOrUsed, mozilla::extensions::AtomSet::Get, mozilla::extensions::MatchPattern::Constructor, mozilla::extensions::MatchPattern::Init, nsDynamicAtom::Create]
--- a/testing/web-platform/meta/webdriver/tests/switch_to_parent_frame/switch.py.ini
+++ b/testing/web-platform/meta/webdriver/tests/switch_to_parent_frame/switch.py.ini
@@ -8,10 +8,10 @@
       if os == "android": https://bugzilla.mozilla.org/show_bug.cgi?id=1506782
 
   [test_no_browsing_context_when_already_top_level]
     disabled:
       if os == "android": https://bugzilla.mozilla.org/show_bug.cgi?id=1506782
 
   [test_no_parent_browsing_context]
     expected:
-      if (os == "linux") and not fission and not debug and not swgl: [PASS, FAIL]
-      if (os == "linux") and fission and not debug: [PASS, FAIL]
+      if (os == "linux") and not debug and not swgl and not fission: [PASS, FAIL]
+      if (os == "linux") and not debug and not swgl and fission: [PASS, FAIL]
--- a/testing/web-platform/meta/webrtc/RTCRtpReceiver-getStats.https.html.ini
+++ b/testing/web-platform/meta/webrtc/RTCRtpReceiver-getStats.https.html.ini
@@ -4,13 +4,15 @@
     expected: FAIL
 
   [receiver.getStats() via addTrack should return stats report containing inbound-rtp stats]
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1225720
     expected: FAIL
 
   [receiver.getStats() should work on a stopped transceiver]
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1056433
-    expected: [FAIL, PASS]
+    expected:
+      if (os == "linux") and not debug and not fission: [PASS, FAIL]
+      [FAIL, PASS]
 
   [receiver.getStats() should work with a closed PeerConnection]
     bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1056433
     expected: [FAIL, PASS]
--- a/testing/web-platform/meta/websockets/Send-binary-arraybufferview-int8.any.js.ini
+++ b/testing/web-platform/meta/websockets/Send-binary-arraybufferview-int8.any.js.ini
@@ -1,29 +1,26 @@
 [Send-binary-arraybufferview-int8.any.worker.html]
 
 [Send-binary-arraybufferview-int8.any.worker.html?wss]
 
 [Send-binary-arraybufferview-int8.any.html?wpt_flags=h2]
   expected:
+    if (os == "android") and debug and not swgl: [OK, TIMEOUT]
     if (os == "mac") and not debug: [OK, TIMEOUT]
-    if (os == "android") and debug and not swgl: [OK, TIMEOUT]
   [Send binary data on a WebSocket - ArrayBufferView - Int8Array - Connection should be closed]
     expected:
-      if (os == "android") and not swgl and debug: [PASS, FAIL]
-      if (os == "android") and not swgl and not debug: [PASS, FAIL]
       if (os == "mac") and not debug: [PASS, NOTRUN]
+      if (os == "android") and not swgl: [PASS, FAIL]
 
 [Send-binary-arraybufferview-int8.any.html?wss]
 
 [Send-binary-arraybufferview-int8.any.html]
 
 [Send-binary-arraybufferview-int8.any.worker.html?wpt_flags=h2]
   expected:
-    if (os == "android") and not swgl and not debug: [OK, TIMEOUT]
     if (os == "mac") and not debug: [OK, TIMEOUT]
-    if (os == "android") and swgl: [OK, ERROR, TIMEOUT]
-    if (os == "android") and debug and not swgl: [OK, ERROR, TIMEOUT]
+    if (os == "android") and not debug: [OK, TIMEOUT]
+    if (os == "android") and debug: [OK, ERROR, TIMEOUT]
   [Send binary data on a WebSocket - ArrayBufferView - Int8Array - Connection should be closed]
     expected:
-      if (os == "android") and not debug: [PASS, FAIL]
       if (os == "mac") and not debug: [PASS, NOTRUN]
-      if (os == "android") and debug and not swgl: [PASS, FAIL]
+      if (os == "android") and not swgl: [PASS, FAIL]
--- a/testing/web-platform/meta/websockets/bufferedAmount-unchanged-by-sync-xhr.any.js.ini
+++ b/testing/web-platform/meta/websockets/bufferedAmount-unchanged-by-sync-xhr.any.js.ini
@@ -6,35 +6,34 @@
 
 [bufferedAmount-unchanged-by-sync-xhr.any.html?wss]
 
 [bufferedAmount-unchanged-by-sync-xhr.any.worker.html]
 
 [bufferedAmount-unchanged-by-sync-xhr.any.sharedworker.html?wpt_flags=h2]
   expected:
     if (os == "mac") and not debug: [OK, TIMEOUT]
-    if (os == "android") and not debug: [OK, TIMEOUT]
-    if (os == "android") and debug and not swgl: [OK, TIMEOUT]
+    if (os == "android") and not swgl: [OK, TIMEOUT]
   [bufferedAmount should not be updated during a sync XHR]
     expected:
       if (os == "mac") and not debug: [PASS, TIMEOUT]
 
 
 [bufferedAmount-unchanged-by-sync-xhr.any.worker.html?wss]
 
 [bufferedAmount-unchanged-by-sync-xhr.any.html?wpt_flags=h2]
   expected:
-    if (os == "mac") and not debug: [OK, TIMEOUT]
+    if (os == "android") and debug and not swgl: [OK, ERROR]
     if (os == "android") and not debug: [OK, TIMEOUT]
-    if (os == "android") and debug and not swgl: [OK, ERROR]
+    if (os == "mac") and not debug: [OK, TIMEOUT]
   [bufferedAmount should not be updated during a sync XHR]
     expected:
       if (os == "mac") and not debug: [PASS, TIMEOUT]
 
 
 [bufferedAmount-unchanged-by-sync-xhr.any.worker.html?wpt_flags=h2]
   expected:
+    if (os == "android") and debug and not swgl: [OK, TIMEOUT]
     if (os == "mac") and not debug: [OK, TIMEOUT]
     if (os == "android") and not debug: [OK, ERROR]
-    if (os == "android") and debug and not swgl: [OK, TIMEOUT]
   [bufferedAmount should not be updated during a sync XHR]
     expected:
       if (os == "mac") and not debug: [PASS, TIMEOUT]
--- a/testing/web-platform/meta/websockets/eventhandlers.any.js.ini
+++ b/testing/web-platform/meta/websockets/eventhandlers.any.js.ini
@@ -1,15 +1,15 @@
 [eventhandlers.any.html?wpt_flags=h2]
   expected:
-    if (os == "android"): [OK, ERROR, TIMEOUT]
+    if os == "android": [OK, ERROR, TIMEOUT]
 
 [eventhandlers.any.html]
 
 [eventhandlers.any.worker.html?wss]
 
 [eventhandlers.any.html?wss]
 
 [eventhandlers.any.worker.html]
 
 [eventhandlers.any.worker.html?wpt_flags=h2]
   expected:
-    if (os == "android"): [ERROR, OK, TIMEOUT]
+    if os == "android": [OK, ERROR, TIMEOUT]
--- a/testing/web-platform/meta/websockets/remove-own-iframe-during-onerror.window.js.ini
+++ b/testing/web-platform/meta/websockets/remove-own-iframe-during-onerror.window.js.ini
@@ -1,7 +1,7 @@
 [remove-own-iframe-during-onerror.window.html]
 
 [remove-own-iframe-during-onerror.window.html?wss]
 
 [remove-own-iframe-during-onerror.window.html?wpt_flags=h2]
   expected:
-    if (os == "android"): [TIMEOUT, OK, ERROR]
+    if os == "android": [OK, ERROR, TIMEOUT]
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/window-placement/multi-screen-window-open.tentative.https.html.ini
@@ -0,0 +1,3 @@
+[multi-screen-window-open.tentative.https.html]
+  [Use multi-screen details to open a popup window on each screen]
+    expected: FAIL
--- a/testing/web-platform/meta/xhr/abort-upload-event-loadend.any.js.ini
+++ b/testing/web-platform/meta/xhr/abort-upload-event-loadend.any.js.ini
@@ -1,10 +1,14 @@
 [abort-upload-event-loadend.any.html]
 
 [abort-upload-event-loadend.any.worker.html]
   expected:
-    if (os == "linux") and fission: [OK, TIMEOUT]
-    if (os == "linux") and not fission: [OK, TIMEOUT]
+    if (os == "linux") and not debug and fission and (processor == "x86_64"): [OK, TIMEOUT]
+    if (os == "linux") and not debug and fission and (processor == "x86"): [OK, TIMEOUT]
+    if (os == "linux") and not debug and not fission: [OK, TIMEOUT]
+    if (os == "linux") and debug: [OK, TIMEOUT]
   [XMLHttpRequest: The abort() method: Fire a progress event named loadend on the XMLHttpRequestUpload object]
     expected:
-      if (os == "linux") and not fission: [PASS, TIMEOUT]
-      if (os == "linux") and fission: [PASS, TIMEOUT]
+      if (os == "linux") and not debug and fission and (processor == "x86_64"): [PASS, TIMEOUT]
+      if (os == "linux") and not debug and fission and (processor == "x86"): [PASS, TIMEOUT]
+      if (os == "linux") and not debug and not fission: [PASS, TIMEOUT]
+      if (os == "linux") and debug: [PASS, TIMEOUT]
--- a/testing/web-platform/meta/xhr/event-timeout-order.any.js.ini
+++ b/testing/web-platform/meta/xhr/event-timeout-order.any.js.ini
@@ -1,12 +1,12 @@
 [event-timeout-order.any.html]
 
 [event-timeout-order.any.worker.html]
   [XMLHttpRequest: event - timeout (order of events)]
     expected:
-      if (os == "win") and debug and (processor == "x86_64") and not swgl: [FAIL, PASS]
-      if (os == "win") and debug and (processor == "x86_64") and swgl: [FAIL, PASS]
-      if (os == "win") and not debug and (processor == "x86_64"): [FAIL, PASS]
-      if (os == "win") and debug and (processor == "x86"): [FAIL, PASS]
-      if (os == "mac") and not debug: [FAIL, PASS]
+      if (os == "win") and not swgl and debug and (processor == "x86"): [FAIL, PASS]
+      if (os == "win") and not swgl and debug and (processor == "x86_64"): [FAIL, PASS]
+      if (os == "win") and not swgl and not debug and (processor == "x86"): [FAIL, PASS]
+      if (os == "win") and not swgl and not debug and (processor == "x86_64"): [FAIL, PASS]
+      if (os == "win") and swgl: [FAIL, PASS]
       if (os == "mac") and debug: [FAIL, PASS]
       [PASS, FAIL]
--- a/testing/web-platform/meta/xhr/xhr-timeout-longtask.any.js.ini
+++ b/testing/web-platform/meta/xhr/xhr-timeout-longtask.any.js.ini
@@ -1,13 +1,13 @@
 [xhr-timeout-longtask.any.html]
   [Long tasks should not trigger load timeout]
     expected:
-      if (os == "mac") and not debug: [PASS, FAIL]
       if (os == "mac") and debug: [FAIL, PASS]
+      if (os == "mac") and not debug: [FAIL, PASS]
       FAIL
 
 
 [xhr-timeout-longtask.any.worker.html]
   [Long tasks should not trigger load timeout]
     expected:
       if (os == "mac") and not debug: [FAIL, PASS]
       if (os == "android") and not debug: PASS
--- a/testing/web-platform/tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.window.js
+++ b/testing/web-platform/tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.window.js
@@ -21,10 +21,10 @@ bluetooth_test(async (t) => {
   await iframeWatcher.wait_for('load');
 
   // 2. Request the device from the iframe.
   const windowWatcher = new EventWatcher(t, window, ['message']);
   iframe.contentWindow.postMessage({type: 'RequestDevice'}, '*');
   const messageEvent = await windowWatcher.wait_for('message');
   assert_equals(
       messageEvent.data,
-      'SecurityError: requestDevice() called from cross-origin iframe.');
+      'SecurityError: Failed to execute \'requestDevice\' on \'Bluetooth\': Access to the feature "bluetooth" is disallowed by permissions policy.');
 }, test_desc);
--- a/testing/web-platform/tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.window.js
+++ b/testing/web-platform/tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.window.js
@@ -2,18 +2,19 @@
 // META: script=/resources/testharnessreport.js
 // META: script=/resources/testdriver.js
 // META: script=/resources/testdriver-vendor.js
 // META: script=/bluetooth/resources/bluetooth-test.js
 // META: script=/bluetooth/resources/bluetooth-fake-devices.js
 'use strict';
 const test_desc = 'Request device from a unique origin. ' +
     'Should reject with SecurityError.';
-const expected = 'SecurityError: requestDevice() called from cross-origin ' +
-    'iframe.';
+const expected = 'SecurityError: Failed to execute \'requestDevice\' on ' +
+    '\'Bluetooth\': Access to the feature "bluetooth" is disallowed by ' +
+    'permissions policy.';
 
 let iframe = document.createElement('iframe');
 
 bluetooth_test(
     () => getConnectedHealthThermometerDevice()
               // 1. Load the iframe.
               .then(() => new Promise(resolve => {
                       iframe.sandbox.add('allow-scripts');
copy from testing/web-platform/tests/clipboard-apis/async-navigator-clipboard-read-sanitize.https.html
copy to testing/web-platform/tests/clipboard-apis/async-navigator-clipboard-read-resource-load.https.html
--- a/testing/web-platform/tests/clipboard-apis/async-navigator-clipboard-read-sanitize.https.html
+++ b/testing/web-platform/tests/clipboard-apis/async-navigator-clipboard-read-resource-load.https.html
@@ -1,44 +1,40 @@
 <!doctype html>
 <meta charset="utf-8">
-<title>Async Clipboard.read() should sanitize text/html</title>
+<title>Async Clipboard.read() should not trigger resource loading</title>
 <link rel="help" href="https://w3c.github.io/clipboard-apis/#dom-clipboard-read">
 <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1315563">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script src="/resources/testdriver.js"></script>
 <script src="/resources/testdriver-vendor.js"></script>
 
 <p><button id="button">Put payload in the clipboard</button></p>
 <div id="output"></div>
 
 <script>
-let testFailed = false;
-function fail() {
-  testFailed = true;
-}
-
 button.onclick = () => document.execCommand('copy');
 document.oncopy = ev => {
   ev.preventDefault();
   ev.clipboardData.setData(
       'text/html',
-      `<form><math><mtext></form><form><mglyph><xmp></math><img src=invalid onerror=fail()></xmp>`);
+      '<img src="https://example.com/oops">');
 };
 
 promise_test(async test => {
+  let loadObserved = false;
+  const observer = new PerformanceObserver(() => loadObserved = true);
+  observer.observe({type: 'resource'});
   await test_driver.set_permission({name: 'clipboard-read'}, 'granted');
   await test_driver.click(button);
 
   const items = await navigator.clipboard.read();
   const htmlBlob = await items[0].getType("text/html");
   const html = await htmlBlob.text();
 
-  // This inserts an image with `onerror` handler if `html` is not properly sanitized
-  output.innerHTML = html;
+  assert_equals(html, '<img src="https://example.com/oops">');
 
-  // Allow the 'error' event to be dispatched asynchronously
+  // Allow resource loading to start asynchronously
   await new Promise(resolve => test.step_timeout(resolve, 100));
-
-  assert_false(testFailed);
+  assert_false(loadObserved, 'Should not observe resource loading');
 });
 </script>
--- a/testing/web-platform/tests/cookie-store/cookieListItem_attributes.https.any.js
+++ b/testing/web-platform/tests/cookie-store/cookieListItem_attributes.https.any.js
@@ -1,17 +1,19 @@
 // META: title=Cookie Store API: cookieListItem attributes
 // META: global=window,serviceworker
 
 'use strict';
 
 const kCurrentHostname = (new URL(self.location.href)).hostname;
 
 const kOneDay = 24 * 60 * 60 * 1000;
+const kFourHundredDays = 400 * kOneDay;
 const kTenYears = 10 * 365 * kOneDay;
+const kFourHundredDaysFromNow = Date.now() + kFourHundredDays;
 const kTenYearsFromNow = Date.now() + kTenYears;
 
 const kCookieListItemKeys =
     ['domain', 'expires', 'name', 'path', 'sameSite', 'secure', 'value'].sort();
 
 promise_test(async testCase => {
   await cookieStore.delete('cookie-name');
 
@@ -63,17 +65,17 @@ promise_test(async testCase => {
   testCase.add_cleanup(async () => {
     await cookieStore.delete('cookie-name');
   });
   const cookie = await cookieStore.get('cookie-name');
   assert_equals(cookie.name, 'cookie-name');
   assert_equals(cookie.value, 'cookie-value');
   assert_equals(cookie.domain, null);
   assert_equals(cookie.path, '/');
-  assert_approx_equals(cookie.expires, kTenYearsFromNow, kOneDay);
+  assert_approx_equals(cookie.expires, kFourHundredDaysFromNow, kOneDay);
   assert_equals(cookie.secure, true);
   assert_equals(cookie.sameSite, 'strict');
   const itemKeys = Object.keys(cookie);
   for (const key of kCookieListItemKeys) {
     assert_in_array(key, itemKeys);
   }
 }, 'CookieListItem - cookieStore.set with expires set to a timestamp 10 ' +
    'years in the future');
@@ -86,17 +88,17 @@ promise_test(async testCase => {
   testCase.add_cleanup(async () => {
     await cookieStore.delete('cookie-name');
   });
   const cookie = await cookieStore.get('cookie-name');
   assert_equals(cookie.name, 'cookie-name');
   assert_equals(cookie.value, 'cookie-value');
   assert_equals(cookie.domain, null);
   assert_equals(cookie.path, '/');
-  assert_approx_equals(cookie.expires, kTenYearsFromNow, kOneDay);
+  assert_approx_equals(cookie.expires, kFourHundredDaysFromNow, kOneDay);
   assert_equals(cookie.secure, true);
 }, 'CookieListItem - cookieStore.set with expires set to a Date 10 ' +
    'years in the future');
 
 promise_test(async testCase => {
   await cookieStore.delete({ name: 'cookie-name', domain: kCurrentHostname });
 
   await cookieStore.set({ name: 'cookie-name', value: 'cookie-value',
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-animations/CSSAnimation-getKeyframes-crash.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link rel="help" href="https://crbug.com/1326225">
+  <title>Crash test calling getKeyframes on an orphaned element</title>
+</head>
+<style type="text/css">
+  @keyframes anim {
+    from { left: 0; }
+  }
+</style>
+<body>
+  <div id="container">
+    <div id="target">
+    </div>
+  </div>
+</body>
+<script type="text/javascript">
+  target.style.animation = "anim 0.01s";
+  var animation = target.getAnimations()[0];
+  container.innerHTML = 1;
+  animation.effect.getKeyframes()[0].hasOwnProperty();
+</script>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-animations/translation-animation-on-important-property-ref.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<title>Translation animation on important property</title>
+<link rel="help" href="https://crbug.com/1324679">
+<style>
+#target {
+  width: 100px;
+  height: 100px;
+  background: green;
+  transform:  none !important;
+}
+</style>
+<div id="target"></div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-animations/translation-animation-on-important-property.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<title>Translation animation on important property</title>
+<link rel="help" href="https://crbug.com/1324679">
+<link rel="match" href="translation-animation-on-important-property-ref.html">
+<style>
+@keyframes move {
+  0% {transform: translateX(0px);}
+  100% {transform: translateX(100px);}
+}
+#target {
+  width: 100px;
+  height: 100px;
+  background: green;
+  transform:  none !important;
+  animation: move 10000s cubic-bezier(0, 1, 1, 0) -5000s;
+}
+</style>
+<div id="target"></div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-backgrounds/animations/background-color-animation-will-change-contents-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<style>
+.box {
+  width: 600px;
+  height: 600px;
+  background-color: rgba(0, 200, 0, 1);
+}
+</style>
+<body>
+  <div class='box'></div>
+</body>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-backgrounds/animations/background-color-animation-will-change-contents.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-color">
+<link rel="match" href="background-color-animation-will-change-contents-ref.html">
+<style>
+.container {
+  width: 600px;
+  height: 600px;
+  will-change: contents;
+  /* Start with a short delay and ensure that we pick up the color change when
+     the animation enters the active phase. */
+  animation: bgcolor 10s steps(1, jump-start) backwards 0.2s;
+}
+@keyframes bgcolor {
+  0% { background-color: rgba(200, 0, 0, 1); }
+  100% { background-color: rgba(0, 200, 0, 1); }
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<body>
+<div class="container"></div>
+
+<script>
+  function waitForActiveAnimation() {
+    const anim = document.getAnimations()[0];
+    return new Promise(resolve => {
+      const tick = () => {
+        requestAnimationFrame(() => {
+          if (anim.currentTime > 200)
+            resolve();
+          else
+            tick();
+        });
+      };
+      tick();
+    });
+  }
+
+  window.onload = async () => {
+    await waitForActiveAnimation();
+    takeScreenshot();
+  };
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-backgrounds/animations/background-color-scroll-into-viewport-ref.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<style>
+.container {
+  width: 100vw;
+  height: 100vh;
+  overflow:  hidden;
+  position:  relative;
+}
+.spacer {
+  height: 1000vh;
+}
+#target {
+  width:  50vw;
+  height:  50vh;
+  background-color: rgb(100, 100, 0);
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<body>
+  <div class="container">
+    <div class="spacer"></div>
+    <div id="target"></div>
+  </div>
+</body>
+<script>
+async function raf() {
+  return new Promise((resolve) => {
+    requestAnimationFrame(() => {
+      resolve();
+    });
+  })
+}
+
+window.onload = async () => {
+  await raf();
+  await raf();
+  target.scrollIntoView();
+  takeScreenshot();
+};
+</script>
+
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-backgrounds/animations/background-color-scroll-into-viewport.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-color">
+<link rel="match" href="background-color-scroll-into-viewport-ref.html">
+<style>
+.container {
+  width: 100vw;
+  height: 100vh;
+  overflow:  hidden;
+  position:  relative;
+}
+.spacer {
+  height: 1000vh;
+}
+#target {
+  width:  50vw;
+  height:  50vh;
+  background-color: green;
+  animation: bgcolor 1000000s cubic-bezier(0,1,1,0) -500000s;
+}
+@keyframes bgcolor {
+  0% { background-color: rgb(0, 200, 0); }
+  100% { background-color: rgb(200, 0, 0); }
+}
+</style>
+<script src="/common/reftest-wait.js"></script>
+<body>
+  <div class="container">
+    <div class="spacer"></div>
+    <div id="target"></div>
+  </div>
+</body>
+<script>
+async function raf() {
+  return new Promise((resolve) => {
+    requestAnimationFrame(() => {
+      resolve();
+    });
+  })
+}
+
+document.getAnimations()[0].ready.then(async () => {
+  await raf();
+  await raf();
+  target.scrollIntoView();
+  takeScreenshot();
+});
+</script>
+
+</html>
copy from testing/web-platform/tests/css/css-contain/container-queries/container-units-gradient.html
copy to testing/web-platform/tests/css/css-contain/container-queries/container-units-gradient-invalidation.html
--- a/testing/web-platform/tests/css/css-contain/container-queries/container-units-gradient.html
+++ b/testing/web-platform/tests/css/css-contain/container-queries/container-units-gradient-invalidation.html
@@ -1,25 +1,38 @@
 <!DOCTYPE html>
+<html class=reftest-wait>
 <title>Container Relative Units in gradients</title>
 <link rel="help" href="https://drafts.csswg.org/css-contain-3/#container-lengths">
 <link rel="match" href="container-units-gradient-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/rendering-utils.js"></script>
 <style>
   .container {
     container-type: size;
+    width: 500px;
+    height: 400px;
+    display: flex;
+    flex-wrap: wrap;
+  }
+  .smaller {
     width: 400px;
     height: 300px;
-    display: flex;
-    flex-wrap: wrap;
   }
   .box {
     width: 100px;
     height: 100px;
     margin: 5px;
   }
 </style>
 <div class=container>
   <div class=box style="background:linear-gradient(green 5cqw, blue 10cqh)"></div>
   <div class=box style="background:linear-gradient(green 5cqi, blue 10cqb)"></div>
   <div class=box style="background:linear-gradient(green 5cqmin, blue 10cqmax)"></div>
   <div class=box style="background:radial-gradient(green 5cqw, blue 10cqh)"></div>
-  <div class=box style="background:conic-gradient(from 180deg at 10cqh, green, blue);"></div>
+  <div class=box style="background:conic-gradient(from 180deg at 10cqh, green, blue)"></div>
 </div>
+<script>
+  document.body.offsetTop;
+  document.querySelector('.container').classList.add('smaller');
+  waitForAtLeastOneFrame().then(takeScreenshot);
+</script>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-contain/container-queries/crashtests/orthogonal-replaced-crash.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<title>Chrome crash for replaced in orthogonal flow query container</title>
+<link rel="help" href="https://crbug.com/1325673">
+<p>Pass if no crash.</p>
+<iframe></iframe>
+<style>
+  body {
+    container-type: size;
+    writing-mode: vertical-rl;
+  }
+</style>
--- a/testing/web-platform/tests/css/css-text-decor/reference/text-decoration-thickness-fixed-ref.html
+++ b/testing/web-platform/tests/css/css-text-decor/reference/text-decoration-thickness-fixed-ref.html
@@ -14,17 +14,17 @@ src: url(../resources/UnderlineTest-Thin
 
 @font-face {
 font-family: underline-thick;
 src: url(../resources/UnderlineTest-Thick.ttf);
 }
 
 .test {
 text-underline-position: from-font;
-font-size: 64px;
+font-size: 62px;
 line-height: 1.8;
 }
 
 .thin_underline {
 text-decoration: underline;
 font-family: underline-thin;
 text-decoration-thickness: from-font;
 }
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text-decor/reference/text-decoration-thickness-length-rounding-min-val-ref.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>
+            CSS Text Decoration Test: text-decoration-thickness length min rounding
+        </title>
+
+        <link rel="author" title="Traian Captan" href="mailto:tcaptan@chromium.org">
+
+        <style>
+            table {
+                border: 3px solid gray;
+                border-collapse: collapse;
+            }
+
+            th,
+            td{
+                border: 2px solid gray;
+                padding: 10px;
+                text-align: center;
+            }
+
+            .one_px {
+                text-decoration-thickness: 1px;
+            }
+
+            .solid {
+                text-decoration-style: solid;
+            }
+
+            .double {
+                text-decoration-style: double;
+            }
+
+            .dotted {
+                text-decoration-style: dotted;
+            }
+
+            .dashed {
+                text-decoration-style: dashed;
+            }
+
+            .wavy {
+                text-decoration-style: wavy;
+            }
+
+            .underline {
+                text-decoration-line: underline;
+            }
+
+            .line_through {
+                text-decoration-line: line-through;
+            }
+
+            .overline {
+                text-decoration-line: overline;
+            }
+        </style>
+    </head>
+
+    <body>
+        <h1>
+            Test passes if text-decoration-thickness length is rounded up to 1px
+        </h1>
+
+        <table>
+            <thead>
+                <tr>
+                    <th rowspan="2">
+                        Line Type
+                    </th>
+                    <th colspan="5">
+                        Line Style
+                    </th>
+                </tr>
+                <tr>
+                    <th>
+                        Solid
+                    </th>
+                    <th>
+                        Double
+                    </th>
+                    <th>
+                        Dotted
+                    </th>
+                    <th>
+                        Dashed
+                    </th>
+                    <th>
+                        Wavy
+                    </th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <th>
+                        Underline
+                    </th>
+                    <td class="one_px solid underline">
+                        Thickness test.
+                    </td>
+                    <td class="one_px double underline">
+                        Thickness test.
+                    </td>
+                    <td class="one_px dotted underline">
+                        Thickness test.
+                    </td>
+                    <td class="one_px dashed underline">
+                        Thickness test.
+                    </td>
+                    <td class="one_px wavy underline">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Line-through
+                    </th>
+                    <td class="one_px solid line_through">
+                        Thickness test.
+                    </td>
+                    <td class="one_px double line_through">
+                        Thickness test.
+                    </td>
+                    <td class="one_px dotted line_through">
+                        Thickness test.
+                    </td>
+                    <td class="one_px dashed line_through">
+                        Thickness test.
+                    </td>
+                    <td class="one_px wavy line_through">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Overline
+                    </th>
+                    <td class="one_px solid overline">
+                        Thickness test.
+                    </td>
+                    <td class="one_px double overline">
+                        Thickness test.
+                    </td>
+                    <td class="one_px dotted overline">
+                        Thickness test.
+                    </td>
+                    <td class="one_px dashed overline">
+                        Thickness test.
+                    </td>
+                    <td class="one_px wavy overline">
+                        Thickness test.
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+    </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text-decor/reference/text-decoration-thickness-length-rounding-ref.tentative.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>
+            CSS Text Decoration Test: text-decoration-thickness length rounding
+        </title>
+
+        <link rel="author" title="Traian Captan" href="mailto:tcaptan@chromium.org">
+
+        <style>
+            table {
+                border: 3px solid gray;
+                border-collapse: collapse;
+            }
+
+            th,
+            td{
+                border: 2px solid gray;
+                padding: 10px;
+                text-align: center;
+            }
+
+            .two_px {
+                text-decoration-thickness: 2px;
+            }
+
+            .solid {
+                text-decoration-style: solid;
+            }
+
+            .double {
+                text-decoration-style: double;
+            }
+
+            .dotted {
+                text-decoration-style: dotted;
+            }
+
+            .dashed {
+                text-decoration-style: dashed;
+            }
+
+            .wavy {
+                text-decoration-style: wavy;
+            }
+
+            .underline {
+                text-decoration-line: underline;
+            }
+
+            .line_through {
+                text-decoration-line: line-through;
+            }
+
+            .overline {
+                text-decoration-line: overline;
+            }
+        </style>
+    </head>
+
+    <body>
+        <h1>
+            Test passes if text-decoration-thickness length is rounded to 2px
+        </h1>
+
+        <table>
+            <thead>
+                <tr>
+                    <th rowspan="2">
+                        Line Type
+                    </th>
+                    <th colspan="5">
+                        Line Style
+                    </th>
+                </tr>
+                <tr>
+                    <th>
+                        Solid
+                    </th>
+                    <th>
+                        Double
+                    </th>
+                    <th>
+                        Dotted
+                    </th>
+                    <th>
+                        Dashed
+                    </th>
+                    <th>
+                        Wavy
+                    </th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <th>
+                        Underline
+                    </th>
+                    <td class="two_px solid underline">
+                        Thickness test.
+                    </td>
+                    <td class="two_px double underline">
+                        Thickness test.
+                    </td>
+                    <td class="two_px dotted underline">
+                        Thickness test.
+                    </td>
+                    <td class="two_px dashed underline">
+                        Thickness test.
+                    </td>
+                    <td class="two_px wavy underline">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Line-through
+                    </th>
+                    <td class="two_px solid line_through">
+                        Thickness test.
+                    </td>
+                    <td class="two_px double line_through">
+                        Thickness test.
+                    </td>
+                    <td class="two_px dotted line_through">
+                        Thickness test.
+                    </td>
+                    <td class="two_px dashed line_through">
+                        Thickness test.
+                    </td>
+                    <td class="two_px wavy line_through">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Overline
+                    </th>
+                    <td class="two_px solid overline">
+                        Thickness test.
+                    </td>
+                    <td class="two_px double overline">
+                        Thickness test.
+                    </td>
+                    <td class="two_px dotted overline">
+                        Thickness test.
+                    </td>
+                    <td class="two_px dashed overline">
+                        Thickness test.
+                    </td>
+                    <td class="two_px wavy overline">
+                        Thickness test.
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+    </body>
+</html>
--- a/testing/web-platform/tests/css/css-text-decor/text-decoration-thickness-fixed.html
+++ b/testing/web-platform/tests/css/css-text-decor/text-decoration-thickness-fixed.html
@@ -10,42 +10,42 @@
 <style>
 @font-face {
 font-family: underline-variable;
 src: url(resources/UnderlineTest-VF.ttf);
 }
 
 .test {
 text-underline-position: from-font;
-font-size: 64px;
+font-size: 62px;
 line-height: 1.8;
 }
 
 .thin_underline {
 font-family: underline-variable;
 text-decoration: underline;
 text-decoration-thickness: 0.2px;
 }
 
 .thick_underline {
 font-family: underline-variable;
 text-decoration: underline;
-text-decoration-thickness: 6.3px;
+text-decoration-thickness: 6.2px;
 }
 
 .thin_underline_percent {
 font-family: underline-variable;
 text-decoration: underline;
 text-decoration-thickness: 0.3152%;
 }
 
 .thick_underline_percent {
 font-family: underline-variable;
 text-decoration: underline;
-text-decoration-thickness: 9.84375%;
+text-decoration-thickness: 10%;
 }
 </style>
 </head>
 <body>
     <p>Test passes if underlines are thin, thick, thin, thick in this order and match the reference rendering.</p>
     <div class="test"><span class="thin_underline">aagaa</span></div>
     <div class="test"><span class="thick_underline">aagaa</span></div>
     <div class="test"><span class="thin_underline_percent">aagaa</span></div>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text-decor/text-decoration-thickness-length-rounding-down.tentative.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>
+            CSS Text Decoration Test: text-decoration-thickness length rounding down
+        </title>
+
+        <link rel="author" title="Traian Captan" href="mailto:tcaptan@chromium.org">
+        <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property">
+        <link rel="match" href="reference/text-decoration-thickness-length-rounding-ref.tentative.html">
+
+        <meta name="assert" content="text-decoration-thickness length is rounded down to 2px">
+
+        <style>
+            table {
+                border: 3px solid gray;
+                border-collapse: collapse;
+            }
+
+            th,
+            td{
+                border: 2px solid gray;
+                padding: 10px;
+                text-align: center;
+            }
+
+            .two_point3_px {
+                text-decoration-thickness: 2.3px;
+            }
+
+            .solid {
+                text-decoration-style: solid;
+            }
+
+            .double {
+                text-decoration-style: double;
+            }
+
+            .dotted {
+                text-decoration-style: dotted;
+            }
+
+            .dashed {
+                text-decoration-style: dashed;
+            }
+
+            .wavy {
+                text-decoration-style: wavy;
+            }
+
+            .underline {
+                text-decoration-line: underline;
+            }
+
+            .line_through {
+                text-decoration-line: line-through;
+            }
+
+            .overline {
+                text-decoration-line: overline;
+            }
+        </style>
+    </head>
+
+    <body>
+        <h1>
+            Test passes if text-decoration-thickness length is rounded to 2px
+        </h1>
+
+        <table>
+            <thead>
+                <tr>
+                    <th rowspan="2">
+                        Line Type
+                    </th>
+                    <th colspan="5">
+                        Line Style
+                    </th>
+                </tr>
+                <tr>
+                    <th>
+                        Solid
+                    </th>
+                    <th>
+                        Double
+                    </th>
+                    <th>
+                        Dotted
+                    </th>
+                    <th>
+                        Dashed
+                    </th>
+                    <th>
+                        Wavy
+                    </th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <th>
+                        Underline
+                    </th>
+                    <td class="two_point3_px solid underline">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px double underline">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px dotted underline">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px dashed underline">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px wavy underline">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Line-through
+                    </th>
+                    <td class="two_point3_px solid line_through">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px double line_through">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px dotted line_through">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px dashed line_through">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px wavy line_through">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Overline
+                    </th>
+                    <td class="two_point3_px solid overline">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px double overline">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px dotted overline">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px dashed overline">
+                        Thickness test.
+                    </td>
+                    <td class="two_point3_px wavy overline">
+                        Thickness test.
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+    </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text-decor/text-decoration-thickness-length-rounding-min-val.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>
+            CSS Text Decoration Test: text-decoration-thickness length min rounding
+        </title>
+
+        <link rel="author" title="Traian Captan" href="mailto:tcaptan@chromium.org">
+        <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property">
+        <link rel="match" href="reference/text-decoration-thickness-length-rounding-min-val-ref.html">
+
+        <meta name="assert" content="text-decoration-thickness length is rounded up to 1px">
+
+        <style>
+            table {
+                border: 3px solid gray;
+                border-collapse: collapse;
+            }
+
+            th,
+            td{
+                border: 2px solid gray;
+                padding: 10px;
+                text-align: center;
+            }
+
+            .point3_px {
+                text-decoration-thickness: 0.3px;
+            }
+
+            .solid {
+                text-decoration-style: solid;
+            }
+
+            .double {
+                text-decoration-style: double;
+            }
+
+            .dotted {
+                text-decoration-style: dotted;
+            }
+
+            .dashed {
+                text-decoration-style: dashed;
+            }
+
+            .wavy {
+                text-decoration-style: wavy;
+            }
+
+            .underline {
+                text-decoration-line: underline;
+            }
+
+            .line_through {
+                text-decoration-line: line-through;
+            }
+
+            .overline {
+                text-decoration-line: overline;
+            }
+        </style>
+    </head>
+
+    <body>
+        <h1>
+            Test passes if text-decoration-thickness length is rounded up to 1px
+        </h1>
+
+        <table>
+            <thead>
+                <tr>
+                    <th rowspan="2">
+                        Line Type
+                    </th>
+                    <th colspan="5">
+                        Line Style
+                    </th>
+                </tr>
+                <tr>
+                    <th>
+                        Solid
+                    </th>
+                    <th>
+                        Double
+                    </th>
+                    <th>
+                        Dotted
+                    </th>
+                    <th>
+                        Dashed
+                    </th>
+                    <th>
+                        Wavy
+                    </th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <th>
+                        Underline
+                    </th>
+                    <td class="point3_px solid underline">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px double underline">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px dotted underline">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px dashed underline">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px wavy underline">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Line-through
+                    </th>
+                    <td class="point3_px solid line_through">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px double line_through">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px dotted line_through">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px dashed line_through">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px wavy line_through">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Overline
+                    </th>
+                    <td class="point3_px solid overline">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px double overline">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px dotted overline">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px dashed overline">
+                        Thickness test.
+                    </td>
+                    <td class="point3_px wavy overline">
+                        Thickness test.
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+    </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/css-text-decor/text-decoration-thickness-length-rounding-up.tentative.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>
+            CSS Text Decoration Test: text-decoration-thickness length rounding up
+        </title>
+
+        <link rel="author" title="Traian Captan" href="mailto:tcaptan@chromium.org">
+        <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#text-decoration-width-property">
+        <link rel="match" href="reference/text-decoration-thickness-length-rounding-ref.tentative.html">
+
+        <meta name="assert" content="text-decoration-thickness length is rounded up to 2px">
+
+        <style>
+            table {
+                border: 3px solid gray;
+                border-collapse: collapse;
+            }
+
+            th,
+            td{
+                border: 2px solid gray;
+                padding: 10px;
+                text-align: center;
+            }
+
+            .one_point7_px {
+                text-decoration-thickness: 1.7px;
+            }
+
+            .solid {
+                text-decoration-style: solid;
+            }
+
+            .double {
+                text-decoration-style: double;
+            }
+
+            .dotted {
+                text-decoration-style: dotted;
+            }
+
+            .dashed {
+                text-decoration-style: dashed;
+            }
+
+            .wavy {
+                text-decoration-style: wavy;
+            }
+
+            .underline {
+                text-decoration-line: underline;
+            }
+
+            .line_through {
+                text-decoration-line: line-through;
+            }
+
+            .overline {
+                text-decoration-line: overline;
+            }
+        </style>
+    </head>
+
+    <body>
+        <h1>
+            Test passes if text-decoration-thickness length is rounded to 2px
+        </h1>
+
+        <table>
+            <thead>
+                <tr>
+                    <th rowspan="2">
+                        Line Type
+                    </th>
+                    <th colspan="5">
+                        Line Style
+                    </th>
+                </tr>
+                <tr>
+                    <th>
+                        Solid
+                    </th>
+                    <th>
+                        Double
+                    </th>
+                    <th>
+                        Dotted
+                    </th>
+                    <th>
+                        Dashed
+                    </th>
+                    <th>
+                        Wavy
+                    </th>
+                </tr>
+            </thead>
+            <tbody>
+                <tr>
+                    <th>
+                        Underline
+                    </th>
+                    <td class="one_point7_px solid underline">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px double underline">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px dotted underline">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px dashed underline">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px wavy underline">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Line-through
+                    </th>
+                    <td class="one_point7_px solid line_through">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px double line_through">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px dotted line_through">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px dashed line_through">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px wavy line_through">
+                        Thickness test.
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        Overline
+                    </th>
+                    <td class="one_point7_px solid overline">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px double overline">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px dotted overline">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px dashed overline">
+                        Thickness test.
+                    </td>
+                    <td class="one_point7_px wavy overline">
+                        Thickness test.
+                    </td>
+                </tr>
+            </tbody>
+        </table>
+    </body>
+</html>
--- a/testing/web-platform/tests/css/mediaqueries/dynamic-range.html
+++ b/testing/web-platform/tests/css/mediaqueries/dynamic-range.html
@@ -1,42 +1,28 @@
 <!DOCTYPE html>
 <link rel="help" title="6.5 dynamic-range" href="https://www.w3.org/TR/mediaqueries-5/#dynamic-range">
 <script type="text/javascript" src="/resources/testharness.js"></script>
 <script type="text/javascript" src="/resources/testharnessreport.js"></script>
 <script type="text/javascript" src="resources/matchmedia-utils.js"></script>
 
 <script>
-query_should_be_css_parseable("(dynamic-range: standard)");
-query_should_be_css_parseable("(dynamic-range: high)");
-query_should_be_css_parseable("(video-dynamic-range: standard)");
-query_should_be_css_parseable("(video-dynamic-range: high)");
-
-query_should_not_be_css_parseable("(dynamic-range)");
-query_should_not_be_css_parseable("(dynamic-range: 0)");
-query_should_not_be_css_parseable("(dynamic-range: 10px)");
-query_should_not_be_css_parseable("(dynamic-range: invalid)");
-query_should_not_be_css_parseable("(video-dynamic-range)");
-query_should_not_be_css_parseable("(video-dynamic-range: 0)");
-query_should_not_be_css_parseable("(video-dynamic-range: 10px)");
-query_should_not_be_css_parseable("(video-dynamic-range: invalid)");
+query_should_be_known("(dynamic-range: standard)");
+query_should_be_known("(dynamic-range: high)");
+query_should_be_known("(video-dynamic-range: standard)");
+query_should_be_known("(video-dynamic-range: high)");
 
-query_should_be_js_parseable("(dynamic-range: standard)");
-query_should_be_js_parseable("(dynamic-range: high)");
-query_should_be_js_parseable("(video-dynamic-range: standard)");
-query_should_be_js_parseable("(video-dynamic-range: high)");
-
-query_should_not_be_js_parseable("(dynamic-range)");
-query_should_not_be_js_parseable("(dynamic-range: 0)");
-query_should_not_be_js_parseable("(dynamic-range: 10px)");
-query_should_not_be_js_parseable("(dynamic-range: invalid)");
-query_should_not_be_js_parseable("(video-dynamic-range)");
-query_should_not_be_js_parseable("(video-dynamic-range: 0)");
-query_should_not_be_js_parseable("(video-dynamic-range: 10px)");
-query_should_not_be_js_parseable("(video-dynamic-range: invalid)");
+query_should_be_unknown("(dynamic-range)");
+query_should_be_unknown("(dynamic-range: 0)");
+query_should_be_unknown("(dynamic-range: 10px)");
+query_should_be_unknown("(dynamic-range: invalid)");
+query_should_be_unknown("(video-dynamic-range)");
+query_should_be_unknown("(video-dynamic-range: 0)");
+query_should_be_unknown("(video-dynamic-range: 10px)");
+query_should_be_unknown("(video-dynamic-range: invalid)");
 
 test(() => {
   let match_standard = window.matchMedia("(dynamic-range: standard)");
   assert_true(match_standard.matches);
 }, "Check that dynamic-range always matches 'standard'");
 
 test(() => {
   let match_standard = window.matchMedia("(video-dynamic-range: standard)");
--- a/testing/web-platform/tests/css/mediaqueries/forced-colors.html
+++ b/testing/web-platform/tests/css/mediaqueries/forced-colors.html
@@ -1,35 +1,24 @@
 <!DOCTYPE html>
 <link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#forced-colors" />
 <script type="text/javascript" src="/resources/testharness.js"></script>
 <script type="text/javascript" src="/resources/testharnessreport.js"></script>
 
 <script type="text/javascript" src="resources/matchmedia-utils.js"></script>
 <script>
-query_should_be_css_parseable("(forced-colors)");
-query_should_be_css_parseable("(forced-colors: none)");
-query_should_be_css_parseable("(forced-colors: active)");
-
-query_should_not_be_css_parseable("(forced-colors: 0)");
-query_should_not_be_css_parseable("(forced-colors: no-preference)");
-query_should_not_be_css_parseable("(forced-colors: 10px)");
-query_should_not_be_css_parseable("(forced-colors: active 0)");
-query_should_not_be_css_parseable("(forced-colors: none active)");
-query_should_not_be_css_parseable("(forced-colors: active/none)");
+query_should_be_known("(forced-colors)");
+query_should_be_known("(forced-colors: none)");
+query_should_be_known("(forced-colors: active)");
 
-query_should_be_js_parseable("(forced-colors)");
-query_should_be_js_parseable("(forced-colors: none)");
-query_should_be_js_parseable("(forced-colors: active)");
-
-query_should_not_be_js_parseable("(forced-colors: 0)");
-query_should_not_be_js_parseable("(forced-colors: no-preference)");
-query_should_not_be_js_parseable("(forced-colors: 10px)");
-query_should_not_be_js_parseable("(forced-colors: active 0)");
-query_should_not_be_js_parseable("(forced-colors: none active)");
-query_should_not_be_js_parseable("(forced-colors: active/none)");
+query_should_be_unknown("(forced-colors: 0)");
+query_should_be_unknown("(forced-colors: no-preference)");
+query_should_be_unknown("(forced-colors: 10px)");
+query_should_be_unknown("(forced-colors: active 0)");
+query_should_be_unknown("(forced-colors: none active)");
+query_should_be_unknown("(forced-colors: active/none)");
 
 test(() => {
   let booleanContext = window.matchMedia("(forced-colors)");
   let none = window.matchMedia("(forced-colors: none)");
   assert_equals(booleanContext.matches, !none.matches);
 }, "Check that none evaluates to false in the boolean context");
 </script>
--- a/testing/web-platform/tests/css/mediaqueries/navigation-controls.tentative.html
+++ b/testing/web-platform/tests/css/mediaqueries/navigation-controls.tentative.html
@@ -1,22 +1,17 @@
 <!DOCTYPE html>
 <link rel="help" href="https://github.com/fallaciousreasoning/backbutton-mediaquery/blob/master/explainer.md" />
 <script type="text/javascript" src="/resources/testharness.js"></script>
 <script type="text/javascript" src="/resources/testharnessreport.js"></script>
 <script type="text/javascript" src="resources/matchmedia-utils.js"></script>
 <script>
-    query_should_be_css_parseable("(navigation-controls)");
-    query_should_be_css_parseable("(navigation-controls: none)");
-    query_should_be_css_parseable("(navigation-controls: back-button)");
-    query_should_not_be_css_parseable("(navigation-controls: none back-button)");
-    query_should_not_be_css_parseable("(navigation-controls: back-button/none)");
-    query_should_be_js_parseable("(navigation-controls)");
-    query_should_be_js_parseable("(navigation-controls: none)");
-    query_should_be_js_parseable("(navigation-controls: back-button)");
-    query_should_not_be_js_parseable("(navigation-controls: none back-button)");
-    query_should_not_be_js_parseable("(navigation-controls: back-button/none)");
+    query_should_be_known("(navigation-controls)");
+    query_should_be_known("(navigation-controls: none)");
+    query_should_be_known("(navigation-controls: back-button)");
+    query_should_be_unknown("(navigation-controls: none back-button)");
+    query_should_be_unknown("(navigation-controls: back-button/none)");
     test(() => {
         let booleanContext = window.matchMedia("(navigation-controls)");
         let none = window.matchMedia("(navigation-controls: none)");
         assert_equals(booleanContext.matches, !none.matches);
     }, "Check that none evaluates to false in the boolean context");
 </script>
\ No newline at end of file
--- a/testing/web-platform/tests/css/mediaqueries/prefers-color-scheme.html
+++ b/testing/web-platform/tests/css/mediaqueries/prefers-color-scheme.html
@@ -1,36 +1,24 @@
 <!DOCTYPE html>
 <link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#prefers-color-scheme" />
 <script type="text/javascript" src="/resources/testharness.js"></script>
 <script type="text/javascript" src="/resources/testharnessreport.js"></script>
 
 <script type="text/javascript" src="resources/matchmedia-utils.js"></script>
 <script>
-query_should_be_css_parseable("(prefers-color-scheme)");
-query_should_be_css_parseable("(prefers-color-scheme: light)");
-query_should_be_css_parseable("(prefers-color-scheme: dark)");
-
-query_should_not_be_css_parseable("(prefers-color-scheme: 0)");
-query_should_not_be_css_parseable("(prefers-color-scheme: none)");
-query_should_not_be_css_parseable("(prefers-color-scheme: 10px)");
-query_should_not_be_css_parseable("(prefers-color-scheme: dark 0)");
-query_should_not_be_css_parseable("(prefers-color-scheme: dark light)");
-query_should_not_be_css_parseable("(prefers-color-scheme: light/dark)");
-query_should_not_be_css_parseable("(prefers-color-scheme: no-preference)");
+query_should_be_known("(prefers-color-scheme)");
+query_should_be_known("(prefers-color-scheme: light)");
+query_should_be_known("(prefers-color-scheme: dark)");
 
-query_should_be_js_parseable("(prefers-color-scheme)");
-query_should_be_js_parseable("(prefers-color-scheme: light)");
-query_should_be_js_parseable("(prefers-color-scheme: dark)");
-
-query_should_not_be_js_parseable("(prefers-color-scheme: 0)");
-query_should_not_be_js_parseable("(prefers-color-scheme: none)");
-query_should_not_be_js_parseable("(prefers-color-scheme: 10px)");
-query_should_not_be_js_parseable("(prefers-color-scheme: dark 0)");
-query_should_not_be_js_parseable("(prefers-color-scheme: dark light)");
-query_should_not_be_js_parseable("(prefers-color-scheme: light/dark)");
-query_should_not_be_js_parseable("(prefers-color-scheme: no-preference)");
+query_should_be_unknown("(prefers-color-scheme: 0)");
+query_should_be_unknown("(prefers-color-scheme: none)");
+query_should_be_unknown("(prefers-color-scheme: 10px)");
+query_should_be_unknown("(prefers-color-scheme: dark 0)");
+query_should_be_unknown("(prefers-color-scheme: dark light)");
+query_should_be_unknown("(prefers-color-scheme: light/dark)");
+query_should_be_unknown("(prefers-color-scheme: no-preference)");
 
 test(() => {
   let booleanContext = window.matchMedia("(prefers-color-scheme)");
   assert_true(booleanContext.matches);
 }, "Check that prefer-color-scheme evaluates to true in the boolean context");
 </script>
--- a/testing/web-platform/tests/css/mediaqueries/prefers-contrast.html
+++ b/testing/web-platform/tests/css/mediaqueries/prefers-contrast.html
@@ -1,48 +1,31 @@
 <!DOCTYPE html>
 <link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#prefers-contrast" />
 <script type="text/javascript" src="/resources/testharness.js"></script>
 <script type="text/javascript" src="/resources/testharnessreport.js"></script>
 
 <script type="text/javascript" src="resources/matchmedia-utils.js"></script>
 <script>
-query_should_be_css_parseable("(prefers-contrast)");
-query_should_be_css_parseable("(prefers-contrast: no-preference)");
-query_should_be_css_parseable("(prefers-contrast: more)");
-query_should_be_css_parseable("(prefers-contrast: less)");
-query_should_be_css_parseable("(prefers-contrast: custom)");
-
-query_should_not_be_css_parseable("(prefers-contrast: increase)");
-query_should_not_be_css_parseable("(prefers-contrast: none)");
-query_should_not_be_css_parseable("(prefers-contrast: forced high)");
-query_should_not_be_css_parseable("(prefers-contrast: forced low)");
-query_should_not_be_css_parseable("(prefers-contrast > increase)");
-query_should_not_be_css_parseable("(prefers-increased-contrast)");
-query_should_not_be_css_parseable("(prefers-decreased-contrast)");
-query_should_not_be_css_parseable("(prefers-contrast: high)");
-query_should_not_be_css_parseable("(prefers-contrast: low)");
-query_should_not_be_css_parseable("(prefers-contrast: forced)");
+query_should_be_known("(prefers-contrast)");
+query_should_be_known("(prefers-contrast: no-preference)");
+query_should_be_known("(prefers-contrast: more)");
+query_should_be_known("(prefers-contrast: less)");
+query_should_be_known("(prefers-contrast: custom)");
 
-query_should_be_js_parseable("(prefers-contrast)");
-query_should_be_js_parseable("(prefers-contrast: no-preference)");
-query_should_be_js_parseable("(prefers-contrast: more)");
-query_should_be_js_parseable("(prefers-contrast: less)");
-query_should_be_js_parseable("(prefers-contrast: custom)");
-
-query_should_not_be_js_parseable("(prefers-contrast: increase)");
-query_should_not_be_js_parseable("(prefers-contrast: none)");
-query_should_not_be_js_parseable("(prefers-contrast: forced high)");
-query_should_not_be_js_parseable("(prefers-contrast: forced low)");
-query_should_not_be_js_parseable("(prefers-contrast > increase)");
-query_should_not_be_js_parseable("(prefers-increased-contrast)");
-query_should_not_be_js_parseable("(prefers-decreased-contrast)");
-query_should_not_be_js_parseable("(prefers-contrast: high)");
-query_should_not_be_js_parseable("(prefers-contrast: low)");
-query_should_not_be_js_parseable("(prefers-contrast: forced)");
+query_should_be_unknown("(prefers-contrast: increase)");
+query_should_be_unknown("(prefers-contrast: none)");
+query_should_be_unknown("(prefers-contrast: forced high)");
+query_should_be_unknown("(prefers-contrast: forced low)");
+query_should_be_unknown("(prefers-contrast > increase)");
+query_should_be_unknown("(prefers-increased-contrast)");
+query_should_be_unknown("(prefers-decreased-contrast)");
+query_should_be_unknown("(prefers-contrast: high)");
+query_should_be_unknown("(prefers-contrast: low)");
+query_should_be_unknown("(prefers-contrast: forced)");
 
 test(() => {
   // no-preference is the default and all other values evaluate to
   // true in the boolean context. If no-preference matches, then
   // boolean context should be false. If no-preference does not match
   // then boolean context should be true. Therefore, these two values
   // should always be each others inverse irrespective of OS level
   // settings.
--- a/testing/web-platform/tests/css/mediaqueries/prefers-reduced-data.html
+++ b/testing/web-platform/tests/css/mediaqueries/prefers-reduced-data.html
@@ -1,36 +1,25 @@
 <!DOCTYPE html>
 <link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#prefers-reduced-data" />
 <script type="text/javascript" src="/resources/testharness.js"></script>
 <script type="text/javascript" src="/resources/testharnessreport.js"></script>
 
 <script type="text/javascript" src="resources/matchmedia-utils.js"></script>
 <script>
-query_should_be_css_parseable("(prefers-reduced-data)");
-query_should_be_css_parseable("(prefers-reduced-data: no-preference)");
-query_should_be_css_parseable("(prefers-reduced-data: reduce)");
-
-query_should_not_be_css_parseable("(prefers-reduced-data: 0)");
-query_should_not_be_css_parseable("(prefers-reduced-data: none)");
-query_should_not_be_css_parseable("(prefers-reduced-data: 10px)");
-query_should_not_be_css_parseable("(prefers-reduced-data: no-preference reduce)");
-query_should_not_be_css_parseable("(prefers-reduced-data: reduced)");
-query_should_not_be_css_parseable("(prefers-reduced-data: no-preference/reduce)");
+query_should_be_known("(prefers-reduced-data)");
+query_should_be_known("(prefers-reduced-data: no-preference)");
+query_should_be_known("(prefers-reduced-data: reduce)");
 
-query_should_be_js_parseable("(prefers-reduced-data)");
-query_should_be_js_parseable("(prefers-reduced-data: no-preference)");
-query_should_be_js_parseable("(prefers-reduced-data: reduce)");
-
-query_should_not_be_js_parseable("(prefers-reduced-data: 0)");
-query_should_not_be_js_parseable("(prefers-reduced-data: none)");
-query_should_not_be_js_parseable("(prefers-reduced-data: 10px)");
-query_should_not_be_js_parseable("(prefers-reduced-data: no-preference reduce)");
-query_should_not_be_js_parseable("(prefers-reduced-data: reduced)");
-query_should_not_be_js_parseable("(prefers-reduced-data: no-preference/reduce)");
+query_should_be_unknown("(prefers-reduced-data: 0)");
+query_should_be_unknown("(prefers-reduced-data: none)");
+query_should_be_unknown("(prefers-reduced-data: 10px)");
+query_should_be_unknown("(prefers-reduced-data: no-preference reduce)");
+query_should_be_unknown("(prefers-reduced-data: reduced)");
+query_should_be_unknown("(prefers-reduced-data: no-preference/reduce)");
 
 test(() => {
   // https://drafts.csswg.org/mediaqueries-5/#boolean-context
   let booleanContext = window.matchMedia("(prefers-reduced-data)");
   let noPreference = window.matchMedia("(prefers-reduced-data: no-preference)");
   assert_equals(booleanContext.matches, !noPreference.matches);
 }, "Check that no-preference evaluates to false in the boolean context");
 
--- a/testing/web-platform/tests/css/mediaqueries/prefers-reduced-motion.html
+++ b/testing/web-platform/tests/css/mediaqueries/prefers-reduced-motion.html
@@ -1,36 +1,25 @@
 <!DOCTYPE html>
 <link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#prefers-reduced-motion" />
 <script type="text/javascript" src="/resources/testharness.js"></script>
 <script type="text/javascript" src="/resources/testharnessreport.js"></script>
 
 <script type="text/javascript" src="resources/matchmedia-utils.js"></script>
 <script>
-query_should_be_css_parseable("(prefers-reduced-motion)");
-query_should_be_css_parseable("(prefers-reduced-motion: no-preference)");
-query_should_be_css_parseable("(prefers-reduced-motion: reduce)");
-
-query_should_not_be_css_parseable("(prefers-reduced-motion: 0)");
-query_should_not_be_css_parseable("(prefers-reduced-motion: none)");
-query_should_not_be_css_parseable("(prefers-reduced-motion: 10px)");
-query_should_not_be_css_parseable("(prefers-reduced-motion: no-preference reduce)");
-query_should_not_be_css_parseable("(prefers-reduced-motion: reduced)");
-query_should_not_be_css_parseable("(prefers-reduced-motion: no-preference/reduce)");
+query_should_be_known("(prefers-reduced-motion)");
+query_should_be_known("(prefers-reduced-motion: no-preference)");
+query_should_be_known("(prefers-reduced-motion: reduce)");
 
-query_should_be_js_parseable("(prefers-reduced-motion)");
-query_should_be_js_parseable("(prefers-reduced-motion: no-preference)");
-query_should_be_js_parseable("(prefers-reduced-motion: reduce)");
-
-query_should_not_be_js_parseable("(prefers-reduced-motion: 0)");
-query_should_not_be_js_parseable("(prefers-reduced-motion: none)");
-query_should_not_be_js_parseable("(prefers-reduced-motion: 10px)");
-query_should_not_be_js_parseable("(prefers-reduced-motion: no-preference reduce)");
-query_should_not_be_js_parseable("(prefers-reduced-motion: reduced)");
-query_should_not_be_js_parseable("(prefers-reduced-motion: no-preference/reduce)");
+query_should_be_unknown("(prefers-reduced-motion: 0)");
+query_should_be_unknown("(prefers-reduced-motion: none)");
+query_should_be_unknown("(prefers-reduced-motion: 10px)");
+query_should_be_unknown("(prefers-reduced-motion: no-preference reduce)");
+query_should_be_unknown("(prefers-reduced-motion: reduced)");
+query_should_be_unknown("(prefers-reduced-motion: no-preference/reduce)");
 
 test(() => {
   // What this is saying is that 'no-preference' is not the default, so
   // irregardless of the current OS settings, (prefers-reduced-motion).matches
   // should not be equivalent to (prefers-reduced-motion: no-preference).matches.
   let booleanContext = window.matchMedia("(prefers-reduced-motion)");
   let noPreference = window.matchMedia("(prefers-reduced-motion: no-preference)");
   assert_equals(booleanContext.matches, !noPreference.matches);
--- a/testing/web-platform/tests/css/mediaqueries/resources/matchmedia-utils.js
+++ b/testing/web-platform/tests/css/mediaqueries/resources/matchmedia-utils.js
@@ -42,8 +42,32 @@ function query_should_be_js_parseable(qu
   }, "Should be parseable in JS: '" + query + "'");
 }
 
 function query_should_not_be_js_parseable(query) {
   test(() => {
     assert_false(query_is_js_parseable(query));
   }, "Should not be parseable in JS: '" + query + "'");
 }
+
+function query_is_known(query) {
+  return window.matchMedia(`(${query}) or (not (${query}))`).matches;
+}
+
+function query_is_unknown(query) {
+  return !window.matchMedia(`(${query}) or (not (${query}))`).matches;
+}
+
+function query_should_be_known(query) {
+  test(() => {
+    assert_true(query_is_js_parseable(query), "Can parse with JS");
+    assert_true(query_is_css_parseable(query), "Can parse with CSS");
+    assert_true(query_is_known(query));
+  }, "Should be known: '" + query + "'");
+}
+
+function query_should_be_unknown(query) {
+  test(() => {
+    assert_true(query_is_js_parseable(query), "Can parse with JS");
+    assert_true(query_is_css_parseable(query), "Can parse with CSS");
+    assert_true(query_is_unknown(query));
+  }, "Should be unknown: '" + query + "'");
+}
--- a/testing/web-platform/tests/css/mediaqueries/test_media_queries.html
+++ b/testing/web-platform/tests/css/mediaqueries/test_media_queries.html
@@ -25,38 +25,37 @@ setup({ "explicit_done": true });
     var body_cs = subdoc.defaultView.getComputedStyle(subdoc.body, "");
     var testGroup = "";
 
     function query_applies(q) {
       style.setAttribute("media", q);
       return body_cs.getPropertyValue("text-decoration-line") == "underline";
     }
 
-    function should_apply(q) {
-      test(function() {
-        // lazily evaluate template string to avoid including device-specific data in test name
-        var escaped = JSON.stringify(q);
-        var evalq = eval("`" + escaped.substring(1, escaped.length - 1) + "`");
-        // Also avoid an assert message for the same reason. (Relevant for
-        // failing tests).
-        assert_true(query_applies(evalq));
-      }, `${testGroup ? testGroup + ": " : ""}should_apply: ${q}`);
+    function not(predicate) {
+      return (...args) => !predicate(...args);
     }
 
-    function should_not_apply(q, extraName) {
-      if (extraName) extraName += " ";
-      else extraName = "";
-      test(function() {
+    function test_predicate(input, predicate, name) {
+      test(() => {
         // lazily evaluate template string to avoid including device-specific data in test name
-        var escaped = JSON.stringify(q);
-        var evalq = eval("`" + escaped.substring(1, escaped.length - 1) + "`");
+        var escaped = JSON.stringify(input);
+        var evaled = eval("`" + escaped.substring(1, escaped.length - 1) + "`");
         // Also avoid an assert message for the same reason. (Relevant for
         // failing tests).
-        assert_false(query_applies(evalq));
-      }, `${testGroup ? testGroup + ": " : ""}should_not_apply: ${q}`);
+        assert_true(predicate(evaled))
+      }, `${testGroup ? testGroup + ": " : ""}${name}: ${input}`);
+    }
+
+    function should_apply(q) {
+      test_predicate(q, query_applies, "should_apply");
+    }
+
+    function should_not_apply(q) {
+      test_predicate(q, not(query_applies), "should_not_apply");
     }
 
     /*
      * Functions to test whether a query is parseable at all.  (Should not
      * be used for parse errors within expressions.)
      */
     var parse_test_style_element = document.createElement("style");
     parse_test_style_element.type = "text/css";
@@ -73,128 +72,120 @@ setup({ "explicit_done": true });
           sheet.cssRules[0].type == CSSRule.MEDIA_RULE)
         return sheet.cssRules[0].media.mediaText != "screen, not all";
 
       assert_unreached(
         "unexpected result testing whether query " + q + " is parseable");
     }
 
     function query_should_be_parseable(q) {
-      test(function() {
-        // lazily evaluate template string to avoid including device-specific data in test name
-        var escaped = JSON.stringify(q);
-        var evalq = eval("`" + escaped.substring(1, escaped.length - 1) + "`");
-        // Also avoid an assert message for the same reason. (Relevant for
-        // failing tests).
-        assert_true(query_is_parseable(evalq))
-      }, `${testGroup ? testGroup + ": " : ""}query_should_be_parseable: ${q}`);
+      test_predicate(q, query_is_parseable, "query_should_be_parseable");
     }
 
     function query_should_not_be_parseable(q) {
-      test(function() {
-        // lazily evaluate template string to avoid including device-specific data in test name
-        var escaped = JSON.stringify(q);
-        var evalq = eval("`" + escaped.substring(1, escaped.length - 1) + "`");
-        // Also avoid an assert message for the same reason. (Relevant for
-        // failing tests).
-        assert_false(query_is_parseable(evalq));
-      }, `${testGroup ? testGroup + ": " : ""}query_should_not_be_parseable: ${q}`);
+      test_predicate(q, not(query_is_parseable), "query_should_not_be_parseable");
     }
 
     /*
-     * Functions to test whether a single media expression is parseable.
+     * Functions to test whether a single media express